appveyor.yml: Let 'nmake' do builds in parallel on all CPU cores
[openssl.git] / appveyor.yml
1 image:
2     - Visual Studio 2017
3
4 platform:
5     - x64
6     - x86
7
8 environment:
9     fast_finish: true
10     matrix:
11         - VSVER: 15
12
13 configuration:
14     - shared
15     - plain
16     - minimal
17
18 before_build:
19     - ps: >-
20         Install-Module VSSetup -Scope CurrentUser
21     - ps: >-
22         Get-VSSetupInstance -All
23     - ps: >-
24         gci env:* | sort-object name
25     - ps: >-
26         If ($env:Platform -Match "x86") {
27             $env:VCVARS_PLATFORM="x86"
28             $env:TARGET="VC-WIN32 no-asm --strict-warnings"
29         } Else {
30             $env:VCVARS_PLATFORM="amd64"
31             $env:TARGET="VC-WIN64A-masm"
32         }
33     - ps: >-
34         If ($env:Configuration -Match "shared") {
35             $env:SHARED="no-makedepend"
36         } ElseIf ($env:Configuration -Match "minimal") {
37             $env:SHARED="no-shared no-dso no-makedepend no-aria no-async no-autoload-config no-blake2 no-bf no-camellia no-cast no-chacha no-cmac no-cms no-cmp no-comp no-ct no-des no-dgram no-dh no-dsa no-ec no-ec2m no-engine no-filenames no-idea no-ktls no-md4 no-multiblock no-nextprotoneg no-ocsp no-ocb no-poly1305 no-psk no-rc2 no-rc4 no-rmd160 no-seed no-siphash no-siv no-sm3 no-sm4 no-srp no-srtp no-ssl3-method no-ts no-ui-console no-whirlpool no-asm -DOPENSSL_SMALL_FOOTPRINT"
38         } Else {
39             $env:SHARED="no-shared no-makedepend"
40         }
41     - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" %VCVARS_PLATFORM%
42     - mkdir _build
43     - cd _build
44     - perl ..\Configure %TARGET% %SHARED%
45     - perl configdata.pm --dump
46     - cd ..
47     - ps: >-
48         if (-not $env:APPVEYOR_PULL_REQUEST_NUMBER`
49             -or (&git log -1 $env:APPVEYOR_PULL_REQUEST_HEAD_COMMIT |
50                  Select-String "\[extended tests\]") ) {
51             $env:EXTENDED_TESTS="yes"
52         }
53     - ps: >-
54         If ($env:BUILDONLY -or $env:MAKEVERBOSE) {
55             $env:NMAKE="nmake"
56         } Else {
57             $env:NMAKE="nmake /S"
58         }
59
60 build_script:
61     - cd _build
62     - ps: >-
63         If ($env:Configuration -Match "shared" -or $env:EXTENDED_TESTS) {
64             cmd /c "%NMAKE% build_all_generated 2>&1"
65             # Unfortunately, CL=/MP would not have parallelizing effect
66             cmd /c "%NMAKE% PERL=no-perl 2>&1"
67         }
68     - cd ..
69
70 test_script:
71     - cd _build
72     - ps: >-
73         If ($env:Configuration -Match "shared" -or $env:EXTENDED_TESTS) {
74             # Unfortunately, HARNESS_JOBS=4 would not have parallelizing effect
75             if ($env:EXTENDED_TESTS) {
76                 cmd /c "%NMAKE% test HARNESS_VERBOSE_FAILURE=yes 2>&1"
77             } Else {
78                 cmd /c "%NMAKE% test HARNESS_VERBOSE_FAILURE=yes TESTS=-test_fuzz 2>&1"
79             }
80         }
81     - ps: >-
82         if ($env:EXTENDED_TESTS) {
83             mkdir ..\_install
84             cmd /c "%NMAKE% install DESTDIR=..\_install 2>&1"
85         }
86     - cd ..