From: Evgeniy Stepanov Date: Wed, 19 Nov 2014 10:30:02 +0000 (+0000) Subject: Use ninja pools to limit the number of concurrent compile/link jobs. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0e2f3ce8a0399818251225c1699d432fcb2db4e9;p=oota-llvm.git Use ninja pools to limit the number of concurrent compile/link jobs. This change makes use of the new "job pool" capability in cmake 3.0 with ninja generator to allow limiting the number of concurrent jobs of a certain type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222341 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index e3ddb267966..6691189b724 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,21 @@ endif() project(LLVM) +# The following only works with the Ninja generator in CMake >= 3.0. +set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING + "Define the maximum number of concurrent compilation jobs.") +if(LLVM_PARALLEL_COMPILE_JOBS) + set_property(GLOBAL APPEND PROPERTY JOB_POOLS compile_job_pool=${LLVM_PARALLEL_COMPILE_JOBS}) + set(CMAKE_JOB_POOL_COMPILE compile_job_pool) +endif() + +set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING + "Define the maximum number of concurrent link jobs.") +if(LLVM_PARALLEL_LINK_JOBS) + set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS}) + set(CMAKE_JOB_POOL_LINK link_job_pool) +endif() + # Add path for custom modules set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} diff --git a/docs/CMake.rst b/docs/CMake.rst index 4a5165b7a13..653fa16a675 100644 --- a/docs/CMake.rst +++ b/docs/CMake.rst @@ -291,6 +291,12 @@ LLVM-specific variables are ``Address``, ``Memory``, ``MemoryWithOrigins`` and ``Undefined``. Defaults to empty string. +**LLVM_PARALLEL_COMPILE_JOBS**:STRING + Define the maximum number of concurrent compilation jobs. + +**LLVM_PARALLEL_LINK_JOBS**:STRING + Define the maximum number of concurrent link jobs. + **LLVM_BUILD_DOCS**:BOOL Enables all enabled documentation targets (i.e. Doxgyen and Sphinx targets) to be built as part of the normal build. If the ``install`` target is run then