diff options
author | Brad King <brad.king@kitware.com> | 2020-04-17 13:44:30 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2020-04-22 12:03:16 (GMT) |
commit | e01990999a83fb08b0e46b3131501c01e3256944 (patch) | |
tree | cb89821b1aea1bbab3566897e12cb569aa0912dd /Tests/RunCMake/Ninja | |
parent | 8bc757c8f68d653526dce3f723950ccf221a4c6c (diff) | |
download | CMake-e01990999a83fb08b0e46b3131501c01e3256944.zip CMake-e01990999a83fb08b0e46b3131501c01e3256944.tar.gz CMake-e01990999a83fb08b0e46b3131501c01e3256944.tar.bz2 |
Ninja: On Windows, select the compiler occurring first in PATH
On Windows, toolchains like MSVC require a set of environment variables
to be configured for the compiler to work correctly. The scripts that
prepare these environments typically put the compiler's directory ahead
of others in the `PATH`. Teach the Ninja generators to use this as a
heuristic to select the compiler when none is explicitly specified.
This is not necessary with Makefile generators because each toolchain's
environment comes with its own make tool variant, and the corresponding
Makefile generator (e.g. "NMake Makefiles") automatically implies the
matching compiler.
Fixes: #20585
Diffstat (limited to 'Tests/RunCMake/Ninja')
-rw-r--r-- | Tests/RunCMake/Ninja/RunCMakeTest.cmake | 6 | ||||
-rwxr-xr-x | Tests/RunCMake/Ninja/SelectCompiler/1/gcc | 2 | ||||
-rwxr-xr-x | Tests/RunCMake/Ninja/SelectCompiler/2/cc | 2 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerUNIX-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerUNIX-stderr.txt | 6 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerUNIX.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerWindows-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerWindows-stderr.txt | 6 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/SelectCompilerWindows.cmake | 3 |
9 files changed, 30 insertions, 0 deletions
diff --git a/Tests/RunCMake/Ninja/RunCMakeTest.cmake b/Tests/RunCMake/Ninja/RunCMakeTest.cmake index a00d830..baa352c 100644 --- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake +++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake @@ -18,6 +18,12 @@ else() message(FATAL_ERROR "'ninja --version' reported:\n${ninja_out}") endif() +if(CMAKE_HOST_WIN32) + run_cmake(SelectCompilerWindows) +else() + run_cmake(SelectCompilerUNIX) +endif() + function(run_NinjaToolMissing) set(RunCMake_MAKE_PROGRAM ninja-tool-missing) run_cmake(NinjaToolMissing) diff --git a/Tests/RunCMake/Ninja/SelectCompiler/1/gcc b/Tests/RunCMake/Ninja/SelectCompiler/1/gcc new file mode 100755 index 0000000..151dfa6 --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompiler/1/gcc @@ -0,0 +1,2 @@ +#!/bin/sh +false diff --git a/Tests/RunCMake/Ninja/SelectCompiler/2/cc b/Tests/RunCMake/Ninja/SelectCompiler/2/cc new file mode 100755 index 0000000..151dfa6 --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompiler/2/cc @@ -0,0 +1,2 @@ +#!/bin/sh +false diff --git a/Tests/RunCMake/Ninja/SelectCompilerUNIX-result.txt b/Tests/RunCMake/Ninja/SelectCompilerUNIX-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerUNIX-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Ninja/SelectCompilerUNIX-stderr.txt b/Tests/RunCMake/Ninja/SelectCompilerUNIX-stderr.txt new file mode 100644 index 0000000..a2baa48 --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerUNIX-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at .*/Modules/CMakeTestCCompiler.cmake:[0-9]+ \(message\): + The C compiler + + "[^"]*/Tests/RunCMake/Ninja/SelectCompiler/2/cc" + + is not able to compile a simple test program. diff --git a/Tests/RunCMake/Ninja/SelectCompilerUNIX.cmake b/Tests/RunCMake/Ninja/SelectCompilerUNIX.cmake new file mode 100644 index 0000000..02c8439 --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerUNIX.cmake @@ -0,0 +1,3 @@ +set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}/SelectCompiler/1:${CMAKE_CURRENT_SOURCE_DIR}/SelectCompiler/2:$ENV{PATH}") +unset(ENV{CC}) +enable_language(C) diff --git a/Tests/RunCMake/Ninja/SelectCompilerWindows-result.txt b/Tests/RunCMake/Ninja/SelectCompilerWindows-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerWindows-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/Ninja/SelectCompilerWindows-stderr.txt b/Tests/RunCMake/Ninja/SelectCompilerWindows-stderr.txt new file mode 100644 index 0000000..e4b506e --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerWindows-stderr.txt @@ -0,0 +1,6 @@ +^CMake Error at .*/Modules/CMakeTestCCompiler.cmake:[0-9]+ \(message\): + The C compiler + + "[^"]*/Tests/RunCMake/Ninja/SelectCompiler/1/gcc" + + is not able to compile a simple test program. diff --git a/Tests/RunCMake/Ninja/SelectCompilerWindows.cmake b/Tests/RunCMake/Ninja/SelectCompilerWindows.cmake new file mode 100644 index 0000000..f5a7e2b --- /dev/null +++ b/Tests/RunCMake/Ninja/SelectCompilerWindows.cmake @@ -0,0 +1,3 @@ +set(ENV{PATH} "${CMAKE_CURRENT_SOURCE_DIR}/SelectCompiler/1;${CMAKE_CURRENT_SOURCE_DIR}/SelectCompiler/2;$ENV{PATH}") +unset(ENV{CC}) +enable_language(C) |