@@ -31,6 +31,7 @@ struct Config<'a> {
31
31
offline : bool ,
32
32
verbose : bool ,
33
33
workspace : bool ,
34
+ arch : & ' a str ,
34
35
}
35
36
36
37
impl Default for Config < ' _ > {
@@ -53,6 +54,7 @@ impl Default for Config<'_> {
53
54
offline : false ,
54
55
verbose : false ,
55
56
workspace : false ,
57
+ arch : "sbf" ,
56
58
}
57
59
}
58
60
}
@@ -516,11 +518,13 @@ fn build_bpf_package(config: &Config, target_directory: &Path, package: &cargo_m
516
518
env:: set_var ( "OBJDUMP" , llvm_bin. join ( "llvm-objdump" ) ) ;
517
519
env:: set_var ( "OBJCOPY" , llvm_bin. join ( "llvm-objcopy" ) ) ;
518
520
521
+ let mut rustflags = env:: var ( "RUSTFLAGS" ) . ok ( ) . unwrap_or_else ( String :: new) ;
522
+ if config. arch == "sbfv2" {
523
+ rustflags = format ! ( "{} {}" , "-C target_cpu=sbfv2" , rustflags) ;
524
+ env:: set_var ( "RUSTFLAGS" , & rustflags) ;
525
+ }
519
526
if config. verbose {
520
- println ! (
521
- "RUSTFLAGS={}" ,
522
- env:: var( "RUSTFLAGS" ) . ok( ) . as_deref( ) . unwrap_or( "" )
523
- ) ;
527
+ println ! ( "RUSTFLAGS={}" , rustflags) ;
524
528
} ;
525
529
526
530
let cargo_build = PathBuf :: from ( "cargo" ) ;
@@ -531,6 +535,9 @@ fn build_bpf_package(config: &Config, target_directory: &Path, package: &cargo_m
531
535
"bpfel-unknown-unknown" ,
532
536
"--release" ,
533
537
] ;
538
+ if config. arch == "sbfv2" {
539
+ cargo_build_args. push ( "-Zbuild-std=std,panic_abort" ) ;
540
+ }
534
541
if config. no_default_features {
535
542
cargo_build_args. push ( "--no-default-features" ) ;
536
543
}
@@ -793,6 +800,13 @@ fn main() {
793
800
. alias ( "all" )
794
801
. help ( "Build all BPF packages in the workspace" ) ,
795
802
)
803
+ . arg (
804
+ Arg :: with_name ( "arch" )
805
+ . long ( "arch" )
806
+ . possible_values ( & [ "sbf" , "sbfv2" ] )
807
+ . default_value ( "sbf" )
808
+ . help ( "Build for the given SBF version" ) ,
809
+ )
796
810
. get_matches_from ( args) ;
797
811
798
812
let bpf_sdk = value_t_or_exit ! ( matches, "bpf_sdk" , PathBuf ) ;
@@ -829,6 +843,7 @@ fn main() {
829
843
offline : matches. is_present ( "offline" ) ,
830
844
verbose : matches. is_present ( "verbose" ) ,
831
845
workspace : matches. is_present ( "workspace" ) ,
846
+ arch : matches. value_of ( "arch" ) . unwrap ( ) ,
832
847
} ;
833
848
let manifest_path = value_t ! ( matches, "manifest_path" , PathBuf ) . ok ( ) ;
834
849
build_bpf ( config, manifest_path) ;
0 commit comments