build: disable -Wl,--no-undefined per default
authorBernhard Miklautz <bernhard.miklautz@thincast.com>
Tue, 19 Apr 2016 12:33:26 +0000 (14:33 +0200)
committerBernhard Miklautz <bernhard.miklautz@thincast.com>
Tue, 19 Apr 2016 12:33:26 +0000 (14:33 +0200)
As building with -Wl,--no-undefined might cause issues when
combined with other linker flags (e.g. with -fsanitize=address see #3289)
it is now disabled per default but can be re-enabled with
-DWITH_NO_UNDEFINED=ON.

It is enabled for ci builds on linux to find undefined symbols.

CMakeLists.txt
ci/cmake-preloads/config-linux-all.txt

index 471c00e..8330721 100644 (file)
@@ -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)
index 275986f..010e865 100644 (file)
@@ -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")