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

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

Issue 12638013: Add options for host/target OS/arch. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk
Patch Set: Created 7 years, 9 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 | pylib/gyp/common.py » ('j') | pylib/gyp/common.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2012 Google Inc. All rights reserved. 3 # Copyright (c) 2012 Google Inc. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 import copy 7 import copy
8 import gyp.input 8 import gyp.input
9 import optparse 9 import optparse
10 import os.path 10 import os.path
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 flavor = None 62 flavor = None
63 if '-' in format: 63 if '-' in format:
64 format, params['flavor'] = format.split('-', 1) 64 format, params['flavor'] = format.split('-', 1)
65 65
66 default_variables = copy.copy(default_variables) 66 default_variables = copy.copy(default_variables)
67 67
68 # Default variables provided by this program and its modules should be 68 # Default variables provided by this program and its modules should be
69 # named WITH_CAPITAL_LETTERS to provide a distinct "best practice" namespace, 69 # named WITH_CAPITAL_LETTERS to provide a distinct "best practice" namespace,
70 # avoiding collisions with user and automatic variables. 70 # avoiding collisions with user and automatic variables.
71 default_variables['GENERATOR'] = format 71 default_variables['GENERATOR'] = format
72 default_variables['HOST_OS'] = options.host_os
73 default_variables['TARGET_OS'] = options.target_os
Torne 2013/03/11 16:16:50 Currently there is a variable OS that's set by som
74 default_variables['HOST_ARCH'] = options.host_arch
75 default_variables['TARGET_ARCH'] = options.target_arch
Nico 2013/07/05 21:50:50 On Mac (and iOS), targets can have multiple target
72 76
73 # Format can be a custom python file, or by default the name of a module 77 # Format can be a custom python file, or by default the name of a module
74 # within gyp.generator. 78 # within gyp.generator.
75 if format.endswith('.py'): 79 if format.endswith('.py'):
76 generator_name = os.path.splitext(format)[0] 80 generator_name = os.path.splitext(format)[0]
77 path, generator_name = os.path.split(generator_name) 81 path, generator_name = os.path.split(generator_name)
78 82
79 # Make sure the path to the custom generator is in sys.path 83 # Make sure the path to the custom generator is in sys.path
80 # Don't worry about removing it once we are done. Keeping the path 84 # Don't worry about removing it once we are done. Keeping the path
81 # to each generator that is used in sys.path is likely harmless and 85 # to each generator that is used in sys.path is likely harmless and
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 # --no-circular-check disables the check for circular relationships between 330 # --no-circular-check disables the check for circular relationships between
327 # .gyp files. These relationships should not exist, but they've only been 331 # .gyp files. These relationships should not exist, but they've only been
328 # observed to be harmful with the Xcode generator. Chromium's .gyp files 332 # observed to be harmful with the Xcode generator. Chromium's .gyp files
329 # currently have some circular relationships on non-Mac platforms, so this 333 # currently have some circular relationships on non-Mac platforms, so this
330 # option allows the strict behavior to be used on Macs and the lenient 334 # option allows the strict behavior to be used on Macs and the lenient
331 # behavior to be used elsewhere. 335 # behavior to be used elsewhere.
332 # TODO(mark): Remove this option when http://crbug.com/35878 is fixed. 336 # TODO(mark): Remove this option when http://crbug.com/35878 is fixed.
333 parser.add_option('--no-circular-check', dest='circular_check', 337 parser.add_option('--no-circular-check', dest='circular_check',
334 action='store_false', default=True, regenerate=False, 338 action='store_false', default=True, regenerate=False,
335 help="don't check for circular relationships between files") 339 help="don't check for circular relationships between files")
340 parser.add_option('--host-os', dest='host_os', action='store', default=None,
341 metavar='OS', env_name='GYP_HOST_OS',
342 help='override detected host OS')
343 parser.add_option('--target-os', dest='target_os', action='store',
344 default=None, metavar='OS', env_name='GYP_TARGET_OS',
345 help='crosscompile for a different target OS')
346 parser.add_option('--host-arch', dest='host_arch', action='store',
347 default=None, metavar='ARCH', env_name='GYP_HOST_ARCH',
348 help='override detected host architecture')
349 parser.add_option('--target-arch', dest='target_arch', action='store',
350 default=None, metavar='ARCH', env_name='GYP_TARGET_ARCH',
351 help='crosscompile for a different target architecture')
336 352
337 # We read a few things from ~/.gyp, so set up a var for that. 353 # We read a few things from ~/.gyp, so set up a var for that.
338 home_vars = ['HOME'] 354 home_vars = ['HOME']
339 if sys.platform in ('cygwin', 'win32'): 355 if sys.platform in ('cygwin', 'win32'):
340 home_vars.append('USERPROFILE') 356 home_vars.append('USERPROFILE')
341 home = None 357 home = None
342 home_dot_gyp = None 358 home_dot_gyp = None
343 for home_var in home_vars: 359 for home_var in home_vars:
344 home = os.getenv(home_var) 360 home = os.getenv(home_var)
345 if home != None: 361 if home != None:
(...skipping 28 matching lines...) Expand all
374 390
375 if not options.generator_output and options.use_environment: 391 if not options.generator_output and options.use_environment:
376 g_o = os.environ.get('GYP_GENERATOR_OUTPUT') 392 g_o = os.environ.get('GYP_GENERATOR_OUTPUT')
377 if g_o: 393 if g_o:
378 options.generator_output = g_o 394 options.generator_output = g_o
379 395
380 if not options.parallel and options.use_environment: 396 if not options.parallel and options.use_environment:
381 p = os.environ.get('GYP_PARALLEL') 397 p = os.environ.get('GYP_PARALLEL')
382 options.parallel = bool(p and p != '0') 398 options.parallel = bool(p and p != '0')
383 399
400 if not options.host_os:
401 if options.use_environment:
402 options.host_os = os.environ.get('GYP_HOST_OS')
403 if not options.host_os:
404 options.host_os = gyp.common.GetFlavor({})
405
406 if not options.target_os:
407 if options.use_environment:
408 options.target_os = os.environ.get('GYP_TARGET_OS')
409 if not options.target_os:
410 options.target_os = options.host_os
411
412 if not options.host_arch:
413 if options.use_environment:
414 options.host_arch = os.environ.get('GYP_HOST_ARCH')
415 if not options.host_arch:
416 options.host_arch = gyp.common.DetectHostArchitecture()
417
418 if not options.target_arch:
419 if options.use_environment:
420 options.target_arch = arch.environ.get('GYP_TARGET_ARCH')
421 if not options.target_arch:
422 options.target_arch = options.host_arch
423
384 for mode in options.debug: 424 for mode in options.debug:
385 gyp.debug[mode] = 1 425 gyp.debug[mode] = 1
386 426
387 # Do an extra check to avoid work when we're not debugging. 427 # Do an extra check to avoid work when we're not debugging.
388 if DEBUG_GENERAL in gyp.debug: 428 if DEBUG_GENERAL in gyp.debug:
389 DebugOutput(DEBUG_GENERAL, 'running with these options:') 429 DebugOutput(DEBUG_GENERAL, 'running with these options:')
390 for option, value in sorted(options.__dict__.items()): 430 for option, value in sorted(options.__dict__.items()):
391 if option[0] == '_': 431 if option[0] == '_':
392 continue 432 continue
393 if isinstance(value, basestring): 433 if isinstance(value, basestring):
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 563
524 def main(args): 564 def main(args):
525 try: 565 try:
526 return gyp_main(args) 566 return gyp_main(args)
527 except GypError, e: 567 except GypError, e:
528 sys.stderr.write("gyp: %s\n" % e) 568 sys.stderr.write("gyp: %s\n" % e)
529 return 1 569 return 1
530 570
531 if __name__ == '__main__': 571 if __name__ == '__main__':
532 sys.exit(main(sys.argv[1:])) 572 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « no previous file | pylib/gyp/common.py » ('j') | pylib/gyp/common.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698