@@ -40,8 +40,8 @@ pub fn main(_out_dir: &str, out_path: &Path) {
4040 write_bindings ( & source_dir. join ( "src/include" ) , out_path) ;
4141 if let Some ( configs) = env_var ( "DUCKDB_EXTENSION_CONFIGS" ) {
4242 if !configs. trim ( ) . is_empty ( ) {
43- cargo_warning (
44- "DUCKDB_EXTENSION_CONFIGS is not yet supported by bundled-cmake because additional static extension libraries are not auto-linked; ignoring it" ,
43+ panic ! (
44+ "DUCKDB_EXTENSION_CONFIGS is not yet supported by bundled-cmake because additional static extension libraries are not auto-linked"
4545 ) ;
4646 }
4747 }
@@ -105,14 +105,14 @@ pub fn main(_out_dir: &str, out_path: &Path) {
105105 let lib_dir = dst. join ( "lib" ) ;
106106 validate_extension_libraries ( & lib_dir, & cmake_build_type, & enabled_extensions) ;
107107 println ! ( "cargo:rustc-link-search=native={}" , lib_dir. display( ) ) ;
108- // Preserve expected dependency order for common single-pass linkers:
109- // `duckdb_static` provides core symbols used by the generated loader and extensions.
110- link_static_library ( & lib_dir, & cmake_build_type, "duckdb_static" ) ;
108+ // Emit in dependents-before-dependencies order for single-pass linkers:
109+ // loader → extensions → duckdb_static (which satisfies all core symbols).
111110 link_static_library ( & lib_dir, & cmake_build_type, "duckdb_generated_extension_loader" ) ;
112111 link_static_library ( & lib_dir, & cmake_build_type, "core_functions_extension" ) ;
113112 for extension in enabled_extensions {
114113 link_static_library ( & lib_dir, & cmake_build_type, & format ! ( "{extension}_extension" ) ) ;
115114 }
115+ link_static_library ( & lib_dir, & cmake_build_type, "duckdb_static" ) ;
116116 link_system_libs ( ) ;
117117 println ! ( "cargo:lib_dir={}" , lib_dir. display( ) ) ;
118118}
0 commit comments