@@ -177,7 +177,7 @@ fn make_modules(opencv_dir: &Path) -> Result<()> {
177177 Ok ( ( ) )
178178}
179179
180- fn build_compiler ( opencv : & Library ) -> cc:: Build {
180+ fn build_compiler ( opencv : & Library , ffi_export_suffix : & str ) -> cc:: Build {
181181 let mut out = cc:: Build :: new ( ) ;
182182 out. cpp ( true )
183183 . std ( "c++14" ) // clang says error: 'auto' return without trailing return type; deduced return types are a C++14 extension
@@ -227,6 +227,7 @@ fn build_compiler(opencv: &Library) -> cc::Build {
227227 } else {
228228 out. flag_if_supported ( "-Wa,-mbig-obj" ) ;
229229 }
230+ out. define ( "OCVRS_FFI_EXPORT_SUFFIX" , ffi_export_suffix) ;
230231 out
231232}
232233
@@ -247,8 +248,7 @@ fn setup_rerun() -> Result<()> {
247248 Ok ( ( ) )
248249}
249250
250- fn build_wrapper ( opencv : & Library ) {
251- let mut cc = build_compiler ( opencv) ;
251+ fn build_wrapper ( mut cc : cc:: Build ) {
252252 eprintln ! ( "=== Compiler information: {:#?}" , cc. get_compiler( ) ) ;
253253 let modules = MODULES . get ( ) . expect ( "MODULES not initialized" ) ;
254254 static SUPPORTED_MODULES : [ & str ; 67 ] = [
@@ -347,7 +347,8 @@ fn main() -> Result<()> {
347347 return Ok ( ( ) ) ;
348348 }
349349
350- eprintln ! ( "=== Crate version: {:?}" , env:: var_os( "CARGO_PKG_VERSION" ) ) ;
350+ let pkg_version = env:: var ( "CARGO_PKG_VERSION" ) . unwrap_or_else ( |_| "unknown_crate_version" . to_string ( ) ) ;
351+ eprintln ! ( "=== Crate version: {pkg_version}" ) ;
351352 eprintln ! ( "=== Environment configuration:" ) ;
352353 for v in AFFECTING_ENV_VARS . into_iter ( ) . chain ( DEBUG_ENV_VARS ) {
353354 eprintln ! ( "=== {v} = {:?}" , env:: var_os( v) ) ;
@@ -421,9 +422,11 @@ fn main() -> Result<()> {
421422
422423 setup_rerun ( ) ?;
423424
425+ let ffi_export_suffix = format ! ( "_{}" , pkg_version. replace( "." , "_" ) ) ;
424426 let binding_generator = BindingGenerator :: new ( build_script_path) ;
425- binding_generator. generate_wrapper ( opencv_header_dir, & opencv) ?;
426- build_wrapper ( & opencv) ;
427+ binding_generator. generate_wrapper ( opencv_header_dir, & opencv, & ffi_export_suffix) ?;
428+ let cc = build_compiler ( & opencv, & ffi_export_suffix) ;
429+ build_wrapper ( cc) ;
427430 // -l linker args should be emitted after -l static
428431 opencv. emit_cargo_metadata ( ) ;
429432 Ok ( ( ) )
0 commit comments