name: build

on:
  push:
    branches: [ unstable ]
  pull_request:
    branches: [ unstable ]

jobs:
  build:

    strategy:
      fail-fast: false
      matrix:
        include:
          - {os: ubuntu-20.04, cc: gcc-10, cxx: g++-10}
          - {os: ubuntu-20.04, cc: clang-10, cxx: clang++-10}
          - {os: macos-10.15, cc: gcc-10, cxx: g++-10}
          - {os: macos-10.15, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++}

    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v2

    - name: Install ubuntu dependencies
      if: matrix.os == 'ubuntu-20.04'
      run: >
        sudo apt-get update &&
        sudo apt-get install
        clang-10
        g++-10
        gfortran-10
        hdf5-tools
        libblas-dev
        libboost-dev
        libclang-10-dev
        libc++-10-dev
        libc++abi-10-dev
        libfftw3-dev
        libgfortran4
        libgmp-dev
        libhdf5-dev
        liblapack-dev
        libopenmpi-dev
        openmpi-bin
        openmpi-common
        openmpi-doc
        python3-clang-10
        python3-dev
        python3-mako
        python3-matplotlib
        python3-mpi4py
        python3-numpy
        python3-pip
        python3-scipy
        python3-sphinx
        python3-nbsphinx

    - name: Install homebrew dependencies
      if: matrix.os == 'macos-10.15'
      run: |
        brew install gcc@10 llvm boost fftw hdf5 open-mpi openblas
        pip3 install mako numpy scipy mpi4py
        pip3 install -r requirements.txt

    - name: Build & Install TRIQS
      env:
        CC: ${{ matrix.cc }}
        CXX: ${{ matrix.cxx }}
      run: |
        git clone https://github.com/TRIQS/triqs --branch unstable
        mkdir triqs/build && cd triqs/build
        cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$HOME/install
        make -j1 install VERBOSE=1
        cd ../

    - name: Build dft_tools
      env:
        CC: ${{ matrix.cc }}
        CXX: ${{ matrix.cxx }}
        FC: gfortran-10
        LIBRARY_PATH: /usr/local/opt/llvm/lib
      run: |
        source $HOME/install/share/triqs/triqsvars.sh
        mkdir build && cmake -B build
        cmake --build build -j2

    - name: Test app4triqs
      env:
        DYLD_FALLBACK_LIBRARY_PATH: /usr/local/opt/llvm/lib
      run: |
        source $HOME/install/share/triqs/triqsvars.sh
        cd build
        ctest -j2 --output-on-failure
