Commit 68515ae5 authored by tqcq's avatar tqcq
Browse files

feat add aarch64 workflows

parent 21e6fd80
Loading
Loading
Loading
Loading
+178 −0
Original line number Diff line number Diff line
---
name: linux-aarch64-cpu-gcc
on:
  push:
    branches: [master]
    paths:
      - .gitea/workflows/linux-arm-gcc.yml
      - toolchains/aarch64-linux-gnu.toolchain.cmake
      - 3party/**
      - include/**
      - src/**
      - tests/**
      - CMakeLists.txt
      - cmake/**
  pull_request:
    branches: [master]
    paths:
      - .gitea/workflows/linux-arm-gcc.yml
      - toolchains/aarch64-linux-gnu.toolchain.cmake
      - 3party/**
      - include/**
      - src/**
      - tests/**
      - CMakeLists.txt
      - cmake/**
concurrency:
  group: linux-aarch64-cpu-gcc-${{ github.ref }}
  cancel-in-progress: true
permissions:
  contents: read
jobs:
  linux-gcc:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v4
      - name: cache-qemu
        id: cache-qemu
        uses: actions/cache@v4
        with:
          path: qemu-install
          key: qemu-aarch64-install-20220502-ubuntu-2004-2
      - name: install-qemu-build-deps
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          sudo apt-get update
          sudo apt-get install autoconf automake autotools-dev ninja-build
      - name: checkout-qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          mkdir qemu && cd qemu
          git init
          git remote add origin https://gitlab.com/qemu-project/qemu.git
          git fetch --depth=1 origin f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
          git checkout f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
        # uses: actions/checkout@v4
        # with:
        #   repository: qemu/qemu
        #   path: qemu
        #   ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
      - name: qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          cd qemu
          ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
          make -j$(nproc)
          make install
      - name: aarch64-gnu-toolchain
        run: |
          sudo apt-get update
          sudo apt-get install cmake make g++-aarch64-linux-gnu
      - name: build
        run: |
          mkdir build && cd build
          cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DSLED_BUILD_TESTS=ON -DSLED_BUILD_BENCHMARK=ON
          cmake --build . -j $(nproc)
      - name: test
        run: |
          export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
          cd build
          TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc)
  linux-gcc-arm82:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v4
      - name: cache-qemu
        id: cache-qemu
        uses: actions/cache@v4
        with:
          path: qemu-install
          key: qemu-aarch64-install-20220502-ubuntu-2004-2
      - name: install-qemu-build-deps
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          sudo apt-get update
          sudo apt-get install autoconf automake autotools-dev ninja-build
      - name: checkout-qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          mkdir qemu && cd qemu
          git init
          git remote add origin https://gitlab.com/qemu-project/qemu.git
          git fetch --depth=1 origin f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
          git checkout f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
        # uses: actions/checkout@v4
        # with:
        #   repository: qemu/qemu
        #   path: qemu
        #   ref: f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
      - name: qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          cd qemu
          ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
          make -j$(nproc)
          make install
      - name: aarch64-gnu-toolchain
        run: |
          sudo apt-get update
          sudo apt-get install cmake make g++-aarch64-linux-gnu
      - name: build
        run: |
          mkdir build && cd build
          cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DSLED_BUILD_TESTS=ON -DSLED_BUILD_BENCHMARK=ON
          cmake --build . -j $(nproc)
      - name: test
        run: |
          export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
          cd build
          TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc)
  linux-gcc-arm86:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v4
      - name: cache-qemu
        id: cache-qemu
        uses: actions/cache@v4
        with:
          path: qemu-install
          key: qemu-aarch64-install-20230717
      - name: install-qemu-build-deps
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          sudo apt-get update
          sudo apt-get install autoconf automake autotools-dev ninja-build
      - name: checkout-qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          mkdir qemu && cd qemu
          git init
          git remote add origin https://gitlab.com/qemu-project/qemu.git
          git fetch --depth=1 origin f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
          git checkout f5643914a9e8f79c606a76e6a9d7ea82a3fc3e65
        # uses: actions/checkout@v4
        # with:
        #   repository: qemu/qemu
        #   path: qemu
        #   ref: ed8ad9728a9c0eec34db9dff61dfa2f1dd625637
      - name: qemu
        if: steps.cache-qemu.outputs.cache-hit != 'true'
        run: |
          cd qemu
          ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=aarch64-linux-user --disable-system
          make -j$(nproc)
          make install
      - name: aarch64-gnu-toolchain
        run: |
          sudo apt-get update
          sudo apt-get install cmake make g++-aarch64-linux-gnu
      - name: build
        run: |
          mkdir build && cd build
          cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/aarch64-linux-gnu.toolchain.cmake -DSLED_BUILD_TESTS=ON -DSLED_BUILD_BENCHMARK=ON
          cmake --build . -j $(nproc)
      - name: test
        run: |-
          export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
          cd build
          TESTS_EXECUTABLE_LOADER=qemu-aarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/usr/aarch64-linux-gnu" ctest --output-on-failure -j $(nproc)