@@ -81,6 +81,7 @@ pub struct Config {
81
81
statik : Option < bool > ,
82
82
atleast_version : Option < String > ,
83
83
extra_args : Vec < OsString > ,
84
+ cargo_metadata : bool ,
84
85
}
85
86
86
87
#[ derive( Debug ) ]
@@ -253,6 +254,7 @@ impl Config {
253
254
statik : None ,
254
255
atleast_version : None ,
255
256
extra_args : vec ! [ ] ,
257
+ cargo_metadata : true ,
256
258
}
257
259
}
258
260
@@ -279,6 +281,13 @@ impl Config {
279
281
self
280
282
}
281
283
284
+ /// Define whether metadata should be emitted for cargo allowing it to
285
+ /// automatically link the binary. Defaults to `true`.
286
+ pub fn cargo_metadata ( & mut self , cargo_metadata : bool ) -> & mut Config {
287
+ self . cargo_metadata = cargo_metadata;
288
+ self
289
+ }
290
+
282
291
/// Deprecated in favor fo the `probe` function
283
292
#[ doc( hidden) ]
284
293
pub fn find ( & self , name : & str ) -> Result < Library , String > {
@@ -333,6 +342,12 @@ impl Config {
333
342
}
334
343
cmd
335
344
}
345
+
346
+ fn print_metadata ( & self , s : & str ) {
347
+ if self . cargo_metadata {
348
+ println ! ( "cargo:{}" , s) ;
349
+ }
350
+ }
336
351
}
337
352
338
353
impl Library {
@@ -359,12 +374,14 @@ impl Library {
359
374
for & ( flag, val) in parts. iter ( ) {
360
375
match flag {
361
376
"-L" => {
362
- println ! ( "cargo:rustc-link-search=native={}" , val) ;
377
+ let meta = format ! ( "rustc-link-search=native={}" , val) ;
378
+ config. print_metadata ( & meta) ;
363
379
dirs. push ( PathBuf :: from ( val) ) ;
364
380
self . link_paths . push ( PathBuf :: from ( val) ) ;
365
381
}
366
382
"-F" => {
367
- println ! ( "cargo:rustc-link-search=framework={}" , val) ;
383
+ let meta = format ! ( "rustc-link-search=framework={}" , val) ;
384
+ config. print_metadata ( & meta) ;
368
385
self . framework_paths . push ( PathBuf :: from ( val) ) ;
369
386
}
370
387
"-I" => {
@@ -373,9 +390,11 @@ impl Library {
373
390
"-l" => {
374
391
self . libs . push ( val. to_string ( ) ) ;
375
392
if statik && !is_system ( val, & dirs) {
376
- println ! ( "cargo:rustc-link-lib=static={}" , val) ;
393
+ let meta = format ! ( "rustc-link-lib=static={}" , val) ;
394
+ config. print_metadata ( & meta) ;
377
395
} else {
378
- println ! ( "cargo:rustc-link-lib={}" , val) ;
396
+ let meta = format ! ( "rustc-link-lib={}" , val) ;
397
+ config. print_metadata ( & meta) ;
379
398
}
380
399
}
381
400
_ => { }
@@ -384,9 +403,12 @@ impl Library {
384
403
385
404
let mut iter = output. split ( ' ' ) ;
386
405
while let Some ( part) = iter. next ( ) {
387
- if part != "-framework" { continue }
406
+ if part != "-framework" {
407
+ continue
408
+ }
388
409
if let Some ( lib) = iter. next ( ) {
389
- println ! ( "cargo:rustc-link-lib=framework={}" , lib) ;
410
+ let meta = format ! ( "cargo:rustc-link-lib=framework={}" , lib) ;
411
+ config. print_metadata ( & meta) ;
390
412
self . frameworks . push ( lib. to_string ( ) ) ;
391
413
}
392
414
}
0 commit comments