From c2c9890c68fd4f7608a6a49716b664f921f4c59b Mon Sep 17 00:00:00 2001 From: apn Date: Wed, 17 Feb 2016 15:59:12 +0300 Subject: [PATCH] 0027152: Undefined symbols in library TKernel.so using clang compiler Added ldl dependency for TKernel only (other toolkits were checked, no undefined symbols) Added option "-z defs" for linking on Linux Added lm dependency for all toolkits --- adm/cmake/occt_csf.cmake | 1 + adm/cmake/occt_defs_flags.cmake | 11 +++++++++++ src/TKernel/EXTERNLIB | 1 + 3 files changed, 13 insertions(+) diff --git a/adm/cmake/occt_csf.cmake b/adm/cmake/occt_csf.cmake index 2a83eacff1..6a6d263c6b 100644 --- a/adm/cmake/occt_csf.cmake +++ b/adm/cmake/occt_csf.cmake @@ -77,6 +77,7 @@ else() set (CSF_ThreadLibs "pthread rt stdc++") set (CSF_OpenGlLibs "GLU GL") set (CSF_XwLibs "X11 Xext Xmu Xi") + set (CSF_dl "dl") if (USE_TCL) set (CSF_TclLibs "tcl${3RDPARTY_TCL_LIBRARY_VERSION}") diff --git a/adm/cmake/occt_defs_flags.cmake b/adm/cmake/occt_defs_flags.cmake index aeda51c2ba..fb70c15e1a 100644 --- a/adm/cmake/occt_defs_flags.cmake +++ b/adm/cmake/occt_defs_flags.cmake @@ -92,6 +92,17 @@ if (MSVC) endif() elseif (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") + if (BUILD_SHARED_LIBS) + if (APPLE) + set (CMAKE_SHARED_LINKER_FLAGS "-lm ${CMAKE_SHARED_LINKER_FLAGS}") + else() + set (CMAKE_SHARED_LINKER_FLAGS "-lm -z defs ${CMAKE_SHARED_LINKER_FLAGS}") + endif() + else() + if (NOT ANDROID) + set (CMAKE_STATIC_LINKER_FLAGS "-lm ${CMAKE_SHARED_STATIC_FLAGS}") + endif() + endif() endif() if (DEFINED CMAKE_COMPILER_IS_GNUCXX OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang") diff --git a/src/TKernel/EXTERNLIB b/src/TKernel/EXTERNLIB index 53e335534c..c2a9cf8372 100755 --- a/src/TKernel/EXTERNLIB +++ b/src/TKernel/EXTERNLIB @@ -3,3 +3,4 @@ CSF_advapi32 CSF_gdi32 CSF_user32 CSF_TBB +CSF_dl \ No newline at end of file -- 2.20.1