CheckCompilerFlag: Add tests to verify module correctness

This commit is contained in:
Robert Maynard
2020-10-05 14:13:53 -04:00
committed by Brad King
parent b1898bf975
commit 8ac9719659
14 changed files with 102 additions and 0 deletions

View File

@@ -538,6 +538,7 @@ add_RunCMake_test(target_compile_features)
add_RunCMake_test(target_compile_options -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID})
add_RunCMake_test(target_include_directories)
add_RunCMake_test(target_sources)
add_RunCMake_test(CheckCompilerFlag)
add_RunCMake_test(CheckSourceCompiles)
add_RunCMake_test(CheckSourceRuns)
add_RunCMake_test(CheckModules)

View File

@@ -0,0 +1,5 @@
cmake_minimum_required(VERSION 3.13)
project(${RunCMake_TEST} LANGUAGES NONE)
include(${RunCMake_TEST}.cmake)

View File

@@ -0,0 +1,15 @@
enable_language (C)
include(CheckCompilerFlag)
check_compiler_flag(C "-_this_is_not_a_flag_" SHOULD_FAIL)
if(SHOULD_FAIL)
message(SEND_ERROR "invalid C compile flag didn't fail.")
endif()
if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
check_compiler_flag(C "-x c" SHOULD_WORK)
if(NOT SHOULD_WORK)
message(SEND_ERROR "${CMAKE_C_COMPILER_ID} compiler flag '-x c' check failed")
endif()
endif()

View File

@@ -0,0 +1,15 @@
enable_language (CXX)
include(CheckCompilerFlag)
check_compiler_flag(CXX "-_this_is_not_a_flag_" SHOULD_FAIL)
if(SHOULD_FAIL)
message(SEND_ERROR "invalid CXX compile flag didn't fail.")
endif()
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
check_compiler_flag(CXX "-x c++" SHOULD_WORK)
if(NOT SHOULD_WORK)
message(SEND_ERROR "${CMAKE_CXX_COMPILER_ID} compiler flag '-x c++' check failed")
endif()
endif()

View File

@@ -0,0 +1,14 @@
enable_language (Fortran)
include(CheckCompilerFlag)
check_compiler_flag(Fortran "-_this_is_not_a_flag_" SHOULD_FAIL)
if(SHOULD_FAIL)
message(SEND_ERROR "invalid Fortran compile flag didn't fail.")
endif()
if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
check_compiler_flag(Fortran "-Wall" SHOULD_WORK)
if(NOT SHOULD_WORK)
message(SEND_ERROR "${CMAKE_Fortran_COMPILER_ID} compiler flag '-Wall' check failed")
endif()
endif()

View File

@@ -0,0 +1,12 @@
enable_language (OBJC)
include(CheckCompilerFlag)
check_compiler_flag(OBJC "-_this_is_not_a_flag_" SHOULD_FAIL)
if(SHOULD_FAIL)
message(SEND_ERROR "invalid OBJC compile flag didn't fail.")
endif()
check_compiler_flag(OBJC "-Wall" SHOULD_WORK)
if(NOT SHOULD_WORK)
message(SEND_ERROR "${CMAKE_OBJC_COMPILER_ID} compiler flag '-Wall' check failed")
endif()

View File

@@ -0,0 +1,12 @@
enable_language (OBJCXX)
include(CheckCompilerFlag)
check_compiler_flag(OBJCXX "-_this_is_not_a_flag_" SHOULD_FAIL)
if(SHOULD_FAIL)
message(SEND_ERROR "invalid OBJCXX compile flag didn't fail.")
endif()
check_compiler_flag(OBJCXX "-Wall" SHOULD_WORK)
if(NOT SHOULD_WORK)
message(SEND_ERROR "${CMAKE_OBJCXX_COMPILER_ID} compiler flag '-Wall' check failed")
endif()

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,2 @@
CMake Error at .*CheckCompilerFlag\.cmake:[0-9]+ \(message\):
check_compiler_flag: FAKE_LANG: unknown language.

View File

@@ -0,0 +1,3 @@
include(CheckCompilerFlag)
check_compiler_flag(FAKE_LANG "int main() {return 0;}" SHOULD_BUILD)

View File

@@ -0,0 +1 @@
1

View File

@@ -0,0 +1,2 @@
CMake Error at .*CheckCompilerFlag\.cmake:[0-9]+ \(message\):
check_compiler_flag: C: needs to be enabled before use.

View File

@@ -0,0 +1,3 @@
include(CheckCompilerFlag)
check_compiler_flag(C "int main() {return 0;}" SHOULD_BUILD)

View File

@@ -0,0 +1,16 @@
include(RunCMake)
run_cmake(NotEnabledLanguage)
run_cmake(NonExistentLanguage)
run_cmake(CheckCCompilerFlag)
run_cmake(CheckCXXCompilerFlag)
if (APPLE)
run_cmake(CheckOBJCCompilerFlag)
run_cmake(CheckOBJCXXCompilerFlag)
endif()
if (CMAKE_Fortran_COMPILER_ID)
run_cmake(CheckFortranCompilerFlag)
endif()