CMake: Check whether BSYMBOLIC is supported by the linker.

Linking with '-Bsymbolic-functions' is supported for ELF-binaries, only.
This commit is contained in:
Björn Esser
2020-04-10 14:42:03 +02:00
parent 58670ec64e
commit e756777c92
2 changed files with 15 additions and 6 deletions

View File

@@ -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

View 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")