From f19216bf87b7a1626dd2bde7e0673d505e136153 Mon Sep 17 00:00:00 2001 From: Callum Farmer Date: Sun, 14 Jul 2024 17:16:43 +0100 Subject: [PATCH] Add macOS toolchain Fixes ncroxon/gnu-efi#36 Signed-off-by: Callum Farmer --- .github/workflows/macos-gcc.yml | 104 ++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 .github/workflows/macos-gcc.yml diff --git a/.github/workflows/macos-gcc.yml b/.github/workflows/macos-gcc.yml new file mode 100644 index 0000000..cb20100 --- /dev/null +++ b/.github/workflows/macos-gcc.yml @@ -0,0 +1,104 @@ +name: macOS, gcc + +on: [push, pull_request] + +jobs: + build: + runs-on: macos-latest + + strategy: + matrix: + arch: [x64, aa64] + include: + - arch: x64 + dir: x86_64 + cross_compile: x86_64-elf- + toolchain: x86_64-elf-gcc + - arch: aa64 + dir: aarch64 + cross_compile: aarch64-elf- + toolchain: aarch64-elf-gcc + + + + steps: + - name: Install toolchain + run: | + brew install ${{ matrix.toolchain }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Build + run: | + make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.cross_compile }} USING_APPLE=1 + + - name: Generate binary information + run: ${{ matrix.cross_compile }}readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.arch }} + path: | + ./${{ matrix.dir }}/apps/* + + tests: + runs-on: ubuntu-24.04 + needs: build + + strategy: + matrix: + arch: [x64, aa64] + include: + - arch: x64 + pkg: qemu-system-x86 + qemu_arch: x86_64 + qemu_opts: -M q35 + fw_base: OVMF + - arch: aa64 + pkg: qemu-system-arm + qemu_arch: aarch64 + qemu_opts: -M virt -cpu cortex-a57 + fw_base: AAVMF + + steps: + - name: Set up Linux environment + run: | + sudo apt-get update + sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: ${{ matrix.arch }} + + - name: Download UEFI firmware + run: | + fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z) + fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip + curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip} + 7z x ${fw_zip} + rm ${fw_zip} + + - name: Download UEFI Shell + run: | + curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso + mkdir ./image + 7z x -o./image *.iso + rm *.iso + + - name: Run tests + run: | + export UEFI_ARCH=${{ matrix.arch }} + export UEFI_DIR=./image + export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image" + ./tests/gen_tests.sh ./tests/test_list.txt + ./tests/run_tests.sh