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 compiler.ast import Const | 5 from compiler.ast import Const |
6 from compiler.ast import Dict | 6 from compiler.ast import Dict |
7 from compiler.ast import Discard | 7 from compiler.ast import Discard |
8 from compiler.ast import List | 8 from compiler.ast import List |
9 from compiler.ast import Module | 9 from compiler.ast import Module |
10 from compiler.ast import Node | 10 from compiler.ast import Node |
(...skipping 10 matching lines...) Expand all Loading... |
21 import subprocess | 21 import subprocess |
22 import sys | 22 import sys |
23 import threading | 23 import threading |
24 import time | 24 import time |
25 import traceback | 25 import traceback |
26 from gyp.common import GypError | 26 from gyp.common import GypError |
27 from gyp.common import OrderedSet | 27 from gyp.common import OrderedSet |
28 | 28 |
29 | 29 |
30 # A list of types that are treated as linkable. | 30 # A list of types that are treated as linkable. |
31 linkable_types = ['executable', 'shared_library', 'loadable_module'] | 31 linkable_types = [ |
| 32 'executable', |
| 33 'shared_library', |
| 34 'loadable_module', |
| 35 'extension' |
| 36 ] |
32 | 37 |
33 # A list of sections that contain links to other targets. | 38 # A list of sections that contain links to other targets. |
34 dependency_sections = ['dependencies', 'export_dependent_settings'] | 39 dependency_sections = ['dependencies', 'export_dependent_settings'] |
35 | 40 |
36 # base_path_sections is a list of sections defined by GYP that contain | 41 # base_path_sections is a list of sections defined by GYP that contain |
37 # pathnames. The generators can provide more keys, the two lists are merged | 42 # pathnames. The generators can provide more keys, the two lists are merged |
38 # into path_sections, but you should call IsPathSection instead of using either | 43 # into path_sections, but you should call IsPathSection instead of using either |
39 # list directly. | 44 # list directly. |
40 base_path_sections = [ | 45 base_path_sections = [ |
41 'destination', | 46 'destination', |
(...skipping 1654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1696 # dependencies are intended to apply to the target itself (initial is | 1701 # dependencies are intended to apply to the target itself (initial is |
1697 # True) and this target won't be linked. | 1702 # True) and this target won't be linked. |
1698 return dependencies | 1703 return dependencies |
1699 | 1704 |
1700 # Don't traverse 'none' targets if explicitly excluded. | 1705 # Don't traverse 'none' targets if explicitly excluded. |
1701 if (target_type == 'none' and | 1706 if (target_type == 'none' and |
1702 not targets[self.ref].get('dependencies_traverse', True)): | 1707 not targets[self.ref].get('dependencies_traverse', True)): |
1703 dependencies.add(self.ref) | 1708 dependencies.add(self.ref) |
1704 return dependencies | 1709 return dependencies |
1705 | 1710 |
1706 # Executables and loadable modules are already fully and finally linked. | 1711 # Executables, loadable modules, and extensions are already fully and |
1707 # Nothing else can be a link dependency of them, there can only be | 1712 # finally linked. Nothing else can be a link dependency of them, there can |
1708 # dependencies in the sense that a dependent target might run an | 1713 # only be dependencies in the sense that a dependent target might run an |
1709 # executable or load the loadable_module. | 1714 # executable or load the loadable_module. |
1710 if not initial and target_type in ('executable', 'loadable_module'): | 1715 FULLY_LINKED_TYPES = ('executable', 'loadable_module', 'extension') |
| 1716 if not initial and target_type in FULLY_LINKED_TYPES: |
1711 return dependencies | 1717 return dependencies |
1712 | 1718 |
1713 # Shared libraries are already fully linked. They should only be included | 1719 # Shared libraries are already fully linked. They should only be included |
1714 # in |dependencies| when adjusting static library dependencies (in order to | 1720 # in |dependencies| when adjusting static library dependencies (in order to |
1715 # link against the shared_library's import lib), but should not be included | 1721 # link against the shared_library's import lib), but should not be included |
1716 # in |dependencies| when propagating link_settings. | 1722 # in |dependencies| when propagating link_settings. |
1717 # The |include_shared_libraries| flag controls which of these two cases we | 1723 # The |include_shared_libraries| flag controls which of these two cases we |
1718 # are handling. | 1724 # are handling. |
1719 if (not initial and target_type == 'shared_library' and | 1725 if (not initial and target_type == 'shared_library' and |
1720 not include_shared_libraries): | 1726 not include_shared_libraries): |
(...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2443 """Ensures the 'type' field on the target is one of the known types. | 2449 """Ensures the 'type' field on the target is one of the known types. |
2444 | 2450 |
2445 Arguments: | 2451 Arguments: |
2446 target: string, name of target. | 2452 target: string, name of target. |
2447 target_dict: dict, target spec. | 2453 target_dict: dict, target spec. |
2448 | 2454 |
2449 Raises an exception on error. | 2455 Raises an exception on error. |
2450 """ | 2456 """ |
2451 VALID_TARGET_TYPES = ('executable', 'loadable_module', | 2457 VALID_TARGET_TYPES = ('executable', 'loadable_module', |
2452 'static_library', 'shared_library', | 2458 'static_library', 'shared_library', |
2453 'none') | 2459 'extension', 'none') |
2454 target_type = target_dict.get('type', None) | 2460 target_type = target_dict.get('type', None) |
2455 if target_type not in VALID_TARGET_TYPES: | 2461 if target_type not in VALID_TARGET_TYPES: |
2456 raise GypError("Target %s has an invalid target type '%s'. " | 2462 raise GypError("Target %s has an invalid target type '%s'. " |
2457 "Must be one of %s." % | 2463 "Must be one of %s." % |
2458 (target, target_type, '/'.join(VALID_TARGET_TYPES))) | 2464 (target, target_type, '/'.join(VALID_TARGET_TYPES))) |
2459 if (target_dict.get('standalone_static_library', 0) and | 2465 if (target_dict.get('standalone_static_library', 0) and |
2460 not target_type == 'static_library'): | 2466 not target_type == 'static_library'): |
2461 raise GypError('Target %s has type %s but standalone_static_library flag is' | 2467 raise GypError('Target %s has type %s but standalone_static_library flag is' |
2462 ' only valid for static_library type.' % (target, | 2468 ' only valid for static_library type.' % (target, |
2463 target_type)) | 2469 target_type)) |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2851 ValidateRunAsInTarget(target, target_dict, build_file) | 2857 ValidateRunAsInTarget(target, target_dict, build_file) |
2852 ValidateActionsInTarget(target, target_dict, build_file) | 2858 ValidateActionsInTarget(target, target_dict, build_file) |
2853 | 2859 |
2854 # Generators might not expect ints. Turn them into strs. | 2860 # Generators might not expect ints. Turn them into strs. |
2855 TurnIntIntoStrInDict(data) | 2861 TurnIntIntoStrInDict(data) |
2856 | 2862 |
2857 # TODO(mark): Return |data| for now because the generator needs a list of | 2863 # TODO(mark): Return |data| for now because the generator needs a list of |
2858 # build files that came in. In the future, maybe it should just accept | 2864 # build files that came in. In the future, maybe it should just accept |
2859 # a list, and not the whole data dict. | 2865 # a list, and not the whole data dict. |
2860 return [flat_list, targets, data] | 2866 return [flat_list, targets, data] |
OLD | NEW |