1 # - Adds a compiler flag if it is supported by the compiler
3 # This function checks that the supplied compiler flag is supported and then
4 # adds it to the corresponding compiler flags
6 # add_c_compiler_flag(<FLAG> [<VARIANT>])
10 # include(AddCCompilerFlag)
11 # add_c_compiler_flag(-Wall)
12 # add_c_compiler_flag(-no-strict-aliasing RELEASE)
15 if(__add_c_compiler_flag)
18 set(__add_c_compiler_flag INCLUDED)
20 include(CheckCCompilerFlag)
22 function(add_c_compiler_flag FLAG)
23 string(TOUPPER "HAVE_C_FLAG_${FLAG}" SANITIZED_FLAG)
24 string(REPLACE "+" "X" SANITIZED_FLAG ${SANITIZED_FLAG})
25 string(REGEX REPLACE "[^A-Za-z_0-9]" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
26 string(REGEX REPLACE "_+" "_" SANITIZED_FLAG ${SANITIZED_FLAG})
27 check_c_compiler_flag(${SANITIZED_FLAG} NO_DIAGNOSTICS_PRODUCED)
28 if(${NO_DIAGNOSTICS_PRODUCED})
31 string(REGEX REPLACE "[^A-Za-z_0-9]" "_" VARIANT "${VARIANT}")
32 string(TOUPPER "_${VARIANT}" VARIANT)
34 set(CMAKE_C_FLAGS${VARIANT} "${CMAKE_C_FLAGS${VARIANT}} ${FLAG}" PARENT_SCOPE)