summaryrefslogtreecommitdiff
path: root/.appveyor.yml
blob: a6b91b24260a07e018e2d5c76d8254b5a13e7372 (plain)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
version: '{build}'

os: Visual Studio 2015

environment:
  matrix:
    - arch: x86
      compiler: msys2-mingw
      backend: ninja

    - arch: x64
      compiler: msys2-mingw
      backend: ninja

    - arch: x64
      compiler: cygwin
      backend: ninja

    - arch: x86
      compiler: msvc2010
      backend: ninja

    - arch: x86
      compiler: msvc2010
      backend: vs2010

    - arch: x86
      compiler: msvc2015
      backend: ninja
      BOOST_ROOT: C:\Libraries\Boost_1_59_0

    - arch: x86
      compiler: msvc2015
      backend: vs2015
      BOOST_ROOT: C:\Libraries\Boost_1_59_0

    - arch: x64
      compiler: msvc2017
      backend: ninja
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      BOOST_ROOT: C:\Libraries\Boost_1_64_0

    - arch: x64
      compiler: msvc2017
      backend: vs2017
      APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
      BOOST_ROOT: C:\Libraries\Boost_1_64_0

platform:
  - x64

branches:
  only:
    - master
    # Release branches
    - /^[0-9]+\.[0-9]+$/

init:
  - ps: |
        If($Env:compiler -like 'msvc2010') {
          Set-WinSystemLocale de-DE
          Start-Sleep -s 5
          Restart-Computer
        }

install:
  - cmd: set "ORIG_PATH=%PATH%"
  # Use a Ninja with QuLogic's patch: https://github.com/ninja-build/ninja/issues/1219
  - cmd: set "MESON_FIXED_NINJA=1"
  - ps: (new-object net.webclient).DownloadFile('http://nirbheek.in/files/binaries/ninja/win32/ninja.exe', 'C:\projects\meson\ninja.exe')
  # Use the x86 python only when building for x86 for the cpython tests.
  # For all other archs (including, say, arm), use the x64 python.
  - cmd: if %arch%==x86 (set MESON_PYTHON_PATH=C:\python35) else (set MESON_PYTHON_PATH=C:\python35-x64)

  # Set paths for BOOST dll files
  - cmd: if %compiler%==msvc2015 ( if %arch%==x86 ( set "PATH=%PATH%;C:\Libraries\boost_1_59_0\lib32-msvc-14.0" ) else ( set "PATH=%PATH%;C:\Libraries\boost_1_59_0\lib64-msvc-14.0" ) )
  - cmd: if %compiler%==msvc2017 ( if %arch%==x86 ( set "PATH=%PATH%;C:\Libraries\boost_1_64_0\lib32-msvc-14.1" ) else ( set "PATH=%PATH%;C:\Libraries\boost_1_64_0\lib64-msvc-14.1" ) )

  # Set paths and config for each build type.
  - cmd: if %compiler%==msvc2010 ( call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" %arch% )
  - cmd: if %compiler%==msvc2015 ( call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %arch% )
  - cmd: if %compiler%==msvc2017 ( call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=%arch% )
  - cmd: if %compiler%==cygwin ( set PYTHON=python3 ) else ( set PYTHON=python )
  # MinGW setup, lines are split to prevent "The input line is too long." error.
  - cmd: if %arch%==x86 ( set "PACMAN_ARCH=i686" ) else ( set "PACMAN_ARCH=x86_64" )
  - cmd: if %arch%==x86 ( set "PACMAN_BITS=32" ) else ( set "PACMAN_BITS=64" )
  - cmd: if %compiler%==msys2-mingw ( set "PATH=C:\msys64\mingw%PACMAN_BITS%\bin;%PATH%" )
  - cmd: if %compiler%==msys2-mingw ( set "MESON_PYTHON_PATH=C:\msys64\mingw%PACMAN_BITS%\bin" )
  - cmd: if %compiler%==msys2-mingw ( set "PYTHON=python3" )
  - cmd: if %compiler%==msys2-mingw ( C:\msys64\usr\bin\pacman -S --needed --noconfirm "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3" )
  # Cygwin
  - cmd: if not %compiler%==cygwin ( set "PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%;" )
  - cmd: if %compiler%==cygwin ( set WRAPPER=ci\run-in-cygwin.bat )
  - cmd: if %compiler%==cygwin ( %WRAPPER% which %PYTHON% ) else ( where %PYTHON% )

  # pkg-config is needed for the pkg-config tests on msvc
  - ps: If($Env:compiler.StartsWith('msvc')) {(new-object net.webclient).DownloadFile('http://nirbheek.in/files/binaries/pkg-config/win32/pkg-config.exe', 'C:\projects\meson\pkg-config.exe')}
  - cmd: if %compiler%==cygwin ( call ci\appveyor-install.bat )
  - ps: |
        If($Env:compiler -like 'msvc*') {
          (new-object net.webclient).DownloadFile(
            "https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/msmpisdk.msi",
            "C:\projects\msmpisdk.msi")
          c:\windows\system32\msiexec.exe /i C:\projects\msmpisdk.msi /quiet
          (new-object net.webclient).DownloadFile(
            "https://download.microsoft.com/download/D/B/B/DBB64BA1-7B51-43DB-8BF1-D1FB45EACF7A/MSMpiSetup.exe",
            "C:\projects\MSMpiSetup.exe")
          c:\projects\MSMpiSetup.exe -unattend -full
        }

build_script:
  - cmd: echo No build step.
  - cmd: if %backend%==ninja ( %WRAPPER% ninja.exe --version ) else ( MSBuild /version & echo. )

test_script:
  - cmd: echo Running tests for %arch% and %compiler% with the %backend% backend
  - cmd: "%WRAPPER% %PYTHON% run_tests.py --backend=%backend%"

on_finish:
  - set "PATH=%ORIG_PATH%"
  - appveyor PushArtifact meson-test-run.txt -DeploymentName "Text test logs"
  - appveyor PushArtifact meson-test-run.xml -DeploymentName "XML test logs"

cache:
  - C:\cache