diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9db5cf769fd..22474ba93b8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -244,6 +244,13 @@ jobs: manylinux: auto args: --release -i python3.9 --no-sdist -m examples/maturin-starter/Cargo.toml + - name: Test cross compilation + if: ${{ matrix.platform.os == 'macos-latest' && matrix.python-version == '3.9' }} + uses: messense/maturin-action@v1 + with: + target: aarch64-apple-darwin + args: --release -i python3.9 --no-sdist -m examples/maturin-starter/Cargo.toml + env: CARGO_TERM_VERBOSE: true CARGO_BUILD_TARGET: ${{ matrix.platform.rust-target }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec1b007fbc..6cedcf55c91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fix incorrect platform detection for Windows in `pyo3-build-config`. [#2198](https://github.com/PyO3/pyo3/pull/2198) +- Fix cross compiling to aarch64 macOS. [#2201](https://github.com/PyO3/pyo3/pull/2201) ## [0.16.0] - 2022-02-27 diff --git a/pyo3-build-config/src/impl_.rs b/pyo3-build-config/src/impl_.rs index debbdff533c..25b6db174bd 100644 --- a/pyo3-build-config/src/impl_.rs +++ b/pyo3-build-config/src/impl_.rs @@ -623,7 +623,16 @@ pub fn cross_compiling( let cross_lib_dir = env_var("PYO3_CROSS_LIB_DIR"); let cross_python_version = env_var("PYO3_CROSS_PYTHON_VERSION"); - let target_triple = format!("{}-{}-{}", target_arch, target_vendor, target_os); + let target_triple = format!( + "{}-{}-{}", + target_arch, + target_vendor, + if target_os == "macos" { + "darwin" + } else { + target_os + } + ); if cross.is_none() && cross_lib_dir.is_none() && cross_python_version.is_none() { // No cross-compiling environment variables set; try to determine if this is a known case