aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortpgxyz <tpgxyz@gmail.com>2021-02-16 15:44:13 +0100
committerPetri Lehtinen <petri@digip.org>2021-04-23 06:41:58 +0300
commit0dffb4284e7872c6e26956ad85fe127ba77220dc (patch)
treeea8aeb6fbff87f37e81313898110ee07713ec1b5
parent2de2c3d5fc702396a2a5ae8f70ab98a0011d486e (diff)
downloadjansson-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.txt39
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