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

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

Issue 762673002: Add support for iOS WatchKit apps in GYP (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Specify code sign identity in extension test Created 6 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 | Annotate | Revision Log
« no previous file with comments | « pylib/gyp/generator/xcode.py ('k') | pylib/gyp/xcode_ninja.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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 def _WarnUnimplemented(self, test_key): 214 def _WarnUnimplemented(self, test_key):
215 if test_key in self._Settings(): 215 if test_key in self._Settings():
216 print 'Warning: Ignoring not yet implemented key "%s".' % test_key 216 print 'Warning: Ignoring not yet implemented key "%s".' % test_key
217 217
218 def _IsBundle(self): 218 def _IsBundle(self):
219 return int(self.spec.get('mac_bundle', 0)) != 0 219 return int(self.spec.get('mac_bundle', 0)) != 0
220 220
221 def _IsIosAppExtension(self): 221 def _IsIosAppExtension(self):
222 return int(self.spec.get('ios_app_extension', 0)) != 0 222 return int(self.spec.get('ios_app_extension', 0)) != 0
223 223
224 def _IsIosWatchKitExtension(self):
225 return int(self.spec.get('ios_watchkit_extension', 0)) != 0
226
227 def _IsIosWatchApp(self):
228 return int(self.spec.get('ios_watch_app', 0)) != 0
229
224 def GetFrameworkVersion(self): 230 def GetFrameworkVersion(self):
225 """Returns the framework version of the current target. Only valid for 231 """Returns the framework version of the current target. Only valid for
226 bundles.""" 232 bundles."""
227 assert self._IsBundle() 233 assert self._IsBundle()
228 return self.GetPerTargetSetting('FRAMEWORK_VERSION', default='A') 234 return self.GetPerTargetSetting('FRAMEWORK_VERSION', default='A')
229 235
230 def GetWrapperExtension(self): 236 def GetWrapperExtension(self):
231 """Returns the bundle extension (.app, .framework, .plugin, etc). Only 237 """Returns the bundle extension (.app, .framework, .plugin, etc). Only
232 valid for bundles.""" 238 valid for bundles."""
233 assert self._IsBundle() 239 assert self._IsBundle()
234 if self.spec['type'] in ('loadable_module', 'shared_library'): 240 if self.spec['type'] in ('loadable_module', 'shared_library'):
235 default_wrapper_extension = { 241 default_wrapper_extension = {
236 'loadable_module': 'bundle', 242 'loadable_module': 'bundle',
237 'shared_library': 'framework', 243 'shared_library': 'framework',
238 }[self.spec['type']] 244 }[self.spec['type']]
239 wrapper_extension = self.GetPerTargetSetting( 245 wrapper_extension = self.GetPerTargetSetting(
240 'WRAPPER_EXTENSION', default=default_wrapper_extension) 246 'WRAPPER_EXTENSION', default=default_wrapper_extension)
241 return '.' + self.spec.get('product_extension', wrapper_extension) 247 return '.' + self.spec.get('product_extension', wrapper_extension)
242 elif self.spec['type'] == 'executable': 248 elif self.spec['type'] == 'executable':
243 if self._IsIosAppExtension(): 249 if self._IsIosAppExtension() or self._IsIosWatchKitExtension():
244 return '.' + self.spec.get('product_extension', 'appex') 250 return '.' + self.spec.get('product_extension', 'appex')
245 else: 251 else:
246 return '.' + self.spec.get('product_extension', 'app') 252 return '.' + self.spec.get('product_extension', 'app')
247 else: 253 else:
248 assert False, "Don't know extension for '%s', target '%s'" % ( 254 assert False, "Don't know extension for '%s', target '%s'" % (
249 self.spec['type'], self.spec['target_name']) 255 self.spec['type'], self.spec['target_name'])
250 256
251 def GetProductName(self): 257 def GetProductName(self):
252 """Returns PRODUCT_NAME.""" 258 """Returns PRODUCT_NAME."""
253 return self.spec.get('product_name', self.spec['target_name']) 259 return self.spec.get('product_name', self.spec['target_name'])
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 else: 301 else:
296 return os.path.join(self.GetBundleContentsFolderPath(), 302 return os.path.join(self.GetBundleContentsFolderPath(),
297 'Resources', 'Info.plist') 303 'Resources', 'Info.plist')
298 304
299 def GetProductType(self): 305 def GetProductType(self):
300 """Returns the PRODUCT_TYPE of this target.""" 306 """Returns the PRODUCT_TYPE of this target."""
301 if self._IsIosAppExtension(): 307 if self._IsIosAppExtension():
302 assert self._IsBundle(), ('ios_app_extension flag requires mac_bundle ' 308 assert self._IsBundle(), ('ios_app_extension flag requires mac_bundle '
303 '(target %s)' % self.spec['target_name']) 309 '(target %s)' % self.spec['target_name'])
304 return 'com.apple.product-type.app-extension' 310 return 'com.apple.product-type.app-extension'
311 if self._IsIosWatchKitExtension():
312 assert self._IsBundle(), ('ios_watchkit_extension flag requires '
313 'mac_bundle (target %s)' % self.spec['target_name'])
314 return 'com.apple.product-type.watchkit-extension'
315 if self._IsIosWatchApp():
316 assert self._IsBundle(), ('ios_watch_app flag requires mac_bundle '
317 '(target %s)' % self.spec['target_name'])
318 return 'com.apple.product-type.application.watchapp'
305 if self._IsBundle(): 319 if self._IsBundle():
306 return { 320 return {
307 'executable': 'com.apple.product-type.application', 321 'executable': 'com.apple.product-type.application',
308 'loadable_module': 'com.apple.product-type.bundle', 322 'loadable_module': 'com.apple.product-type.bundle',
309 'shared_library': 'com.apple.product-type.framework', 323 'shared_library': 'com.apple.product-type.framework',
310 }[self.spec['type']] 324 }[self.spec['type']]
311 else: 325 else:
312 return { 326 return {
313 'executable': 'com.apple.product-type.tool', 327 'executable': 'com.apple.product-type.tool',
314 'loadable_module': 'com.apple.product-type.library.dynamic', 328 'loadable_module': 'com.apple.product-type.library.dynamic',
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 ldflags.append('-Wl,-rpath,' + rpath) 811 ldflags.append('-Wl,-rpath,' + rpath)
798 812
799 sdk_root = self._SdkPath() 813 sdk_root = self._SdkPath()
800 if not sdk_root: 814 if not sdk_root:
801 sdk_root = '' 815 sdk_root = ''
802 config = self.spec['configurations'][self.configname] 816 config = self.spec['configurations'][self.configname]
803 framework_dirs = config.get('mac_framework_dirs', []) 817 framework_dirs = config.get('mac_framework_dirs', [])
804 for directory in framework_dirs: 818 for directory in framework_dirs:
805 ldflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root)) 819 ldflags.append('-F' + directory.replace('$(SDKROOT)', sdk_root))
806 820
807 if sdk_root and self._IsIosAppExtension(): 821 is_extension = self._IsIosAppExtension() or self._IsIosWatchKitExtension()
822 if sdk_root and is_extension:
808 # Adds the link flags for extensions. These flags are common for all 823 # Adds the link flags for extensions. These flags are common for all
809 # extensions and provide loader and main function. 824 # extensions and provide loader and main function.
810 # These flags reflect the compilation options used by xcode to compile 825 # These flags reflect the compilation options used by xcode to compile
811 # extensions. 826 # extensions.
812 ldflags.append('-lpkstart') 827 ldflags.append('-lpkstart')
813 ldflags.append(sdk_root + 828 ldflags.append(sdk_root +
814 '/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit') 829 '/System/Library/PrivateFrameworks/PlugInKit.framework/PlugInKit')
815 ldflags.append('-fapplication-extension') 830 ldflags.append('-fapplication-extension')
816 ldflags.append('-Xlinker -rpath ' 831 ldflags.append('-Xlinker -rpath '
817 '-Xlinker @executable_path/../../Frameworks') 832 '-Xlinker @executable_path/../../Frameworks')
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
1572 if toolset == 'target': 1587 if toolset == 'target':
1573 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos' 1588 iphoneos_config_dict['xcode_settings']['SDKROOT'] = 'iphoneos'
1574 return targets 1589 return targets
1575 1590
1576 def CloneConfigurationForDeviceAndEmulator(target_dicts): 1591 def CloneConfigurationForDeviceAndEmulator(target_dicts):
1577 """If |target_dicts| contains any iOS targets, automatically create -iphoneos 1592 """If |target_dicts| contains any iOS targets, automatically create -iphoneos
1578 targets for iOS device builds.""" 1593 targets for iOS device builds."""
1579 if _HasIOSTarget(target_dicts): 1594 if _HasIOSTarget(target_dicts):
1580 return _AddIOSDeviceConfigurations(target_dicts) 1595 return _AddIOSDeviceConfigurations(target_dicts)
1581 return target_dicts 1596 return target_dicts
OLDNEW
« no previous file with comments | « pylib/gyp/generator/xcode.py ('k') | pylib/gyp/xcode_ninja.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698