name: CI

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build-linux:
    name: Build Linux
    runs-on: ubuntu-latest
    strategy:
      matrix:
        cxx: [g++-9, clang++-9]
    steps:
    - uses: actions/checkout@v1
    - name: cmake
      run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release .
    - name: build
      run: make -j4
    - name: test
      run: ./flattests
    - name: upload build artifacts
      uses: actions/upload-artifact@v1
      with:
        name: Linux flatc binary ${{ matrix.cxx }}
        path: flatc

  build-windows:
    name: Build Windows
    runs-on: windows-latest
    steps:
    - uses: actions/checkout@v1
    - name: Add msbuild to PATH
      uses: microsoft/setup-msbuild@v1.0.0
    - name: cmake
      run: cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_BUILD_TYPE=Release .
    - name: build
      run: msbuild.exe FlatBuffers.sln /p:Configuration=Release /p:Platform=x64
    - name: test
      run: Release\flattests.exe
    - name: upload build artifacts
      uses: actions/upload-artifact@v1
      with:
        name: Windows flatc binary
        path: Release\flatc.exe

  build-mac:
    name: Build Mac
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v1
    - name: cmake
      run: cmake -G "Xcode" -DCMAKE_BUILD_TYPE=Release .
    - name: build
      run: xcodebuild -toolchain clang -configuration Release -target flattests
    - name: test
      run: Release/flattests
    - name: upload build artifacts
      uses: actions/upload-artifact@v1
      with:
        name: Mac flatc binary
        path: Release/flatc


# FIXME: to make this work, this apparently needs:
# - a newer version of gradle in build.gradle (e.g. 3.2.1)
# - google() in the repos in build.gradle
# - gradle version 4.6 in gradle-wrapper.properties ?
# - some kind of flavor declaration?
# All while not breaking the existing Travis Android build.
# good luck.

#  build-android:
#    name: Build Android (on Linux)
#    runs-on: ubuntu-latest
#    steps:
#    - uses: actions/checkout@v1
#    - name: set up JDK 1.8
#      uses: actions/setup-java@v1
#      with:
#        java-version: 1.8
#    - name: build
#      working-directory: android
#      run: bash ./gradlew buildDebug
