-
Notifications
You must be signed in to change notification settings - Fork 237
/
appveyor.yml
108 lines (94 loc) · 3.84 KB
/
appveyor.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Appveyor OS list
# Windows Server 2012 R2 (x64) <== Appveyor default image
# Visual Studio 2015
# os: expands the build matrix to include multiple os's
os:
- Windows Server 2012
# compiler: expands the build matrix to include multiple compilers (per os)
platform:
- x64
configuration:
- Release
# Only clone the top level commit; don't bother with history
shallow_clone: true
# environment: specifies additional global variables to define per row in build matrix
environment:
global:
CLBLAS_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\nmake\\release"
OPENCL_ROOT: "%APPVEYOR_BUILD_FOLDER%\\bin\\opencl"
# BOOST_ROOT: "C:/Libraries/boost" # boost 1.56, 32-bit only
BOOST_ROOT: "C:\\Libraries\\boost_1_58_0"
OPENCL_REGISTRY: "https://www.khronos.org/registry/cl"
init:
- echo init step
- cmake --version
- C:\"Program Files (x86)"\"Microsoft Visual Studio 12.0"\VC\vcvarsall.bat %PLATFORM%
# Uncomment the following to display Remote Desktop connection details
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# We need to create an opencl import library that clblas can link against
# Vendor based OpenCL packages are hard to use because of download size, registration requirements
# and unattended installs not well supported
install:
- echo install step
- ps: mkdir $env:OPENCL_ROOT
- ps: pushd $env:OPENCL_ROOT
- ps: $opencl_registry = $env:OPENCL_REGISTRY
# This downloads the source to the Khronos ICD library
- git clone --depth 1 https://github.com/KhronosGroup/OpenCL-ICD-Loader.git
- 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 --depth 1 https://github.com/KhronosGroup/OpenCL-Headers.git inc/CL
- ps: wget $opencl_registry/api/2.1/cl.hpp -OutFile inc/CL/cl.hpp
# - 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
# Switch to OpenCL 1.2 headers
- ps: pushd inc/CL
- git fetch origin opencl12:opencl12
- git checkout opencl12
- ps: popd
# Rename the inc directory to include, so FindOpencl() will find it
- ps: ren inc include
- ps: popd
# before_build is used to run configure steps
before_build:
- echo before_build step
# Boost 1.58 is not installed in typical fashion, help FindBoost() find binary libs with BOOST_LIBRARYDIR
- ps: $env:BOOST_LIBRARYDIR = "$env:BOOST_ROOT/lib64-msvc-12.0"
- ps: mkdir $env:CLBLAS_ROOT
- ps: pushd $env:CLBLAS_ROOT
- cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DBUILD_TEST=OFF -DBUILD_CLIENT=ON -DOCL_VERSION=2.0 -DOPENCL_ROOT=%OPENCL_ROOT% %APPVEYOR_BUILD_FOLDER%/src
# build_script invokes the compiler
build_script:
- echo build_script step
- nmake package
after_build:
- echo after_build step
- ps: ls $env:CLBLAS_ROOT
- ps: mv $env:CLBLAS_ROOT\*.zip $env:APPVEYOR_BUILD_FOLDER
# Appyeyor will save a copy of the package in it's personal storage
artifacts:
- path: '*.zip'
name: binary_zip
type: zip
# on_finish always executes regardless of passed or failed builds
on_finish:
- echo on_finish step
# Appveyor will push the artifacts it has saved to GitHub 'releases' tab
# deploy:
# provider: GitHub
# auth_token:
# secure: dRXIWJKpU7h2RsHX7RqmyYCtCw+Q9O3X5MArloY6p34GZC1w7bp+jQYTZqbdO7bw
# artifact: binary_zip
# draft: true
# prerelease: true
# on:
# appveyor_repo_tag: true
# Uncomment the following to pause the VM and wait for RDP connetion to debug
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))