Index: pylib/gyp/generator/ninja.py |
diff --git a/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py |
index c11ba9e9c44029d16a3f8f9f2821aa8759166448..8838f2f383b166c33dbab7caf8b8413a20f32219 100644 |
--- a/pylib/gyp/generator/ninja.py |
+++ b/pylib/gyp/generator/ninja.py |
@@ -4,6 +4,7 @@ |
import copy |
import hashlib |
+import multiprocessing |
import os.path |
import re |
import subprocess |
@@ -1736,6 +1737,10 @@ def PerformBuild(data, configurations, params): |
subprocess.check_call(arguments) |
+def CallGenerateOutputForConfig(arglist): |
+ (target_list, target_dicts, data, params, config_name) = arglist |
+ GenerateOutputForConfig(target_list, target_dicts, data, params, config_name) |
+ |
def GenerateOutput(target_list, target_dicts, data, params): |
user_config = params.get('generator_flags', {}).get('config', None) |
if user_config: |
@@ -1743,6 +1748,13 @@ def GenerateOutput(target_list, target_dicts, data, params): |
user_config) |
else: |
config_names = target_dicts[target_list[0]]['configurations'].keys() |
- for config_name in config_names: |
- GenerateOutputForConfig(target_list, target_dicts, data, params, |
- config_name) |
+ if params['parallel']: |
+ pool = multiprocessing.Pool(len(config_names)) |
+ arglists = [] |
+ for config_name in config_names: |
+ arglists.append((target_list, target_dicts, data, params, config_name)) |
+ pool.map(CallGenerateOutputForConfig, arglists) |
+ else: |
+ for config_name in config_names: |
+ GenerateOutputForConfig(target_list, target_dicts, data, params, |
+ config_name) |