@@ -49,6 +49,13 @@ pub enum Zig {
49
49
#[ arg( num_args = 1 .., trailing_var_arg = true ) ]
50
50
args : Vec < String > ,
51
51
} ,
52
+ /// `zig lib` wrapper
53
+ #[ command( name = "lib" ) ]
54
+ Lib {
55
+ /// `zig lib` arguments
56
+ #[ arg( num_args = 1 .., trailing_var_arg = true ) ]
57
+ args : Vec < String > ,
58
+ } ,
52
59
}
53
60
54
61
struct TargetInfo {
@@ -95,6 +102,7 @@ impl Zig {
95
102
Zig :: Cxx { args } => self . execute_compiler ( "c++" , args) ,
96
103
Zig :: Ar { args } => self . execute_tool ( "ar" , args) ,
97
104
Zig :: Ranlib { args } => self . execute_compiler ( "ranlib" , args) ,
105
+ Zig :: Lib { args } => self . execute_compiler ( "lib" , args) ,
98
106
}
99
107
}
100
108
@@ -553,7 +561,11 @@ impl Zig {
553
561
// Only setup AR when explicitly asked to
554
562
// because it need special executable name handling, see src/bin/cargo-zigbuild.rs
555
563
if enable_zig_ar {
556
- Self :: add_env_if_missing ( cmd, format ! ( "AR_{env_target}" ) , & zig_wrapper. ar ) ;
564
+ if parsed_target. contains ( "msvc" ) {
565
+ Self :: add_env_if_missing ( cmd, format ! ( "AR_{env_target}" ) , & zig_wrapper. lib ) ;
566
+ } else {
567
+ Self :: add_env_if_missing ( cmd, format ! ( "AR_{env_target}" ) , & zig_wrapper. ar ) ;
568
+ }
557
569
}
558
570
559
571
Self :: setup_os_deps ( manifest_path, release, cargo) ?;
@@ -1073,6 +1085,7 @@ pub struct ZigWrapper {
1073
1085
pub cxx : PathBuf ,
1074
1086
pub ar : PathBuf ,
1075
1087
pub ranlib : PathBuf ,
1088
+ pub lib : PathBuf ,
1076
1089
}
1077
1090
1078
1091
#[ derive( Debug , Clone , Default , PartialEq ) ]
@@ -1354,12 +1367,15 @@ pub fn prepare_zig_linker(target: &str) -> Result<ZigWrapper> {
1354
1367
let exe_ext = if cfg ! ( windows) { ".exe" } else { "" } ;
1355
1368
let zig_ar = zig_linker_dir. join ( format ! ( "ar{exe_ext}" ) ) ;
1356
1369
symlink_wrapper ( & zig_ar) ?;
1370
+ let zig_lib = zig_linker_dir. join ( format ! ( "lib{exe_ext}" ) ) ;
1371
+ symlink_wrapper ( & zig_lib) ?;
1357
1372
1358
1373
Ok ( ZigWrapper {
1359
1374
cc : zig_cc,
1360
1375
cxx : zig_cxx,
1361
1376
ar : zig_ar,
1362
1377
ranlib : zig_ranlib,
1378
+ lib : zig_lib,
1363
1379
} )
1364
1380
}
1365
1381
0 commit comments