diff options
author | Brad King <brad.king@kitware.com> | 2019-10-14 20:18:16 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-10-14 20:18:16 (GMT) |
commit | 7716be4561505118bee90d54357f83f37092b53f (patch) | |
tree | 750cf05ebb2d7f151db6e51ac30773f2fd174344 | |
parent | 74035b0ad4eb2eccf6537d6348afeb5d63222b5d (diff) | |
parent | c9d73b26b0a78fac774a549de41eee55ed4e8d7b (diff) | |
download | CMake-7716be4561505118bee90d54357f83f37092b53f.zip CMake-7716be4561505118bee90d54357f83f37092b53f.tar.gz CMake-7716be4561505118bee90d54357f83f37092b53f.tar.bz2 |
Merge branch 'cmake-initial-cache-relative' into release-3.16
Merge-request: !3912
-rw-r--r-- | Source/cmake.cxx | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C-no-file-stderr.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic-stderr.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic_fullpath-stderr.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic_fullpath-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic_fullpath.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_basic_initial-cache.txt | 5 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_buildsrcdir-stderr.txt | 8 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/C_buildsrcdir-stdout.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/Cno-file-stderr.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 15 |
13 files changed, 40 insertions, 10 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 50f47af..f63a264 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -423,6 +423,8 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args) } } std::cout << "loading initial cache file " << path << "\n"; + // Resolve script path specified on command line relative to $PWD. + path = cmSystemTools::CollapseFullPath(path); this->ReadListFile(args, path); } else if (arg.find("-P", 0) == 0) { i++; diff --git a/Tests/RunCMake/CommandLine/C-no-file-stderr.txt b/Tests/RunCMake/CommandLine/C-no-file-stderr.txt index 2a4ee64..b65a349 100644 --- a/Tests/RunCMake/CommandLine/C-no-file-stderr.txt +++ b/Tests/RunCMake/CommandLine/C-no-file-stderr.txt @@ -1,3 +1,3 @@ -^CMake Error: Error processing file: nosuchcachefile.txt +^CMake Error: Error processing file: .*/Tests/RunCMake/CommandLine/C-no-file-build/nosuchcachefile.txt CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/C-no-file-build" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI.$ diff --git a/Tests/RunCMake/CommandLine/C_basic-stderr.txt b/Tests/RunCMake/CommandLine/C_basic-stderr.txt new file mode 100644 index 0000000..62d0cd5 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic-stderr.txt @@ -0,0 +1,4 @@ +initial-cache.txt: CMAKE_SOURCE_DIR: .*/Tests/RunCMake/CommandLine +initial-cache.txt: CMAKE_BINARY_DIR: .*/Tests/RunCMake/CommandLine/C_basic-build +CMakeLists.txt: INITIAL_SOURCE_DIR: .*/Tests/RunCMake/CommandLine +CMakeLists.txt: INITIAL_BINARY_DIR: .*/Tests/RunCMake/CommandLine/C_basic-build diff --git a/Tests/RunCMake/CommandLine/C_basic-stdout.txt b/Tests/RunCMake/CommandLine/C_basic-stdout.txt new file mode 100644 index 0000000..74a938e --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic-stdout.txt @@ -0,0 +1 @@ +loading initial cache file ../C_basic_initial-cache.txt diff --git a/Tests/RunCMake/CommandLine/C_basic.cmake b/Tests/RunCMake/CommandLine/C_basic.cmake new file mode 100644 index 0000000..1a56593 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic.cmake @@ -0,0 +1,2 @@ +message("CMakeLists.txt: INITIAL_SOURCE_DIR: ${INITIAL_SOURCE_DIR}") +message("CMakeLists.txt: INITIAL_BINARY_DIR: ${INITIAL_BINARY_DIR}") diff --git a/Tests/RunCMake/CommandLine/C_basic_fullpath-stderr.txt b/Tests/RunCMake/CommandLine/C_basic_fullpath-stderr.txt new file mode 100644 index 0000000..f382a01 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic_fullpath-stderr.txt @@ -0,0 +1,4 @@ +initial-cache.txt: CMAKE_SOURCE_DIR: .*/Tests/RunCMake/CommandLine +initial-cache.txt: CMAKE_BINARY_DIR: .*/Tests/RunCMake/CommandLine/C_basic_fullpath-build +CMakeLists.txt: INITIAL_SOURCE_DIR: .*/Tests/RunCMake/CommandLine +CMakeLists.txt: INITIAL_BINARY_DIR: .*/Tests/RunCMake/CommandLine/C_basic_fullpath-build diff --git a/Tests/RunCMake/CommandLine/C_basic_fullpath-stdout.txt b/Tests/RunCMake/CommandLine/C_basic_fullpath-stdout.txt new file mode 100644 index 0000000..32724f5 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic_fullpath-stdout.txt @@ -0,0 +1 @@ +loading initial cache file .*/Tests/RunCMake/CommandLine/C_basic_initial-cache.txt diff --git a/Tests/RunCMake/CommandLine/C_basic_fullpath.cmake b/Tests/RunCMake/CommandLine/C_basic_fullpath.cmake new file mode 100644 index 0000000..1a56593 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic_fullpath.cmake @@ -0,0 +1,2 @@ +message("CMakeLists.txt: INITIAL_SOURCE_DIR: ${INITIAL_SOURCE_DIR}") +message("CMakeLists.txt: INITIAL_BINARY_DIR: ${INITIAL_BINARY_DIR}") diff --git a/Tests/RunCMake/CommandLine/C_basic_initial-cache.txt b/Tests/RunCMake/CommandLine/C_basic_initial-cache.txt new file mode 100644 index 0000000..e7a8ac9 --- /dev/null +++ b/Tests/RunCMake/CommandLine/C_basic_initial-cache.txt @@ -0,0 +1,5 @@ +set(INITIAL_SOURCE_DIR "${CMAKE_SOURCE_DIR}" CACHE PATH "defined in initial.cmake") +set(INITIAL_BINARY_DIR "${CMAKE_BINARY_DIR}" CACHE PATH "defined in initial.cmake") + +message("initial-cache.txt: CMAKE_SOURCE_DIR: ${CMAKE_SOURCE_DIR}") +message("initial-cache.txt: CMAKE_BINARY_DIR: ${CMAKE_BINARY_DIR}") diff --git a/Tests/RunCMake/CommandLine/C_buildsrcdir-stderr.txt b/Tests/RunCMake/CommandLine/C_buildsrcdir-stderr.txt index 0d8f72e..4720a6f 100644 --- a/Tests/RunCMake/CommandLine/C_buildsrcdir-stderr.txt +++ b/Tests/RunCMake/CommandLine/C_buildsrcdir-stderr.txt @@ -1,8 +1,8 @@ initial-cache.txt: CMAKE_SOURCE_DIR: .*/C_buildsrcdir/src -initial-cache.txt: CMAKE_BINARY_DIR: .*/C_buildsrcdir-build/DummyBuildDir +initial-cache.txt: CMAKE_BINARY_DIR: .*/ExplicitDirs-build/DummyBuildDir PreLoad.cmake: CMAKE_SOURCE_DIR: .*/C_buildsrcdir/src -PreLoad.cmake: CMAKE_BINARY_DIR: .*/C_buildsrcdir-build/DummyBuildDir +PreLoad.cmake: CMAKE_BINARY_DIR: .*/ExplicitDirs-build/DummyBuildDir CMakeLists.txt: INITIAL_SOURCE_DIR: .*/C_buildsrcdir/src -CMakeLists.txt: INITIAL_BINARY_DIR: .*/C_buildsrcdir-build/DummyBuildDir +CMakeLists.txt: INITIAL_BINARY_DIR: .*/ExplicitDirs-build/DummyBuildDir CMakeLists.txt: PRELOAD_SOURCE_DIR: .*/C_buildsrcdir/src -CMakeLists.txt: PRELOAD_BINARY_DIR: .*/C_buildsrcdir-build/DummyBuildDir +CMakeLists.txt: PRELOAD_BINARY_DIR: .*/ExplicitDirs-build/DummyBuildDir diff --git a/Tests/RunCMake/CommandLine/C_buildsrcdir-stdout.txt b/Tests/RunCMake/CommandLine/C_buildsrcdir-stdout.txt index c69b11e..862cfeb 100644 --- a/Tests/RunCMake/CommandLine/C_buildsrcdir-stdout.txt +++ b/Tests/RunCMake/CommandLine/C_buildsrcdir-stdout.txt @@ -1,2 +1,2 @@ -loading initial cache file .*/C_buildsrcdir/initial-cache.txt +loading initial cache file .*initial-cache.txt .* diff --git a/Tests/RunCMake/CommandLine/Cno-file-stderr.txt b/Tests/RunCMake/CommandLine/Cno-file-stderr.txt index 67a2032..416686c 100644 --- a/Tests/RunCMake/CommandLine/Cno-file-stderr.txt +++ b/Tests/RunCMake/CommandLine/Cno-file-stderr.txt @@ -1,3 +1,3 @@ -^CMake Error: Error processing file: nosuchcachefile.txt +^CMake Error: Error processing file: .*/Tests/RunCMake/CommandLine/Cno-file-build/nosuchcachefile.txt CMake Error: The source directory ".*/Tests/RunCMake/CommandLine/Cno-file-build" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI.$ diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index efd1cc2..b608d33 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -110,6 +110,14 @@ project(ExplicitDirsMissing LANGUAGES NONE) file(REMOVE_RECURSE "${binary_dir}") run_cmake_with_options(B-S -B${binary_dir} -S${source_dir}) + message("copied to ${RunCMake_TEST_BINARY_DIR}/initial-cache.txt") + file(COPY ${RunCMake_SOURCE_DIR}/C_buildsrcdir/initial-cache.txt DESTINATION ${RunCMake_TEST_BINARY_DIR}) + + # CMAKE_BINARY_DIR should be determined by -B if specified, and CMAKE_SOURCE_DIR determined by -S if specified. + # Path to initial-cache.txt is relative to the $PWD, which is normally set to ${RunCMake_TEST_BINARY_DIR}. + run_cmake_with_options(C_buildsrcdir -B DummyBuildDir -S ${RunCMake_SOURCE_DIR}/C_buildsrcdir/src -C initial-cache.txt) + # Test that full path works, too. + run_cmake_with_options(C_buildsrcdir -B DummyBuildDir -S ${RunCMake_SOURCE_DIR}/C_buildsrcdir/src -C ${RunCMake_TEST_BINARY_DIR}/initial-cache.txt) endfunction() run_ExplicitDirs() @@ -406,9 +414,10 @@ run_cmake_command(P_working-dir ${CMAKE_COMMAND} -DEXPECTED_WORKING_DIR=${RunCMa # Tests the values of CMAKE_BINARY_DIR CMAKE_CURRENT_BINARY_DIR CMAKE_SOURCE_DIR CMAKE_CURRENT_SOURCE_DIR. run_cmake_command(P_working-dir ${CMAKE_COMMAND} -DEXPECTED_WORKING_DIR=${RunCMake_BINARY_DIR}/P_working-dir-build -P ${RunCMake_SOURCE_DIR}/P_working-dir.cmake -S something_else -B something_else_1) -# CMAKE_BINARY_DIR should be determined by -B if specified, and CMAKE_SOURCE_DIR determined by -S if specified. -run_cmake_with_options(C_buildsrcdir -B DummyBuildDir -S ${RunCMake_SOURCE_DIR}/C_buildsrcdir/src -C ${RunCMake_SOURCE_DIR}/C_buildsrcdir/initial-cache.txt) - +# Place an initial cache where C_basic will find it when passed the relative path "..". +file(COPY ${RunCMake_SOURCE_DIR}/C_basic_initial-cache.txt DESTINATION ${RunCMake_BINARY_DIR}) +run_cmake_with_options(C_basic -C ../C_basic_initial-cache.txt) +run_cmake_with_options(C_basic_fullpath -C ${RunCMake_BINARY_DIR}/C_basic_initial-cache.txt) set(RunCMake_TEST_OPTIONS "-DFOO=-DBAR:BOOL=BAZ") |