aboutsummaryrefslogtreecommitdiff
path: root/ninjabackend.py
diff options
context:
space:
mode:
Diffstat (limited to 'ninjabackend.py')
-rw-r--r--ninjabackend.py28
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)