diff --git a/cmake/modules/AddCompilerFlags.cmake b/cmake/modules/AddCompilerFlags.cmake --- a/cmake/modules/AddCompilerFlags.cmake +++ b/cmake/modules/AddCompilerFlags.cmake @@ -2,10 +2,20 @@ include(CheckCXXCompilerFlag) include(CheckCCompilerFlag) +macro(build_test_name_from_flag TEST_NAME FLAG) + # Remove leading '-' chars + string(REGEX REPLACE "-*(.+)( |$)" "\\1\\2" ${TEST_NAME} "${FLAG}") + # Replace non printable char with '_' + string(REGEX REPLACE "[^a-zA-Z0-9_]" "_" ${TEST_NAME} "${${TEST_NAME}}") + # Append "_is_supported" to the test name + string(APPEND ${TEST_NAME} "_is_supported") +endmacro() + function(add_c_compiler_flag) foreach(f ${ARGN}) - CHECK_C_COMPILER_FLAG(${f} FLAG_IS_SUPPORTED) - if(FLAG_IS_SUPPORTED) + build_test_name_from_flag(FLAG_IS_SUPPORTED ${f}) + CHECK_C_COMPILER_FLAG(${f} ${FLAG_IS_SUPPORTED}) + if(${FLAG_IS_SUPPORTED}) string(APPEND CMAKE_C_FLAGS " ${f}") endif() endforeach() @@ -14,8 +24,9 @@ function(add_cxx_compiler_flag) foreach(f ${ARGN}) - CHECK_CXX_COMPILER_FLAG(${f} FLAG_IS_SUPPORTED) - if(FLAG_IS_SUPPORTED) + build_test_name_from_flag(FLAG_IS_SUPPORTED ${f}) + CHECK_CXX_COMPILER_FLAG(${f} ${FLAG_IS_SUPPORTED}) + if(${FLAG_IS_SUPPORTED}) string(APPEND CMAKE_CXX_FLAGS " ${f}") endif() endforeach()