Index: pylib/gyp/generator/ninja.py |
diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py |
index f31068a9bf44a89b1c83e61afccc01d284e06fc8..639fda5455822aca3ff72e2c0a1bd8fe07e074aa 100644 |
--- a/pylib/gyp/generator/ninja.py |
+++ b/pylib/gyp/generator/ninja.py |
@@ -1777,8 +1777,26 @@ def GenerateOutputForConfig(target_list, target_dicts, data, params, |
wrappers[key_prefix] = os.path.join(build_to_root, value) |
if flavor == 'win': |
+ # Extract msvs_system_include_dirs that are common to all targets. |
+ all_system_includes = set( |
+ target_dicts[target_list[0]]['configurations'][config_name].get( |
+ 'msvs_system_include_dirs', [])) |
+ for qualified_target in target_list: |
scottmg
2014/07/19 18:49:36
is this target_list everything? how does it relate
Nico
2014/07/19 23:05:35
as far as I understand, all_targets gets everythin
|
+ config = target_dicts[qualified_target]['configurations'][config_name] |
+ system_includes = config.get('msvs_system_include_dirs', []) |
+ all_system_includes = all_system_includes & set(system_includes) |
+ #print 'env:', all_system_includes |
+ if all_system_includes: |
+ for qualified_target in target_list: |
+ config = target_dicts[qualified_target]['configurations'][config_name] |
+ includes = config.get('msvs_system_include_dirs', []) |
+ if includes: |
+ new_includes = [i for i in includes if i not in all_system_includes] |
+ config['msvs_system_include_dirs'] = new_includes |
+ # FIXME: Need to expand ms macros in all_system_includes too |
+ |
cl_paths = gyp.msvs_emulation.GenerateEnvironmentFiles( |
- toplevel_build, generator_flags, OpenOutput) |
+ toplevel_build, generator_flags, all_system_includes, OpenOutput) |
for arch, path in cl_paths.iteritems(): |
if clang_cl: |
# If we have selected clang-cl, use that instead. |