Xcode: handle CustomTargetIndexes.
@@ -1007,8 +1007,8 @@ class XCodeBackend(backends.Backend):
for o in t.generated:
if isinstance(o, build.CustomTarget):
dep_array.add_item(self.pbx_custom_dep_map[o.get_id()], o.name)
- if not isinstance(o, build.GeneratedList):
- continue
+ elif isinstance(o, build.CustomTargetIndex):
+ dep_array.add_item(self.pbx_custom_dep_map[o.target.get_id()], o.target.name)
generator_id += 1
@@ -1210,11 +1210,17 @@ class XCodeBackend(backends.Backend):
for o in ofilenames:
file_arr.add_item(self.custom_target_output_buildfile[o],
os.path.join(self.environment.get_build_dir(), o))
+ elif isinstance(gt, build.CustomTargetIndex):
+ for o in gt.get_outputs():
+ file_arr.add_item(self.custom_target_output_buildfile[o],
+ os.path.join(self.environment.get_build_dir(), o))
elif isinstance(gt, build.GeneratedList):
genfiles = self.generator_buildfile_ids[(name, generator_id)]
generator_id += 1
for o in genfiles:
file_arr.add_item(o)
+ else:
+ raise RuntimeError('Unknown input type: ' + str(gt))
phase_dict.add_item('runOnlyForDeploymentPostprocessing', 0)
def generate_pbx_target_dependency(self, objects_dict):
@@ -1375,10 +1381,18 @@ class XCodeBackend(backends.Backend):
if o_abs.endswith('.o') or o_abs.endswith('.obj'):
ldargs += [r'\"' + o_abs + r'\"']
else:
+ if isinstance(o, build.CustomTarget):
(srcs, ofilenames, cmd) = self.eval_custom_target_command(o)
for ofname in ofilenames:
if os.path.splitext(ofname)[-1] in LINKABLE_EXTENSIONS:
ldargs += [r'\"' + os.path.join(self.environment.get_build_dir(), ofname) + r'\"']
+ elif isinstance(o, build.CustomTargetIndex):
+ for ofname in o.get_outputs():
+ if os.path.splitext(ofname)[-1] in LINKABLE_EXTENSIONS:
+ ldargs += [r'\"' + os.path.join(self.environment.get_build_dir(), ofname) + r'\"']
+
+ else:
+ raise RuntimeError(o)
if isinstance(target, build.SharedModule):
options = self.environment.coredata.options
ldargs += linker.get_std_shared_module_link_args(options)
