@@ -5,16 +5,20 @@ use std::fs;
55#[ derive( Deserialize ) ]
66#[ serde( rename_all = "kebab-case" ) ]
77struct DriverManifest {
8- acquire_driver_common : String ,
98 acquire_driver_zarr : String ,
109 acquire_driver_egrabber : String ,
1110 acquire_driver_hdcam : String ,
1211 acquire_driver_spinnaker : String ,
1312}
1413
1514fn main ( ) {
16- let dst = cmake:: Config :: new ( "acquire-libs" )
17- . target ( "acquire-video-runtime" )
15+ let drivers_json =
16+ fs:: read_to_string ( "drivers.json" ) . expect ( "Failed to read from drivers.json." ) ;
17+ let tags: DriverManifest =
18+ serde_json:: from_str ( drivers_json. as_str ( ) ) . expect ( "Failed to parse drivers.json" ) ;
19+
20+ let dst = cmake:: Config :: new ( "acquire-common" )
21+ . target ( "acquire-common" )
1822 . profile ( "RelWithDebInfo" )
1923 . static_crt ( true )
2024 . define ( "NOTEST" , "TRUE" )
@@ -24,39 +28,6 @@ fn main() {
2428 . define ( "CMAKE_OSX_ARCHITECTURES" , "x86_64;arm64" )
2529 . build ( ) ;
2630
27- let drivers_json =
28- fs:: read_to_string ( "drivers.json" ) . expect ( "Failed to read from drivers.json." ) ;
29- let tags: DriverManifest =
30- serde_json:: from_str ( drivers_json. as_str ( ) ) . expect ( "Failed to parse drivers.json" ) ;
31-
32- let drivers_dir = std:: path:: PathBuf :: from ( std:: env:: var ( "OUT_DIR" ) . unwrap ( ) ) . join ( "drivers" ) ;
33-
34- fetch_acquire_driver (
35- & drivers_dir,
36- "acquire-driver-common" ,
37- tags. acquire_driver_common . as_str ( ) ,
38- ) ;
39- fetch_acquire_driver (
40- & drivers_dir,
41- "acquire-driver-zarr" ,
42- tags. acquire_driver_zarr . as_str ( ) ,
43- ) ;
44- fetch_acquire_driver (
45- & drivers_dir,
46- "acquire-driver-egrabber" ,
47- tags. acquire_driver_egrabber . as_str ( ) ,
48- ) ;
49- fetch_acquire_driver (
50- & drivers_dir,
51- "acquire-driver-hdcam" ,
52- tags. acquire_driver_hdcam . as_str ( ) ,
53- ) ;
54- fetch_acquire_driver (
55- & drivers_dir,
56- "acquire-driver-spinnaker" ,
57- tags. acquire_driver_spinnaker . as_str ( ) ,
58- ) ;
59-
6031 println ! ( "cargo:rustc-link-search=native={}/lib" , dst. display( ) ) ;
6132 println ! ( "cargo:rustc-link-lib=static=acquire-video-runtime" ) ;
6233 println ! ( "cargo:rustc-link-lib=static=acquire-device-properties" ) ;
@@ -80,9 +51,36 @@ fn main() {
8051 bindings
8152 . write_to_file ( dst. join ( "bindings.rs" ) )
8253 . expect ( "Failed to write bindings." ) ;
54+
55+ // copy acquire-driver-common
56+ copy_shared_lib ( & dst, "acquire-driver-common" ) ;
57+
58+ // download and copy driver artifacts
59+ let drivers_dir = std:: path:: PathBuf :: from ( std:: env:: var ( "OUT_DIR" ) . unwrap ( ) ) . join ( "drivers" ) ;
60+
61+ fetch_acquire_driver (
62+ & drivers_dir,
63+ "acquire-driver-zarr" ,
64+ tags. acquire_driver_zarr . as_str ( ) ,
65+ ) ;
66+ fetch_acquire_driver (
67+ & drivers_dir,
68+ "acquire-driver-egrabber" ,
69+ tags. acquire_driver_egrabber . as_str ( ) ,
70+ ) ;
71+ fetch_acquire_driver (
72+ & drivers_dir,
73+ "acquire-driver-hdcam" ,
74+ tags. acquire_driver_hdcam . as_str ( ) ,
75+ ) ;
76+ fetch_acquire_driver (
77+ & drivers_dir,
78+ "acquire-driver-spinnaker" ,
79+ tags. acquire_driver_spinnaker . as_str ( ) ,
80+ ) ;
8381}
8482
85- fn fetch_acquire_driver ( dst : & std:: path:: PathBuf , name : & str , tag : & str ) {
83+ fn fetch_artifact ( dst : & std:: path:: PathBuf , name : & str , tag : & str ) {
8684 let build = if cfg ! ( target_os = "windows" ) {
8785 "win64"
8886 } else if cfg ! ( target_os = "macos" ) {
@@ -121,11 +119,14 @@ fn fetch_acquire_driver(dst: &std::path::PathBuf, name: &str, tag: &str) {
121119 zip_extract:: extract ( std:: io:: Cursor :: new ( archive) , & dst, true ) . expect ( & * format ! (
122120 "Failed to extract {name}-{tag}-{build}.zip from response."
123121 ) ) ;
122+ }
124123
125- copy_acquire_driver ( & dst, name) ;
124+ fn fetch_acquire_driver ( dst : & std:: path:: PathBuf , name : & str , tag : & str ) {
125+ fetch_artifact ( dst, name, tag) ;
126+ copy_shared_lib ( dst, name) ;
126127}
127128
128- fn copy_acquire_driver ( dst : & std:: path:: PathBuf , name : & str ) {
129+ fn copy_shared_lib ( src : & std:: path:: PathBuf , name : & str ) {
129130 let ( prefix, postfix) = if cfg ! ( target_os = "windows" ) {
130131 ( "" , ".dll" )
131132 } else if cfg ! ( target_os = "macos" ) {
@@ -138,12 +139,12 @@ fn copy_acquire_driver(dst: &std::path::PathBuf, name: &str) {
138139
139140 let lib = format ! ( "{prefix}{name}{postfix}" ) ;
140141
141- std :: fs:: copy (
142- format ! ( "{}/lib/{lib}" , dst . display( ) ) ,
142+ fs:: copy (
143+ format ! ( "{}/lib/{lib}" , src . display( ) ) ,
143144 format ! ( "python/acquire/{lib}" ) ,
144145 )
145146 . expect ( & format ! (
146147 "Failed to copy {}/lib/{lib} to python folder." ,
147- dst . display( )
148+ src . display( )
148149 ) ) ;
149150}
0 commit comments