@@ -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]),
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
149152libgrovedb_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
152162libgrovedb_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