name: Hydra Core Build

on:
  push:
    branches:
      - master
  pull_request:

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Release

jobs:
  Windows:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2
    - name: Fetch submodules
      run: git submodule update --init --recursive

    - name: Setup Vulkan SDK
      uses: humbletim/setup-vulkan-sdk@v1.2.0
      with:
        vulkan-query-version: latest
        vulkan-use-cache: true
        vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON -DBUILD_HYDRA_CORE=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
    
    - name: Upload core
      uses: actions/upload-artifact@v2
      with:
        name: Windows core
        path: '${{github.workspace}}/build/Release/Alber.dll'


  MacOS:
    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v2
    - name: Fetch submodules
      run: git submodule update --init --recursive

    - name: Setup Vulkan SDK
      uses: humbletim/setup-vulkan-sdk@v1.2.0
      with:
        vulkan-query-version: latest
        vulkan-use-cache: true
        vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_USER_BUILD=ON -DBUILD_HYDRA_CORE=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
    
    - name: Upload core
      uses: actions/upload-artifact@v2
      with:
        name: MacOS core
        path: '${{github.workspace}}/build/libAlber.dylib'

  Linux:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Fetch submodules
      run: git submodule update --init --recursive

    - name: Install misc packages
      run: |
       sudo apt-get update && sudo apt install libx11-dev libgl1-mesa-glx mesa-common-dev libfuse2 libwayland-dev
       
    - name: Setup Vulkan SDK
      uses: humbletim/setup-vulkan-sdk@v1.2.0
      with:
        vulkan-query-version: latest
        vulkan-use-cache: true
        vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_USER_BUILD=ON -DBUILD_HYDRA_CORE=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
    
    - name: Upload core
      uses: actions/upload-artifact@v2
      with:
        name: Linux core
        path: '${{github.workspace}}/build/libAlber.so'

  Android-x64:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Fetch submodules
      run: git submodule update --init --recursive

    - name: Install misc packages
      run: |
       sudo apt-get update && sudo apt install libx11-dev libgl1-mesa-glx mesa-common-dev libfuse2 libwayland-dev
       
    - name: Setup Vulkan SDK
      uses: humbletim/setup-vulkan-sdk@v1.2.0
      with:
        vulkan-query-version: latest
        vulkan-use-cache: true
        vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DANDROID_ABI=x86_64 -DBUILD_HYDRA_CORE=1 -DENABLE_VULKAN=0

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
    
    - name: Upload core
      uses: actions/upload-artifact@v2
      with:
        name: Android core
        path: '${{github.workspace}}/build/libAlber.so'