|
@@ -27,6 +27,36 @@ run_cmake_with_options(ManualSourceDirectoryRelative
|
|
|
-D "FETCHCONTENT_SOURCE_DIR_WITHPROJECT:STRING=WithProject"
|
|
-D "FETCHCONTENT_SOURCE_DIR_WITHPROJECT:STRING=WithProject"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+function(run_FetchContent_TimeStamps)
|
|
|
|
|
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/TimeStamps)
|
|
|
|
|
+ file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
+ file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
|
|
|
|
|
+
|
|
|
|
|
+ # First run should execute the commands
|
|
|
|
|
+ run_cmake(TimeStamps)
|
|
|
|
|
+
|
|
|
|
|
+ # Ensure that the file checks we use in the TimeStampsRerun-check.cmake script
|
|
|
|
|
+ # will not be defeated by file systems with only one second resolution.
|
|
|
|
|
+ # The IS_NEWER_THAN check returns TRUE if the timestamps of the two files are
|
|
|
|
|
+ # the same, which has been observed where filesystems only have one second
|
|
|
|
|
+ # resolution.
|
|
|
|
|
+ set(cmpTimeStamp ${RunCMake_TEST_BINARY_DIR}/cmpTimeStamp.txt)
|
|
|
|
|
+ set(checkTimeStamp ${RunCMake_TEST_BINARY_DIR}/cmpTimeStampCheck.txt)
|
|
|
|
|
+ file(TOUCH ${cmpTimeStamp})
|
|
|
|
|
+ file(TOUCH ${checkTimeStamp})
|
|
|
|
|
+ if("${cmpTimeStamp}" IS_NEWER_THAN "${checkTimeStamp}")
|
|
|
|
|
+ execute_process(
|
|
|
|
|
+ COMMAND ${CMAKE_COMMAND} -E sleep 1.125
|
|
|
|
|
+ COMMAND_ERROR_IS_FATAL LAST
|
|
|
|
|
+ )
|
|
|
|
|
+ endif()
|
|
|
|
|
+
|
|
|
|
|
+ # Run again with no changes, no commands should re-execute
|
|
|
|
|
+ set(RunCMake_TEST_NO_CLEAN 1)
|
|
|
|
|
+ run_cmake(TimeStampsRerun)
|
|
|
|
|
+endfunction()
|
|
|
|
|
+run_FetchContent_TimeStamps()
|
|
|
|
|
+
|
|
|
function(run_FetchContent_DirOverrides)
|
|
function(run_FetchContent_DirOverrides)
|
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DirOverrides-build)
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/DirOverrides-build)
|
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|
|
file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
|