name: CLBlast release

on:
  workflow_dispatch:
    inputs:
      version:
        description: "Version of the form 1.5.3"
        required: true


jobs:

  release_linux_and_macos:

    strategy:
      matrix:
        config: [
          {name: linux, os: ubuntu-20.04, arch: x86_64, c_compiler: gcc-9, cpp_compiler: g++-9},
          {name: macos, os: macos-11, arch: x86_64, c_compiler: clang, cpp_compiler: clang++},
        ]

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

    env:
      RELEASE_NAME: CLBlast-${{ github.event.inputs.version }}-${{ matrix.config.name }}-${{ matrix.config.arch }}

    steps:
    - uses: actions/checkout@v3

    - name: Install requirements for Ubuntu
      run: |
        sudo apt-get update
        sudo apt-get install -yq ocl-icd-opencl-dev opencl-c-headers --no-install-recommends
      if: ${{ matrix.config.name == 'linux' }}

    - name: Run CMake
      run: |
        mkdir ${{env.RELEASE_NAME}}
        export CC=${{ matrix.config.c_compiler }}
        export CXX=${{ matrix.config.cpp_compiler }}
        cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DTESTS=OFF -DCLIENTS=OFF -DSAMPLES=ON -DCMAKE_INSTALL_PREFIX=${{env.RELEASE_NAME}}

    - name: Compile the code
      run: cmake --build build

    - name: Package the code
      run: |
        cmake --build build --target install
        tar -cvzf ${{env.RELEASE_NAME}}.tar.gz ${{env.RELEASE_NAME}}

    - name: Upload the release
      uses: actions/upload-artifact@v3
      with:
        name: ${{env.RELEASE_NAME}}
        path: ${{env.RELEASE_NAME}}.tar.gz


  release_windows:

    strategy:
      matrix:
        config: [
          {name: windows, os: windows-2019, arch: x64},
        ]

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

    env:
      RELEASE_NAME: CLBlast-${{ github.event.inputs.version }}-${{ matrix.config.name }}-${{ matrix.config.arch }}

    steps:
    - uses: actions/checkout@v3

    - name: Set up MSVC
      uses: ilammy/msvc-dev-cmd@v1

    - name: Install OpenCL
      run: vcpkg.exe --triplet=${{ matrix.config.arch }}-windows install opencl

    - name: Run CMake
      run: |
        mkdir "${{env.RELEASE_NAME}}"
        cmake -S . -B build  -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DTESTS=OFF -DCLIENTS=OFF -DSAMPLES=ON -DCMAKE_INSTALL_PREFIX="${{env.RELEASE_NAME}}" -DOPENCL_ROOT=C:/vcpkg/packages/opencl_x64-windows

    - name: Compile the code
      run: cmake --build build --config Release

    - name: Package the code
      run: |
        cmake --build build --target install
        7z a -r ${{env.RELEASE_NAME}}.7z "${{env.RELEASE_NAME}}"

    - name: Upload the release
      uses: actions/upload-artifact@v3
      with:
        name: ${{env.RELEASE_NAME}}
        path: ${{env.RELEASE_NAME}}.7z
