name: CI

on: [push, pull_request]

jobs:

  build:
    strategy:
      fail-fast: false
      matrix:
        lua_ver: ['5.1', '5.3']
        numbers: ['default', 'alternate']
        target: ['esp32', 'esp32s2', 'esp32s3', 'esp32c3']

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: recursive
      - name: Prepare cache key
        run: git rev-parse HEAD:sdk/esp32-esp-idf > idf.rev
        shell: bash
      - name: Cache Espressif tools
        uses: actions/cache@v2
        with:
          path: ~/.espressif
          key: ${{ runner.os }}-espressif-tools-${{ hashFiles('idf.rev') }}
      - name: Install dependencies
        run: ./install.sh
        shell: bash
      - name: Build firmware (default configuration)
        if: ${{ matrix.numbers == 'default' }}
        run: |
          cp sdkconfig.defaults sdkconfig
          make IDF_TARGET=${{ matrix.target }}
        shell: bash
      - name: Build firmware (Lua 5.1, integer-only)
        if: ${{ matrix.lua_ver == '5.1' && matrix.numbers == 'alternate' }}
        run: |
          cp sdkconfig.defaults sdkconfig
          echo CONFIG_LUA_NUMBER_INTEGRAL=y >> sdkconfig
          make IDF_TARGET=${{ matrix.target }}
        shell: bash
      - name: Build firmware (Lua 5.3, 64bit int/double)
        if: ${{ matrix.lua_ver == '5.3' && matrix.numbers == 'alternate' }}
        run: |
          cp sdkconfig.defaults sdkconfig
          echo CONFIG_LUA_NUMBER_INT64=y >> sdkconfig
          echo CONFIG_LUA_NUMBER_DOUBLE=y >> sdkconfig
          make IDF_TARGET=${{ matrix.target }}
        shell: bash
      - name: Upload luac.cross
        uses: actions/upload-artifact@v2
        if: ${{ success() }}
        with:
          name: luac.cross-${{ matrix.lua_ver }}-${{ matrix.numbers }}-${{ matrix.target }}
          path: build/luac_cross/luac.cross
