Index: pylib/gyp/generator/analyzer.py |
=================================================================== |
--- pylib/gyp/generator/analyzer.py (revision 1968) |
+++ pylib/gyp/generator/analyzer.py (working copy) |
@@ -178,7 +178,8 @@ |
See _DoesTargetTypeRequireBuild for details. |
added_to_compile_targets: used when determining if the target was added to the |
set of targets that needs to be built. |
- in_roots: true if this target is a descendant of one of the root nodes.""" |
+ in_roots: true if this target is a descendant of one of the root nodes. |
+ is_executable: true if the type of target is executable.""" |
def __init__(self, name): |
self.deps = set() |
self.match_status = MATCH_STATUS_TBD |
@@ -190,6 +191,7 @@ |
self.requires_build = False |
self.added_to_compile_targets = False |
self.in_roots = False |
+ self.is_executable = False |
class Config(object): |
@@ -302,6 +304,7 @@ |
target.visited = True |
target.requires_build = _DoesTargetTypeRequireBuild( |
target_dicts[target_name]) |
+ target.is_executable = target_dicts[target_name]['type'] == 'executable' |
build_file = gyp.common.ParseQualifiedTarget(target_name)[0] |
if not build_file in build_file_in_files: |
@@ -404,8 +407,13 @@ |
target.added_to_compile_targets |= back_dep_target.added_to_compile_targets |
target.in_roots |= back_dep_target.in_roots |
- if not target.added_to_compile_targets and target.in_roots and \ |
- (add_if_no_ancestor or target.requires_build): |
+ # Always add 'executable' targets. Even though they may be built by other |
+ # targets that depend upon them it makes detection of what is going to be |
+ # built easier. |
+ if target.in_roots and \ |
+ (target.is_executable or |
+ (not target.added_to_compile_targets and |
+ (add_if_no_ancestor or target.requires_build))): |
result.add(target) |
target.added_to_compile_targets = True |