@@ -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