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:
Brad King 2014-04-21 09:35:42 -04:00 committed by CMake Topic Stage
commit b10083876c
13 changed files with 79 additions and 10 deletions

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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\)

View File

@ -0,0 +1,3 @@
add_library(no_features empty.cpp)
target_compile_features(no_features PRIVATE cxx_constexpr)

View File

@ -0,0 +1,6 @@
CMake Error in CMakeLists.txt:
No known features for compiler
"[^"]*"
version *[.0-9]+\.

View File

@ -0,0 +1,3 @@
add_library(no_features empty.cpp)
target_compile_features(no_features PRIVATE $<1:cxx_constexpr>)

View File

@ -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()

View File

@ -0,0 +1,4 @@
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/features.txt"
"${CMAKE_CXX_COMPILE_FEATURES}"
)