name: Build Check

on:
  push:
    branches: ["master", "feat-*", "fix-*"]
  pull_request:
    branches: ["master", "feat-*", "fix-*"]

jobs:
  format-check:
    name: Format check ${{ matrix.arch }}
    runs-on: ubuntu-latest
    continue-on-error: true
    container: dragonos/dragonos-dev:v1.8

    strategy:
      matrix:
        arch: [x86_64, riscv64]

    steps:
      - run: echo "Running in dragonos/dragonos-dev:v1.8"
      - uses: actions/checkout@v3

      - name: Format check
        env:
          ARCH: ${{ matrix.arch }}
          HOME: /root
        shell: bash -ileo pipefail {0}
        run: |
          printf "\n" >> kernel/src/include/bindings/bindings.rs
          sed -i 's/arch = ".*"/arch = "${{ matrix.arch }}"/' dadk-manifest.toml
          FMT_CHECK=1 make fmt

  kernel-static-test:
    name: Kernel static test ${{ matrix.arch }}
    runs-on: ubuntu-latest
    continue-on-error: true
    container: dragonos/dragonos-dev:v1.8

    strategy:
      matrix:
        arch: [x86_64, riscv64]

    steps:
      - run: echo "Running in dragonos/dragonos-dev:v1.8"

      - uses: actions/checkout@v3

      - name: Run kernel static test
        shell: bash -ileo pipefail {0}
        env:
          ARCH: ${{ matrix.arch }}
          HOME: /root
        run: bash -c "source /root/.cargo/env && cd kernel && make test && make test-rbpf"

  build-x86_64:
    runs-on: ubuntu-latest
    container: dragonos/dragonos-dev:v1.8

    steps:
      - run: echo "Running in dragonos/dragonos-dev:v1.8"

      - uses: actions/checkout@v3
      - name: build the DragonOS
        env:
          ARCH: x86_64
          HOME: /root
        shell: bash -ileo pipefail {0}

        run: |
          source ~/.bashrc
          source ~/.cargo/env
          export DragonOS_GCC=$HOME/opt/dragonos-gcc/gcc-x86_64-unknown-none/bin
          sed -i 's/arch = ".*"/arch = "${{ env.ARCH }}"/' dadk-manifest.toml

          make all -j $(nproc)

  build-riscv64:
    runs-on: ubuntu-latest
    container: dragonos/dragonos-dev:v1.8

    steps:
      - run: echo "Running in dragonos/dragonos-dev:v1.8"

      - uses: actions/checkout@v3
        with:
          submodules: "recursive"

      - name: build the DragonOS
        shell: bash -ileo pipefail {0}
        env:
          ARCH: riscv64
          HOME: /root

        run: |
          source ~/.bashrc && source ~/.cargo/env
          sed -i 's/arch = ".*"/arch = "${{ env.ARCH }}"/' dadk-manifest.toml
          make kernel -j $(nproc)
