]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
CMake: Check whether BSYMBOLIC is supported by the linker. 572/head
authorBjörn Esser <besser82@fedoraproject.org>
Fri, 10 Apr 2020 12:42:03 +0000 (14:42 +0200)
committerBjörn Esser <besser82@fedoraproject.org>
Fri, 10 Apr 2020 15:29:35 +0000 (17:29 +0200)
Linking with '-Bsymbolic-functions' is supported for ELF-binaries, only.

.travis.yml
CMakeLists.txt

index 3b533e8da7191f76b7c54d7ad8bf80f080dffef4..2d10f92ae63d3db28fc2b89e5c51bdeb78e51461 100644 (file)
@@ -128,11 +128,7 @@ before_script:
   - set +e \r
   - mkdir -p build || echo "Failed to mkdir build"\r
   - cd build || echo "Failed to cd build"\r
-  - if [ "$TRAVIS_OS_NAME" = "osx" ]; then\r
-       cmake -DDISABLE_BSYMBOLIC=ON .. ;\r
-    else \r
-       cmake .. ;\r
-    fi || echo "Failed to run cmake"\r
+  - cmake .. || echo "Failed to run cmake"\r
 \r
 script:\r
   - make\r
index a0f226c4ed27c75760e2bca6f9a4d8213c1794b3..936331e2041d6a79a0d715d376f689bc355469c5 100644 (file)
@@ -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")