diff --git a/Modules/CMakeDetermineSystem.cmake b/Modules/CMakeDetermineSystem.cmake index 3720283672..db90f9930d 100644 --- a/Modules/CMakeDetermineSystem.cmake +++ b/Modules/CMakeDetermineSystem.cmake @@ -227,7 +227,7 @@ if(CMAKE_BINARY_DIR) set(INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED) if(CMAKE_TOOLCHAIN_FILE) string(CONCAT INCLUDE_CMAKE_TOOLCHAIN_FILE_IF_REQUIRED - "set(_CMAKE_INPUT_TOOLCHAIN_FILE \"${_CMAKE_INPUT_TOOLCHAIN_FILE}\")\n" + "set(_CMAKE_INPUT_TOOLCHAIN_FILE [==[${_CMAKE_INPUT_TOOLCHAIN_FILE}]==])\n" "set(_CMAKE_SYSTEM_TOOLCHAIN_FILE \"${CMAKE_TOOLCHAIN_FILE}\")\n" "include(\"\${_CMAKE_SYSTEM_TOOLCHAIN_FILE}\")" ) diff --git a/Tests/RunCMake/CompilerChange/RunCMakeTest.cmake b/Tests/RunCMake/CompilerChange/RunCMakeTest.cmake index 3d6546cc4c..56e8af3dc5 100644 --- a/Tests/RunCMake/CompilerChange/RunCMakeTest.cmake +++ b/Tests/RunCMake/CompilerChange/RunCMakeTest.cmake @@ -48,6 +48,15 @@ endif() # Set up "toolchain" files file(WRITE "${RunCMake_BINARY_DIR}/foo.cmake" "set(toolchain_var foo)\n") file(WRITE "${RunCMake_BINARY_DIR}/bar.cmake" "set(toolchain_var bar)\n") +if(UNIX) + # Can't use file(TO_NATIVE_PATH) because it escapes spaces and cmake_path is + # 3.20 + set(foo_TOOLCHAIN_FILE "${RunCMake_BINARY_DIR}/foo.cmake") + set(bar_TOOLCHAIN_FILE "${RunCMake_BINARY_DIR}/bar.cmake") +else() + set(foo_TOOLCHAIN_FILE "${RunCMake_BINARY_DIR}\\foo.cmake") + set(bar_TOOLCHAIN_FILE "${RunCMake_BINARY_DIR}\\bar.cmake") +endif() # New toolchain path comes from file block() @@ -70,11 +79,11 @@ endblock() block() set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/ToolchainFromCmdline-build) run_cmake_with_options(ToolchainFromCmdline-step1 - "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_BINARY_DIR}/foo.cmake" + "-DCMAKE_TOOLCHAIN_FILE=${foo_TOOLCHAIN_FILE}" ) set(RunCMake_TEST_NO_CLEAN 1) run_cmake_with_options(ToolchainFromCmdline-step2 - "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_BINARY_DIR}/bar.cmake" + "-DCMAKE_TOOLCHAIN_FILE=${bar_TOOLCHAIN_FILE}" ) endblock() @@ -85,7 +94,7 @@ block() ${RunCMake_SOURCE_DIR}/ToolchainFromCmdlineOnce-stdout.txt ) run_cmake_with_options(ToolchainFromCmdlineOnce-step1 - "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_BINARY_DIR}/foo.cmake" + "-DCMAKE_TOOLCHAIN_FILE=${foo_TOOLCHAIN_FILE}" ) set(RunCMake_TEST_NO_CLEAN 1) run_cmake(ToolchainFromCmdlineOnce-step2) diff --git a/Tests/RunCMake/CompilerChange/ToolchainFromCmdline-step2-stderr.txt b/Tests/RunCMake/CompilerChange/ToolchainFromCmdline-step2-stderr.txt index e65f0d973a..617a64998c 100644 --- a/Tests/RunCMake/CompilerChange/ToolchainFromCmdline-step2-stderr.txt +++ b/Tests/RunCMake/CompilerChange/ToolchainFromCmdline-step2-stderr.txt @@ -2,4 +2,4 @@ You have changed variables that require your cache to be deleted. Configure will be re-run and you may have to reset some variables. The following variables have changed: CMAKE_TOOLCHAIN_FILE= [^ -]*/Tests/RunCMake/CompilerChange/bar\.cmake +]*[\/]Tests[\/]RunCMake[\/]CompilerChange[\/]bar\.cmake