CMake: Add function to test compiler flags
Remove all the duplicate code. Each test result is cached so it needs an unique variable to store the result. Change-Id: Ib591a1d6beaa13337d927a446b4d8d5e687ff610 Reviewed-on: https://code.wireshark.org/review/29485 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
This commit is contained in:
parent
c850a16ef4
commit
6ab8d4607a
|
@ -695,52 +695,38 @@ else()
|
|||
set(BUILD_SHARED_LIBS 1)
|
||||
endif()
|
||||
|
||||
# Sigh: Have to use THIS_FLAG instead of ${F} for some reason
|
||||
foreach(THIS_FLAG ${C_FLAG_TESTS})
|
||||
string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
|
||||
set(${F} ${THIS_FLAG})
|
||||
set(V C_${F}_VALID)
|
||||
message(STATUS "Checking for c-compiler flag: ${THIS_FLAG}")
|
||||
check_c_compiler_flag("${ADDED_CMAKE_C_FLAGS} ${${F}}" ${V})
|
||||
if (${${V}})
|
||||
set(ADDED_CMAKE_C_FLAGS "${ADDED_CMAKE_C_FLAGS} ${${F}}")
|
||||
function(test_compiler_flag _lang _this_flag _valid_flags_var)
|
||||
string(MAKE_C_IDENTIFIER "${_lang}${_this_flag}_VALID" _flag_var)
|
||||
set(_test_flags "${${_valid_flags_var}} ${_this_flag}")
|
||||
if(_lang STREQUAL "C")
|
||||
check_c_compiler_flag("${_test_flags}" ${_flag_var})
|
||||
elseif(_lang STREQUAL "CXX")
|
||||
check_cxx_compiler_flag("${_test_flags}" ${_flag_var})
|
||||
else()
|
||||
message(FATAL_ERROR "Language must be C or CXX")
|
||||
endif()
|
||||
if (${_flag_var})
|
||||
set(${_valid_flags_var} "${_test_flags}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
foreach(THIS_FLAG ${C_FLAG_TESTS})
|
||||
test_compiler_flag(C ${THIS_FLAG} ADDED_CMAKE_C_FLAGS)
|
||||
endforeach()
|
||||
set(CMAKE_C_FLAGS "${ADDED_CMAKE_C_FLAGS} ${CMAKE_C_FLAGS}")
|
||||
|
||||
foreach(THIS_FLAG ${CXX_FLAG_TESTS})
|
||||
string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
|
||||
set(${F} ${THIS_FLAG})
|
||||
set(V CXX_${F}_VALID)
|
||||
message(STATUS "Checking for c++-compiler flag: ${THIS_FLAG}")
|
||||
check_cxx_compiler_flag("${ADDED_CMAKE_CXX_FLAGS} ${${F}}" ${V})
|
||||
if (${${V}})
|
||||
set(ADDED_CMAKE_CXX_FLAGS "${ADDED_CMAKE_CXX_FLAGS} ${${F}}")
|
||||
endif()
|
||||
test_compiler_flag(CXX ${THIS_FLAG} ADDED_CMAKE_CXX_FLAGS)
|
||||
endforeach()
|
||||
set(CMAKE_CXX_FLAGS "${ADDED_CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
foreach(THIS_FLAG ${C_WARN_TESTS})
|
||||
string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
|
||||
set(${F} ${THIS_FLAG})
|
||||
set(V C_${F}_VALID)
|
||||
message(STATUS "Checking for c-compiler flag: ${THIS_FLAG}")
|
||||
check_c_compiler_flag("${C_FLAG_TESTS} ${${F}}" ${V})
|
||||
if (${${V}})
|
||||
set(ADDED_WARN_C_FLAGS "${ADDED_WARN_C_FLAGS} ${${F}}")
|
||||
endif()
|
||||
test_compiler_flag(C ${THIS_FLAG} ADDED_WARN_C_FLAGS)
|
||||
endforeach()
|
||||
set(CMAKE_C_FLAGS "${ADDED_WARN_C_FLAGS} ${CMAKE_C_FLAGS}")
|
||||
|
||||
foreach(THIS_FLAG ${CXX_WARN_TESTS})
|
||||
string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
|
||||
set(${F} ${THIS_FLAG})
|
||||
set(V CXX_${F}_VALID)
|
||||
message(STATUS "Checking for c++-compiler flag: ${THIS_FLAG}")
|
||||
check_cxx_compiler_flag("${CXX_FLAG_TESTS} ${${F}}" ${V})
|
||||
if (${${V}})
|
||||
set(ADDED_WARN_CXX_FLAGS "${ADDED_WARN_CXX_FLAGS} ${${F}}")
|
||||
endif()
|
||||
test_compiler_flag(CXX ${THIS_FLAG} ADDED_WARN_CXX_FLAGS)
|
||||
endforeach()
|
||||
set(CMAKE_CXX_FLAGS "${ADDED_WARN_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
|
|
Loading…
Reference in New Issue