You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.6 KiB
39 lines
1.6 KiB
4 months ago
|
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)
|