# Cap'n Proto AppVeyor configuration # # See https://www.appveyor.com/docs/appveyor-yml/ for configuration options. # # This script configures AppVeyor to: # - Download and unzip MinGW-w64 4.8.5 for x86_64, the minimum gcc version Cap'n Proto advertises # support for. # - Use CMake to ... # build Cap'n Proto with MinGW. # build Cap'n Proto with VS2017. # build Cap'n Proto samples with VS2017. 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. cache: - x86_64-4.8.5-release-win32-seh-rt_v4-rev0.7z environment: MINGW_DIR: mingw64 MINGW_URL: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.5/threads-win32/seh/x86_64-4.8.5-release-win32-seh-rt_v4-rev0.7z/download MINGW_ARCHIVE: x86_64-4.8.5-release-win32-seh-rt_v4-rev0.7z 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: - if not exist "%MINGW_ARCHIVE%" appveyor DownloadFile "%MINGW_URL%" -FileName "%MINGW_ARCHIVE%" - 7z x -y "%MINGW_ARCHIVE%" > nul - ps: Get-Command sh.exe -All | Remove-Item # CMake refuses to generate MinGW Makefiles if sh.exe is in the PATH - if "%BUILD_NAME%"=="cygwin" appveyor DownloadFile "http://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 before_build: - set PATH=%CD%\%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 - if "%BUILD_NAME%"=="cygwin" C:\cygwin64\bin\bash -lc 'cd /cygdrive/c/projects/capnproto; ./appveyor-cygwin.sh' test_script: - timeout /t 2 # Sleep a little to prevent interleaving test output with build output. - cd %BUILD_DIR%\src - if NOT "%BUILD_NAME%"=="cygwin" ctest -V -C %BUILD_TYPE%