diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-12 00:17:44 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-12 00:17:44 +0200 |
commit | 161d633f362a316e4711b8ab524d3688cd6847ef (patch) | |
tree | 2c46cb9b671da4ce0577e10a090f263f25b0ff04 /ninjabackend.py | |
parent | 961b000090e01a1eb3647c6b16d951ca419b13cb (diff) | |
download | meson-161d633f362a316e4711b8ab524d3688cd6847ef.zip meson-161d633f362a316e4711b8ab524d3688cd6847ef.tar.gz meson-161d633f362a316e4711b8ab524d3688cd6847ef.tar.bz2 |
Added support for calling into C.
Diffstat (limited to 'ninjabackend.py')
-rw-r--r-- | ninjabackend.py | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/ninjabackend.py b/ninjabackend.py index b91250c..1258f07 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -844,10 +844,17 @@ class NinjaBackend(backends.Backend): def target_swift_modulename(self, target): return target.name + def is_swift_target(self, target): + for s in target.sources: + if s.endswith('swift'): + return True + return False + def determine_swift_dep_modules(self, target): result = [] for l in target.link_targets: - result.append(self.swift_module_file_name(l)) + if self.is_swift_target(l): + result.append(self.swift_module_file_name(l)) return result def determine_swift_dep_dirs(self, target): @@ -886,12 +893,20 @@ class NinjaBackend(backends.Backend): module_name = self.target_swift_modulename(target) swiftc = self.environment.coredata.compilers['swift'] abssrc = [] + abs_headers = [] + header_imports = [] for i in target.get_sources(): - if not swiftc.can_compile(i): + if swiftc.can_compile(i): + relsrc = i.rel_to_builddir(self.build_to_src) + abss = os.path.normpath(os.path.join(self.environment.get_build_dir(), relsrc)) + abssrc.append(abss) + elif self.environment.is_header(i): + relh = i.rel_to_builddir(self.build_to_src) + absh = os.path.normpath(os.path.join(self.environment.get_build_dir(), relh)) + abs_headers.append(absh) + header_imports += swiftc.get_header_import_args(absh) + else: raise InvalidArguments('Swift target %s contains a non-swift source file.' % target.get_basename()) - relsrc = i.rel_to_builddir(self.build_to_src) - abss = os.path.normpath(os.path.join(self.environment.get_build_dir(), relsrc)) - abssrc.append(abss) os.makedirs(os.path.join(self.get_target_private_dir_abs(target)), exist_ok=True) compile_args = swiftc.get_compile_only_args() compile_args += swiftc.get_module_args(module_name) @@ -922,7 +937,8 @@ class NinjaBackend(backends.Backend): 'swift_COMPILER', abssrc) elem.add_dep(in_module_files + rel_generated) - elem.add_item('ARGS', compile_args + abs_generated + module_includes) + elem.add_dep(abs_headers) + elem.add_item('ARGS', compile_args + header_imports + abs_generated + module_includes) elem.add_item('RUNDIR', rundir) elem.write(outfile) self.check_outputs(elem) |