OLD | NEW |
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 from __future__ import with_statement | 5 from __future__ import with_statement |
6 | 6 |
7 import collections | 7 import collections |
8 import errno | 8 import errno |
9 import filecmp | 9 import filecmp |
10 import os.path | 10 import os.path |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 if sys.platform.startswith('openbsd'): | 426 if sys.platform.startswith('openbsd'): |
427 return 'openbsd' | 427 return 'openbsd' |
428 if sys.platform.startswith('netbsd'): | 428 if sys.platform.startswith('netbsd'): |
429 return 'netbsd' | 429 return 'netbsd' |
430 if sys.platform.startswith('aix'): | 430 if sys.platform.startswith('aix'): |
431 return 'aix' | 431 return 'aix' |
432 | 432 |
433 return 'linux' | 433 return 'linux' |
434 | 434 |
435 | 435 |
436 def CopyTool(flavor, out_path): | 436 def CopyTool(flavor, out_path, generator_flags={}): |
437 """Finds (flock|mac|win)_tool.gyp in the gyp directory and copies it | 437 """Finds (flock|mac|win)_tool.gyp in the gyp directory and copies it |
438 to |out_path|.""" | 438 to |out_path|.""" |
439 # aix and solaris just need flock emulation. mac and win use more complicated | 439 # aix and solaris just need flock emulation. mac and win use more complicated |
440 # support scripts. | 440 # support scripts. |
441 prefix = { | 441 prefix = { |
442 'aix': 'flock', | 442 'aix': 'flock', |
443 'solaris': 'flock', | 443 'solaris': 'flock', |
444 'mac': 'mac', | 444 'mac': 'mac', |
445 'win': 'win' | 445 'win': 'win' |
446 }.get(flavor, None) | 446 }.get(flavor, None) |
447 if not prefix: | 447 if not prefix: |
448 return | 448 return |
449 | 449 |
450 # Slurp input file. | 450 # Slurp input file. |
451 source_path = os.path.join( | 451 source_path = os.path.join( |
452 os.path.dirname(os.path.abspath(__file__)), '%s_tool.py' % prefix) | 452 os.path.dirname(os.path.abspath(__file__)), '%s_tool.py' % prefix) |
453 with open(source_path) as source_file: | 453 with open(source_path) as source_file: |
454 source = source_file.readlines() | 454 source = source_file.readlines() |
455 | 455 |
| 456 # Set custom header flags. |
| 457 header = '# Generated by gyp. Do not edit.\n' |
| 458 mac_toolchain_dir = generator_flags.get('mac_toolchain_dir', None) |
| 459 if flavor == 'mac' and mac_toolchain_dir: |
| 460 header += "import os;\nos.environ['DEVELOPER_DIR']='%s'\n" \ |
| 461 % mac_toolchain_dir |
| 462 |
456 # Add header and write it out. | 463 # Add header and write it out. |
457 tool_path = os.path.join(out_path, 'gyp-%s-tool' % prefix) | 464 tool_path = os.path.join(out_path, 'gyp-%s-tool' % prefix) |
458 with open(tool_path, 'w') as tool_file: | 465 with open(tool_path, 'w') as tool_file: |
459 tool_file.write( | 466 tool_file.write( |
460 ''.join([source[0], '# Generated by gyp. Do not edit.\n'] + source[1:])) | 467 ''.join([source[0], header] + source[1:])) |
461 | 468 |
462 # Make file executable. | 469 # Make file executable. |
463 os.chmod(tool_path, 0755) | 470 os.chmod(tool_path, 0755) |
464 | 471 |
465 | 472 |
466 # From Alex Martelli, | 473 # From Alex Martelli, |
467 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 | 474 # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560 |
468 # ASPN: Python Cookbook: Remove duplicates from a sequence | 475 # ASPN: Python Cookbook: Remove duplicates from a sequence |
469 # First comment, dated 2001/10/13. | 476 # First comment, dated 2001/10/13. |
470 # (Also in the printed Python Cookbook.) | 477 # (Also in the printed Python Cookbook.) |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 def CrossCompileRequested(): | 606 def CrossCompileRequested(): |
600 # TODO: figure out how to not build extra host objects in the | 607 # TODO: figure out how to not build extra host objects in the |
601 # non-cross-compile case when this is enabled, and enable unconditionally. | 608 # non-cross-compile case when this is enabled, and enable unconditionally. |
602 return (os.environ.get('GYP_CROSSCOMPILE') or | 609 return (os.environ.get('GYP_CROSSCOMPILE') or |
603 os.environ.get('AR_host') or | 610 os.environ.get('AR_host') or |
604 os.environ.get('CC_host') or | 611 os.environ.get('CC_host') or |
605 os.environ.get('CXX_host') or | 612 os.environ.get('CXX_host') or |
606 os.environ.get('AR_target') or | 613 os.environ.get('AR_target') or |
607 os.environ.get('CC_target') or | 614 os.environ.get('CC_target') or |
608 os.environ.get('CXX_target')) | 615 os.environ.get('CXX_target')) |
OLD | NEW |