diff options
-rwxr-xr-x | wscript | 43 |
1 files changed, 38 insertions, 5 deletions
@@ -40,6 +40,8 @@ try: except: import ConfigParser as configparser +from waflib.TaskGen import after, before_method, feature + is_windows_host = os.name == "nt" or sys.platform in ["msys", "cygwin"] default_prefix = "/opt/rtems/6" compilers = ["gcc", "clang"] @@ -149,6 +151,32 @@ def _is_enabled(enabled, enabled_by): return enabled_by in enabled +def _explicit_asm_target(self, node): + task = self.create_task( + "asm", node, self.bld.bldnode.make_node(self.target) + ) + try: + self.compiled_tasks.append(task) + except AttributeError: + self.compiled_tasks = [task] + return task + + +@feature("explicit_asm_target") +@before_method("process_source") +def _enable_explicit_asm_target(self): + self.mappings = dict(self.mappings) # Copy + self.mappings[".S"] = _explicit_asm_target + + +@after("apply_link") +@feature("cprogram", "cxxprogram") +def process_start_files(self): + if not getattr(self, "start_files", False): + return + self.link_task.dep_nodes.extend(self.bld.start_files) + + class Item(object): def __init__(self, uid, data): self.uid = uid @@ -246,12 +274,10 @@ class Item(object): target = os.path.splitext(source)[0] + ".o" bld( asflags=self.data["asflags"], - before=["cstlib"], cppflags=cppflags + self.data["cppflags"], - features="asm c", + features="explicit_asm_target asm c", includes=bic.includes + self.data["includes"], - rule="${CC} ${ASFLAGS} ${CPPFLAGS} ${DEFINES_ST:DEFINES} ${CPPPATH_ST:INCPATHS} -c ${SRC[0]} -o ${TGT}", - source=[source] + deps, + source=source + deps, target=target, ) return target @@ -532,7 +558,13 @@ class StartFileItem(Item): super(StartFileItem, self).__init__(uid, data) def do_build(self, bld, bic): - self.asm(bld, bic, self.data["source"], self.get(bld, "target")) + target = self.get(bld, "target") + self.asm(bld, bic, self.data["source"], target) + node = bld.bldnode.make_node(target) + try: + bld.start_files.append(node) + except AttributeError: + bld.start_files = [node] self.install_target(bld) @@ -626,6 +658,7 @@ class TestProgramItem(Item): install_path=None, ldflags=bic.ldflags + self.data["ldflags"], source=self.data["source"], + start_files=True, stlib=self.data["stlib"], target=self.get(bld, "target"), use=self.data["use-before"] + bic.use + self.data["use-after"], |