diff --git a/CMakeLists.txt b/CMakeLists.txt index 471c00ead..8330721e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -193,21 +193,6 @@ if(CMAKE_COMPILER_IS_GNUCC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations") endif() - if (DEFINED CMAKE_REQUIRED_FLAGS) - set(SAVE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) - endif() - set(CMAKE_REQUIRED_FLAGS "-Wl,--no-undefined") - CHECK_C_COMPILER_FLAG (-Wl,--no-undefined no-undefined) - if (DEFINED SAVE_CMAKE_REQUIRED_FLAGS) - set(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS}) - unset(SAVE_CMAKE_REQUIRED_FLAGS) - else() - unset(CMAKE_REQUIRED_FLAGS) - endif() - if(no-undefined) - SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) - endif() - if(NOT EXPORT_ALL_SYMBOLS) message(STATUS "GCC default symbol visibility: hidden") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") @@ -292,6 +277,22 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer") endif() endif() + if (WITH_NO_UNDEFINED) + if (DEFINED CMAKE_REQUIRED_FLAGS) + set(SAVE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS}) + endif() + set(CMAKE_REQUIRED_FLAGS "-Wl,--no-undefined") + CHECK_C_COMPILER_FLAG (-Wl,--no-undefined no-undefined) + if (DEFINED SAVE_CMAKE_REQUIRED_FLAGS) + set(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS}) + unset(SAVE_CMAKE_REQUIRED_FLAGS) + else() + unset(CMAKE_REQUIRED_FLAGS) + endif() + if(no-undefined) + SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" ) + endif() + endif() endif() if(MSVC) diff --git a/ci/cmake-preloads/config-linux-all.txt b/ci/cmake-preloads/config-linux-all.txt index 275986f51..010e86534 100644 --- a/ci/cmake-preloads/config-linux-all.txt +++ b/ci/cmake-preloads/config-linux-all.txt @@ -45,3 +45,4 @@ set (WITH_DEBUG_X11_CLIPRDR OFF CACHE BOOL "enable debug") set (WITH_DEBUG_X11_LOCAL_MOVESIZE OFF CACHE BOOL "enable debug") set (WITH_DEBUG_XV OFF CACHE BOOL "enable debug") set (WITH_SAMPLE ON CACHE BOOL "samples") +set (WITH_NO_UNDEFINED ON CACHE BOOL "don't link with undefined symbols")