include(CheckCSourceCompiles) include(CheckCXXSourceCompiles) macro(append_c_compiler_flags _flags _name _result) set(SAFE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) string(REGEX REPLACE "[-+/ ]" "_" cname "${_name}") string(TOUPPER "${cname}" cname) foreach(flag ${_flags}) string(REGEX REPLACE "^[-+/ ]+(.*)[-+/ ]*$" "\\1" flagname "${flag}") string(REGEX REPLACE "[-+/ ]" "_" flagname "${flagname}") string(TOUPPER "${flagname}" flagname) set(have_flag "HAVE_${cname}_${flagname}") set(CMAKE_REQUIRED_FLAGS "${flag}") check_c_source_compiles("int main() { return 0; }" ${have_flag}) if(${have_flag}) set(${_result} "${${_result}} ${flag}") endif(${have_flag}) endforeach(flag) set(CMAKE_REQUIRED_FLAGS ${SAFE_CMAKE_REQUIRED_FLAGS}) endmacro(append_c_compiler_flags) macro(append_cxx_compiler_flags _flags _name _result) set(SAFE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) string(REGEX REPLACE "[-+/ ]" "_" cname "${_name}") string(TOUPPER "${cname}" cname) foreach(flag ${_flags}) string(REGEX REPLACE "^[-+/ ]+(.*)[-+/ ]*$" "\\1" flagname "${flag}") string(REGEX REPLACE "[-+/ ]" "_" flagname "${flagname}") string(TOUPPER "${flagname}" flagname) set(have_flag "HAVE_${cname}_${flagname}") set(CMAKE_REQUIRED_FLAGS "${flag}") check_cxx_source_compiles("int main() { return 0; }" ${have_flag}) if(${have_flag}) set(${_result} "${${_result}} ${flag}") endif(${have_flag}) endforeach(flag) set(CMAKE_REQUIRED_FLAGS ${SAFE_CMAKE_REQUIRED_FLAGS}) endmacro(append_cxx_compiler_flags)