| Index: pylib/gyp/xcode_emulation.py
|
| ===================================================================
|
| --- pylib/gyp/xcode_emulation.py (revision 1785)
|
| +++ pylib/gyp/xcode_emulation.py (working copy)
|
| @@ -31,6 +31,10 @@
|
| # cached at class-level for efficiency.
|
| _codesigning_key_cache = {}
|
|
|
| + # Populated lazily by _XcodeVersion. Shared by all XcodeSettings, so cached
|
| + # at class-level for efficiency.
|
| + _xcode_version_cache = ()
|
| +
|
| def __init__(self, spec):
|
| self.spec = spec
|
|
|
| @@ -262,7 +266,7 @@
|
| """Returns the architectures this target should be built for."""
|
| # TODO: Look at VALID_ARCHS, ONLY_ACTIVE_ARCH; possibly set
|
| # CURRENT_ARCH / NATIVE_ARCH env vars?
|
| - return self.xcode_settings[configname].get('ARCHS', ['i386'])
|
| + return self.xcode_settings[configname].get('ARCHS', [self._DefaultArch()])
|
|
|
| def _GetStdout(self, cmdlist):
|
| job = subprocess.Popen(cmdlist, stdout=subprocess.PIPE)
|
| @@ -377,7 +381,7 @@
|
| if arch is not None:
|
| archs = [arch]
|
| else:
|
| - archs = self._Settings().get('ARCHS', ['i386'])
|
| + archs = self._Settings().get('ARCHS', [self._DefaultArch()])
|
| if len(archs) != 1:
|
| # TODO: Supporting fat binaries will be annoying.
|
| self._WarnUnimplemented('ARCHS')
|
| @@ -630,7 +634,7 @@
|
| if arch is not None:
|
| archs = [arch]
|
| else:
|
| - archs = self._Settings().get('ARCHS', ['i386'])
|
| + archs = self._Settings().get('ARCHS', [self._DefaultArch()])
|
| if len(archs) != 1:
|
| # TODO: Supporting fat binaries will be annoying.
|
| self._WarnUnimplemented('ARCHS')
|
| @@ -848,14 +852,16 @@
|
| # Component versions: DevToolsCore-1809.0; DevToolsSupport-1806.0
|
| # BuildVersion: 10M2518
|
| # Convert that to '0463', '4H1503'.
|
| - version_list = self._GetStdout(['xcodebuild', '-version']).splitlines()
|
| - version = version_list[0]
|
| - build = version_list[-1]
|
| - # Be careful to convert "4.2" to "0420":
|
| - version = version.split()[-1].replace('.', '')
|
| - version = (version + '0' * (3 - len(version))).zfill(4)
|
| - build = build.split()[-1]
|
| - return version, build
|
| + if len(XcodeSettings._xcode_version_cache) == 0:
|
| + version_list = self._GetStdout(['xcodebuild', '-version']).splitlines()
|
| + version = version_list[0]
|
| + build = version_list[-1]
|
| + # Be careful to convert "4.2" to "0420":
|
| + version = version.split()[-1].replace('.', '')
|
| + version = (version + '0' * (3 - len(version))).zfill(4)
|
| + build = build.split()[-1]
|
| + XcodeSettings._xcode_version_cache = (version, build)
|
| + return XcodeSettings._xcode_version_cache
|
|
|
| def _XcodeIOSDeviceFamily(self, configname):
|
| family = self.xcode_settings[configname].get('TARGETED_DEVICE_FAMILY', '1')
|
| @@ -896,6 +902,13 @@
|
| items['UIDeviceFamily'] = self._XcodeIOSDeviceFamily(configname)
|
| return items
|
|
|
| + def _DefaultArch(self):
|
| + # The default value for ARCHS changed from ['i386'] to ['x86_64'] in
|
| + # Xcode 5.
|
| + version, build = self._XcodeVersion()
|
| + if version >= '0500':
|
| + return 'x86_64'
|
| + return 'i386'
|
|
|
| class MacPrefixHeader(object):
|
| """A class that helps with emulating Xcode's GCC_PREFIX_HEADER feature.
|
|
|