Skip to content

Commit e8506d9

Browse files
authored
Merge pull request duckdb#164 from staticlibs/symbols_export
Only export JNI and C-API symbols
2 parents e9b93b2 + 36c50b7 commit e8506d9

File tree

5 files changed

+1393
-2
lines changed

5 files changed

+1393
-2
lines changed

CMakeLists.txt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ if(MSVC)
104104
src/duckdb/extension/jemalloc/jemalloc/src/util.c
105105
src/duckdb/extension/jemalloc/jemalloc/src/witness.c
106106
src/duckdb/extension/jemalloc/jemalloc/src/zone.c )
107+
list(APPEND DUCKDB_SRC_FILES duckdb_java.def)
107108
add_definitions(/bigobj /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
108109
else()
109110
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ")
@@ -156,9 +157,23 @@ add_library(duckdb_java SHARED
156157
src/jni/refs.cpp
157158
src/jni/util.cpp
158159
${DUCKDB_SRC_FILES})
159-
target_compile_options(duckdb_java PRIVATE -fexceptions)
160+
target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_STATIC_BUILD)
160161
target_link_libraries(duckdb_java duckdb-native )
161162
target_link_libraries(duckdb_java ${DUCKDB_SYSTEM_LIBS})
163+
if(NOT WIN32)
164+
target_compile_options(duckdb_java PRIVATE -fexceptions)
165+
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
166+
target_link_options(duckdb_java PRIVATE
167+
-Bsymbolic
168+
-Bsymbolic-functions
169+
-fvisibility=hidden
170+
-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/duckdb_java.map)
171+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
172+
target_link_options(duckdb_java PRIVATE
173+
-fvisibility=hidden
174+
-Wl,-exported_symbols_list,${CMAKE_CURRENT_LIST_DIR}/duckdb_java.exp)
175+
endif()
176+
endif()
162177

163178
string(JOIN "_" LIB_SUFFIX ".so" ${OS_NAME} ${OS_ARCH})
164179
set_target_properties(duckdb_java PROPERTIES SUFFIX ${LIB_SUFFIX})

CMakeLists.txt.in

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ if(MSVC)
104104
src/duckdb/extension/jemalloc/jemalloc/src/util.c
105105
src/duckdb/extension/jemalloc/jemalloc/src/witness.c
106106
src/duckdb/extension/jemalloc/jemalloc/src/zone.c )
107+
list(APPEND DUCKDB_SRC_FILES duckdb_java.def)
107108
add_definitions(/bigobj /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
108109
else()
109110
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -DNDEBUG ")
@@ -156,9 +157,23 @@ add_library(duckdb_java SHARED
156157
src/jni/refs.cpp
157158
src/jni/util.cpp
158159
${DUCKDB_SRC_FILES})
159-
target_compile_options(duckdb_java PRIVATE -fexceptions)
160+
target_compile_definitions(duckdb_java PRIVATE -DDUCKDB_STATIC_BUILD)
160161
target_link_libraries(duckdb_java duckdb-native ${LIBRARY_FILES})
161162
target_link_libraries(duckdb_java ${DUCKDB_SYSTEM_LIBS})
163+
if(NOT WIN32)
164+
target_compile_options(duckdb_java PRIVATE -fexceptions)
165+
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
166+
target_link_options(duckdb_java PRIVATE
167+
-Bsymbolic
168+
-Bsymbolic-functions
169+
-fvisibility=hidden
170+
-Wl,--version-script=${CMAKE_CURRENT_LIST_DIR}/duckdb_java.map)
171+
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
172+
target_link_options(duckdb_java PRIVATE
173+
-fvisibility=hidden
174+
-Wl,-exported_symbols_list,${CMAKE_CURRENT_LIST_DIR}/duckdb_java.exp)
175+
endif()
176+
endif()
162177

163178
string(JOIN "_" LIB_SUFFIX ".so" ${OS_NAME} ${OS_ARCH})
164179
set_target_properties(duckdb_java PROPERTIES SUFFIX ${LIB_SUFFIX})

0 commit comments

Comments
 (0)