@@ -5,16 +5,20 @@ use std::fs;
5
5
#[ derive( Deserialize ) ]
6
6
#[ serde( rename_all = "kebab-case" ) ]
7
7
struct DriverManifest {
8
- acquire_driver_common : String ,
9
8
acquire_driver_zarr : String ,
10
9
acquire_driver_egrabber : String ,
11
10
acquire_driver_hdcam : String ,
12
11
acquire_driver_spinnaker : String ,
13
12
}
14
13
15
14
fn 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" )
18
22
. profile ( "RelWithDebInfo" )
19
23
. static_crt ( true )
20
24
. define ( "NOTEST" , "TRUE" )
@@ -24,39 +28,6 @@ fn main() {
24
28
. define ( "CMAKE_OSX_ARCHITECTURES" , "x86_64;arm64" )
25
29
. build ( ) ;
26
30
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
-
60
31
println ! ( "cargo:rustc-link-search=native={}/lib" , dst. display( ) ) ;
61
32
println ! ( "cargo:rustc-link-lib=static=acquire-video-runtime" ) ;
62
33
println ! ( "cargo:rustc-link-lib=static=acquire-device-properties" ) ;
@@ -80,9 +51,36 @@ fn main() {
80
51
bindings
81
52
. write_to_file ( dst. join ( "bindings.rs" ) )
82
53
. 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
+ ) ;
83
81
}
84
82
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 ) {
86
84
let build = if cfg ! ( target_os = "windows" ) {
87
85
"win64"
88
86
} else if cfg ! ( target_os = "macos" ) {
@@ -121,11 +119,14 @@ fn fetch_acquire_driver(dst: &std::path::PathBuf, name: &str, tag: &str) {
121
119
zip_extract:: extract ( std:: io:: Cursor :: new ( archive) , & dst, true ) . expect ( & * format ! (
122
120
"Failed to extract {name}-{tag}-{build}.zip from response."
123
121
) ) ;
122
+ }
124
123
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) ;
126
127
}
127
128
128
- fn copy_acquire_driver ( dst : & std:: path:: PathBuf , name : & str ) {
129
+ fn copy_shared_lib ( src : & std:: path:: PathBuf , name : & str ) {
129
130
let ( prefix, postfix) = if cfg ! ( target_os = "windows" ) {
130
131
( "" , ".dll" )
131
132
} else if cfg ! ( target_os = "macos" ) {
@@ -138,12 +139,12 @@ fn copy_acquire_driver(dst: &std::path::PathBuf, name: &str) {
138
139
139
140
let lib = format ! ( "{prefix}{name}{postfix}" ) ;
140
141
141
- std :: fs:: copy (
142
- format ! ( "{}/lib/{lib}" , dst . display( ) ) ,
142
+ fs:: copy (
143
+ format ! ( "{}/lib/{lib}" , src . display( ) ) ,
143
144
format ! ( "python/acquire/{lib}" ) ,
144
145
)
145
146
. expect ( & format ! (
146
147
"Failed to copy {}/lib/{lib} to python folder." ,
147
- dst . display( )
148
+ src . display( )
148
149
) ) ;
149
150
}
0 commit comments