@@ -2,7 +2,7 @@ use std::ops::Not as _;
22use std:: path:: PathBuf ;
33
44use anyhow:: { Context , Result , bail, ensure} ;
5- use target_spec_json :: TargetSpec ;
5+ use serde_json :: { Map , Value , json } ;
66
77use crate :: cargo_cmd:: { CargoCmd , cargo_cmd} ;
88use crate :: cli:: Args ;
@@ -26,11 +26,17 @@ pub fn build(args: &Args) -> Result<()> {
2626 let mut spec = get_spec ( args, "x86_64-unknown-none" ) ?;
2727 // entry_name seems to be ignored, use RUSTFLAGS with -Clink-args=-eentrypoint instead
2828 //spec.entry_name = Some("entrypoint".into());
29- spec. code_model = Some ( "small" . into ( ) ) ;
30- spec. linker = Some ( "rust-lld" . into ( ) ) ;
31- spec. linker_flavor = Some ( "gnu-lld" . into ( ) ) ;
32- spec. pre_link_args =
33- Some ( [ ( "gnu-lld" . to_string ( ) , vec ! [ "-znostart-stop-gc" . to_string( ) ] ) ] . into ( ) ) ;
29+ let Value :: Object ( custom) = json ! ( {
30+ "code-model" : "small" ,
31+ "linker" : "rust-lld" ,
32+ "linker-flavor" : "gnu-lld" ,
33+ "pre-link-args" : {
34+ "gnu-lld" : [ "-znostart-stop-gc" ] ,
35+ } ,
36+ } ) else {
37+ unreachable ! ( )
38+ } ;
39+ spec. extend ( custom) ;
3440 spec
3541 }
3642 triplet => bail ! (
@@ -199,7 +205,7 @@ Supported values are:
199205 Ok ( ( ) )
200206}
201207
202- fn get_spec ( args : & Args , triplet : impl AsRef < str > ) -> Result < TargetSpec > {
208+ fn get_spec ( args : & Args , triplet : impl AsRef < str > ) -> Result < Map < String , Value > > {
203209 let output = cargo_cmd ( ) ?
204210 . env_clear ( )
205211 . envs ( args. env . iter ( ) )
0 commit comments