Skip to content

Commit 45c3c05

Browse files
authored
Add ARM64 support (#58)
- Build and test the library on ARM64 - Update Dockerfile to download bazelisk for the corresponding architecture - Use cmake to build the library
1 parent 6a89348 commit 45c3c05

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

.circleci/config.yml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
version: 2.1
22

3-
jobs:
3+
executors:
4+
docker-amd64:
5+
docker:
6+
- image: "datadog/docker-library:dd-trace-cpp-ci"
7+
resource_class: xlarge
8+
docker-arm64:
9+
docker:
10+
- image: "datadog/docker-library:dd-trace-cpp-ci"
11+
resource_class: arm.xlarge
412

13+
jobs:
514
format:
615
docker:
716
- image: "datadog/docker-library:dd-trace-cpp-ci"
@@ -22,9 +31,9 @@ jobs:
2231
parameters:
2332
toolchain:
2433
type: string
25-
docker:
26-
- image: "datadog/docker-library:dd-trace-cpp-ci"
27-
resource_class: xlarge
34+
arch:
35+
type: string
36+
executor: docker-<< parameters.arch >>
2837
environment:
2938
MAKE_JOB_COUNT: 8
3039
steps:
@@ -37,18 +46,17 @@ jobs:
3746
type: string
3847
sanitize:
3948
type: string
40-
docker:
41-
- image: "datadog/docker-library:dd-trace-cpp-ci"
42-
resource_class: xlarge
49+
arch:
50+
type: string
51+
executor: docker-<< parameters.arch >>
4352
environment:
4453
MAKE_JOB_COUNT: 8
4554
# See <https://github.com/llvm/llvm-project/issues/59432>.
4655
ASAN_OPTIONS: alloc_dealloc_mismatch=0
4756
steps:
4857
- checkout
49-
- run: mkdir .build
50-
- run: cd .build && ../bin/with-toolchain << parameters.toolchain >> cmake .. -DBUILD_TESTING=1 -DSANITIZE=<< parameters.sanitize >>
51-
- run: cd .build && make -j $MAKE_JOB_COUNT VERBOSE=1
58+
- run: bin/with-toolchain << parameters.toolchain >> cmake . -B .build -DBUILD_TESTING=1 -DSANITIZE=<< parameters.sanitize >>
59+
- run: cmake --build .build -j ${MAKE_JOB_COUNT} -v
5260
- run: cd .build && test/tests
5361

5462
coverage:
@@ -75,8 +83,10 @@ workflows:
7583
parameters:
7684
toolchain: ["gnu", "llvm"]
7785
sanitize: ["on", "off"]
86+
arch: ["amd64", "arm64"]
7887
- build-bazel:
7988
matrix:
8089
parameters:
90+
arch: ["amd64", "arm64"]
8191
toolchain: ["gnu", "llvm"]
8292
- coverage

Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
from ubuntu:22.04
55

6+
# Expose Docker's predefined platform ARGs
7+
# For more information: <https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope>
8+
arg TARGETARCH
9+
610
# Don't issue blocking prompts during installation (sometimes an installer
711
# prompts for the current time zone).
812
env DEBIAN_FRONTEND=noninteractive
@@ -20,7 +24,7 @@ run apt-get update && apt-get install --yes software-properties-common && \
2024

2125
# bazelisk, a launcher for bazel. `bazelisk --help` will cause the latest
2226
# version to be downloaded.
23-
run wget -O/usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.15.0/bazelisk-linux-amd64 \
27+
run wget -O/usr/local/bin/bazelisk https://github.com/bazelbuild/bazelisk/releases/download/v1.15.0/bazelisk-linux-$TARGETARCH \
2428
&& chmod +x /usr/local/bin/bazelisk \
2529
&& bazelisk --help
2630

0 commit comments

Comments
 (0)