version: '{build}' build: # no automatic build in script mode skip_commits: # Builds just testing something on Travis CI don't need to be # done on AppVeyor message: /\[Travis\]/ # Dont build, if only documentation was changed files: - '**/*.md' environment: enable_cxx: NO enable_ssl_dynamic_loading: YES enable_lua: NO enable_lua_shared: NO c_standard: auto cxx_standard: auto matrix: # Use default values - id: Default-x86 compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: NO no_cgi: NO no_caching: NO configuration: Release platform: x86 - id: Default-x64 compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: NO no_cgi: NO no_caching: NO configuration: Release platform: x64 # Use default values - id: Full-x86 compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x86 - id: Full-x64 compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x64 # Debug builds - id: Full-x86-Debug compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Debug platform: x86 - id: Full-x64-Debug compiler: msvc-19-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Debug platform: x64 # Minimum settings - id: Minimal-x86 compiler: msvc-19-seh build_shared: NO no_files: YES enable_ipv6: NO enable_ssl: NO enable_websockets: NO no_cgi: YES no_caching: YeS configuration: Release platform: x86 - id: Minimal-x64 compiler: msvc-19-seh build_shared: NO no_files: YES enable_ipv6: NO enable_ssl: NO enable_websockets: NO no_cgi: YES no_caching: YeS configuration: Release platform: x64 # Test shared and debug build - id: Shared-default-x86 compiler: msvc-19-seh build_shared: YES no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: NO no_cgi: NO no_caching: NO configuration: Release platform: x86 - id: Shared-default-x64 compiler: msvc-19-seh build_shared: YES no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: NO no_cgi: NO no_caching: NO configuration: Release platform: x64 # MinGW - id: Full-GCC-x64 compiler: gcc-5.1.0-posix build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x64 # Visual Studio 2010 - id: Full-VS2010-x86 compiler: msvc-16-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x86 # Visual Studio 2012 - id: Full-VS2012-x86 compiler: msvc-17-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x86 # Visual Studio 2013 - id: Full-VS2013-x86 compiler: msvc-18-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x86 - id: Full-VS2013-x64 compiler: msvc-18-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x64 # Visual Studio 2015 is default # Visual Studio 2017 is not yet default - id: Full-VS2017-x86 compiler: msvc-20-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x86 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - id: Full-VS2017-x64 compiler: msvc-20-seh build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO no_caching: NO configuration: Release platform: x64 APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 install: # Derive some extra information - set build_type=%configuration% - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_name=%%a") - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_version=%%b") - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_threading=%%c") - if "%platform%"=="x64" (set arch=x86_64) - if "%platform%"=="x86" (set arch=i686) # Download the specific version of MinGW - if "%compiler_name%"=="gcc" (@set "mingw_output_folder=C:\mingw-builds") - if "%compiler_name%"=="gcc" ( @for /f %%a in ( 'call mingw.cmd /version "%compiler_version%" /arch "%arch%" /threading "%compiler_threading%" "%mingw_output_folder%"' ) do @set "compiler_path=%%a" ) - if "%compiler_name%"=="gcc" (@set "mingw_log_folder=%mingw_output_folder%\logs") - if exist "%mingw_log_folder%" @for /f %%f in ('dir /b /oD /tc "%mingw_log_folder%"') do @set "mingw_log_file=%mingw_log_folder%\%%f" - if exist "%mingw_log_file%" powershell Push-AppveyorArtifact "%mingw_log_file%" -FileName mingw-download.log # Get OpenSSL # # OpenSSL should already be installed, according to # - http://help.appveyor.com/discussions/questions/1132-openssl-installation-issues # - https://github.com/appveyor/ci/issues/576 # - cmd: set PATH=%PATH%;C:\OpenSSL-Win32;C:\OpenSSL-Win64 - dir C:\OpenSSL-Win32 - dir C:\OpenSSL-Win64 - path before_build: # Remove sh.exe from the path otherwise CMake will complain: # "sh.exe was found in your PATH, here: C:/Program Files/Git/usr/bin/sh.exe" # and the MinGW build will not work (the Visual Studio build does not care). # See http://help.appveyor.com/discussions/problems/3193-cmake-building-for-mingw-issue-with-git-shexe # The entire directory containing sh.exe could be removed from the PATH environment: # - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% # However, this will also remove all other programs in this directory from the PATH. # In particular "patch" is still required. # So, just rename sh.exe: - ren "C:\Program Files\Git\usr\bin\sh.exe" _sh.exe # Set up mingw commands - if "%compiler_name%"=="gcc" (set "generator=MinGW Makefiles") - if "%compiler_name%"=="gcc" (set "build=mingw32-make -j4") - if "%compiler_name%"=="gcc" (set "test=mingw32-make test") # MSVC specific commands # Note: The minimum version officially supported for CivetWeb is VS2010. Older ones might work or not. - if "%compiler_version%"=="14" (set "vs_version=8" & set "vs_year=2005") - if "%compiler_version%"=="15" (set "vs_version=9" & set "vs_year=2008") - if "%compiler_version%"=="16" (set "vs_version=10" & set "vs_year=2010") - if "%compiler_version%"=="17" (set "vs_version=11" & set "vs_year=2012") - if "%compiler_version%"=="18" (set "vs_version=12" & set "vs_year=2013") - if "%compiler_version%"=="19" (set "vs_version=14" & set "vs_year=2015") - if "%compiler_version%"=="20" (set "vs_version=15" & set "vs_year=2017") - if "%compiler_name%"=="msvc" (set "generator=Visual Studio %vs_version% %vs_year%") - if "%compiler_name%"=="msvc" ( if "%platform%"=="x64" ( set "generator=%generator% Win64" ) ) - if %compiler_version% gtr 9 (set platform=%platform:x86=Win32%) - if "%compiler_name%"=="msvc" (set "msbuild_opts=/clp:OnlyErrors;OnlyWarnings /nologo /m /v:m") - if "%compiler_name%"=="msvc" (set "build=msbuild %msbuild_opts% /p:Configuration=%configuration% /p:Platform=%platform% civetweb.sln") - if "%compiler_name%"=="msvc" (set "test=msbuild %msbuild_opts% RUN_TESTS.vcxproj") # Add the compiler path if needed - if not "%compiler_path%"=="" (set "PATH=%PATH%;%compiler_path%") # git bash conflicts with MinGW makefiles - if "%generator%"=="MinGW Makefiles" (set "PATH=%PATH:C:\Program Files (x86)\Git\bin=%") # Useful locations - set "source_path=%cd%" - set "output_path=%source_path%\output" - set "build_path=%output_path%\build" - set "install_path=%output_path%\install" - set "third_party_dir=C:\third-party" # Check some settings of the build server - ver - cd - dir - ipconfig /all # Generate the build scripts with CMake - mkdir "%build_path%" - cd "%build_path%" - cmake --version - appveyor AddMessage -Category Information "Generating '%generator%'" - cmake -G "%generator%" -DCMAKE_BUILD_TYPE=%build_type% -DBUILD_SHARED_LIBS=%build_shared% -DCIVETWEB_SERVE_NO_FILES=%no_files% "-DCIVETWEB_THIRD_PARTY_DIR=%third_party_dir:\=\\%" -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES -DCIVETWEB_ENABLE_SSL=%enable_ssl% -DCIVETWEB_DISABLE_CGI=%no_cgi% -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=%enable_ssl_dynamic_loading% -DCIVETWEB_ENABLE_WEBSOCKETS=%enable_websockets% -DCIVETWEB_ENABLE_CXX=%enable_cxx% -DCIVETWEB_ENABLE_LUA=%enable_lua% -DCIVETWEB_ENABLE_LUA_SHARED=%enable_lua_shared% -DCIVETWEB_DISABLE_CACHING=%no_caching% -DCIVETWEB_C_STANDARD=%c_standard% -DCIVETWEB_CXX_STANDARD=%cxx_standard% "%source_path%" - powershell Push-AppveyorArtifact CMakeCache.txt - cd "%source_path%" build_script: - cd - cd "%build_path%" - appveyor AddMessage -Category Information "Build command '%build%'" - cmd /c "%build%" - cd "%source_path%" test_script: - cd "%build_path%" - appveyor AddMessage -Category Information "Test command '%build%'" - set CTEST_OUTPUT_ON_FAILURE=1 - cmd /c "%test%" - cd "%source_path%" - set "output_path=%source_path%\output" - set "build_path=%output_path%\build" - set "install_path=%output_path%\install" - set "third_party_dir=C:\third-party" after_test: - echo "Current directory:" - cd - dir - md dist - if "%build_type%"=="Release" (cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake") - dir dist\ - echo "Output directory:" - dir %output_path% - echo "Build directory:" - dir %build_path% - if "%build_type%"=="Release" (echo "Install directory:") - if "%build_type%"=="Release" (dir %install_path%) - if "%build_type%"=="Release" (dir %install_path%\bin) - if "%build_type%"=="Release" (dir %install_path%\include) - if "%build_type%"=="Release" (dir %install_path%\lib) - if "%build_type%"=="Release" (copy "%install_path%"\include dist\) - if "%build_type%"=="Release" (copy "%install_path%"\bin\*.exe dist\) - echo "Dist directory:" - dir dist\ matrix: fast_finish: false cache: - C:\mingw-builds -> mingw.cmd - C:\third-party -> **\CMakeLists.txt - C:\ssl artifacts: - path: dist\*