targets/Xenomai/__init__.py
author Edouard Tisserant
Wed, 09 May 2012 00:00:50 +0200
changeset 725 31dade089db5
parent 722 a94f361fc42e
child 726 ae63ccc29444
permissions -rwxr-xr-x
refactoring
642
cd7ccbbbf471 various cleanups in /targets
Edouard Tisserant
parents: 635
diff changeset
     1
from ..toolchain_gcc import toolchain_gcc
321
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
     2
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
     3
class Xenomai_target(toolchain_gcc):
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
     4
    extension = ".so"
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
     5
    def getXenoConfig(self, flagsname):
321
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
     6
        """ Get xeno-config from target parameters """
725
31dade089db5 refactoring
Edouard Tisserant
parents: 722
diff changeset
     7
        xeno_config=self.CTRInstance.GetTarget().getcontent()["value"].getXenoConfig()
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
     8
        if xeno_config:
722
a94f361fc42e refactoring
Edouard Tisserant
parents: 717
diff changeset
     9
            from ProcessLogger import ProcessLogger
725
31dade089db5 refactoring
Edouard Tisserant
parents: 722
diff changeset
    10
            status, result, err_result = ProcessLogger(self.CTRInstance.logger,
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    11
                                                       xeno_config + " --skin=native --"+flagsname,
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    12
                                                       no_stdout=True).spin()
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    13
            if status:
725
31dade089db5 refactoring
Edouard Tisserant
parents: 722
diff changeset
    14
                self.CTRInstance.logger.write_error(_("Unable to get Xenomai's %s \n")%flagsname)
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    15
            return [result.strip()]
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    16
        return []
321
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
    17
    
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
    18
    def getBuilderLDFLAGS(self):
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    19
        xeno_ldflags = self.getXenoConfig("ldflags")
634
5b925a1d8fed fixed redondant ldflag and a typo in xenomai build
Edouard Tisserant
parents: 633
diff changeset
    20
        return toolchain_gcc.getBuilderLDFLAGS(self) + xeno_ldflags + ["-shared"]
321
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
    21
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
    22
    def getBuilderCFLAGS(self):
633
70c84e6ff92c Xenomai build now ignores xeno-config if not set
Edouard Tisserant
parents: 615
diff changeset
    23
        xeno_cflags = self.getXenoConfig("cflags")
635
fcdb60cacb2c added -fPIC to satisfy X86_64 build
Edouard Tisserant
parents: 634
diff changeset
    24
        return toolchain_gcc.getBuilderCFLAGS(self) + xeno_cflags + ["-fPIC"]
321
5a4e6278a18b Adding support for Xenomai targets.
lbessard
parents: 203
diff changeset
    25