aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillermo Ignacio Enriquez Gutierrez <ignacio@jp.ibm.com>2018-09-23 02:48:44 +0900
committerGuillermo Ignacio Enriquez Gutierrez <ignacio@jp.ibm.com>2018-09-24 02:17:47 +0900
commitf482b82a430e60aabca7bd6db0d7cdb20bf7db49 (patch)
tree9bb0a513118a11c1053cc46223cefce7794c3ac7
parent13c0705263569dadc23443052b4d51e156cbe9cc (diff)
downloadmeson-f482b82a430e60aabca7bd6db0d7cdb20bf7db49.zip
meson-f482b82a430e60aabca7bd6db0d7cdb20bf7db49.tar.gz
meson-f482b82a430e60aabca7bd6db0d7cdb20bf7db49.tar.bz2
Sort some objects before writing as Xcode expects [skip ci]
-rw-r--r--mesonbuild/backend/xcodebackend.py83
1 files changed, 45 insertions, 38 deletions
diff --git a/mesonbuild/backend/xcodebackend.py b/mesonbuild/backend/xcodebackend.py
index b930c7f..8c85df9 100644
--- a/mesonbuild/backend/xcodebackend.py
+++ b/mesonbuild/backend/xcodebackend.py
@@ -16,7 +16,7 @@ from . import backends
from .. import build
from .. import dependencies
from .. import mesonlib
-import uuid, os
+import uuid, os, operator
from ..mesonlib import MesonException
@@ -202,38 +202,38 @@ class XCodeBackend(backends.Backend):
self.source_phase[t] = self.gen_id()
def generate_pbx_aggregate_target(self):
+ target_dependencies = list(map(lambda t: self.pbx_dep_map[t], self.build.targets))
+ aggregated_targets = []
+ aggregated_targets.append((self.all_id, 'ALL_BUILD', self.all_buildconf_id, [], target_dependencies))
+ aggregated_targets.append((self.test_id, 'RUN_TESTS', self.test_buildconf_id, [self.test_command_id], []))
+ # Sort objects by ID before writing
+ sorted_aggregated_targets = sorted(aggregated_targets, key=operator.itemgetter(0))
self.ofile.write('\n/* Begin PBXAggregateTarget section */\n')
- self.write_line('%s /* ALL_BUILD */ = {' % self.all_id)
- self.indent_level += 1
- self.write_line('isa = PBXAggregateTarget;')
- self.write_line('buildConfigurationList = %s /* Build configuration list for PBXAggregateTarget "ALL_BUILD" */;' % self.all_buildconf_id)
- self.write_line('buildPhases = (')
- self.write_line(');')
- self.write_line('dependencies = (')
- self.indent_level += 1
- for t in self.build.targets:
- self.write_line('%s /* PBXTargetDependency */,' % self.pbx_dep_map[t])
- self.indent_level -= 1
- self.write_line(');')
- self.write_line('name = ALL_BUILD;')
- self.write_line('productName = ALL_BUILD;')
- self.indent_level -= 1
- self.write_line('};')
- self.write_line('%s /* RUN_TESTS */ = {' % self.test_id)
- self.indent_level += 1
- self.write_line('isa = PBXAggregateTarget;')
- self.write_line('buildConfigurationList = %s /* Build configuration list for PBXAggregateTarget "RUN_TESTS" */;' % self.test_buildconf_id)
- self.write_line('buildPhases = (')
- self.indent_level += 1
- self.write_line('%s /* ShellScript */,' % self.test_command_id)
- self.indent_level -= 1
- self.write_line(');')
- self.write_line('dependencies = (')
- self.write_line(');')
- self.write_line('name = RUN_TESTS;')
- self.write_line('productName = RUN_TESTS;')
- self.indent_level -= 1
- self.write_line('};')
+ for t in sorted_aggregated_targets:
+ name = t[1]
+ buildconf_id = t[2]
+ build_phases = t[3]
+ dependencies = t[4]
+ self.write_line('%s /* %s */ = {' % (t[0], name))
+ self.indent_level += 1
+ self.write_line('isa = PBXAggregateTarget;')
+ self.write_line('buildConfigurationList = %s /* Build configuration list for PBXAggregateTarget "%s" */;' % (buildconf_id, name))
+ self.write_line('buildPhases = (')
+ self.indent_level += 1
+ for bp in build_phases:
+ self.write_line('%s /* ShellScript */,' % bp)
+ self.indent_level -= 1
+ self.write_line(');')
+ self.write_line('dependencies = (')
+ self.indent_level += 1
+ for td in dependencies:
+ self.write_line('%s /* PBXTargetDependency */,' % td)
+ self.indent_level -= 1
+ self.write_line(');')
+ self.write_line('name = %s;' % name)
+ self.write_line('productName = %s;' % name)
+ self.indent_level -= 1
+ self.write_line('};')
self.ofile.write('/* End PBXAggregateTarget section */\n')
def generate_pbx_build_file(self):
@@ -594,14 +594,20 @@ class XCodeBackend(backends.Backend):
self.ofile.write('/* End PBXSourcesBuildPhase section */\n')
def generate_pbx_target_dependency(self):
- self.ofile.write('\n/* Begin PBXTargetDependency section */\n')
+ targets = []
for t in self.build.targets:
idval = self.pbx_dep_map[t] # VERIFY: is this correct?
- self.write_line('%s /* PBXTargetDependency */ = {' % idval)
+ targets.append((idval, self.native_targets[t], t, self.containerproxy_map[t]))
+
+ # Sort object by ID
+ sorted_targets = sorted(targets, key=operator.itemgetter(0))
+ self.ofile.write('\n/* Begin PBXTargetDependency section */\n')
+ for t in sorted_targets:
+ self.write_line('%s /* PBXTargetDependency */ = {' % t[0])
self.indent_level += 1
self.write_line('isa = PBXTargetDependency;')
- self.write_line('target = %s /* %s */;' % (self.native_targets[t], t))
- self.write_line('targetProxy = %s /* PBXContainerItemProxy */;' % self.containerproxy_map[t])
+ self.write_line('target = %s /* %s */;' % (t[1], t[2]))
+ self.write_line('targetProxy = %s /* PBXContainerItemProxy */;' % t[3])
self.indent_level -= 1
self.write_line('};')
self.ofile.write('/* End PBXTargetDependency section */\n')
@@ -764,12 +770,13 @@ class XCodeBackend(backends.Backend):
self.write_build_setting_line('WARNING_CFLAGS', ['-Wmost', '-Wno-four-char-constants', '-Wno-unknown-pragmas'])
self.indent_level -= 1
self.write_line('};')
- self.write_line('name = "%s";' % buildtype)
+ self.write_line('name = %s;' % buildtype)
self.indent_level -= 1
self.write_line('};')
self.ofile.write('/* End XCBuildConfiguration section */\n')
def generate_xc_configurationList(self):
+ # FIXME: sort items
self.ofile.write('\n/* Begin XCConfigurationList section */\n')
self.write_line('%s /* Build configuration list for PBXProject "%s" */ = {' % (self.project_conflist, self.build.project_name))
self.indent_level += 1
@@ -828,7 +835,7 @@ class XCodeBackend(backends.Backend):
self.indent_level -= 1
self.write_line(');')
self.write_line('defaultConfigurationIsVisible = 0;')
- self.write_line('defaultConfigurationName = "%s";' % typestr)
+ self.write_line('defaultConfigurationName = %s;' % typestr)
self.indent_level -= 1
self.write_line('};')
self.ofile.write('/* End XCConfigurationList section */\n')