From a989651bd4d751218fec6e0e511135d7583eebf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Fri, 10 Apr 2020 14:15:52 +0200 Subject: [PATCH 1/3] CMake: Fix appending of linker flags. There was a typo in `CMAKE_SHARED_LINKER_FLAGS`. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b70fa6..db00b04 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -271,7 +271,7 @@ if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")) endif() if (DISABLE_BSYMBOLIC STREQUAL "OFF") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKED_FLAGS} -Wl,-Bsymbolic-functions") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic-functions") # XXX need cmake>=3.13 for this: #add_link_options("-Wl,-Bsymbolic-functions") endif() From 58670ec64ed15000ca296a875c66cd956952fdf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Fri, 10 Apr 2020 14:20:57 +0200 Subject: [PATCH 2/3] CMake: Build Doxygen documentation out-of-tree. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index db00b04..a0f226c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -341,8 +341,8 @@ option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation( if (DOXYGEN_FOUND) add_custom_target(doc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) + COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Doxyfile + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}) # request to configure the file configure_file(Doxyfile Doxyfile) From e756777c92adaed20998355b9008b57b8e70ff08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Fri, 10 Apr 2020 14:42:03 +0200 Subject: [PATCH 3/3] CMake: Check whether BSYMBOLIC is supported by the linker. Linking with '-Bsymbolic-functions' is supported for ELF-binaries, only. --- .travis.yml | 6 +----- CMakeLists.txt | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3b533e8..2d10f92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -128,11 +128,7 @@ before_script: - set +e - mkdir -p build || echo "Failed to mkdir build" - cd build || echo "Failed to cd build" - - if [ "$TRAVIS_OS_NAME" = "osx" ]; then - cmake -DDISABLE_BSYMBOLIC=ON .. ; - else - cmake .. ; - fi || echo "Failed to run cmake" + - cmake .. || echo "Failed to run cmake" script: - make diff --git a/CMakeLists.txt b/CMakeLists.txt index a0f226c..936331e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -270,7 +270,20 @@ if (NOT ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC")) add_compile_options("-D_REENTRANT") endif() - if (DISABLE_BSYMBOLIC STREQUAL "OFF") + # OSX Mach-O doesn't support linking with '-Bsymbolic-functions'. + # Others may not support it, too. + list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,-Bsymbolic-functions") + check_c_source_compiles( + [=[ + int main () + { + return 0; + } + ]=] + BSYMBOLIC_WORKS + ) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,-Bsymbolic-functions") + if (DISABLE_BSYMBOLIC STREQUAL "OFF" AND BSYMBOLIC_WORKS) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic-functions") # XXX need cmake>=3.13 for this: #add_link_options("-Wl,-Bsymbolic-functions")