@@ -1459,6 +1459,14 @@ impl Build {
1459
1459
cmd. args
1460
1460
. push ( format ! ( "--target={}-apple-darwin" , arch) . into ( ) ) ;
1461
1461
}
1462
+ } else if target. contains ( "macabi" ) {
1463
+ if let Some ( arch) =
1464
+ map_darwin_target_from_rust_to_compiler_architecture ( target)
1465
+ {
1466
+ let ios = if arch == "arm64" { "ios" } else { "ios13.0" } ;
1467
+ cmd. args
1468
+ . push ( format ! ( "--target={}-apple-{}-macabi" , arch, ios) . into ( ) ) ;
1469
+ }
1462
1470
} else {
1463
1471
cmd. args . push ( format ! ( "--target={}" , target) . into ( ) ) ;
1464
1472
}
@@ -1881,6 +1889,7 @@ impl Build {
1881
1889
enum ArchSpec {
1882
1890
Device ( & ' static str ) ,
1883
1891
Simulator ( & ' static str ) ,
1892
+ Catalyst ( & ' static str ) ,
1884
1893
}
1885
1894
1886
1895
let target = self . get_target ( ) ?;
@@ -1890,18 +1899,38 @@ impl Build {
1890
1899
"Unknown architecture for iOS target." ,
1891
1900
)
1892
1901
} ) ?;
1893
- let arch = match arch {
1894
- "arm" | "armv7" | "thumbv7" => ArchSpec :: Device ( "armv7" ) ,
1895
- "armv7s" | "thumbv7s" => ArchSpec :: Device ( "armv7s" ) ,
1896
- "arm64e" => ArchSpec :: Device ( "arm64e" ) ,
1897
- "arm64" | "aarch64" => ArchSpec :: Device ( "arm64" ) ,
1898
- "i386" | "i686" => ArchSpec :: Simulator ( "-m32" ) ,
1899
- "x86_64" => ArchSpec :: Simulator ( "-m64" ) ,
1900
- _ => {
1901
- return Err ( Error :: new (
1902
- ErrorKind :: ArchitectureInvalid ,
1903
- "Unknown architecture for iOS target." ,
1904
- ) ) ;
1902
+
1903
+ let is_catalyst = match target. split ( '-' ) . nth ( 3 ) {
1904
+ Some ( v) => v == "macabi" ,
1905
+ None => false ,
1906
+ } ;
1907
+
1908
+ let arch = if is_catalyst {
1909
+ match arch {
1910
+ "arm64e" => ArchSpec :: Catalyst ( "arm64e" ) ,
1911
+ "arm64" | "aarch64" => ArchSpec :: Catalyst ( "arm64" ) ,
1912
+ "x86_64" => ArchSpec :: Catalyst ( "-m64" ) ,
1913
+ _ => {
1914
+ return Err ( Error :: new (
1915
+ ErrorKind :: ArchitectureInvalid ,
1916
+ "Unknown architecture for iOS target." ,
1917
+ ) ) ;
1918
+ }
1919
+ }
1920
+ } else {
1921
+ match arch {
1922
+ "arm" | "armv7" | "thumbv7" => ArchSpec :: Device ( "armv7" ) ,
1923
+ "armv7s" | "thumbv7s" => ArchSpec :: Device ( "armv7s" ) ,
1924
+ "arm64e" => ArchSpec :: Device ( "arm64e" ) ,
1925
+ "arm64" | "aarch64" => ArchSpec :: Device ( "arm64" ) ,
1926
+ "i386" | "i686" => ArchSpec :: Simulator ( "-m32" ) ,
1927
+ "x86_64" => ArchSpec :: Simulator ( "-m64" ) ,
1928
+ _ => {
1929
+ return Err ( Error :: new (
1930
+ ErrorKind :: ArchitectureInvalid ,
1931
+ "Unknown architecture for iOS target." ,
1932
+ ) ) ;
1933
+ }
1905
1934
}
1906
1935
} ;
1907
1936
@@ -1922,6 +1951,7 @@ impl Build {
1922
1951
. push ( format ! ( "-mios-simulator-version-min={}" , min_version) . into ( ) ) ;
1923
1952
"iphonesimulator"
1924
1953
}
1954
+ ArchSpec :: Catalyst ( _) => "macosx" ,
1925
1955
} ;
1926
1956
1927
1957
self . print ( & format ! ( "Detecting iOS SDK path for {}" , sdk) ) ;
0 commit comments