@@ -483,7 +483,7 @@ impl Step for Llvm {
483
483
cfg. define ( "LLVM_VERSION_SUFFIX" , suffix) ;
484
484
}
485
485
486
- configure_cmake ( builder, target, & mut cfg, true , ldflags) ;
486
+ configure_cmake ( builder, target, & mut cfg, true , ldflags, & [ ] ) ;
487
487
configure_llvm ( builder, target, & mut cfg) ;
488
488
489
489
for ( key, val) in & builder. config . llvm_build_config {
@@ -574,6 +574,7 @@ fn configure_cmake(
574
574
cfg : & mut cmake:: Config ,
575
575
use_compiler_launcher : bool ,
576
576
mut ldflags : LdFlags ,
577
+ extra_compiler_flags : & [ & str ] ,
577
578
) {
578
579
// Do not print installation messages for up-to-date files.
579
580
// LLVM and LLD builds can produce a lot of those and hit CI limits on log size.
@@ -714,6 +715,9 @@ fn configure_cmake(
714
715
if builder. config . llvm_clang_cl . is_some ( ) {
715
716
cflags. push ( & format ! ( " --target={}" , target) ) ;
716
717
}
718
+ for flag in extra_compiler_flags {
719
+ cflags. push ( & format ! ( " {}" , flag) ) ;
720
+ }
717
721
cfg. define ( "CMAKE_C_FLAGS" , cflags) ;
718
722
let mut cxxflags: OsString = builder. cflags ( target, GitRepo :: Llvm , CLang :: Cxx ) . join ( " " ) . into ( ) ;
719
723
if let Some ( ref s) = builder. config . llvm_cxxflags {
@@ -723,6 +727,9 @@ fn configure_cmake(
723
727
if builder. config . llvm_clang_cl . is_some ( ) {
724
728
cxxflags. push ( & format ! ( " --target={}" , target) ) ;
725
729
}
730
+ for flag in extra_compiler_flags {
731
+ cxxflags. push ( & format ! ( " {}" , flag) ) ;
732
+ }
726
733
cfg. define ( "CMAKE_CXX_FLAGS" , cxxflags) ;
727
734
if let Some ( ar) = builder. ar ( target) {
728
735
if ar. is_absolute ( ) {
@@ -864,7 +871,7 @@ impl Step for Lld {
864
871
}
865
872
}
866
873
867
- configure_cmake ( builder, target, & mut cfg, true , ldflags) ;
874
+ configure_cmake ( builder, target, & mut cfg, true , ldflags, & [ ] ) ;
868
875
configure_llvm ( builder, target, & mut cfg) ;
869
876
870
877
// Re-use the same flags as llvm to control the level of debug information
@@ -1028,7 +1035,16 @@ impl Step for Sanitizers {
1028
1035
// Unfortunately sccache currently lacks support to build them successfully.
1029
1036
// Disable compiler launcher on Darwin targets to avoid potential issues.
1030
1037
let use_compiler_launcher = !self . target . contains ( "apple-darwin" ) ;
1031
- configure_cmake ( builder, self . target , & mut cfg, use_compiler_launcher, LdFlags :: default ( ) ) ;
1038
+ let extra_compiler_flags: & [ & str ] =
1039
+ if self . target . contains ( "apple" ) { & [ "-fembed-bitcode=off" ] } else { & [ ] } ;
1040
+ configure_cmake (
1041
+ builder,
1042
+ self . target ,
1043
+ & mut cfg,
1044
+ use_compiler_launcher,
1045
+ LdFlags :: default ( ) ,
1046
+ extra_compiler_flags,
1047
+ ) ;
1032
1048
1033
1049
t ! ( fs:: create_dir_all( & out_dir) ) ;
1034
1050
cfg. out_dir ( out_dir) ;
@@ -1084,12 +1100,15 @@ fn supported_sanitizers(
1084
1100
1085
1101
match & * target. triple {
1086
1102
"aarch64-apple-darwin" => darwin_libs ( "osx" , & [ "asan" , "lsan" , "tsan" ] ) ,
1103
+ "aarch64-apple-ios" => darwin_libs ( "ios" , & [ "asan" , "tsan" ] ) ,
1104
+ "aarch64-apple-ios-sim" => darwin_libs ( "iossim" , & [ "asan" , "tsan" ] ) ,
1087
1105
"aarch64-unknown-fuchsia" => common_libs ( "fuchsia" , "aarch64" , & [ "asan" ] ) ,
1088
1106
"aarch64-unknown-linux-gnu" => {
1089
1107
common_libs ( "linux" , "aarch64" , & [ "asan" , "lsan" , "msan" , "tsan" , "hwasan" ] )
1090
1108
}
1091
1109
"x86_64-apple-darwin" => darwin_libs ( "osx" , & [ "asan" , "lsan" , "tsan" ] ) ,
1092
1110
"x86_64-unknown-fuchsia" => common_libs ( "fuchsia" , "x86_64" , & [ "asan" ] ) ,
1111
+ "x86_64-apple-ios" => darwin_libs ( "iossim" , & [ "asan" , "tsan" ] ) ,
1093
1112
"x86_64-unknown-freebsd" => common_libs ( "freebsd" , "x86_64" , & [ "asan" , "msan" , "tsan" ] ) ,
1094
1113
"x86_64-unknown-netbsd" => {
1095
1114
common_libs ( "netbsd" , "x86_64" , & [ "asan" , "lsan" , "msan" , "tsan" ] )
0 commit comments