name: Build Vinix kernel

on:
  pull_request:
    paths-ignore:
      - "**.md"
  push:
    branches:
      - main
    paths-ignore:
      - "**.md"

jobs:
  vinix-build:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2

      - name: Install dependencies
        run: sudo apt-get update && sudo apt-get install build-essential -y

      - name: Clone and build current V
        run: git clone https://github.com/vlang/v.git --depth=1 && cd v && make

      - name: Download kernel dependencies
        run: cd kernel && ./get-deps

      - name: Attempt to build the Vinix kernel (debug)
        run: cd kernel && make PROD=false KCFLAGS="-D__vinix__ -O2 -g -pipe" KV="../v/v" && make clean

      - name: Attempt to build the Vinix kernel (prod)
        run: cd kernel && make PROD=true KCFLAGS="-D__vinix__ -O2 -g -pipe" KV="../v/v" && make clean

      - name: Attempt to build the util-vinix (debug)
        run: cd util-vinix && make PROD=false V="$(realpath ../v/v)" VFLAGS="-os vinix -gc none" CFLAGS="-D__vinix__ -O2 -g -pipe" && make clean

      - name: Attempt to build the util-vinix (prod)
        run: cd util-vinix && make PROD=true V="$(realpath ../v/v)" VFLAGS="-os vinix -gc none" CFLAGS="-D__vinix__ -O2 -g -pipe" && make clean
