From 0938e8fde7f5f9d2f086d4402aa82c7e47e37df5 Mon Sep 17 00:00:00 2001 From: PercentBoat4164 <51725924+PercentBoat4164@users.noreply.github.com> Date: Tue, 21 Feb 2023 09:47:15 -0500 Subject: [PATCH] Improve Multi-threaded Performance. (#450) * Optimized multi-threading. * Remove old multi-threading implementation. * Release files instead of removing. * Lock before choosing to check cache or download. * Unlock directly after verifying directory exists. --- cmake/CPM.cmake | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 60b8fd6..fbc0bd3 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -713,9 +713,15 @@ function(CPMAddPackage) get_filename_component(download_directory ${download_directory} ABSOLUTE) list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${download_directory}) - file(LOCK ${download_directory}/../cmake.lock) + if(CPM_SOURCE_CACHE) + file(LOCK ${download_directory}/../cmake.lock) + endif() if(EXISTS ${download_directory}) + if(CPM_SOURCE_CACHE) + file(LOCK ${download_directory}/../cmake.lock RELEASE) + endif() + cpm_store_fetch_properties( ${CPM_ARGS_NAME} "${download_directory}" "${CPM_FETCHCONTENT_BASE_DIR}/${lower_case_name}-build" @@ -783,6 +789,9 @@ function(CPMAddPackage) "${CPM_ARGS_NAME}" "${CPM_ARGS_VERSION}" "${PACKAGE_INFO}" "${CPM_ARGS_UNPARSED_ARGUMENTS}" ) cpm_fetch_package("${CPM_ARGS_NAME}" populated) + if(CPM_CACHE_SOURCE AND download_directory) + file(LOCK ${download_directory}/../cmake.lock RELEASE) + endif() if(${populated}) cpm_add_subdirectory( "${CPM_ARGS_NAME}" "${DOWNLOAD_ONLY}" @@ -793,10 +802,6 @@ function(CPMAddPackage) cpm_get_fetch_properties("${CPM_ARGS_NAME}") endif() - if(EXISTS ${download_directory}/../cmake.lock) - file(LOCK ${download_directory}/../cmake.lock RELEASE) - endif() - set(${CPM_ARGS_NAME}_ADDED YES) cpm_export_variables("${CPM_ARGS_NAME}") endfunction()