Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(491)

Side by Side Diff: pylib/gyp/xcode_emulation.py

Issue 1521233002: mac ninja&make: Use xcrun instead of xcodebuild where possible. (Closed) Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 Google Inc. All rights reserved. 1 # Copyright (c) 2012 Google Inc. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """ 5 """
6 This module contains classes that help to emulate xcodebuild behavior on top of 6 This module contains classes that help to emulate xcodebuild behavior on top of
7 other build systems, such as make and ninja. 7 other build systems, such as make and ninja.
8 """ 8 """
9 9
10 import copy 10 import copy
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 config_settings.get('ARCHS'), 426 config_settings.get('ARCHS'),
427 config_settings.get('VALID_ARCHS'), 427 config_settings.get('VALID_ARCHS'),
428 config_settings.get('SDKROOT')) 428 config_settings.get('SDKROOT'))
429 429
430 def _GetSdkVersionInfoItem(self, sdk, infoitem): 430 def _GetSdkVersionInfoItem(self, sdk, infoitem):
431 # xcodebuild requires Xcode and can't run on Command Line Tools-only 431 # xcodebuild requires Xcode and can't run on Command Line Tools-only
432 # systems from 10.7 onward. 432 # systems from 10.7 onward.
433 # Since the CLT has no SDK paths anyway, returning None is the 433 # Since the CLT has no SDK paths anyway, returning None is the
434 # most sensible route and should still do the right thing. 434 # most sensible route and should still do the right thing.
435 try: 435 try:
436 return GetStdout(['xcodebuild', '-version', '-sdk', sdk, infoitem]) 436 return GetStdout(['xcrun', '--sdk', sdk, infoitem])
437 except: 437 except:
438 pass 438 pass
439 439
440 def _SdkRoot(self, configname): 440 def _SdkRoot(self, configname):
441 if configname is None: 441 if configname is None:
442 configname = self.configname 442 configname = self.configname
443 return self.GetPerConfigSetting('SDKROOT', configname, default='') 443 return self.GetPerConfigSetting('SDKROOT', configname, default='')
444 444
445 def _XcodePlatformPath(self, configname=None): 445 def _XcodePlatformPath(self, configname=None):
446 sdk_root = self._SdkRoot(configname) 446 sdk_root = self._SdkRoot(configname)
447 if sdk_root not in XcodeSettings._platform_path_cache: 447 if sdk_root not in XcodeSettings._platform_path_cache:
448 platform_path = self._GetSdkVersionInfoItem(sdk_root, 'PlatformPath') 448 platform_path = self._GetSdkVersionInfoItem(sdk_root,
449 '--show-sdk-platform-path')
449 XcodeSettings._platform_path_cache[sdk_root] = platform_path 450 XcodeSettings._platform_path_cache[sdk_root] = platform_path
450 return XcodeSettings._platform_path_cache[sdk_root] 451 return XcodeSettings._platform_path_cache[sdk_root]
451 452
452 def _SdkPath(self, configname=None): 453 def _SdkPath(self, configname=None):
453 sdk_root = self._SdkRoot(configname) 454 sdk_root = self._SdkRoot(configname)
454 if sdk_root.startswith('/'): 455 if sdk_root.startswith('/'):
455 return sdk_root 456 return sdk_root
456 return self._XcodeSdkPath(sdk_root) 457 return self._XcodeSdkPath(sdk_root)
457 458
458 def _XcodeSdkPath(self, sdk_root): 459 def _XcodeSdkPath(self, sdk_root):
459 if sdk_root not in XcodeSettings._sdk_path_cache: 460 if sdk_root not in XcodeSettings._sdk_path_cache:
460 sdk_path = self._GetSdkVersionInfoItem(sdk_root, 'Path') 461 sdk_path = self._GetSdkVersionInfoItem(sdk_root, '--show-sdk-path')
461 XcodeSettings._sdk_path_cache[sdk_root] = sdk_path 462 XcodeSettings._sdk_path_cache[sdk_root] = sdk_path
462 if sdk_root: 463 if sdk_root:
463 XcodeSettings._sdk_root_cache[sdk_path] = sdk_root 464 XcodeSettings._sdk_root_cache[sdk_path] = sdk_root
464 return XcodeSettings._sdk_path_cache[sdk_root] 465 return XcodeSettings._sdk_path_cache[sdk_root]
465 466
466 def _AppendPlatformVersionMinFlags(self, lst): 467 def _AppendPlatformVersionMinFlags(self, lst):
467 self._Appendf(lst, 'MACOSX_DEPLOYMENT_TARGET', '-mmacosx-version-min=%s') 468 self._Appendf(lst, 'MACOSX_DEPLOYMENT_TARGET', '-mmacosx-version-min=%s')
468 if 'IPHONEOS_DEPLOYMENT_TARGET' in self._Settings(): 469 if 'IPHONEOS_DEPLOYMENT_TARGET' in self._Settings():
469 # TODO: Implement this better? 470 # TODO: Implement this better?
470 sdk_path_basename = os.path.basename(self._SdkPath()) 471 sdk_path_basename = os.path.basename(self._SdkPath())
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 xcode, xcode_build = XcodeVersion() 1096 xcode, xcode_build = XcodeVersion()
1096 cache['DTXcode'] = xcode 1097 cache['DTXcode'] = xcode
1097 cache['DTXcodeBuild'] = xcode_build 1098 cache['DTXcodeBuild'] = xcode_build
1098 1099
1099 sdk_root = self._SdkRoot(configname) 1100 sdk_root = self._SdkRoot(configname)
1100 if not sdk_root: 1101 if not sdk_root:
1101 sdk_root = self._DefaultSdkRoot() 1102 sdk_root = self._DefaultSdkRoot()
1102 cache['DTSDKName'] = sdk_root 1103 cache['DTSDKName'] = sdk_root
1103 if xcode >= '0430': 1104 if xcode >= '0430':
1104 cache['DTSDKBuild'] = self._GetSdkVersionInfoItem( 1105 cache['DTSDKBuild'] = self._GetSdkVersionInfoItem(
1105 sdk_root, 'ProductBuildVersion') 1106 sdk_root, '--show-sdk-version')
1106 else: 1107 else:
1107 cache['DTSDKBuild'] = cache['BuildMachineOSBuild'] 1108 cache['DTSDKBuild'] = cache['BuildMachineOSBuild']
1108 1109
1109 if self.isIOS: 1110 if self.isIOS:
1110 cache['DTPlatformName'] = cache['DTSDKName'] 1111 cache['DTPlatformName'] = cache['DTSDKName']
1111 if configname.endswith("iphoneos"): 1112 if configname.endswith("iphoneos"):
1112 cache['DTPlatformVersion'] = self._GetSdkVersionInfoItem( 1113 cache['DTPlatformVersion'] = self._GetSdkVersionInfoItem(
1113 sdk_root, 'ProductVersion') 1114 sdk_root, '--show-sdk-version')
1114 cache['CFBundleSupportedPlatforms'] = ['iPhoneOS'] 1115 cache['CFBundleSupportedPlatforms'] = ['iPhoneOS']
1115 else: 1116 else:
1116 cache['CFBundleSupportedPlatforms'] = ['iPhoneSimulator'] 1117 cache['CFBundleSupportedPlatforms'] = ['iPhoneSimulator']
1117 XcodeSettings._plist_cache[configname] = cache 1118 XcodeSettings._plist_cache[configname] = cache
1118 1119
1119 # Include extra plist items that are per-target, not per global 1120 # Include extra plist items that are per-target, not per global
1120 # XcodeSettings. 1121 # XcodeSettings.
1121 items = dict(XcodeSettings._plist_cache[configname]) 1122 items = dict(XcodeSettings._plist_cache[configname])
1122 if self.isIOS: 1123 if self.isIOS:
1123 items['UIDeviceFamily'] = self._XcodeIOSDeviceFamily(configname) 1124 items['UIDeviceFamily'] = self._XcodeIOSDeviceFamily(configname)
(...skipping 517 matching lines...) Expand 10 before | Expand all | Expand 10 after
1641 if toolset == 'target': 1642 if toolset == 'target':
1642 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos' 1643 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos'
1643 return targets 1644 return targets
1644 1645
1645 def CloneConfigurationForDeviceAndEmulator(target_dicts): 1646 def CloneConfigurationForDeviceAndEmulator(target_dicts):
1646 """If |target_dicts| contains any iOS targets, automatically create -iphoneos 1647 """If |target_dicts| contains any iOS targets, automatically create -iphoneos
1647 targets for iOS device builds.""" 1648 targets for iOS device builds."""
1648 if _HasIOSTarget(target_dicts): 1649 if _HasIOSTarget(target_dicts):
1649 return _AddIOSDeviceConfigurations(target_dicts) 1650 return _AddIOSDeviceConfigurations(target_dicts)
1650 return target_dicts 1651 return target_dicts
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698