@@ -42,9 +42,17 @@ impl Build {
4242 sh. remove_path ( & dist_archive) ?;
4343 dist_archive. create ( ) ?;
4444
45- self . build_kernel ( ) ?;
45+ if self
46+ . cargo_build
47+ . features ( )
48+ . any ( |feature| feature == "masos" )
49+ {
50+ self . build_builtins ( true ) ?;
51+ } else {
52+ self . build_kernel ( ) ?;
4653
47- self . build_builtins ( ) ?;
54+ self . build_builtins ( false ) ?;
55+ }
4856
4957 eprintln ! ( "Setting OSABI" ) ;
5058 dist_archive. set_osabi ( ) ?;
@@ -82,7 +90,7 @@ impl Build {
8290 Ok ( ( ) )
8391 }
8492
85- fn build_builtins ( & self ) -> Result < ( ) > {
93+ fn build_builtins ( & self , masos : bool ) -> Result < ( ) > {
8694 eprintln ! ( "Building hermit-builtins" ) ;
8795 let mut cargo = crate :: cargo ( ) ;
8896 cargo
@@ -92,6 +100,9 @@ impl Build {
92100 . arg ( self . cargo_build . artifact . builtins_profile_path_component ( ) )
93101 . args ( self . cargo_build . artifact . arch . builtins_cargo_args ( ) )
94102 . args ( self . cargo_build . builtins_target_dir_arg ( ) ) ;
103+ if masos {
104+ cargo. arg ( "--features=masos" ) ;
105+ }
95106
96107 eprintln ! ( "$ {cargo:?}" ) ;
97108 let status = cargo. status ( ) ?;
@@ -100,7 +111,11 @@ impl Build {
100111 let builtins_archive = self . cargo_build . artifact . builtins_archive ( ) ;
101112 let dist_archive = self . cargo_build . artifact . dist_archive ( ) ;
102113
103- builtins_archive. retain_builtin_symbols ( ) ?;
114+ if masos {
115+ builtins_archive. retain_masos_symbols ( ) ?;
116+ } else {
117+ builtins_archive. retain_builtin_symbols ( ) ?;
118+ }
104119 dist_archive. append ( & builtins_archive) ?;
105120
106121 Ok ( ( ) )
0 commit comments