name: test-build

on:
  push:
  pull_request:

permissions:
  contents: read

jobs:
  standard:

    runs-on: ubuntu-latest
    name: Standard

    steps:
    - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791

    - name: Install dependencies
      run: sudo apt-get install emacs autoconf libhdf5-dev

    - name: Install the latest TREXIO from the GitHub clone
      run: |
        git clone https://github.com/TREX-CoE/trexio.git
        cd trexio
        ./autogen.sh
        ./configure --prefix=/usr
        make -j 4
        sudo make install

    - name: Build QMCkl
      run: |
        ./autogen.sh
        mkdir _build
        cd _build
        ../configure --enable-silent-rules --enable-python
        make -j 4
        sudo make install

    - name: Run test
      run: make -j 4 check
      working-directory: _build

    - name: Archive test log file
      if: failure()
      uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
      with:
        name: test-report-ubuntu
        path: test-suite.log

    - name: Dist test
      run: make distcheck
      working-directory: _build

    - name: Setup the virtual environment
      run: |
          python3 -m venv --clear pyqmckl
          source pyqmckl/bin/activate

    - name: Install the Python requirements
      run: pip install -r requirements.txt
      working-directory: python

    - name: Install the Python API
      run: make python-install
      working-directory: _build

    - name: Test the Python API
      run: make python-test
      working-directory: _build

  debug:

    runs-on: ubuntu-latest
    name: Debug

    steps:
    - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791

    - name: Install dependencies
      run: sudo apt-get install emacs autoconf libhdf5-dev

    - name: Install the latest TREXIO from the GitHub clone
      run: |
        git clone https://github.com/TREX-CoE/trexio.git
        cd trexio
        ./autogen.sh
        ./configure --prefix=/usr
        make -j 4
        sudo make install

    - name: Build QMCkl in debug mode
      run: |
        ./autogen.sh
        mkdir _build_debug
        cd _build_debug
        ../configure --enable-debug --enable-silent-rules
        make -j2

    - name: Run test
      run: make -j2 check
      working-directory: _build_debug

    - name: Archive test log file
      if: failure()
      uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
      with:
        name: test-report-ubuntu-debug
        path: _build_debug/test-suite.log

  hpc:

    runs-on: ubuntu-latest
    name: HPC

    steps:
    - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791

    - name: Install dependencies
      run: sudo apt-get install emacs autoconf libhdf5-dev

    - name: Install the latest TREXIO from the GitHub clone
      run: |
        git clone https://github.com/TREX-CoE/trexio.git
        cd trexio
        ./autogen.sh
        ./configure --prefix=/usr
        make -j 4
        sudo make install

    - name: Compile QMCkl in HPC mode
      run: |
        ./autogen.sh
        mkdir _build_hpc
        cd _build_hpc
        ../configure --enable-hpc
        make -j2

    - name: Run test
      run: make -j2 check
      working-directory: _build_hpc

    - name: Archive test log file
      if: failure()
      uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
      with:
        name: test-report-ubuntu-debug
        path: _build_hpc/test-suite.log

#  x86_macos:
#
#    runs-on: macos-latest
#    name: x86 MacOS latest
#
#    steps:
#    - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791
#    - name: install dependencies
#      run: brew install emacs hdf5 automake pkg-config
#
#    - name: Symlink gfortran (macOS)
#      if: runner.os == 'macOS'
#      run: |
#        # make sure gfortran is available
#        # https://github.com/actions/virtual-environments/issues/2524
#        # https://github.com/cbg-ethz/dce/blob/master/.github/workflows/pkgdown.yaml
#        sudo ln -s /usr/local/bin/gfortran-10 /usr/local/bin/gfortran
#        sudo mkdir /usr/local/gfortran
#        sudo ln -s /usr/local/Cellar/gcc@10/*/lib/gcc/10 /usr/local/gfortran/lib
#        gfortran --version
#
#    - name: Install the latest TREXIO from the GitHub clone
#      run: |
#        git clone https://github.com/TREX-CoE/trexio.git
#        cd trexio
#        ./autogen.sh
#        ./configure --prefix=${PWD}/_install --enable-silent-rules
#        make -j 4
#        make install
#
#    - name: Test TREXIO
#      run: make -j 4 check
#      working-directory: trexio
#
#    - name: Archive TREXIO test log file
#      if: failure()
#      uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
#      with:
#        name: test-report-trexio-macos
#        path: trexio/test-suite.log
#
#    - name: Build QMCkl
#      run: |
#        export PKG_CONFIG_PATH=${PWD}/trexio/_install/lib/pkgconfig:$PKG_CONFIG_PATH
#        ./autogen.sh
#        ./configure CC=gcc-10 FC=gfortran-10 --enable-silent-rules
#        make -j 4
#
#    - name: Run test
#      run: make -j 4 check
#
#    - name: Archive test log file
#      if: failure()
#      uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
#      with:
#        name: test-report-macos
#        path: test-suite.log
