feat: Add iOS platform support #60

Merged
Henry-Hiles merged 7 commits from eleboucher/nexus:ios-support into main 2026-08-08 16:35:57 -04:00
2 changed files with 17 additions and 15 deletions
Showing only changes of commit f3787d7f83 - Show all commits

Handle xcrun failures via getXCodeSDK/getXCodeClang helpers

Erwan Leboucher 2026-08-08 22:22:22 +02:00 committed by eleboucher

View file

@ -28,11 +28,7 @@ Future<void> main(List<String> args) => build(args, (input, output) async {
final iosConfig = codeConfig.iOS;
iosSdk = iosConfig.targetSdk;
final minVersion = iosConfig.targetVersion;
iosSdkPath = (await Process.run("xcrun", [
"--sdk",
iosSdk.type,
"--show-sdk-path",
])).stdout.toString().trim();
iosSdkPath = await getXCodeSDK(sdkType: iosSdk.type);
final archTriple = switch (targetArch) {
Architecture.arm64 => "arm64",
Architecture.x64 => "x86_64",
@ -45,12 +41,7 @@ Future<void> main(List<String> args) => build(args, (input, output) async {
: "$archTriple-apple-ios$minVersion.0";
extraEnv = {
"GOOS": "ios",
"CC": (await Process.run("xcrun", [
"--sdk",
iosSdk.type,
"-f",
"clang",
])).stdout.toString().trim(),
"CC": await getXCodeClang(sdkType: iosSdk.type),
"CGO_CFLAGS": "-isysroot $iosSdkPath -target $iosTargetTriple",
"CGO_LDFLAGS": "-isysroot $iosSdkPath -target $iosTargetTriple",
};

View file

@ -1,11 +1,22 @@
import "dart:io";
Future<String> getXCodeSDK() async {
final result = await Process.run("xcrun", ["--show-sdk-path"]);
Future<String> _runXcrun(List<String> args, String errorContext) async {
final result = await Process.run("xcrun", args);
if (result.exitCode != 0) {
throw Exception("Failed to get XCode SDK\n${result.stderr}");
throw Exception("Failed to $errorContext\n${result.stderr}");
}
return result.stdout.trim();
return result.stdout.toString().trim();
}
Future<String> getXCodeSDK({String? sdkType}) => _runXcrun([
if (sdkType != null) ...["--sdk", sdkType],
"--show-sdk-path",
], "get XCode SDK");
Future<String> getXCodeClang({String? sdkType}) => _runXcrun([
if (sdkType != null) ...["--sdk", sdkType],
"-f",
"clang",
], "get XCode clang");