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

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

Issue 138533006: Improve ninja's Xcode emulation (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Created 6 years, 10 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | test/ios/app-bundle/test-archs.gyp » ('j') | 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 1400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 def _HasIOSTarget(targets): 1411 def _HasIOSTarget(targets):
1412 """Returns true if any target contains the iOS specific key 1412 """Returns true if any target contains the iOS specific key
1413 IPHONEOS_DEPLOYMENT_TARGET.""" 1413 IPHONEOS_DEPLOYMENT_TARGET."""
1414 for target_dict in targets.values(): 1414 for target_dict in targets.values():
1415 for config in target_dict['configurations'].values(): 1415 for config in target_dict['configurations'].values():
1416 if config.get('xcode_settings', {}).get('IPHONEOS_DEPLOYMENT_TARGET'): 1416 if config.get('xcode_settings', {}).get('IPHONEOS_DEPLOYMENT_TARGET'):
1417 return True 1417 return True
1418 return False 1418 return False
1419 1419
1420 1420
1421 def _IOSIsDeviceSDKROOT(sdkroot):
1422 """Tests if |sdkroot| is a SDK for building for device."""
1423 return sdkroot == 'iphoneos'
Mark Mentovai 2014/02/05 21:51:46 Shouldn’t this test be a little more comprehensive
sdefresne 2014/02/06 09:53:19 Done.
1424
1425
1426 def _FilterIOSArchitectureForSDKROOT(xcode_settings):
1427 """Filter the ARCHS value from the |xcode_settings| dictionary to only
1428 contains architectures valid for the sdk configured in SDKROOT value."""
1429 allowed_archs = ('i386', 'x86_64')
1430 if _IOSIsDeviceSDKROOT(xcode_settings.get('SDKROOT', '')):
1431 allowed_archs = ('armv7', 'armv7s', 'arm64')
1432 archs = set()
1433 for arch in (xcode_settings.get('ARCHS', []) or ['$(ARCHS_STANDARD)']):
1434 if arch == '$(ARCHS_STANDARD)':
1435 archs.update(allowed_archs[:-1])
1436 elif arch == '$(ARCHS_STANDARD_INCLUDING_64_BIT)':
1437 archs.update(allowed_archs)
1438 elif arch in allowed_archs:
1439 archs.add(arch)
1440 valid_archs = set(xcode_settings.get('VALID_ARCHS', []))
1441 if valid_archs:
1442 archs = archs & valid_archs
1443 xcode_settings['ARCHS'] = list(archs)
1444
1445
1421 def _AddIOSDeviceConfigurations(targets): 1446 def _AddIOSDeviceConfigurations(targets):
1422 """Clone all targets and append -iphoneos to the name. Configure these targets 1447 """Clone all targets and append -iphoneos to the name. Configure these targets
1423 to build for iOS devices.""" 1448 to build for iOS devices and use correct architectures for those builds."""
1424 for target_dict in targets.values(): 1449 for target_dict in targets.itervalues():
1425 for config_name in target_dict['configurations'].keys(): 1450 for config_name in target_dict['configurations'].keys():
1426 config = target_dict['configurations'][config_name] 1451 config = target_dict['configurations'][config_name]
1427 new_config_name = config_name + '-iphoneos' 1452 new_config_name = config_name + '-iphoneos'
1428 new_config_dict = copy.deepcopy(config) 1453 new_config_dict = copy.deepcopy(config)
1429 if target_dict['toolset'] == 'target': 1454 if target_dict['toolset'] == 'target':
1430 new_config_dict['xcode_settings']['ARCHS'] = ['armv7']
1431 new_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos' 1455 new_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos'
1456 _FilterIOSArchitectureForSDKROOT(new_config_dict['xcode_settings'])
1457 _FilterIOSArchitectureForSDKROOT(config['xcode_settings'])
1432 target_dict['configurations'][new_config_name] = new_config_dict 1458 target_dict['configurations'][new_config_name] = new_config_dict
1433 return targets 1459 return targets
1434 1460
1435 def CloneConfigurationForDeviceAndEmulator(target_dicts): 1461 def CloneConfigurationForDeviceAndEmulator(target_dicts):
1436 """If |target_dicts| contains any iOS targets, automatically create -iphoneos 1462 """If |target_dicts| contains any iOS targets, automatically create -iphoneos
1437 targets for iOS device builds.""" 1463 targets for iOS device builds."""
1438 if _HasIOSTarget(target_dicts): 1464 if _HasIOSTarget(target_dicts):
1439 return _AddIOSDeviceConfigurations(target_dicts) 1465 return _AddIOSDeviceConfigurations(target_dicts)
1440 return target_dicts 1466 return target_dicts
OLDNEW
« no previous file with comments | « no previous file | test/ios/app-bundle/test-archs.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698