environment:
  global:
    CLBLAST_BUILD: "C:\\clblast\\build"
    OPENCL_ROOT: "C:\\dependencies\\opencl"

platform:
  - x64

configuration:
  - Release

init:
  - cmake --version
  - C:\"Program Files (x86)"\"Microsoft Visual Studio 14.0"\VC\vcvarsall.bat %PLATFORM%

# Creates an OpenCL library to link against. Taken from clMathLibraries/clBLAS
install:
  - ps: mkdir $env:OPENCL_ROOT
  - ps: pushd $env:OPENCL_ROOT
  # This downloads the source to the Khronos ICD library
  - git clone https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
  - ps: pushd OpenCL-ICD-Loader
  - git checkout cb4acb9  # older version (pre 2.2 support)
  - ps: popd
  - ps: mv ./OpenCL-ICD-Loader/* .
  # This downloads all the opencl header files
  # The cmake build files expect a directory called inc
  - ps: mkdir inc/CL
  - git clone https://github.com/KhronosGroup/OpenCL-Headers.git inc/CL
  - ps: wget https://raw.githubusercontent.com/KhronosGroup/OpenCL-CLHPP/main/include/CL/opencl.hpp -OutFile inc/CL/cl.hpp
  # Switch to OpenCL 2.1 headers
  - ps: pushd inc/CL
  - git checkout bf0f43b  # OpenCL 2.1
  - ps: popd
  # - ps: dir; if( $lastexitcode -eq 0 ){ dir include/CL } else { Write-Output boom }
  # Create the static import lib in a directory called lib, so findopencl() will find it
  - ps: mkdir lib
  - ps: pushd lib
  - cmake -G "NMake Makefiles" ..
  - nmake
  - ps: popd
  # Rename the inc directory to include, so FindOpencl() will find it
  - ps: ren inc include
  - ps: popd

before_build:
  - ps: mkdir $env:CLBLAST_BUILD
  - ps: pushd $env:CLBLAST_BUILD
  - ps: mkdir install_dir
  - cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX=install_dir -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DTESTS=ON -DCLIENTS=ON -DSAMPLES=ON -DNETLIB=ON %APPVEYOR_BUILD_FOLDER%

build_script:
  - nmake
  - nmake install

after_build:
  - ps: pushd $env:CLBLAST_BUILD
  - 7z a CLBlast-1.6.2-Windows-x64.zip .\install_dir\*
  - ps: mv CLBlast-1.6.2-Windows-x64.zip $env:APPVEYOR_BUILD_FOLDER

artifacts:
  - path: '*.zip'
    name: release
    type: zip
