| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 # Copyright (c) 2010 Google Inc. All rights reserved. | 3 # Copyright (c) 2010 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 filecmp | 7 import filecmp |
| 8 import gyp.common | 8 import gyp.common |
| 9 import gyp.xcodeproj_file | 9 import gyp.xcodeproj_file |
| 10 import errno | 10 import errno |
| (...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 | 484 |
| 485 # Pull out the Xcode version itself. | 485 # Pull out the Xcode version itself. |
| 486 match_line = re.search('^Xcode (.*)$', xcodebuild_version_info, re.MULTILINE) | 486 match_line = re.search('^Xcode (.*)$', xcodebuild_version_info, re.MULTILINE) |
| 487 if match_line: | 487 if match_line: |
| 488 cached_xcode_version = match_line.group(1) | 488 cached_xcode_version = match_line.group(1) |
| 489 # Done! | 489 # Done! |
| 490 return cached_xcode_version | 490 return cached_xcode_version |
| 491 | 491 |
| 492 | 492 |
| 493 def AddSourceToTarget(source, pbxp, xct): | 493 def AddSourceToTarget(source, pbxp, xct): |
| 494 # TODO(mark): Perhaps this can be made a little bit fancier. | 494 # TODO(mark): Perhaps source_extensions and library_extensions can be made a |
| 495 # little bit fancier. |
| 495 source_extensions = ['c', 'cc', 'cpp', 'cxx', 'm', 'mm', 's'] | 496 source_extensions = ['c', 'cc', 'cpp', 'cxx', 'm', 'mm', 's'] |
| 497 |
| 498 # .o is conceptually more of a "source" than a "library," but Xcode thinks |
| 499 # of "sources" as things to compile and "libraries" (or "frameworks") as |
| 500 # things to link with. Adding an object file to an Xcode target's frameworks |
| 501 # phase works properly. |
| 502 library_extensions = ['a', 'dylib', 'framework', 'o'] |
| 503 |
| 496 basename = posixpath.basename(source) | 504 basename = posixpath.basename(source) |
| 497 (root, ext) = posixpath.splitext(basename) | 505 (root, ext) = posixpath.splitext(basename) |
| 498 if ext != '': | 506 if ext != '': |
| 499 ext = ext[1:].lower() | 507 ext = ext[1:].lower() |
| 500 | 508 |
| 501 if ext in source_extensions: | 509 if ext in source_extensions: |
| 502 xct.SourcesPhase().AddFile(source) | 510 xct.SourcesPhase().AddFile(source) |
| 511 elif ext in library_extensions: |
| 512 xct.FrameworksPhase().AddFile(source) |
| 503 else: | 513 else: |
| 504 # Files that aren't added to a sources build phase can still go into | 514 # Files that aren't added to a sources or frameworks build phase can still |
| 505 # the project file, just not as part of a build phase. | 515 # go into the project file, just not as part of a build phase. |
| 506 pbxp.AddOrGetFileInRootGroup(source) | 516 pbxp.AddOrGetFileInRootGroup(source) |
| 507 | 517 |
| 508 | 518 |
| 509 def AddResourceToTarget(resource, pbxp, xct): | 519 def AddResourceToTarget(resource, pbxp, xct): |
| 510 # TODO(mark): Combine with AddSourceToTarget above? Or just inline this call | 520 # TODO(mark): Combine with AddSourceToTarget above? Or just inline this call |
| 511 # where it's used. | 521 # where it's used. |
| 512 xct.ResourcesPhase().AddFile(resource) | 522 xct.ResourcesPhase().AddFile(resource) |
| 513 | 523 |
| 514 | 524 |
| 515 _xcode_variable_re = re.compile('(\$\((.*?)\))') | 525 _xcode_variable_re = re.compile('(\$\((.*?)\))') |
| (...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 | 1139 |
| 1130 for build_file in build_files: | 1140 for build_file in build_files: |
| 1131 xcode_projects[build_file].Finalize1(xcode_targets, serialize_all_tests) | 1141 xcode_projects[build_file].Finalize1(xcode_targets, serialize_all_tests) |
| 1132 | 1142 |
| 1133 for build_file in build_files: | 1143 for build_file in build_files: |
| 1134 xcode_projects[build_file].Finalize2(xcode_targets, | 1144 xcode_projects[build_file].Finalize2(xcode_targets, |
| 1135 xcode_target_to_target_dict) | 1145 xcode_target_to_target_dict) |
| 1136 | 1146 |
| 1137 for build_file in build_files: | 1147 for build_file in build_files: |
| 1138 xcode_projects[build_file].Write() | 1148 xcode_projects[build_file].Write() |
| OLD | NEW |