@@ -177,7 +177,7 @@ fn make_modules(opencv_dir: &Path) -> Result<()> {
177
177
Ok ( ( ) )
178
178
}
179
179
180
- fn build_compiler ( opencv : & Library ) -> cc:: Build {
180
+ fn build_compiler ( opencv : & Library , ffi_export_suffix : & str ) -> cc:: Build {
181
181
let mut out = cc:: Build :: new ( ) ;
182
182
out. cpp ( true )
183
183
. std ( "c++14" ) // clang says error: 'auto' return without trailing return type; deduced return types are a C++14 extension
@@ -231,6 +231,7 @@ fn build_compiler(opencv: &Library) -> cc::Build {
231
231
} else {
232
232
out. flag_if_supported ( "-Wa,-mbig-obj" ) ;
233
233
}
234
+ out. define ( "OCVRS_FFI_EXPORT_SUFFIX" , ffi_export_suffix) ;
234
235
out
235
236
}
236
237
@@ -251,8 +252,7 @@ fn setup_rerun() -> Result<()> {
251
252
Ok ( ( ) )
252
253
}
253
254
254
- fn build_wrapper ( opencv : & Library ) {
255
- let mut cc = build_compiler ( opencv) ;
255
+ fn build_wrapper ( mut cc : cc:: Build ) {
256
256
eprintln ! ( "=== Compiler information: {:#?}" , cc. get_compiler( ) ) ;
257
257
let modules = MODULES . get ( ) . expect ( "MODULES not initialized" ) ;
258
258
static SUPPORTED_MODULES : [ & str ; 67 ] = [
@@ -351,7 +351,8 @@ fn main() -> Result<()> {
351
351
return Ok ( ( ) ) ;
352
352
}
353
353
354
- eprintln ! ( "=== Crate version: {:?}" , env:: var_os( "CARGO_PKG_VERSION" ) ) ;
354
+ let pkg_version = env:: var ( "CARGO_PKG_VERSION" ) . unwrap_or_else ( |_| "unknown_crate_version" . to_string ( ) ) ;
355
+ eprintln ! ( "=== Crate version: {pkg_version}" ) ;
355
356
eprintln ! ( "=== Environment configuration:" ) ;
356
357
for v in AFFECTING_ENV_VARS . into_iter ( ) . chain ( DEBUG_ENV_VARS ) {
357
358
eprintln ! ( "=== {v} = {:?}" , env:: var_os( v) ) ;
@@ -425,9 +426,11 @@ fn main() -> Result<()> {
425
426
426
427
setup_rerun ( ) ?;
427
428
429
+ let ffi_export_suffix = format ! ( "_{}" , pkg_version. replace( "." , "_" ) ) ;
428
430
let binding_generator = BindingGenerator :: new ( build_script_path) ;
429
- binding_generator. generate_wrapper ( opencv_header_dir, & opencv) ?;
430
- build_wrapper ( & opencv) ;
431
+ binding_generator. generate_wrapper ( opencv_header_dir, & opencv, & ffi_export_suffix) ?;
432
+ let cc = build_compiler ( & opencv, & ffi_export_suffix) ;
433
+ build_wrapper ( cc) ;
431
434
// -l linker args should be emitted after -l static
432
435
opencv. emit_cargo_metadata ( ) ;
433
436
Ok ( ( ) )
0 commit comments