Skip to content

Commit 5ffff5c

Browse files
authored
Rollup merge of #88072 - kit-981:feature/build-ios-toolchain-on-linux, r=Mark-Simulacrum
Allow the iOS toolchain to be built on Linux The iOS toolchain can be built on Linux with minor changes. The compilation will invoke `xcrun` to find the path to the iPhone SDK but a fake `xcrun` executable can be used. ``` #!/bin/sh echo "/path/to/sdk" ``` The iOS toolchain can then be built and linked with rustup. ``` $ ./x.py build --stage 2 --host x86_64-unknown-linux-gnu \ --target aarch64-apple-ios $ rustup toolchain link stage1 build/x86_64-unknown-linux-gnu/stage1 ``` It's possible to take this toolchain and compile an iOS executable with it. This requires the ld64 linker and an iOS SDK. The ld64 linker can be taken from [cctools](https://github.com/tpoechtrager/cctools-port). A project's .cargo/config can then be edited to use the linker for this target. ``` [target.aarch64-apple-ios] linker = "/path/to/cctools/bin/arm-apple-darwin-ld" rustflags = [ "-C", """ link-args= -F/path/to/sdk/System/Library/Frameworks -L/path/to/sdk/usr/lib -L/path/to/sdk/usr/lib/system/ -adhoc_codesign """, ] ```
2 parents 9e8b143 + 79e402e commit 5ffff5c

File tree

1 file changed

+0
-5
lines changed

1 file changed

+0
-5
lines changed

src/bootstrap/sanity.rs

-5
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@ pub fn check(build: &mut Build) {
166166
}
167167

168168
for target in &build.targets {
169-
// Can't compile for iOS unless we're on macOS
170-
if target.contains("apple-ios") && !build.build.contains("apple-darwin") {
171-
panic!("the iOS target is only supported on macOS");
172-
}
173-
174169
build
175170
.config
176171
.target_config

0 commit comments

Comments
 (0)