1b8e80941Smrg# http://www.appveyor.com/docs/appveyor-yml
2b8e80941Smrg#
3b8e80941Smrg# To setup AppVeyor for your own personal repositories do the following:
4b8e80941Smrg# - Sign up
5b8e80941Smrg# - Add a new project
6b8e80941Smrg# - Select Git and fill in the Git clone URL
7b8e80941Smrg# - Setup a Git hook as explained in
8b8e80941Smrg#   https://github.com/appveyor/webhooks#installing-git-hook
9b8e80941Smrg# - Check 'Settings > General > Skip branches without appveyor.yml'
10b8e80941Smrg# - Check 'Settings > General > Rolling builds'
11b8e80941Smrg# - Setup the global or project notifications to your liking
12b8e80941Smrg#
13b8e80941Smrg# Note that kicking (or restarting) a build via the web UI will not work, as it
14b8e80941Smrg# will fail to find appveyor.yml .  The Git hook is the most practical way to
15b8e80941Smrg# kick a build.
16b8e80941Smrg#
17b8e80941Smrg# See also:
18b8e80941Smrg# - http://help.appveyor.com/discussions/problems/2209-node-grunt-build-specify-a-project-or-solution-file-the-directory-does-not-contain-a-project-or-solution-file
19b8e80941Smrg# - http://help.appveyor.com/discussions/questions/1184-build-config-vs-appveyoryaml
20b8e80941Smrg
21b8e80941Smrgversion: '{build}'
22b8e80941Smrg
23b8e80941Smrgbranches:
24b8e80941Smrg  except:
25b8e80941Smrg  - /^travis.*$/
26b8e80941Smrg
27b8e80941Smrg# Don't download the full Mesa history to speed up cloning.  However the clone
28b8e80941Smrg# depth must not be too small, otherwise builds might fail when lots of patches
29b8e80941Smrg# are committed in succession, because the desired commit is not found on the
30b8e80941Smrg# truncated history.
31b8e80941Smrg#
32b8e80941Smrg# See also:
33b8e80941Smrg# - https://www.appveyor.com/blog/2014/06/04/shallow-clone-for-git-repositories
34b8e80941Smrgclone_depth: 100
35b8e80941Smrg
36b8e80941Smrg# https://www.appveyor.com/docs/build-cache/
37b8e80941Smrgcache:
38b8e80941Smrg- '%LOCALAPPDATA%\pip\Cache -> appveyor.yml'
39b8e80941Smrg- win_flex_bison-2.5.15.zip
40b8e80941Smrg- llvm-5.0.1-msvc2017-mtd.7z
41b8e80941Smrg
42b8e80941Smrgos: Visual Studio 2017
43b8e80941Smrg
44b8e80941Smrginit:
45b8e80941Smrg# Appveyor defaults core.autocrlf to input instead of the default (true), but
46b8e80941Smrg# that can hide problems processing CRLF text on Windows
47b8e80941Smrg- git config --global core.autocrlf true
48b8e80941Smrg
49b8e80941Smrgenvironment:
50b8e80941Smrg  WINFLEXBISON_VERSION: 2.5.15
51b8e80941Smrg  LLVM_ARCHIVE: llvm-5.0.1-msvc2017-mtd.7z
52b8e80941Smrg
53b8e80941Smrginstall:
54b8e80941Smrg# Check git config
55b8e80941Smrg- git config core.autocrlf
56b8e80941Smrg# Check pip
57b8e80941Smrg- python --version
58b8e80941Smrg- python -m pip --version
59b8e80941Smrg# Install Mako
60b8e80941Smrg- python -m pip install Mako==1.0.7
61b8e80941Smrg# Install pywin32 extensions, needed by SCons
62b8e80941Smrg- python -m pip install pypiwin32
63b8e80941Smrg# Install python wheels, necessary to install SCons via pip
64b8e80941Smrg- python -m pip install wheel
65b8e80941Smrg# Install SCons
66b8e80941Smrg- python -m pip install scons==3.0.1
67b8e80941Smrg- scons --version
68b8e80941Smrg# Install flex/bison
69b8e80941Smrg- set WINFLEXBISON_ARCHIVE=win_flex_bison-%WINFLEXBISON_VERSION%.zip
70b8e80941Smrg- if not exist "%WINFLEXBISON_ARCHIVE%" appveyor DownloadFile "https://github.com/lexxmark/winflexbison/releases/download/v%WINFLEXBISON_VERSION%/%WINFLEXBISON_ARCHIVE%"
71b8e80941Smrg- 7z x -y -owinflexbison\ "%WINFLEXBISON_ARCHIVE%" > nul
72b8e80941Smrg- set Path=%CD%\winflexbison;%Path%
73b8e80941Smrg- win_flex --version
74b8e80941Smrg- win_bison --version
75b8e80941Smrg# Download and extract LLVM
76b8e80941Smrg- if not exist "%LLVM_ARCHIVE%" appveyor DownloadFile "https://people.freedesktop.org/~jrfonseca/llvm/%LLVM_ARCHIVE%"
77b8e80941Smrg- 7z x -y "%LLVM_ARCHIVE%" > nul
78b8e80941Smrg- mkdir llvm\bin
79b8e80941Smrg- set LLVM=%CD%\llvm
80b8e80941Smrg
81b8e80941Smrgbuild_script:
82b8e80941Smrg- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1
83b8e80941Smrg
84b8e80941Smrgafter_build:
85b8e80941Smrg- scons -j%NUMBER_OF_PROCESSORS% MSVC_VERSION=14.1 llvm=1 check
86b8e80941Smrg
87b8e80941Smrg
88b8e80941Smrg# It's possible to setup notification here, as described in
89b8e80941Smrg# http://www.appveyor.com/docs/notifications#appveyor-yml-configuration , but
90b8e80941Smrg# doing so would cause the notification settings to be replicated across all
91b8e80941Smrg# repos, which is most likely undesired.  So it's better to rely on the
92b8e80941Smrg# Appveyor global/project notification settings.
93