@@ -33,6 +33,7 @@ struct Config<'a> {
33
33
verbose : bool ,
34
34
workspace : bool ,
35
35
jobs : Option < String > ,
36
+ arch : & ' a str ,
36
37
}
37
38
38
39
impl Default for Config < ' _ > {
@@ -57,6 +58,7 @@ impl Default for Config<'_> {
57
58
verbose : false ,
58
59
workspace : false ,
59
60
jobs : None ,
61
+ arch : "sbf" ,
60
62
}
61
63
}
62
64
}
@@ -539,6 +541,17 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
539
541
env:: remove_var ( "RUSTC" )
540
542
}
541
543
544
+ let mut target_rustflags = env:: var ( "CARGO_TARGET_SBF_SOLANA_SOLANA_RUSTFLAGS" )
545
+ . ok ( )
546
+ . unwrap_or_default ( ) ;
547
+ if config. arch == "sbfv2" {
548
+ target_rustflags = format ! ( "{} {}" , "-C target_cpu=sbfv2" , target_rustflags) ;
549
+ env:: set_var (
550
+ "CARGO_TARGET_SBF_SOLANA_SOLANA_RUSTFLAGS" ,
551
+ & target_rustflags,
552
+ ) ;
553
+ }
554
+
542
555
let cargo_build = PathBuf :: from ( "cargo" ) ;
543
556
let mut cargo_build_args = vec ! [
544
557
"+sbf" ,
@@ -547,6 +560,9 @@ fn build_sbf_package(config: &Config, target_directory: &Path, package: &cargo_m
547
560
"sbf-solana-solana" ,
548
561
"--release" ,
549
562
] ;
563
+ if config. arch == "sbfv2" {
564
+ cargo_build_args. push ( "-Zbuild-std=std,panic_abort" ) ;
565
+ }
550
566
if config. no_default_features {
551
567
cargo_build_args. push ( "--no-default-features" ) ;
552
568
}
@@ -830,6 +846,13 @@ fn main() {
830
846
. validator ( |val| val. parse :: < usize > ( ) . map_err ( |e| e. to_string ( ) ) )
831
847
. help ( "Number of parallel jobs, defaults to # of CPUs" ) ,
832
848
)
849
+ . arg (
850
+ Arg :: new ( "arch" )
851
+ . long ( "arch" )
852
+ . possible_values ( & [ "sbf" , "sbfv2" ] )
853
+ . default_value ( "sbf" )
854
+ . help ( "Build for the given SBF version" ) ,
855
+ )
833
856
. get_matches_from ( args) ;
834
857
835
858
let sbf_sdk: PathBuf = matches. value_of_t_or_exit ( "sbf_sdk" ) ;
@@ -866,6 +889,7 @@ fn main() {
866
889
verbose : matches. is_present ( "verbose" ) ,
867
890
workspace : matches. is_present ( "workspace" ) ,
868
891
jobs : matches. value_of_t ( "jobs" ) . ok ( ) ,
892
+ arch : matches. value_of ( "arch" ) . unwrap ( ) ,
869
893
} ;
870
894
let manifest_path: Option < PathBuf > = matches. value_of_t ( "manifest_path" ) . ok ( ) ;
871
895
if config. verbose {
0 commit comments