From 9e4195d64f66fde0df104a7cf82b287fd912200b Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Thu, 22 Apr 2021 20:00:16 +0300 Subject: Xcode: handle CustomTargetIndexes. --- mesonbuild/backend/xcodebackend.py | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py index 9f72aee..68e174f 100644 --- a/mesonbuild/backend/xcodebackend.py +++ b/mesonbuild/backend/xcodebackend.py @@ -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: - (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'\"'] + 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) -- cgit v1.1