# This is the Linux_options workflow for the wgrib2 project. This
# tests different wgrib2 build options.
#
# Ed Hartnett, 3/27/24
name: Linux_options
on:
  push:
    branches:
      - develop
  pull_request:
    branches:
      - develop

# Cancel in-progress workflows when pushing to a branch
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  Linux_options:
    runs-on: ubuntu-latest
    env:
      FC: gfortran
      CC: gcc

    strategy:
#      fail-fast: true
      matrix:
        config:
        - {
            options: "-DUSE_IPOLATES=1"
          }
        - {
            options: "-DUSE_AEC=ON"
          }
        - { 
            options: "-DUSE_NETCDF4=ON"
          }
          
    steps:

    - name: install
      run: |
        sudo apt-get update
        sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config
        sudo apt-get install libpng-dev autotools-dev autoconf libaec-dev

    - name: cache-jasper
      id: cache-jasper
      uses: actions/cache@v3
      with:
        path: ~/jasper
        key: jasper-${{ runner.os }}-1.900.1

    - name: checkout-jasper
      if: steps.cache-jasper.outputs.cache-hit != 'true'
      uses: actions/checkout@v2
      with:
        repository: jasper-software/jasper
        path: jasper
        ref: version-1.900.1

    - name: build-jasper
      if: steps.cache-jasper.outputs.cache-hit != 'true'
      run: |
        cd jasper
        ./configure --prefix=$HOME/Jasper
        make
        make install

    - name: checkout-sp
      uses: actions/checkout@v2
      with:
        repository: NOAA-EMC/NCEPLIBS-sp
        path: sp
        ref: v2.3.3

    - name: build-sp
      run: |
        cd sp
        mkdir build
        cd build
        cmake -DCMAKE_INSTALL_PREFIX=~/sp -DBUILD_8=ON ..
        make -j2
        make install

    - name: cache-ip
      id: cache-ip
      uses: actions/cache@v3
      with:
        path: ~/ip
        key: ip-${{ runner.os }}-${{ matrix.ip-version }}

    - name: checkout-ip
      if: steps.cache-ip.outputs.cache-hit != 'true'
      uses: actions/checkout@v3
      with:
        repository: NOAA-EMC/NCEPLIBS-ip
        path: ip
        ref: v3.3.3

    - name: build-ip
      if: steps.cache-ip.outputs.cache-hit != 'true'
      run: |
        cd ip
        mkdir build
        cd build
        cmake .. -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp
        make -j2
        make install
          
    - name: checkout-ip2
      uses: actions/checkout@v2
      with:
        repository: NOAA-EMC/NCEPLIBS-ip2
        path: ip2
        ref: develop

    - name: build-ip2
      run: |
        cd ip2
        mkdir build
        cd build
        cmake .. -DCMAKE_INSTALL_PREFIX=~/ip2 -DCMAKE_PREFIX_PATH=~
        make -j2
        make install        

    - name: checkout
      uses: actions/checkout@v2
      with: 
        path: wgrib2

    - name: build
      run: |
        cd wgrib2
        mkdir b
        cd b
        cmake ${{ matrix.config.options }} -DCMAKE_PREFIX_PATH="~/sp;~/ip;~/ip2" ..
        make VERBOSE=1
        ctest --verbose --output-on-failure --rerun-failed