1accf9611SUlrich Spörleinname: Cross-build Kernel 21e266857SAlex Richardson 31e266857SAlex Richardsonon: 41e266857SAlex Richardson push: 5f8130174SAndrew Turner branches: [ main, 'stable/14', 'stable/13' ] 61e266857SAlex Richardson pull_request: 79c43bd64SUlrich Spörlein branches: [ main ] 878cc4571SAndrew Turner workflow_dispatch: 91e266857SAlex Richardson 10aca7ff47SAlexpermissions: 11aca7ff47SAlex contents: read 12aca7ff47SAlex 131e266857SAlex Richardsonjobs: 141e266857SAlex Richardson build: 153491ed65SJohn Baldwin name: ${{ matrix.target_arch }} ${{ matrix.os }} (${{ matrix.compiler }}) 161e266857SAlex Richardson runs-on: ${{ matrix.os }} 171e266857SAlex Richardson strategy: 18accf9611SUlrich Spörlein fail-fast: false 191e266857SAlex Richardson matrix: 203491ed65SJohn Baldwin target_arch: [ amd64, aarch64 ] 21386e2dc4SAndrew Turner os: [ ubuntu-22.04, ubuntu-24.04, macos-latest ] 22accf9611SUlrich Spörlein include: 23accf9611SUlrich Spörlein # TODO: both Ubuntu and macOS have bmake packages, we should try them instead of bootstrapping our own copy. 2474536fcaSJohn Baldwin - os: ubuntu-22.04 2574536fcaSJohn Baldwin compiler: clang-14 2674536fcaSJohn Baldwin cross-bindir: /usr/lib/llvm-14/bin 2774536fcaSJohn Baldwin pkgs: bmake libarchive-dev clang-14 lld-14 28386e2dc4SAndrew Turner - os: ubuntu-24.04 29386e2dc4SAndrew Turner compiler: clang-18 30386e2dc4SAndrew Turner cross-bindir: /usr/lib/llvm-18/bin 31386e2dc4SAndrew Turner pkgs: bmake libarchive-dev clang-18 lld-18 3249335edaSJohn Baldwin - os: macos-latest 33*edc692b9SAndrew Turner compiler: clang-18 34*edc692b9SAndrew Turner cross-bindir: /opt/homebrew/opt/llvm@18/bin 35*edc692b9SAndrew Turner pkgs: bmake libarchive llvm@18 363491ed65SJohn Baldwin - target_arch: amd64 373491ed65SJohn Baldwin target: amd64 383491ed65SJohn Baldwin - target_arch: aarch64 393491ed65SJohn Baldwin target: arm64 401e266857SAlex Richardson steps: 41e6dccf00SJohn Baldwin - uses: actions/checkout@v4 42accf9611SUlrich Spörlein - name: install packages (Ubuntu) 43accf9611SUlrich Spörlein if: runner.os == 'Linux' 441e266857SAlex Richardson run: | 45accf9611SUlrich Spörlein sudo apt-get update --quiet || true 46accf9611SUlrich Spörlein sudo apt-get -yq --no-install-suggests --no-install-recommends install ${{ matrix.pkgs }} 47accf9611SUlrich Spörlein - name: install packages (macOS) 48accf9611SUlrich Spörlein if: runner.os == 'macOS' 49accf9611SUlrich Spörlein run: | 50accf9611SUlrich Spörlein brew update --quiet || true 5140903394SUlrich Spörlein brew install ${{ matrix.pkgs }} || true 52accf9611SUlrich Spörlein - name: create environment 53accf9611SUlrich Spörlein run: | 54accf9611SUlrich Spörlein echo "GITHUB_WORKSPACE = $GITHUB_WORKSPACE" 55accf9611SUlrich Spörlein if [ -n "${{ matrix.cross-bindir }}" ]; then 56accf9611SUlrich Spörlein echo "EXTRA_BUILD_ARGS=--cross-bindir=${{ matrix.cross-bindir }}" >> $GITHUB_ENV 57accf9611SUlrich Spörlein fi 58accf9611SUlrich Spörlein mkdir -p ../build 59accf9611SUlrich Spörlein echo "MAKEOBJDIRPREFIX=${PWD%/*}/build" >> $GITHUB_ENV 60accf9611SUlrich Spörlein # heh, works on Linux/BSD/macOS ... 61accf9611SUlrich Spörlein echo "NPROC=`getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1`" >> $GITHUB_ENV 62accf9611SUlrich Spörlein - name: bootstrap bmake 633491ed65SJohn Baldwin run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} -n 641e266857SAlex Richardson - name: make kernel-toolchain 65f13b4e46SJessica Clarke run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} kernel-toolchain -s -j$NPROC -DWITH_DISK_IMAGE_TOOLS_BOOTSTRAP 661e266857SAlex Richardson - name: make buildkernel 673491ed65SJohn Baldwin run: ./tools/build/make.py --debug $EXTRA_BUILD_ARGS TARGET=${{ matrix.target }} TARGET_ARCH=${{ matrix.target_arch }} KERNCONF=GENERIC NO_MODULES=yes buildkernel -s -j$NPROC $EXTRA_MAKE_ARGS 68