summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt McCormick <matt.mccormick@kitware.com>2017-11-20 21:49:41 (GMT)
committerMatt McCormick <matt.mccormick@kitware.com>2017-11-29 20:13:36 (GMT)
commit07185055d57f28347a1850a1f06787ac93f20afd (patch)
tree76602531d090c97c8644602ea971e1de5699454c
parent4d52b46c7046a23948221d4142d768b9ff834e33 (diff)
downloadCMake-07185055d57f28347a1850a1f06787ac93f20afd.zip
CMake-07185055d57f28347a1850a1f06787ac93f20afd.tar.gz
CMake-07185055d57f28347a1850a1f06787ac93f20afd.tar.bz2
Ninja: add CMAKE_JOB_POOLS variable as default for JOBS_POOLS
This enables configuration of build parallelism with the Ninja generator by passing arguments on the command line to CMake. For example, cmake \ '-DCMAKE_JOB_POOLS:STRING=compile=5;link=2' \ -DCMAKE_JOB_POOL_COMPILE:STRING=compile \ -DCMAKE_JOB_POOL_LINK:STRING=link \ ~/src/MyProject
-rw-r--r--Help/manual/cmake-variables.7.rst1
-rw-r--r--Help/prop_gbl/JOB_POOLS.rst3
-rw-r--r--Help/release/dev/cmake-job-pool.rst7
-rw-r--r--Help/variable/CMAKE_JOB_POOLS.rst6
-rw-r--r--Source/cmLocalNinjaGenerator.cxx3
5 files changed, 20 insertions, 0 deletions
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index 0451466..0938253 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -50,6 +50,7 @@ Variables that Provide Information
/variable/CMAKE_IMPORT_LIBRARY_SUFFIX
/variable/CMAKE_JOB_POOL_COMPILE
/variable/CMAKE_JOB_POOL_LINK
+ /variable/CMAKE_JOB_POOLS
/variable/CMAKE_LANG_COMPILER_AR
/variable/CMAKE_LANG_COMPILER_RANLIB
/variable/CMAKE_LINK_LIBRARY_SUFFIX
diff --git a/Help/prop_gbl/JOB_POOLS.rst b/Help/prop_gbl/JOB_POOLS.rst
index 2ce74b8..b904f7a 100644
--- a/Help/prop_gbl/JOB_POOLS.rst
+++ b/Help/prop_gbl/JOB_POOLS.rst
@@ -19,5 +19,8 @@ Defined pools could be used globally by setting
or per target by setting the target properties
:prop_tgt:`JOB_POOL_COMPILE` and :prop_tgt:`JOB_POOL_LINK`.
+If not set, this property uses the value of the :variable:`CMAKE_JOB_POOLS`
+variable.
+
Build targets provided by CMake that are meant for individual interactive
use, such as ``install``, are placed in the ``console`` pool automatically.
diff --git a/Help/release/dev/cmake-job-pool.rst b/Help/release/dev/cmake-job-pool.rst
new file mode 100644
index 0000000..836d9c1
--- /dev/null
+++ b/Help/release/dev/cmake-job-pool.rst
@@ -0,0 +1,7 @@
+cmake-job-pool
+--------------
+
+* A :variable:`CMAKE_JOB_POOLS` variable was added specify a value to use for
+ the :prop_gbl:`JOB_POOLS` property. This enables control over build
+ parallelism with command line configuration parameters when using the Ninja
+ generator.
diff --git a/Help/variable/CMAKE_JOB_POOLS.rst b/Help/variable/CMAKE_JOB_POOLS.rst
new file mode 100644
index 0000000..72b50b4
--- /dev/null
+++ b/Help/variable/CMAKE_JOB_POOLS.rst
@@ -0,0 +1,6 @@
+CMAKE_JOB_POOLS
+---------------
+
+If the :prop_gbl:`JOB_POOLS` global property is not set, the value
+of this variable is used in its place. See :prop_gbl:`JOB_POOLS`
+for additional information.
diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx
index 477ce51..2d969d2 100644
--- a/Source/cmLocalNinjaGenerator.cxx
+++ b/Source/cmLocalNinjaGenerator.cxx
@@ -207,6 +207,9 @@ void cmLocalNinjaGenerator::WritePools(std::ostream& os)
const char* jobpools =
this->GetCMakeInstance()->GetState()->GetGlobalProperty("JOB_POOLS");
+ if (!jobpools) {
+ jobpools = this->GetMakefile()->GetDefinition("CMAKE_JOB_POOLS");
+ }
if (jobpools) {
cmGlobalNinjaGenerator::WriteComment(
os, "Pools defined by global property JOB_POOLS");