Skip to content

Commit

Permalink
GHA: Promote macOS-arm64 cross-compilation job to full native job
Browse files Browse the repository at this point in the history
Using the new CI runners (awesome performance!).
  • Loading branch information
kinke committed Mar 29, 2024
1 parent 94687fb commit 25a55db
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 27 deletions.
8 changes: 6 additions & 2 deletions .github/actions/1-setup/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,12 @@ runs:
run: |
set -euxo pipefail
python3 --version
python3 -m pip install --user setuptools wheel
python3 -m pip install --user lit
if [[ '${{ runner.os }}-${{ inputs.arch }}' == 'macOS-arm64' ]]; then
brew install lit python-setuptools
else
python3 -m pip install --user setuptools wheel
python3 -m pip install --user lit
fi
python3 -c "import lit.main; lit.main.main();" --version . | head -n 1
# the druntime tests require GNU make
Expand Down
9 changes: 7 additions & 2 deletions .github/actions/4d-test-libs/action.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Run defaultlib unittests & druntime integration tests
inputs:
arch:
required: false # Windows only
required: false # Windows and macOS only
runs:
using: composite
steps:
Expand All @@ -12,12 +12,17 @@ runs:
run: |
set -eux
cd ../build
excludes='dmd-testsuite|lit-tests|ldc2-unittest'
if [[ '${{ runner.os }}' == macOS ]]; then
N=$(sysctl -n hw.logicalcpu)
# FIXME: fails with enabled optimizations on M1 runners
#if [[ '${{ inputs.arch }}' == arm64 ]]; then
# excludes+='|^std.internal.math.gammafunction(-shared)?$'
#fi
else
N=$(nproc)
fi
ctest -j$N --output-on-failure -E "dmd-testsuite|lit-tests|ldc2-unittest"
ctest -j$N --output-on-failure -E "$excludes"
- name: 'Windows: Run defaultlib unittests & druntime integration tests'
if: runner.os == 'Windows'
Expand Down
37 changes: 14 additions & 23 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,18 @@ jobs:
-DEXTRA_CXXFLAGS=-flto=full
with_pgo: true

- job_name: macOS arm64
os: macos-14
arch: arm64
bootstrap_cmake_flags: >-
-DBUILD_LTO_LIBS=ON
-DD_COMPILER_FLAGS=-gcc=/usr/bin/c++
extra_cmake_flags: >-
-DBUILD_LTO_LIBS=ON
-DD_COMPILER_FLAGS="-gcc=/usr/bin/c++ -O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto -L-exported_symbol '-L__*' -L-w"
-DEXTRA_CXXFLAGS=-flto=full
with_pgo: true

- job_name: Windows x64
os: windows-2022
arch: x64
Expand All @@ -76,7 +88,7 @@ jobs:
runs-on: ${{ matrix.os }}
timeout-minutes: 90
env:
MACOSX_DEPLOYMENT_TARGET: 10.12
MACOSX_DEPLOYMENT_TARGET: ${{ matrix.arch == 'arm64' && '11.0' || '10.12' }}
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -160,18 +172,6 @@ jobs:
matrix:
include:

- job_name: macOS arm64
host_os: macos-12
os: osx
arch: arm64
bootstrap_cmake_flags: -DD_COMPILER_FLAGS=-gcc=/usr/bin/c++
# see native macOS job comment for extra flags (https://github.com/ldc-developers/ldc/issues/4462)
extra_cmake_flags: >-
-DBUILD_LTO_LIBS=ON
-DD_COMPILER_FLAGS="-O -flto=full -defaultlib=phobos2-ldc-lto,druntime-ldc-lto -L-exported_symbol '-L__*' -L-w"
-DEXTRA_CXXFLAGS=-flto=full
with_pgo: true

- job_name: Android armv7a
host_os: ubuntu-20.04
os: android
Expand All @@ -190,8 +190,6 @@ jobs:
name: ${{ matrix.job_name }}
runs-on: ${{ matrix.host_os }}
timeout-minutes: 60
env:
MACOSX_DEPLOYMENT_TARGET: 11.0
steps:
- uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -225,11 +223,6 @@ jobs:
uses: ./.github/actions/5-install
with:
cross_compiling: true
- name: 'macOS: Cross-compile iOS libraries, copy to install dir & extend ldc2.conf'
if: matrix.os == 'osx'
uses: ./.github/actions/5a-ios
with:
arch: ${{ matrix.arch }}
- name: 'Android: Cross-compile ${{ matrix.android_x86_arch }} libraries & copy to install dir'
if: matrix.os == 'android'
uses: ./.github/actions/5a-android-x86
Expand All @@ -248,9 +241,7 @@ jobs:
name: macOS universal
runs-on: macos-latest
timeout-minutes: 30
needs:
- build-native
- build-cross
needs: build-native
steps:
- uses: actions/checkout@v4
- name: Merge x86_64 & arm64 packages to universal one
Expand Down

0 comments on commit 25a55db

Please sign in to comment.