diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 2d151bf9..3e6512f3 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -766,6 +766,12 @@ function(CPMAddPackage) return() endif() + # @TODO Allow this as from a user-extension point for locating package source e.g. Check for ENV + # overide for local package-source + if(NOT DEFINED CPM_${CPM_ARGS_NAME}_SOURCE AND DEFINED ENV{CPM_${CPM_ARGS_NAME}_SOURCE}) + file(TO_CMAKE_PATH $ENV{CPM_${CPM_ARGS_NAME}_SOURCE} CPM_${CPM_ARGS_NAME}_SOURCE) + endif() + # Check for manual overrides if(NOT CPM_ARGS_FORCE AND NOT "${CPM_${CPM_ARGS_NAME}_SOURCE}" STREQUAL "") set(PACKAGE_SOURCE ${CPM_${CPM_ARGS_NAME}_SOURCE}) diff --git a/cmake/get_cpm.cmake b/cmake/get_cpm.cmake index 2a9d6c03..65e6b902 100644 --- a/cmake/get_cpm.cmake +++ b/cmake/get_cpm.cmake @@ -5,7 +5,11 @@ set(CPM_DOWNLOAD_VERSION 1.0.0-development-version) set(CPM_HASH_SUM "CPM_HASH_SUM_PLACEHOLDER") -if(CPM_SOURCE_CACHE) +if(CPM_PATH) # CPM_PATH may be provided on command-line + set(CPM_DOWNLOAD_LOCATION "${CPM_PATH}/CPM.cmake") +elseif(DEFINED ENV{CPM_PATH}) # CPM_PATH may be provided from script environment + file(TO_CMAKE_PATH "$ENV{CPM_PATH}/CPM.cmake" CPM_DOWNLOAD_LOCATION) +elseif(CPM_SOURCE_CACHE) set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") elseif(DEFINED ENV{CPM_SOURCE_CACHE}) set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")