diff options
author | tpgxyz <tpgxyz@gmail.com> | 2021-02-16 15:44:13 +0100 |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2021-04-23 06:41:58 +0300 |
commit | 0dffb4284e7872c6e26956ad85fe127ba77220dc (patch) | |
tree | ea8aeb6fbff87f37e81313898110ee07713ec1b5 | |
parent | 2de2c3d5fc702396a2a5ae8f70ab98a0011d486e (diff) | |
download | jansson-0dffb4284e7872c6e26956ad85fe127ba77220dc.zip jansson-0dffb4284e7872c6e26956ad85fe127ba77220dc.tar.gz jansson-0dffb4284e7872c6e26956ad85fe127ba77220dc.tar.bz2 |
use --version-script in case of linkers that does not support --default-symver
-rw-r--r-- | CMakeLists.txt | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1867b52..ba2c062 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,9 +57,6 @@ if (HAS_NO_FORMAT_TRUNCATION) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-format-truncation") endif() -include (CheckSymbolExists) -check_symbol_exists("__GLIBC__" "stdlib.h" LIBC_IS_GLIBC) - if (MSVC) # Turn off Microsofts "security" warnings. add_definitions( "/W3 /D_CRT_SECURE_NO_WARNINGS /wd4005 /wd4996 /nologo" ) @@ -311,8 +308,42 @@ if(JANSSON_BUILD_SHARED_LIBS) ${JANSSON_HDR_PUBLIC} src/jansson.def) - if (LIBC_IS_GLIBC) +# check if linker support --default-symver + list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,--default-symver") + check_c_source_compiles( + " + int main (void) + { + return 0; + } + " + DSYMVER_WORKS + ) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,--default-symver") + + if (SYMVER_WORKS) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--default-symver") + else() +# some linkers may only support --version-script + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/jansson.sym" "libjansson.so.${JANSSON_SOVERSION} { + global: + *; +}; +") + list(APPEND CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/jansson.sym") + check_c_source_compiles( + " + int main (void) + { + return 0; + } + " + VSCRIPT_WORKS + ) + list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/jansson.sym") + if (SYMVER_WORKS) + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/jansson.sym") + endif() endif() set_target_properties(jansson PROPERTIES |