@@ -32,7 +32,7 @@ use core::{Source, SourceId, SourceMap, PackageSet, Package, Target};
32
32
use core:: { Profile , TargetKind , Profiles } ;
33
33
use core:: resolver:: { Method , Resolve } ;
34
34
use ops:: { self , BuildOutput , ExecEngine } ;
35
- use util:: config:: { ConfigValue , Config } ;
35
+ use util:: config:: Config ;
36
36
use util:: { CargoResult , internal, ChainError , profile} ;
37
37
38
38
/// Contains information about how a package should be compiled.
@@ -421,19 +421,21 @@ fn scrape_build_config(config: &Config,
421
421
target : Option < String > )
422
422
-> CargoResult < ops:: BuildConfig > {
423
423
let cfg_jobs = match try!( config. get_i64 ( "build.jobs" ) ) {
424
- Some ( ( n, p) ) => {
425
- if n <= 0 {
426
- bail ! ( "build.jobs must be positive, but found {} in {:?}" , n, p)
427
- } else if n >= u32:: max_value ( ) as i64 {
428
- bail ! ( "build.jobs is too large: found {} in {:?}" , n, p)
424
+ Some ( v) => {
425
+ if v. val <= 0 {
426
+ bail ! ( "build.jobs must be positive, but found {} in {}" ,
427
+ v. val, v. definition)
428
+ } else if v. val >= u32:: max_value ( ) as i64 {
429
+ bail ! ( "build.jobs is too large: found {} in {}" , v. val,
430
+ v. definition)
429
431
} else {
430
- Some ( n as u32 )
432
+ Some ( v . val as u32 )
431
433
}
432
434
}
433
435
None => None ,
434
436
} ;
435
437
let jobs = jobs. or ( cfg_jobs) . unwrap_or ( :: num_cpus:: get ( ) as u32 ) ;
436
- let cfg_target = try!( config. get_string ( "build.target" ) ) . map ( |s| s. 0 ) ;
438
+ let cfg_target = try!( config. get_string ( "build.target" ) ) . map ( |s| s. val ) ;
437
439
let target = target. or ( cfg_target) ;
438
440
let mut base = ops:: BuildConfig {
439
441
jobs : jobs,
@@ -453,16 +455,18 @@ fn scrape_target_config(config: &Config, triple: &str)
453
455
454
456
let key = format ! ( "target.{}" , triple) ;
455
457
let mut ret = ops:: TargetConfig {
456
- ar : try!( config. get_path ( & format ! ( "{}.ar" , key) ) ) ,
457
- linker : try!( config. get_path ( & format ! ( "{}.linker" , key) ) ) ,
458
+ ar : try!( config. get_path ( & format ! ( "{}.ar" , key) ) ) . map ( |v| v . val ) ,
459
+ linker : try!( config. get_path ( & format ! ( "{}.linker" , key) ) ) . map ( |v| v . val ) ,
458
460
overrides : HashMap :: new ( ) ,
459
461
} ;
460
462
let table = match try!( config. get_table ( & key) ) {
461
- Some ( ( table, _ ) ) => table,
463
+ Some ( table) => table. val ,
462
464
None => return Ok ( ret) ,
463
465
} ;
464
466
for ( lib_name, _) in table. into_iter ( ) {
465
- if lib_name == "ar" || lib_name == "linker" { continue }
467
+ if lib_name == "ar" || lib_name == "linker" {
468
+ continue
469
+ }
466
470
467
471
let mut output = BuildOutput {
468
472
library_paths : Vec :: new ( ) ,
@@ -472,40 +476,39 @@ fn scrape_target_config(config: &Config, triple: &str)
472
476
rerun_if_changed : Vec :: new ( ) ,
473
477
} ;
474
478
let key = format ! ( "{}.{}" , key, lib_name) ;
475
- let table = try!( config. get_table ( & key) ) . unwrap ( ) . 0 ;
479
+ let table = try!( config. get_table ( & key) ) . unwrap ( ) . val ;
476
480
for ( k, _) in table. into_iter ( ) {
477
481
let key = format ! ( "{}.{}" , key, k) ;
478
- match try!( config. get ( & key) ) . unwrap ( ) {
479
- ConfigValue :: String ( v, path) => {
480
- if k == "rustc-flags" {
481
- let whence = format ! ( "in `{}` (in {})" , key,
482
- path. display( ) ) ;
483
- let ( paths, links) = try!(
484
- BuildOutput :: parse_rustc_flags ( & v, & whence)
485
- ) ;
486
- output. library_paths . extend ( paths. into_iter ( ) ) ;
487
- output. library_links . extend ( links. into_iter ( ) ) ;
488
- } else {
489
- output. metadata . push ( ( k, v) ) ;
490
- }
491
- } ,
492
- ConfigValue :: List ( a, p) => {
493
- if k == "rustc-link-lib" {
494
- output. library_links . extend ( a. into_iter ( ) . map ( |v| v. 0 ) ) ;
495
- } else if k == "rustc-link-search" {
496
- output. library_paths . extend ( a. into_iter ( ) . map ( |v| {
497
- PathBuf :: from ( & v. 0 )
498
- } ) ) ;
499
- } else if k == "rustc-cfg" {
500
- output. cfgs . extend ( a. into_iter ( ) . map ( |v| v. 0 ) ) ;
501
- } else {
502
- try!( config. expected ( "string" , & k,
503
- ConfigValue :: List ( a, p) ) ) ;
504
- }
505
- } ,
506
- // technically could be a list too, but that's the exception to
507
- // the rule...
508
- cv => { try!( config. expected ( "string" , & k, cv) ) ; }
482
+ match & k[ ..] {
483
+ "rustc-flags" => {
484
+ let flags = try!( config. get_string ( & key) ) . unwrap ( ) ;
485
+ let whence = format ! ( "in `{}` (in {})" , key,
486
+ flags. definition) ;
487
+ let ( paths, links) = try!(
488
+ BuildOutput :: parse_rustc_flags ( & flags. val , & whence)
489
+ ) ;
490
+ output. library_paths . extend ( paths. into_iter ( ) ) ;
491
+ output. library_links . extend ( links. into_iter ( ) ) ;
492
+ }
493
+ "rustc-link-lib" => {
494
+ let list = try!( config. get_list ( & key) ) . unwrap ( ) ;
495
+ output. library_links . extend ( list. val . into_iter ( )
496
+ . map ( |v| v. 0 ) ) ;
497
+ }
498
+ "rustc-link-search" => {
499
+ let list = try!( config. get_list ( & key) ) . unwrap ( ) ;
500
+ output. library_paths . extend ( list. val . into_iter ( ) . map ( |v| {
501
+ PathBuf :: from ( & v. 0 )
502
+ } ) ) ;
503
+ }
504
+ "rustc-cfg" => {
505
+ let list = try!( config. get_list ( & key) ) . unwrap ( ) ;
506
+ output. cfgs . extend ( list. val . into_iter ( ) . map ( |v| v. 0 ) ) ;
507
+ }
508
+ _ => {
509
+ let val = try!( config. get_string ( & key) ) . unwrap ( ) ;
510
+ output. metadata . push ( ( k, val. val ) ) ;
511
+ }
509
512
}
510
513
}
511
514
ret. overrides . insert ( lib_name, output) ;
0 commit comments