mirror of
https://github.com/reactos/CMake.git
synced 2024-12-13 22:58:41 +00:00
Merge branch 'fix-crash-on-non-enabled-language-features' into release-3.9
This commit is contained in:
commit
fd771df773
@ -4190,6 +4190,23 @@ bool cmMakefile::CompileFeatureKnown(cmTarget const* target,
|
||||
const char* cmMakefile::CompileFeaturesAvailable(const std::string& lang,
|
||||
std::string* error) const
|
||||
{
|
||||
if (!this->GlobalGenerator->GetLanguageEnabled(lang)) {
|
||||
std::ostringstream e;
|
||||
if (error) {
|
||||
e << "cannot";
|
||||
} else {
|
||||
e << "Cannot";
|
||||
}
|
||||
e << " use features from non-enabled language " << lang;
|
||||
if (error) {
|
||||
*error = e.str();
|
||||
} else {
|
||||
this->GetCMakeInstance()->IssueMessage(cmake::FATAL_ERROR, e.str(),
|
||||
this->Backtrace);
|
||||
}
|
||||
return CM_NULLPTR;
|
||||
}
|
||||
|
||||
const char* featuresKnown =
|
||||
this->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES");
|
||||
|
||||
@ -4201,9 +4218,9 @@ const char* cmMakefile::CompileFeaturesAvailable(const std::string& lang,
|
||||
e << "No";
|
||||
}
|
||||
e << " known features for " << lang << " compiler\n\""
|
||||
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID")
|
||||
<< this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_ID")
|
||||
<< "\"\nversion "
|
||||
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << ".";
|
||||
<< this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << ".";
|
||||
if (error) {
|
||||
*error = e.str();
|
||||
} else {
|
||||
|
@ -1,3 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.0)
|
||||
project(${RunCMake_TEST} CXX)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
|
@ -11,3 +11,4 @@ run_cmake(not_a_cxx_feature)
|
||||
run_cmake(no_matching_cxx_feature)
|
||||
run_cmake(not_a_c_feature)
|
||||
run_cmake(no_matching_c_feature)
|
||||
run_cmake(cxx_not_enabled)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at alias_target.cmake:4 \(target_compile_features\):
|
||||
CMake Error at alias_target.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features can not be used on an ALIAS target.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_executable(main empty.cpp)
|
||||
add_executable(Alias::Main ALIAS main)
|
||||
|
@ -0,0 +1 @@
|
||||
1
|
@ -0,0 +1,4 @@
|
||||
^CMake Error at cxx_not_enabled.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features cannot use features from non-enabled language CXX
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)$
|
@ -0,0 +1,2 @@
|
||||
add_executable(main empty.c)
|
||||
target_compile_features(main PRIVATE cxx_decltype)
|
@ -1,4 +1,4 @@
|
||||
CMake Error at imported_target.cmake:3 \(target_compile_features\):
|
||||
CMake Error at imported_target.cmake:[0-9]+ \(target_compile_features\):
|
||||
Cannot specify compile features for imported target "main".
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_library(main INTERFACE IMPORTED)
|
||||
target_compile_features(main INTERFACE cxx_delegating_constructors)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at invalid_args.cmake:3 \(target_compile_features\):
|
||||
CMake Error at invalid_args.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features called with invalid arguments
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_executable(main empty.cpp)
|
||||
target_compile_features(main INVALID cxx_delegating_constructors)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at invalid_args_on_interface.cmake:3 \(target_compile_features\):
|
||||
CMake Error at invalid_args_on_interface.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features may only be set INTERFACE properties on INTERFACE
|
||||
targets
|
||||
Call Stack \(most recent call first\):
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_library(main INTERFACE)
|
||||
target_compile_features(main PRIVATE cxx_delegating_constructors)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at no_matching_c_feature.cmake:[0-9][0-9]? \((target_compile_features|message)\):
|
||||
CMake Error at no_matching_c_feature.cmake:[0-9]+ \((target_compile_features|message)\):
|
||||
The compiler feature "gnu_c_dummy" is not known to C compiler
|
||||
|
||||
"GNU"
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
if (NOT ";${CMAKE_C_COMPILE_FEATURES};" MATCHES ";gnu_c_typeof;")
|
||||
# Simulate passing the test.
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at no_matching_cxx_feature.cmake:[0-9][0-9]? \((target_compile_features|message)\):
|
||||
CMake Error at no_matching_cxx_feature.cmake:[0-9]+ \((target_compile_features|message)\):
|
||||
The compiler feature "[^"]+" is not known to CXX compiler
|
||||
|
||||
"[^"]*"
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
if (NOT ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";gnu_cxx_typeof;"
|
||||
AND NOT ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";msvc_cxx_sealed;" )
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at no_target.cmake:2 \(target_compile_features\):
|
||||
CMake Error at no_target.cmake:[0-9]+ \(target_compile_features\):
|
||||
Cannot specify compile features for target "main" which is not built by
|
||||
this project.
|
||||
Call Stack \(most recent call first\):
|
||||
|
@ -1,2 +1,3 @@
|
||||
enable_language(CXX)
|
||||
|
||||
target_compile_features(main INTERFACE cxx_delegating_constructors)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at not_a_c_feature.cmake:3 \(target_compile_features\):
|
||||
CMake Error at not_a_c_feature.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features specified unknown feature "c_not_a_feature" for
|
||||
target "main".
|
||||
Call Stack \(most recent call first\):
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(C)
|
||||
|
||||
add_executable(main empty.c)
|
||||
target_compile_features(main
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at not_a_cxx_feature.cmake:3 \(target_compile_features\):
|
||||
CMake Error at not_a_cxx_feature.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features specified unknown feature "cxx_not_a_feature" for
|
||||
target "main".
|
||||
Call Stack \(most recent call first\):
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_executable(main empty.cpp)
|
||||
target_compile_features(main
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at not_enough_args.cmake:3 \(target_compile_features\):
|
||||
CMake Error at not_enough_args.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features called with incorrect number of arguments
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
@ -1,3 +1,4 @@
|
||||
enable_language(CXX)
|
||||
|
||||
add_executable(main empty.cpp)
|
||||
target_compile_features(main)
|
||||
|
@ -1,4 +1,4 @@
|
||||
CMake Error at utility_target.cmake:4 \(target_compile_features\):
|
||||
CMake Error at utility_target.cmake:[0-9]+ \(target_compile_features\):
|
||||
target_compile_features called with non-compilable target type
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
||||
|
Loading…
Reference in New Issue
Block a user