Skip to content

Commit ebf4ce3

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

File tree

4 files changed

+73
-24
lines changed

4 files changed

+73
-24
lines changed

.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.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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 & 16 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

@@ -86,7 +88,6 @@
8688
inherit src;
8789
strictDeps = true;
8890
pname = "webhook-relay";
89-
version = "0.1.0";
9091
doCheck = false;
9192
};
9293

@@ -166,18 +167,18 @@
166167
);
167168

168169
# ============================================================================
169-
# Darwin Package (cross-compilation with cargo-zigbuild)
170+
# Darwin x86_64 Package (cross-compilation with cargo-zigbuild)
170171
# ============================================================================
171172

172173
# Zigbuild cargo command - used for both deps and final build
173174
# Must capture JSON output for crane's install hook
174-
zigbuildCargoCommand = ''
175+
zigbuildCargoCommand = target: ''
175176
export HOME=$(mktemp -d)
176177
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"
178+
cargo zigbuild --profile release --message-format json-render-diagnostics --locked -p server -p client -p mcp-client --target ${target} >"$cargoBuildLog"
178179
'';
179180

180-
commonArgsDarwin =
181+
commonArgsDarwinX86 =
181182
commonArgs
182183
// {
183184
nativeBuildInputs = [
@@ -186,8 +187,8 @@
186187
pkgs.zig
187188
];
188189

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

192193
# Environment for cargo-zigbuild
193194
SDKROOT = macOSSDK;
@@ -199,16 +200,55 @@
199200
CARGO_INCREMENTAL = "0";
200201

201202
# Override to use cargo zigbuild
202-
buildPhaseCargoCommand = zigbuildCargoCommand;
203+
buildPhaseCargoCommand = zigbuildCargoCommand darwinX86TargetTriple;
203204
};
204205

205206
# Build deps using zigbuild
206-
cargoArtifactsDarwin = craneLib.buildDepsOnly commonArgsDarwin;
207+
cargoArtifactsDarwinX86 = craneLib.buildDepsOnly commonArgsDarwinX86;
207208

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

@@ -227,15 +267,19 @@
227267
mkdir -p $out/bin/x86_64-unknown-linux-musl
228268
mkdir -p $out/bin/x86_64-pc-windows-gnu
229269
mkdir -p $out/bin/x86_64-apple-darwin
270+
mkdir -p $out/bin/aarch64-apple-darwin
230271
231272
# Copy Linux binaries (statically linked with musl)
232273
cp ${linuxPackage}/bin/server ${linuxPackage}/bin/client ${linuxPackage}/bin/mcp-client $out/bin/x86_64-unknown-linux-musl
233274
234275
# Copy Windows binaries
235276
cp ${windowsPackage}/bin/server.exe ${windowsPackage}/bin/client.exe ${windowsPackage}/bin/mcp-client.exe $out/bin/x86_64-pc-windows-gnu
236277
237-
# Copy Darwin binaries
238-
cp ${darwinPackage}/bin/server ${darwinPackage}/bin/client ${darwinPackage}/bin/mcp-client $out/bin/x86_64-apple-darwin
278+
# Copy Darwin x86_64 binaries
279+
cp ${darwinX86Package}/bin/server ${darwinX86Package}/bin/client ${darwinX86Package}/bin/mcp-client $out/bin/x86_64-apple-darwin
280+
281+
# Copy Darwin aarch64 binaries
282+
cp ${darwinAarch64Package}/bin/server ${darwinAarch64Package}/bin/client ${darwinAarch64Package}/bin/mcp-client $out/bin/aarch64-apple-darwin
239283
240284
runHook postInstall
241285
'';

0 commit comments

Comments
 (0)