Skip to content

Commit 723cd65

Browse files
committed
chore: add aarch 64 darwin target
1 parent df613b3 commit 723cd65

3 files changed

Lines changed: 67 additions & 17 deletions

File tree

.github/workflows/build.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,15 @@ jobs:
6262
cp result-binaries/bin/x86_64-pc-windows-gnu/client.exe release-artifacts/client-x86_64-windows.exe
6363
cp result-binaries/bin/x86_64-pc-windows-gnu/mcp-client.exe release-artifacts/mcp-client-x86_64-windows.exe
6464
65-
# macOS binaries
65+
# macOS x86_64 binaries
6666
cp result-binaries/bin/x86_64-apple-darwin/server release-artifacts/server-x86_64-darwin
6767
cp result-binaries/bin/x86_64-apple-darwin/client release-artifacts/client-x86_64-darwin
6868
cp result-binaries/bin/x86_64-apple-darwin/mcp-client release-artifacts/mcp-client-x86_64-darwin
69+
70+
# macOS aarch64 binaries
71+
cp result-binaries/bin/aarch64-apple-darwin/server release-artifacts/server-aarch64-darwin
72+
cp result-binaries/bin/aarch64-apple-darwin/client release-artifacts/client-aarch64-darwin
73+
cp result-binaries/bin/aarch64-apple-darwin/mcp-client release-artifacts/mcp-client-aarch64-darwin
6974
- name: Create GitHub Release
7075
if: inputs.create-release
7176
uses: softprops/action-gh-release@v2

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,5 @@ hex = "0.4"
4242
open = "5"
4343

4444
[workspace.package]
45-
version = "0.1.0"
45+
version = "0.1.1"
4646
edition = "2024"

nix/packages/webhook-relay.nix

Lines changed: 60 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,9 @@
6262
dontFixup = true;
6363
};
6464

65-
# Darwin target triple
66-
darwinTargetTriple = "x86_64-apple-darwin";
65+
# Darwin target triples
66+
darwinX86TargetTriple = "x86_64-apple-darwin";
67+
darwinAarch64TargetTriple = "aarch64-apple-darwin";
6768

6869
# Rust toolchain from rust-toolchain.toml with all cross-compilation targets
6970
rustToolchainWithTargets =
@@ -73,6 +74,7 @@
7374
"x86_64-pc-windows-gnu"
7475
"x86_64-unknown-linux-musl"
7576
"x86_64-apple-darwin"
77+
"aarch64-apple-darwin"
7678
];
7779
};
7880

@@ -166,18 +168,18 @@
166168
);
167169

168170
# ============================================================================
169-
# Darwin Package (cross-compilation with cargo-zigbuild)
171+
# Darwin x86_64 Package (cross-compilation with cargo-zigbuild)
170172
# ============================================================================
171173

172174
# Zigbuild cargo command - used for both deps and final build
173175
# Must capture JSON output for crane's install hook
174-
zigbuildCargoCommand = ''
176+
zigbuildCargoCommand = target: ''
175177
export HOME=$(mktemp -d)
176178
cargoBuildLog=$(mktemp cargoBuildLogXXXX.json)
177-
cargo zigbuild --profile release --message-format json-render-diagnostics --locked -p server -p client -p mcp-client --target ${darwinTargetTriple} >"$cargoBuildLog"
179+
cargo zigbuild --profile release --message-format json-render-diagnostics --locked -p server -p client -p mcp-client --target ${target} >"$cargoBuildLog"
178180
'';
179181

180-
commonArgsDarwin =
182+
commonArgsDarwinX86 =
181183
commonArgs
182184
// {
183185
nativeBuildInputs = [
@@ -186,8 +188,8 @@
186188
pkgs.zig
187189
];
188190

189-
CARGO_BUILD_TARGET = darwinTargetTriple;
190-
cargoExtraArgs = "--locked -p server -p client -p mcp-client --target ${darwinTargetTriple}";
191+
CARGO_BUILD_TARGET = darwinX86TargetTriple;
192+
cargoExtraArgs = "--locked -p server -p client -p mcp-client --target ${darwinX86TargetTriple}";
191193

192194
# Environment for cargo-zigbuild
193195
SDKROOT = macOSSDK;
@@ -199,16 +201,55 @@
199201
CARGO_INCREMENTAL = "0";
200202

201203
# Override to use cargo zigbuild
202-
buildPhaseCargoCommand = zigbuildCargoCommand;
204+
buildPhaseCargoCommand = zigbuildCargoCommand darwinX86TargetTriple;
203205
};
204206

205207
# Build deps using zigbuild
206-
cargoArtifactsDarwin = craneLib.buildDepsOnly commonArgsDarwin;
208+
cargoArtifactsDarwinX86 = craneLib.buildDepsOnly commonArgsDarwinX86;
207209

208-
darwinPackage = craneLib.buildPackage (
209-
commonArgsDarwin
210+
darwinX86Package = craneLib.buildPackage (
211+
commonArgsDarwinX86
210212
// {
211-
cargoArtifacts = cargoArtifactsDarwin;
213+
cargoArtifacts = cargoArtifactsDarwinX86;
214+
}
215+
);
216+
217+
# ============================================================================
218+
# Darwin Aarch64 Package (cross-compilation with cargo-zigbuild)
219+
# ============================================================================
220+
221+
commonArgsDarwinAarch64 =
222+
commonArgs
223+
// {
224+
nativeBuildInputs = [
225+
pkgs.protobuf
226+
pkgs.cargo-zigbuild
227+
pkgs.zig
228+
];
229+
230+
CARGO_BUILD_TARGET = darwinAarch64TargetTriple;
231+
cargoExtraArgs = "--locked -p server -p client -p mcp-client --target ${darwinAarch64TargetTriple}";
232+
233+
# Environment for cargo-zigbuild
234+
SDKROOT = macOSSDK;
235+
MACOSX_DEPLOYMENT_TARGET = macOSSDKVersion;
236+
ZIG_LIB_DIR = "${pkgs.zig}/lib/zig";
237+
CARGO_TARGET_AARCH64_APPLE_DARWIN_RUSTFLAGS = "-C link-arg=-F${macOSSDK}/System/Library/Frameworks -C link-arg=-L${macOSSDK}/usr/lib";
238+
239+
# Disable incremental compilation to help with fingerprint consistency
240+
CARGO_INCREMENTAL = "0";
241+
242+
# Override to use cargo zigbuild
243+
buildPhaseCargoCommand = zigbuildCargoCommand darwinAarch64TargetTriple;
244+
};
245+
246+
# Build deps using zigbuild
247+
cargoArtifactsDarwinAarch64 = craneLib.buildDepsOnly commonArgsDarwinAarch64;
248+
249+
darwinAarch64Package = craneLib.buildPackage (
250+
commonArgsDarwinAarch64
251+
// {
252+
cargoArtifacts = cargoArtifactsDarwinAarch64;
212253
}
213254
);
214255

@@ -227,15 +268,19 @@
227268
mkdir -p $out/bin/x86_64-unknown-linux-musl
228269
mkdir -p $out/bin/x86_64-pc-windows-gnu
229270
mkdir -p $out/bin/x86_64-apple-darwin
271+
mkdir -p $out/bin/aarch64-apple-darwin
230272
231273
# Copy Linux binaries (statically linked with musl)
232274
cp ${linuxPackage}/bin/server ${linuxPackage}/bin/client ${linuxPackage}/bin/mcp-client $out/bin/x86_64-unknown-linux-musl
233275
234276
# Copy Windows binaries
235277
cp ${windowsPackage}/bin/server.exe ${windowsPackage}/bin/client.exe ${windowsPackage}/bin/mcp-client.exe $out/bin/x86_64-pc-windows-gnu
236278
237-
# Copy Darwin binaries
238-
cp ${darwinPackage}/bin/server ${darwinPackage}/bin/client ${darwinPackage}/bin/mcp-client $out/bin/x86_64-apple-darwin
279+
# Copy Darwin x86_64 binaries
280+
cp ${darwinX86Package}/bin/server ${darwinX86Package}/bin/client ${darwinX86Package}/bin/mcp-client $out/bin/x86_64-apple-darwin
281+
282+
# Copy Darwin aarch64 binaries
283+
cp ${darwinAarch64Package}/bin/server ${darwinAarch64Package}/bin/client ${darwinAarch64Package}/bin/mcp-client $out/bin/aarch64-apple-darwin
239284
240285
runHook postInstall
241286
'';

0 commit comments

Comments
 (0)