[cmake] fix CheckAndSetFlag

Actually add the flags provided and not discard them.
This commit is contained in:
akallabeth 2025-02-14 11:13:35 +01:00
parent c375ed6cb1
commit 46bcc2bea3
No known key found for this signature in database
GPG Key ID: A49454A3FC909FD5
2 changed files with 24 additions and 21 deletions

View File

@ -1,28 +1,31 @@
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
macro(RemoveFlag FLAG)
string(REPLACE "${FLAG}" "" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
string(REPLACE "${FLAG}" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endmacro()
macro(CheckAndSetFlag FLAG)
if(FLAG)
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
unset(C_FLAG)
unset(CXX_FLAG)
if("C" IN_LIST languages)
check_c_compiler_flag("${FLAG}" C_FLAG)
if(C_FLAG)
string(APPEND CMAKE_C_FLAGS " ${FLAG}")
endif()
endif()
if("CXX" IN_LIST languages)
check_cxx_compiler_flag("${FLAG}" CXX_FLAG)
if(CXX_FLAG)
string(APPEND CMAKE_CXX_FLAGS " ${FLAG}")
endif()
endif()
if(NOT C_FLAG AND NOT CXX_FLAG)
message(WARNING "compiler does not support ${FLAG}")
unset(C_FLAG)
unset(CXX_FLAG)
if("C" IN_LIST languages)
check_c_compiler_flag("${FLAG}" C_FLAG)
if(C_FLAG)
string(APPEND CMAKE_C_FLAGS " ${FLAG}")
endif()
endif()
if("CXX" IN_LIST languages)
check_cxx_compiler_flag("${FLAG}" CXX_FLAG)
if(CXX_FLAG)
string(APPEND CMAKE_CXX_FLAGS " ${FLAG}")
endif()
endif()
if(NOT C_FLAG AND NOT CXX_FLAG)
message(WARNING "compiler does not support ${FLAG}")
endif()
endmacro()

View File

@ -4,8 +4,8 @@ option(EXPORT_ALL_SYMBOLS "Export all symbols form library" OFF)
if(EXPORT_ALL_SYMBOLS)
add_compile_definitions(EXPORT_ALL_SYMBOLS)
removeflag(-fvisibility=hidden)
else()
message(STATUS "${} default symbol visibility: hidden")
checkandsetflag(-fvisibility=hidden)
endif()