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\* | |