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

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

Issue 1876623002: Adds support for a new target spec: 'mac_xcuitest_bundle'. This allows us to create UI testing bund… (Closed) Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « pylib/gyp/generator/xcode.py ('k') | pylib/gyp/xcodeproj_file.py » ('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 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 default = "binary" if self.isIOS else "xml" 222 default = "binary" if self.isIOS else "xml"
223 format = self.xcode_settings[configname].get('INFOPLIST_OUTPUT_FORMAT', 223 format = self.xcode_settings[configname].get('INFOPLIST_OUTPUT_FORMAT',
224 default) 224 default)
225 return format == "binary" 225 return format == "binary"
226 226
227 def IsIosFramework(self): 227 def IsIosFramework(self):
228 return self.spec['type'] == 'shared_library' and self._IsBundle() and \ 228 return self.spec['type'] == 'shared_library' and self._IsBundle() and \
229 self.isIOS 229 self.isIOS
230 230
231 def _IsBundle(self): 231 def _IsBundle(self):
232 return int(self.spec.get('mac_bundle', 0)) != 0 or self._IsXCTest() 232 return int(self.spec.get('mac_bundle', 0)) != 0 or self._IsXCTest() or \
233 self._IsXCUiTest()
233 234
234 def _IsXCTest(self): 235 def _IsXCTest(self):
235 return int(self.spec.get('mac_xctest_bundle', 0)) != 0 236 return int(self.spec.get('mac_xctest_bundle', 0)) != 0
236 237
238 def _IsXCUiTest(self):
239 return int(self.spec.get('mac_xcuitest_bundle', 0)) != 0
240
237 def _IsIosAppExtension(self): 241 def _IsIosAppExtension(self):
238 return int(self.spec.get('ios_app_extension', 0)) != 0 242 return int(self.spec.get('ios_app_extension', 0)) != 0
239 243
240 def _IsIosWatchKitExtension(self): 244 def _IsIosWatchKitExtension(self):
241 return int(self.spec.get('ios_watchkit_extension', 0)) != 0 245 return int(self.spec.get('ios_watchkit_extension', 0)) != 0
242 246
243 def _IsIosWatchApp(self): 247 def _IsIosWatchApp(self):
244 return int(self.spec.get('ios_watch_app', 0)) != 0 248 return int(self.spec.get('ios_watch_app', 0)) != 0
245 249
246 def GetFrameworkVersion(self): 250 def GetFrameworkVersion(self):
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 '(target %s)' % self.spec['target_name']) 330 '(target %s)' % self.spec['target_name'])
327 return 'com.apple.product-type.app-extension' 331 return 'com.apple.product-type.app-extension'
328 if self._IsIosWatchKitExtension(): 332 if self._IsIosWatchKitExtension():
329 assert self._IsBundle(), ('ios_watchkit_extension flag requires ' 333 assert self._IsBundle(), ('ios_watchkit_extension flag requires '
330 'mac_bundle (target %s)' % self.spec['target_name']) 334 'mac_bundle (target %s)' % self.spec['target_name'])
331 return 'com.apple.product-type.watchkit-extension' 335 return 'com.apple.product-type.watchkit-extension'
332 if self._IsIosWatchApp(): 336 if self._IsIosWatchApp():
333 assert self._IsBundle(), ('ios_watch_app flag requires mac_bundle ' 337 assert self._IsBundle(), ('ios_watch_app flag requires mac_bundle '
334 '(target %s)' % self.spec['target_name']) 338 '(target %s)' % self.spec['target_name'])
335 return 'com.apple.product-type.application.watchapp' 339 return 'com.apple.product-type.application.watchapp'
340 if self._IsXCUiTest():
341 assert self._IsBundle(), ('mac_xcuitest_bundle flag requires mac_bundle '
342 '(target %s)' % self.spec['target_name'])
343 return 'com.apple.product-type.bundle.ui-testing'
336 if self._IsBundle(): 344 if self._IsBundle():
337 return { 345 return {
338 'executable': 'com.apple.product-type.application', 346 'executable': 'com.apple.product-type.application',
339 'loadable_module': 'com.apple.product-type.bundle', 347 'loadable_module': 'com.apple.product-type.bundle',
340 'shared_library': 'com.apple.product-type.framework', 348 'shared_library': 'com.apple.product-type.framework',
341 }[self.spec['type']] 349 }[self.spec['type']]
342 else: 350 else:
343 return { 351 return {
344 'executable': 'com.apple.product-type.tool', 352 'executable': 'com.apple.product-type.tool',
345 'loadable_module': 'com.apple.product-type.library.dynamic', 353 'loadable_module': 'com.apple.product-type.library.dynamic',
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 config['xcode_settings'] = new_settings 1421 config['xcode_settings'] = new_settings
1414 1422
1415 1423
1416 def IsMacBundle(flavor, spec): 1424 def IsMacBundle(flavor, spec):
1417 """Returns if |spec| should be treated as a bundle. 1425 """Returns if |spec| should be treated as a bundle.
1418 1426
1419 Bundles are directories with a certain subdirectory structure, instead of 1427 Bundles are directories with a certain subdirectory structure, instead of
1420 just a single file. Bundle rules do not produce a binary but also package 1428 just a single file. Bundle rules do not produce a binary but also package
1421 resources into that directory.""" 1429 resources into that directory."""
1422 is_mac_bundle = int(spec.get('mac_xctest_bundle', 0)) != 0 or \ 1430 is_mac_bundle = int(spec.get('mac_xctest_bundle', 0)) != 0 or \
1431 int(spec.get('mac_xcuitest_bundle', 0)) != 0 or \
1423 (int(spec.get('mac_bundle', 0)) != 0 and flavor == 'mac') 1432 (int(spec.get('mac_bundle', 0)) != 0 and flavor == 'mac')
1424 1433
1425 if is_mac_bundle: 1434 if is_mac_bundle:
1426 assert spec['type'] != 'none', ( 1435 assert spec['type'] != 'none', (
1427 'mac_bundle targets cannot have type none (target "%s")' % 1436 'mac_bundle targets cannot have type none (target "%s")' %
1428 spec['target_name']) 1437 spec['target_name'])
1429 return is_mac_bundle 1438 return is_mac_bundle
1430 1439
1431 1440
1432 def GetMacBundleResources(product_dir, xcode_settings, resources): 1441 def GetMacBundleResources(product_dir, xcode_settings, resources):
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
1709 if toolset == 'target': 1718 if toolset == 'target':
1710 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos' 1719 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos'
1711 return targets 1720 return targets
1712 1721
1713 def CloneConfigurationForDeviceAndEmulator(target_dicts): 1722 def CloneConfigurationForDeviceAndEmulator(target_dicts):
1714 """If |target_dicts| contains any iOS targets, automatically create -iphoneos 1723 """If |target_dicts| contains any iOS targets, automatically create -iphoneos
1715 targets for iOS device builds.""" 1724 targets for iOS device builds."""
1716 if _HasIOSTarget(target_dicts): 1725 if _HasIOSTarget(target_dicts):
1717 return _AddIOSDeviceConfigurations(target_dicts) 1726 return _AddIOSDeviceConfigurations(target_dicts)
1718 return target_dicts 1727 return target_dicts
OLDNEW
« no previous file with comments | « pylib/gyp/generator/xcode.py ('k') | pylib/gyp/xcodeproj_file.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698