From 23b01929f7255bd226f1a3bae29bff6061ffe8c2 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 10 Aug 2023 17:10:17 +0200 Subject: [PATCH] Deal with multithreaded builds of individual projects --- cmake/modules/AddCMakeProject.cmake | 19 +++++++++++++++++-- deps/+OCCT/OCCT.cmake | 2 ++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cmake/modules/AddCMakeProject.cmake b/cmake/modules/AddCMakeProject.cmake index c8bef0df1e..eeb5c8a9e0 100644 --- a/cmake/modules/AddCMakeProject.cmake +++ b/cmake/modules/AddCMakeProject.cmake @@ -1,4 +1,5 @@ include(ExternalProject) +include(ProcessorCount) set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH "Path for downloaded source packages.") @@ -13,7 +14,21 @@ endif () # The value of CMAKE_BUILD_TYPE will be used for building each dependency even if the # generator is multi-config. Use this var to specify build type regardless of the generator. function(add_cmake_project projectname) - cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND" "CMAKE_ARGS" ${ARGN}) + cmake_parse_arguments(P_ARGS "" "INSTALL_DIR;BUILD_COMMAND;INSTALL_COMMAND;MAX_THREADS" "CMAKE_ARGS" ${ARGN}) + + set(_pcount ${P_ARGS_MAX_THREADS}) + if (NOT _pcount) + ProcessorCount(_pcount) + endif () + + if (_pcount EQUAL 0) + set(_pcount 1) + endif () + + set(_build_j "-j${_pcount}") + if (CMAKE_GENERATOR MATCHES "Visual Studio") + set(_build_j "/m:${_pcount}") + endif () set(_configs_line -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}) if (_is_multi) @@ -38,7 +53,7 @@ function(add_cmake_project projectname) ${DEP_CMAKE_OPTS} ${P_ARGS_CMAKE_ARGS} ${P_ARGS_UNPARSED_ARGUMENTS} - BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} + BUILD_COMMAND ${CMAKE_COMMAND} --build . --config ${CMAKE_BUILD_TYPE} -- ${_build_j} INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE} ) diff --git a/deps/+OCCT/OCCT.cmake b/deps/+OCCT/OCCT.cmake index 5b7743e581..0c004f6b2e 100644 --- a/deps/+OCCT/OCCT.cmake +++ b/deps/+OCCT/OCCT.cmake @@ -1,4 +1,6 @@ add_cmake_project(OCCT + MAX_THREADS 4 # Avoid extreme memory usage + #LMBBS: changed version to 7.6.2 URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_2.zip URL_HASH SHA256=c696b923593e8c18d059709717dbf155b3e72fdd283c8522047a790ec3a432c5