@@ -57,6 +57,7 @@ gcloud_mount_args := -v $(build_path)/.config/gcloud:/root/.config/gcloud
57
57
cargo_build_x86_64_linux := build --profile=lto --target x86_64-unknown-linux-gnu
58
58
cargo_build_x86_64_apple := build --release --target x86_64-apple-darwin
59
59
cargo_build_aarch64-apple := build --release --target aarch64-apple-darwin
60
+ cargo_build_aarch64_linux := build --profile=lto --target aarch64-unknown-linux-gnu
60
61
cargo_build_x86_64_windows := build --release --target x86_64-pc-windows-gnu
61
62
62
63
# _____ _
@@ -135,14 +136,18 @@ binary-archive: ensure-build-image build-licence-report build-all-binaries
135
136
docker run --rm $(common_rust_args ) -w $(CARGO_TARGET_DIR ) \
136
137
--entrypoint=bash $(BUILD_IMAGE_TAG ) -c ' cp ../../license.html . && zip ../../quilkin-$(package_version).zip ./*/lto/quilkin ./*/lto/quilkin.exe ./license.html'
137
138
138
- # Build binary for x86_64-unknown-linux-gnu.
139
+ # Build binary for x86_64-unknown-linux-gnu and aarch64-unknown-linux-gnu
139
140
# Use BUILD_LOCAL=1 to build through local cargo rather than through the build container.
140
141
build-linux-binary : ensure-build-image gen-protobuf
141
142
ifdef BUILD_LOCAL
142
143
cargo $(cargo_build_x86_64_linux)
144
+ cargo $(cargo_build_aarch64_linux)
143
145
else
144
- docker run --rm $(common_rust_args) -e "CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/x86_64-linux-gnu-gcc" \
145
- --entrypoint=cargo $(BUILD_IMAGE_TAG) $(cargo_build_x86_64_linux)
146
+ docker run --rm $(common_rust_args) \
147
+ -e "CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/x86_64-linux-gnu-gcc" \
148
+ -e "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc" \
149
+ $(BUILD_IMAGE_TAG) \
150
+ sh -c "cargo $(cargo_build_x86_64_linux) && cargo $(cargo_build_aarch64_linux) --no-default-features"
146
151
endif
147
152
148
153
# Build binary for x86_64-pc-windows-gnu
@@ -179,15 +184,18 @@ endif
179
184
# Use BUILD_LOCAL=1 to build the binary through local cargo rather than through the build container.
180
185
build-image : ensure-build-image build-licence-report build-linux-binary
181
186
build-image :
182
- -mkdir -p " $( project_path) /target/image/"
187
+ -mkdir -p " $( project_path) /target/image/linux/amd64"
188
+ -mkdir -p " $( project_path) /target/image/linux/arm64"
183
189
ifdef BUILD_LOCAL
184
- cp "$(project_path)/target/x86_64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/"
190
+ cp "$(project_path)/target/x86_64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/linux/amd64/"
191
+ cp "$(project_path)/target/aarch64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/linux/arm64/"
185
192
else
186
- cp "$(project_path)/target/build-image/x86_64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/"
193
+ cp "$(project_path)/target/build-image/x86_64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/linux/amd64/"
194
+ cp "$(project_path)/target/build-image/aarch64-unknown-linux-gnu/lto/quilkin" "$(project_path)/target/image/linux/arm64/"
187
195
endif
188
196
docker run --rm $(common_rust_args) \
189
197
--entrypoint=bash $(BUILD_IMAGE_TAG) -c './image/archive_dependencies.sh'
190
- docker build --platform=linux/amd64 -t $(IMAGE_TAG) -f $(project_path)/image/Dockerfile $(project_path)
198
+ docker buildx build --platform=linux/amd64,linux/arm64 -t $(IMAGE_TAG) -f $(project_path)/image/Dockerfile $(project_path)
191
199
192
200
# Generates the HTML report of all open source licence dependencies
193
201
build-licence-report : ensure-build-image
0 commit comments