Merge topic 'feature-absence-hard-error'
8d0b1cca
Features: FATAL_ERROR on compilers with no recorded features.447fbb3f
Tests: Execute compile features tests unconditionally.597bb72e
Tests: Run RunCMake.target_compile_features unconditionally.
This commit is contained in:
commit
b10083876c
|
@ -4604,8 +4604,28 @@ AddRequiredTargetFeature(cmTarget *target, const std::string& feature,
|
|||
|
||||
if (!featuresKnown || !*featuresKnown)
|
||||
{
|
||||
// We know of no features for the compiler at all.
|
||||
return true;
|
||||
cmOStringStream e;
|
||||
if (error)
|
||||
{
|
||||
e << "no";
|
||||
}
|
||||
else
|
||||
{
|
||||
e << "No";
|
||||
}
|
||||
e << " known features for compiler\n\""
|
||||
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID")
|
||||
<< "\"\nversion "
|
||||
<< this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << ".";
|
||||
if (error)
|
||||
{
|
||||
*error = e.str();
|
||||
}
|
||||
else
|
||||
{
|
||||
this->IssueMessage(cmake::FATAL_ERROR, e.str());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<std::string> availableFeatures;
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
cmake_minimum_required(VERSION 3.0)
|
||||
project(target_compile_features)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILE_FEATURES)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_dummy.cpp"
|
||||
"int main(int,char**) { return 0; }\n"
|
||||
)
|
||||
add_executable(target_compile_features "${CMAKE_CURRENT_BINARY_DIR}/test_dummy.cpp")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
||||
|
||||
add_executable(target_compile_features main.cpp)
|
||||
|
|
|
@ -197,11 +197,9 @@ if(BUILD_TESTING)
|
|||
ADD_TEST_MACRO(TarTest TarTest)
|
||||
ADD_TEST_MACRO(SystemInformation SystemInformation)
|
||||
ADD_TEST_MACRO(MathTest MathTest)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU
|
||||
AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
ADD_TEST_MACRO(CompileFeatures CompileFeatures)
|
||||
ADD_TEST_MACRO(CMakeCommands.target_compile_features target_compile_features)
|
||||
endif()
|
||||
ADD_TEST_MACRO(CompileFeatures CompileFeatures)
|
||||
ADD_TEST_MACRO(CMakeCommands.target_compile_features target_compile_features)
|
||||
|
||||
# assume no resources building to test
|
||||
set(TEST_RESOURCES FALSE)
|
||||
# for windows and cygwin assume we have resources
|
||||
|
|
|
@ -3,6 +3,14 @@ cmake_minimum_required(VERSION 3.0)
|
|||
|
||||
project(CompileFeatures)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILE_FEATURES)
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp"
|
||||
"int main(int,char**) { return 0; }\n"
|
||||
)
|
||||
add_executable(CompileFeatures "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp")
|
||||
return()
|
||||
endif()
|
||||
|
||||
macro(run_test feature)
|
||||
if (";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ${feature})
|
||||
add_library(test_${feature} OBJECT ${feature}.cpp)
|
||||
|
|
|
@ -126,9 +126,7 @@ add_RunCMake_test(File_Generate)
|
|||
add_RunCMake_test(ExportWithoutLanguage)
|
||||
add_RunCMake_test(target_link_libraries)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL GNU AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
add_RunCMake_test(target_compile_features)
|
||||
endif()
|
||||
add_RunCMake_test(target_compile_features)
|
||||
add_RunCMake_test(CheckModules)
|
||||
add_RunCMake_test(CommandLine)
|
||||
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
1
|
|
@ -0,0 +1,8 @@
|
|||
CMake Error at NoSupportedCxxFeatures.cmake:3 \(target_compile_features\):
|
||||
target_compile_features no known features for compiler
|
||||
|
||||
"[^"]*"
|
||||
|
||||
version *[.0-9]+\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists.txt:3 \(include\)
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
add_library(no_features empty.cpp)
|
||||
target_compile_features(no_features PRIVATE cxx_constexpr)
|
|
@ -0,0 +1 @@
|
|||
1
|
|
@ -0,0 +1,6 @@
|
|||
CMake Error in CMakeLists.txt:
|
||||
No known features for compiler
|
||||
|
||||
"[^"]*"
|
||||
|
||||
version *[.0-9]+\.
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
add_library(no_features empty.cpp)
|
||||
target_compile_features(no_features PRIVATE $<1:cxx_constexpr>)
|
|
@ -7,3 +7,14 @@ run_cmake(NotAFeature_OriginDebug)
|
|||
run_cmake(NotAFeature_OriginDebugGenex)
|
||||
run_cmake(NotAFeature_OriginDebugTransitive)
|
||||
run_cmake(NotAFeature_OriginDebug_target_compile_features)
|
||||
|
||||
run_cmake(generate_feature_list)
|
||||
file(READ
|
||||
"${RunCMake_BINARY_DIR}/generate_feature_list-build/features.txt"
|
||||
FEATURES
|
||||
)
|
||||
|
||||
if (NOT FEATURES)
|
||||
run_cmake(NoSupportedCxxFeatures)
|
||||
run_cmake(NoSupportedCxxFeaturesGenex)
|
||||
endif()
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/features.txt"
|
||||
"${CMAKE_CXX_COMPILE_FEATURES}"
|
||||
)
|
Loading…
Reference in New Issue