@@ -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
@@ -227,6 +227,7 @@ fn build_compiler(opencv: &Library) -> cc::Build {
227
227
} else {
228
228
out. flag_if_supported ( "-Wa,-mbig-obj" ) ;
229
229
}
230
+ out. define ( "OCVRS_FFI_EXPORT_SUFFIX" , ffi_export_suffix) ;
230
231
out
231
232
}
232
233
@@ -247,8 +248,7 @@ fn setup_rerun() -> Result<()> {
247
248
Ok ( ( ) )
248
249
}
249
250
250
- fn build_wrapper ( opencv : & Library ) {
251
- let mut cc = build_compiler ( opencv) ;
251
+ fn build_wrapper ( mut cc : cc:: Build ) {
252
252
eprintln ! ( "=== Compiler information: {:#?}" , cc. get_compiler( ) ) ;
253
253
let modules = MODULES . get ( ) . expect ( "MODULES not initialized" ) ;
254
254
static SUPPORTED_MODULES : [ & str ; 67 ] = [
@@ -347,7 +347,8 @@ fn main() -> Result<()> {
347
347
return Ok ( ( ) ) ;
348
348
}
349
349
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}" ) ;
351
352
eprintln ! ( "=== Environment configuration:" ) ;
352
353
for v in AFFECTING_ENV_VARS . into_iter ( ) . chain ( DEBUG_ENV_VARS ) {
353
354
eprintln ! ( "=== {v} = {:?}" , env:: var_os( v) ) ;
@@ -421,9 +422,11 @@ fn main() -> Result<()> {
421
422
422
423
setup_rerun ( ) ?;
423
424
425
+ let ffi_export_suffix = format ! ( "_{}" , pkg_version. replace( "." , "_" ) ) ;
424
426
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) ;
427
430
// -l linker args should be emitted after -l static
428
431
opencv. emit_cargo_metadata ( ) ;
429
432
Ok ( ( ) )
0 commit comments