- name: install sccache
run: src/ci/scripts/install-sccache.sh
if: success() && !env.SKIP_JOB
+ - name: select Xcode
+ run: src/ci/scripts/select-xcode.sh
+ if: success() && !env.SKIP_JOB
- name: install clang
run: src/ci/scripts/install-clang.sh
if: success() && !env.SKIP_JOB
NO_LLVM_ASSERTIONS: 1
NO_DEBUG_ASSERTIONS: 1
os: macos-latest
+ - name: dist-aarch64-apple
+ env:
+ SCRIPT: "./x.py dist --stage 2"
+ RUST_CONFIGURE_ARGS: "--build=x86_64-apple-darwin --host=aarch64-apple-darwin --target=aarch64-apple-darwin --enable-sanitizers --enable-profiler --set rust.jemalloc --set llvm.ninja=false --tools=rls,clippy,rustfmt,analysis,src"
+ RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
+ SELECT_XCODE: /Applications/Xcode_12_beta.app
+ USE_XCODE_CLANG: 1
+ MACOSX_DEPLOYMENT_TARGET: 11.0
+ MACOSX_STD_DEPLOYMENT_TARGET: 11.0
+ NO_LLVM_ASSERTIONS: 1
+ NO_DEBUG_ASSERTIONS: 1
+ os: macos-latest
- name: x86_64-msvc-1
env:
RUST_CONFIGURE_ARGS: "--build=x86_64-pc-windows-msvc --enable-profiler"
- name: install sccache
run: src/ci/scripts/install-sccache.sh
if: success() && !env.SKIP_JOB
+ - name: select Xcode
+ run: src/ci/scripts/select-xcode.sh
+ if: success() && !env.SKIP_JOB
- name: install clang
run: src/ci/scripts/install-clang.sh
if: success() && !env.SKIP_JOB
- name: install sccache
run: src/ci/scripts/install-sccache.sh
if: success() && !env.SKIP_JOB
+ - name: select Xcode
+ run: src/ci/scripts/select-xcode.sh
+ if: success() && !env.SKIP_JOB
- name: install clang
run: src/ci/scripts/install-clang.sh
if: success() && !env.SKIP_JOB
- name: install sccache
run: src/ci/scripts/install-sccache.sh
if: success() && !env.SKIP_JOB
+ - name: select Xcode
+ run: src/ci/scripts/select-xcode.sh
+ if: success() && !env.SKIP_JOB
- name: install clang
run: src/ci/scripts/install-clang.sh
if: success() && !env.SKIP_JOB
run: src/ci/scripts/install-sccache.sh
<<: *step
+ - name: select Xcode
+ run: src/ci/scripts/select-xcode.sh
+ <<: *step
+
- name: install clang
run: src/ci/scripts/install-clang.sh
<<: *step
NO_DEBUG_ASSERTIONS: 1
<<: *job-macos-xl
+ # This target only needs to support 11.0 and up as nothing else supports the hardware
+ - name: dist-aarch64-apple
+ env:
+ SCRIPT: ./x.py dist --stage 2
+ RUST_CONFIGURE_ARGS: >-
+ --build=x86_64-apple-darwin
+ --host=aarch64-apple-darwin
+ --target=aarch64-apple-darwin
+ --enable-sanitizers
+ --enable-profiler
+ --set rust.jemalloc
+ --set llvm.ninja=false
+ --tools=rls,clippy,rustfmt,analysis,src
+ RUSTC_RETRY_LINKER_ON_SEGFAULT: 1
+ SELECT_XCODE: /Applications/Xcode_12_beta.app
+ USE_XCODE_CLANG: 1
+ MACOSX_DEPLOYMENT_TARGET: 11.0
+ MACOSX_STD_DEPLOYMENT_TARGET: 11.0
+ NO_LLVM_ASSERTIONS: 1
+ NO_DEBUG_ASSERTIONS: 1
+ # TODO: Cargo is disabled until OpenSSL 1.1.1 can be
+ # compiled for aarch64-apple-darwin::
+ # https://github.com/openssl/openssl/pull/12369. Once
+ # fixed, remove `--tools`, add back
+ # `--enable-full-tools`, and enable this again
+ # DIST_REQUIRE_ALL_TOOLS: 1
+ <<: *job-macos-xl
+
######################
# Windows Builders #
######################
LLVM_VERSION="10.0.0"
if isMacOS; then
- curl -f "${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz" | tar xJf -
+ # If the job selects a specific Xcode version, use that instead of
+ # downloading our own version.
+ if [[ ${USE_XCODE_CLANG-0} -eq 1 ]]; then
+ bindir="$(xcode-select --print-path)/Toolchains/XcodeDefault.xctoolchain/usr/bin"
+ else
+ file="${MIRRORS_BASE}/clang%2Bllvm-${LLVM_VERSION}-x86_64-apple-darwin.tar.xz"
+ curl -f "${file}" | tar xJf -
+ bindir="$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin/bin"
+ fi
- ciCommandSetEnv CC "$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin/bin/clang"
- ciCommandSetEnv CXX "$(pwd)/clang+llvm-${LLVM_VERSION}-x86_64-apple-darwin/bin/clang++"
+ ciCommandSetEnv CC "${bindir}/clang"
+ ciCommandSetEnv CXX "${bindir}/clang++"
# macOS 10.15 onwards doesn't have libraries in /usr/include anymore: those
# are now located deep into the filesystem, under Xcode's own files. The
--- /dev/null
+#!/bin/bash
+# This script selects the Xcode instance to use.
+
+set -euo pipefail
+IFS=$'\n\t'
+
+source "$(cd "$(dirname "$0")" && pwd)/../shared.sh"
+
+if isMacOS; then
+ if [[ -s "${SELECT_XCODE-}" ]]; then
+ sudo xcode-select -s "${SELECT_XCODE}"
+ fi
+fi