Skip to content

Commit bfb200c

Browse files
committed
[test]
1 parent 378c589 commit bfb200c

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

src/ffi/grovedb/meson.build

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ if use_rustdeps
5757
grovedb_cxx_bridge_header = grovedb_cxx_subdir / 'gen' / 'rust' / 'grovedb_cxx' / 'lib.h'
5858

5959
# Find the Rust library (libgrovedb_cxx.a is in subprojects/grovedb_cxx/ subdirectory)
60+
grovedb_cxx_lib_path = grovedb_cxx_subdir / 'libgrovedb_cxx.a'
6061
grovedb_cxx_lib = declare_dependency(
6162
compile_args: ['-I' + grovedb_cxx_include],
6263
dependencies: cxx.find_library('grovedb_cxx', dirs: [grovedb_cxx_subdir]),
@@ -79,6 +80,7 @@ elif grovedb_cxx_build_dir != ''
7980
error('CXX bridge source not found at: ' + grovedb_cxx_bridge_source)
8081
endif
8182

83+
grovedb_cxx_lib_path = grovedb_cxx_build_dir / 'libgrovedb_cxx.a'
8284
grovedb_cxx_lib = declare_dependency(
8385
compile_args: ['-I' + grovedb_cxx_include],
8486
dependencies: cxx.find_library('grovedb_cxx', dirs: [grovedb_cxx_build_dir]),
@@ -117,6 +119,7 @@ else
117119
'Please build grovedb_cxx first (see above)')
118120
endif
119121

122+
grovedb_cxx_lib_path = rust_build_dir / 'grovedb_cxx' / 'libgrovedb_cxx.a'
120123
grovedb_cxx_lib = declare_dependency(
121124
compile_args: ['-I' + grovedb_cxx_include],
122125
dependencies: cxx.find_library('grovedb_cxx', dirs: [rust_build_dir / 'grovedb_cxx']),
@@ -148,12 +151,20 @@ libgrovedb_headers = files(
148151
# Include directories
149152
libgrovedb_inc = include_directories('include', 'src')
150153

154+
# Platform-specific whole-archive flags to include all Rust symbols
155+
if host_machine.system() == 'darwin'
156+
whole_archive_args = ['-Wl,-force_load,' + grovedb_cxx_lib_path]
157+
else
158+
whole_archive_args = ['-Wl,--whole-archive', grovedb_cxx_lib_path, '-Wl,--no-whole-archive']
159+
endif
160+
151161
# Build shared library
152162
libgrovedb_shared = shared_library('grovedb',
153163
libgrovedb_sources,
154164
include_directories: libgrovedb_inc,
155165
dependencies: [grovedb_cxx_lib, thread_dep],
156166
link_with: cxx_bridge_lib,
167+
link_args: whole_archive_args,
157168
install: true,
158169
version: meson.project_version(),
159170
soversion: '1',

0 commit comments

Comments
 (0)