diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index 0f98d12343c43..2940febb40df5 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -473,6 +473,17 @@ if (APPLE) endif() endif() +# Set up job pools for flang. Some of the flang sources take a lot of memory to +# compile, so allow users to limit the number of parallel flang jobs. This is +# useful for building flang alongside several other projects since you can use +# the maximum number of build jobs for the other projects while limiting the +# number of flang compile jobs. +set(FLANG_PARALLEL_COMPILE_JOBS CACHE STRING + "The maximum number of concurrent compilation jobs for Flang (Ninja only)") +if (FLANG_PARALLEL_COMPILE_JOBS) + set_property(GLOBAL APPEND PROPERTY JOB_POOLS flang_compile_job_pool=${FLANG_PARALLEL_COMPILE_JOBS}) +endif() + include(AddFlang) if (FLANG_INCLUDE_TESTS) diff --git a/flang/cmake/modules/AddFlang.cmake b/flang/cmake/modules/AddFlang.cmake index badbd4e7b964b..ca233103ccdbe 100644 --- a/flang/cmake/modules/AddFlang.cmake +++ b/flang/cmake/modules/AddFlang.cmake @@ -94,6 +94,9 @@ function(add_flang_library name) set_property(GLOBAL APPEND PROPERTY FLANG_LIBS ${name}) endif() set_property(GLOBAL APPEND PROPERTY FLANG_EXPORTS ${name}) + if (FLANG_PARALLEL_COMPILE_JOBS) + set_property(TARGET ${name} PROPERTY JOB_POOL_COMPILE flang_compile_job_pool) + endif() else() # Add empty "phony" target add_custom_target(${name})