blob: 87455a2bbb748c47e00f3cb2f6a971622e71d69b [file] [log] [blame]
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\*