| # Cap'n Proto AppVeyor configuration |
| # |
| # See https://www.appveyor.com/docs/appveyor-yml/ for configuration options. |
| # |
| # This script configures AppVeyor to: |
| # - Use CMake to ... |
| # build Cap'n Proto with VS2017. |
| # build Cap'n Proto samples with VS2017. |
| # build Cap'n Proto with MinGW. |
| # build Cap'n Proto with Cygwin. |
| |
| version: "{build}" |
| |
| branches: |
| only: |
| - master |
| - /release-.*/ |
| # Don't build non-master branches (unless they open a pull request). |
| |
| image: Visual Studio 2017 |
| # AppVeyor build worker image (VM template). |
| |
| shallow_clone: true |
| # Fetch repository as zip archive. |
| |
| environment: |
| MINGW_DIR: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64 |
| BUILD_TYPE: debug |
| |
| matrix: |
| # TODO(someday): Add MSVC x64 builds, MinGW x86 build? |
| |
| - CMAKE_GENERATOR: Visual Studio 15 2017 |
| BUILD_NAME: vs2017 |
| EXTRA_BUILD_FLAGS: # /maxcpucount |
| # TODO(someday): Right now /maxcpucount occasionally expresses a filesystem-related race: |
| # capnp-capnpc++ complains that it can't create test.capnp.h. |
| |
| - CMAKE_GENERATOR: MinGW Makefiles |
| BUILD_NAME: mingw |
| EXTRA_BUILD_FLAGS: -j2 |
| |
| - BUILD_NAME: cygwin |
| |
| install: |
| - ps: Get-Command sh.exe -All | Remove-Item |
| # CMake refuses to generate MinGW Makefiles if sh.exe is in the PATH |
| |
| before_build: |
| - set PATH=%MINGW_DIR%\bin;%PATH% |
| - set BUILD_DIR=build-%BUILD_NAME% |
| - set INSTALL_PREFIX=%CD%\capnproto-c++-%BUILD_NAME% |
| - cmake --version |
| |
| build_script: |
| - echo "Building Cap'n Proto with %CMAKE_GENERATOR%" |
| - if NOT "%BUILD_NAME%"=="cygwin" cmake -Hc++ -B%BUILD_DIR% -G "%CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_INSTALL_PREFIX=%INSTALL_PREFIX% |
| - if NOT "%BUILD_NAME%"=="cygwin" cmake --build %BUILD_DIR% --config %BUILD_TYPE% --target install -- %EXTRA_BUILD_FLAGS% |
| # MinGW wants the build type at configure-time while MSVC wants the build type at build-time. We |
| # can satisfy both by passing the build type to both cmake invocations. We have to suffer a |
| # warning, but both generators will work. |
| |
| - echo "Building Cap'n Proto samples with %CMAKE_GENERATOR%" |
| - if NOT "%BUILD_NAME%"=="cygwin" cmake -Hc++/samples -B%BUILD_DIR%-samples -G "%CMAKE_GENERATOR%" -DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_PREFIX_PATH=%INSTALL_PREFIX% |
| - if NOT "%BUILD_NAME%"=="cygwin" cmake --build %BUILD_DIR%-samples --config %BUILD_TYPE% |
| |
| # Cygwin build -- use super-test.sh like other Unix builds. |
| # But, we need to install Cygwin's cmake package in order to pass the cmake part of super-test. |
| # Somewhat ridiculously, this requires downloading Cygwin's setup program and running it. |
| - if "%BUILD_NAME%"=="cygwin" appveyor DownloadFile "https://cygwin.com/setup-x86_64.exe" -FileName "C:\cygwin64\setup-x86_64.exe" |
| - if "%BUILD_NAME%"=="cygwin" C:\cygwin64\setup-x86_64.exe --quiet-mode --no-shortcuts --upgrade-also --root "C:\cygwin64" --packages cmake |
| - if "%BUILD_NAME%"=="cygwin" C:\cygwin64\bin\bash -lc 'cd /cygdrive/c/projects/capnproto; ./super-test.sh -j2 quick' |
| |
| test_script: |
| # Sleep a little to prevent interleaving test output with build output. |
| - if NOT "%BUILD_NAME%"=="cygwin" timeout /t 2 |
| - if NOT "%BUILD_NAME%"=="cygwin" cd %BUILD_DIR%\src |
| - if NOT "%BUILD_NAME%"=="cygwin" ctest -V -C %BUILD_TYPE% |