diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4444c1db38bf34b8edf55d5413a374f1ad18969a..8b013445c7c484fabc4aa0fb03048fd6010eedf0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -51,3 +51,15 @@ build_macos_x86_64:
   artifacts:
     paths:
       - build/src/dynare-preprocessor
+
+build_macos_arm64:
+  stage: build
+  tags:
+    - macOS
+  script:
+    - export PATH="/opt/homebrew/bin:$PATH"
+    - arch -arm64 meson setup -D buildtype=release --native-file scripts/homebrew-native-arm64.ini build
+    - arch -arm64 meson compile -C build -v
+  artifacts:
+    paths:
+      - build/src/dynare-preprocessor
diff --git a/scripts/homebrew-native-arm64.ini b/scripts/homebrew-native-arm64.ini
new file mode 100644
index 0000000000000000000000000000000000000000..cc188a106c1afb77cc2640e445e9c398ad4fbda3
--- /dev/null
+++ b/scripts/homebrew-native-arm64.ini
@@ -0,0 +1,10 @@
+# Meson native file for compiling under Homebrew / arm64
+
+[binaries]
+cpp = '/opt/homebrew/bin/g++-13'
+flex = '/opt/homebrew/opt/flex/bin/flex'
+bison = '/opt/homebrew/opt/bison/bin/bison'
+
+[built-in options]
+# XCode 15 (on Ventura and Sonoma) has a linker issue, see https://github.com/mesonbuild/meson/issues/12282, workaround is to use ld_classic
+cpp_link_args = [ '-Wl,-ld_classic' ]
\ No newline at end of file