Compare commits

...

2 Commits

Author SHA1 Message Date
Lars Melchior
139d3cacba Add NO_CACHE option (#128)
* add NO_CACHE option

* add unit test
2020-06-04 14:22:57 +02:00
Lars Melchior
b31063d2ae prevent overriding declarations (#127) 2020-05-29 16:08:41 +02:00
3 changed files with 26 additions and 24 deletions

View File

@@ -28,7 +28,7 @@
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
set(CURRENT_CPM_VERSION 0.26.1)
set(CURRENT_CPM_VERSION 0.27)
if(CPM_DIRECTORY)
if(NOT CPM_DIRECTORY STREQUAL CMAKE_CURRENT_LIST_DIR)
@@ -190,6 +190,7 @@ function(CPMAddPackage)
SOURCE_DIR
DOWNLOAD_COMMAND
FIND_PACKAGE_ARGUMENTS
NO_CACHE
)
set(multiValueArgs
@@ -296,7 +297,7 @@ function(CPMAddPackage)
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS DOWNLOAD_COMMAND ${CPM_ARGS_DOWNLOAD_COMMAND})
elseif (DEFINED CPM_ARGS_SOURCE_DIR)
list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS SOURCE_DIR ${CPM_ARGS_SOURCE_DIR})
elseif (CPM_SOURCE_CACHE)
elseif (CPM_SOURCE_CACHE AND NOT CPM_ARGS_NO_CACHE)
string(TOLOWER ${CPM_ARGS_NAME} lower_case_name)
set(origin_parameters ${CPM_ARGS_UNPARSED_ARGUMENTS})
list(SORT origin_parameters)
@@ -354,9 +355,10 @@ macro(cpm_export_variables name)
endmacro()
# declares a package, so that any call to CPMAddPackage for the
# package name will use these arguments instead
# package name will use these arguments instead.
# Previous declarations will not be overriden.
macro(CPMDeclarePackage Name)
if (NOT DEFINED "${CPM_DECLARATION_${Name}}")
if (NOT DEFINED "CPM_DECLARATION_${Name}")
set("CPM_DECLARATION_${Name}" "${ARGN}")
endif()
endmacro()

View File

@@ -3,17 +3,13 @@ cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
include(${CPM_PATH}/testing.cmake)
include(CMakePackageConfigHelpers)
set(CPM_SOURCE_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/CPM")
set(TEST_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/cache)
function(clear_cache)
message(STATUS "clearing CPM cache")
FILE(REMOVE_RECURSE ${CPM_SOURCE_CACHE_DIR})
if (EXISTS "${CPM_SOURCE_CACHE_DIR}")
ASSERTION_FAILED("cache not cleared")
endif()
ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}")
endfunction()
function(update_cmake_lists)
@@ -43,10 +39,7 @@ execute_process(
)
ASSERT_EQUAL(${ret} "0")
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
ASSERTION_FAILED("fibonacci not in cache")
endif()
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
FILE(GLOB FIBONACCI_VERSIONs "${CPM_SOURCE_CACHE_DIR}/fibonacci/*")
list(LENGTH FIBONACCI_VERSIONs FIBONACCI_VERSION_count)
@@ -84,10 +77,7 @@ execute_process(
)
ASSERT_EQUAL(${ret} "0")
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
ASSERTION_FAILED("fibonacci not in cache")
endif()
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
## Read CPM_SOURCE_CACHE from environment
@@ -100,10 +90,7 @@ execute_process(
)
ASSERT_EQUAL(${ret} "0")
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
ASSERTION_FAILED("fibonacci not in cache")
endif()
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
## Reuse cached packages for other build
@@ -126,7 +113,19 @@ execute_process(
)
ASSERT_EQUAL(${ret} "0")
ASSERT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")
if (NOT EXISTS "${CPM_SOURCE_CACHE_DIR}/fibonacci")
ASSERTION_FAILED("fibonacci not in cache")
endif()
## Use NO_CACHE option
set(FIBONACCI_PACKAGE_ARGS "NO_CACHE YES")
update_cmake_lists()
reset_test()
execute_process(
COMMAND
${CMAKE_COMMAND} -E env "CPM_SOURCE_CACHE=${CPM_SOURCE_CACHE_DIR}" ${CMAKE_COMMAND} "-H${CMAKE_CURRENT_LIST_DIR}/cache" "-B${TEST_BUILD_DIR}"
RESULT_VARIABLE ret
)
ASSERT_EQUAL(${ret} "0")
ASSERT_NOT_EXISTS("${CPM_SOURCE_CACHE_DIR}/fibonacci")

View File

@@ -14,6 +14,7 @@ CPMAddPackage(
NAME fibonacci
GIT_REPOSITORY https://github.com/TheLartians/Fibonacci.git
VERSION @FIBONACCI_VERSION@
@FIBONACCI_PACKAGE_ARGS@
)
# ---- Create binary ----