version: '{build}' configuration: - Release platform: - x86 - x64 environment: enable_cxx: NO enable_ssl_dynamic_loading: YES enable_lua: NO enable_lua_shared: NO c_standard: auto cxx_standard: auto matrix: - compiler: msvc-18-seh build_shared: NO no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: msvc-18-seh build_shared: YES no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: msvc-18-seh build_shared: YES no_files: YES enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: gcc-5.1.0-posix build_shared: NO no_files: YES enable_ipv6: NO enable_ssl: NO enable_websockets: NO no_cgi: YES - compiler: gcc-5.1.0-posix build_shared: NO no_files: NO enable_ipv6: YES enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: gcc-5.1.0-posix build_shared: NO no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: gcc-5.1.0-posix build_shared: YES no_files: NO enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO - compiler: gcc-5.1.0-posix build_shared: YES no_files: YES enable_ipv6: NO enable_ssl: YES enable_websockets: YES no_cgi: NO 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 - if not exist C:\ssl\ (md C:\ssl\) - if not exist C:\ssl\Win32OpenSSL.exe (curl http://slproweb.com/download/Win32OpenSSL-1_0_2e.exe -o C:\ssl\Win32OpenSSL.exe) - if not exist C:\ssl\Win64OpenSSL.exe (curl http://slproweb.com/download/Win64OpenSSL-1_0_2e.exe -o C:\ssl\Win64OpenSSL.exe) - dir C:\ssl - C:\ssl\Win32OpenSSL.exe /SILENT /LOG="C:\ssl\install32.log" - C:\ssl\Win64OpenSSL.exe /SILENT /LOG="C:\ssl\install64.log" - dir C:\ssl before_build: # 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 CTEST_OUTPUT_ON_FAILURE=1 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_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_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%'" - cmd /c "%test%" - cd "%source_path%" after_test: - cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake" matrix: fast_finish: true cache: - C:\mingw-builds -> mingw.cmd - C:\third-party -> **\CMakeLists.txt - C:\ssl