appveyor.yml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. version: '{build}'
  2. configuration:
  3. - Release
  4. platform:
  5. - x86
  6. - x64
  7. environment:
  8. enable_ssl: YES
  9. enable_ssl_dynamic_loading: YES
  10. enable_websockets: YES
  11. enable_cxx: NO
  12. enable_ipv6: NO
  13. enable_lua: NO
  14. enable_lua_shared: NO
  15. c_standard: auto
  16. cxx_standard: auto
  17. matrix:
  18. - compiler: gcc-5.1.0-posix
  19. build_shared: NO
  20. no_files: NO
  21. - compiler: gcc-5.1.0-posix
  22. build_shared: YES
  23. no_files: NO
  24. - compiler: msvc-18-seh
  25. build_shared: NO
  26. no_files: NO
  27. - compiler: msvc-18-seh
  28. build_shared: YES
  29. no_files: NO
  30. - compiler: gcc-5.1.0-posix
  31. build_shared: YES
  32. no_files: YES
  33. - compiler: msvc-18-seh
  34. build_shared: YES
  35. no_files: YES
  36. install:
  37. # Derive some extra information
  38. - set build_type=%configuration%
  39. - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_name=%%a")
  40. - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_version=%%b")
  41. - for /f "tokens=1-3 delims=-" %%a in ("%compiler%") do (@set "compiler_threading=%%c")
  42. - if "%platform%"=="x64" (set arch=x86_64)
  43. - if "%platform%"=="x86" (set arch=i686)
  44. # Download the specific version of MinGW
  45. - if "%compiler_name%"=="gcc" (@set "mingw_output_folder=C:\mingw-builds")
  46. - if "%compiler_name%"=="gcc" (
  47. @for /f %%a in (
  48. 'call mingw.cmd
  49. /version "%compiler_version%"
  50. /arch "%arch%"
  51. /threading "%compiler_threading%"
  52. "%mingw_output_folder%"'
  53. ) do @set "compiler_path=%%a"
  54. )
  55. - if "%compiler_name%"=="gcc" (@set "mingw_log_folder=%mingw_output_folder%\logs")
  56. - 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"
  57. - if exist "%mingw_log_file%" powershell Push-AppveyorArtifact "%mingw_log_file%" -FileName mingw-download.log
  58. # Get OpenSSL
  59. - if not exist C:\ssl\ (md C:\ssl\)
  60. - if not exist C:\ssl\Win32OpenSSL.exe (curl http://slproweb.com/download/Win32OpenSSL-1_0_2d.exe -o C:\ssl\Win32OpenSSL.exe)
  61. - if not exist C:\ssl\Win64OpenSSL.exe (curl http://slproweb.com/download/Win64OpenSSL-1_0_2d.exe -o C:\ssl\Win64OpenSSL.exe)
  62. - C:\ssl\Win32OpenSSL.exe /SILENT /LOG="C:\ssl\install32.log"
  63. - C:\ssl\Win64OpenSSL.exe /SILENT /LOG="C:\ssl\install64.log"
  64. before_build:
  65. # Set up mingw commands
  66. - if "%compiler_name%"=="gcc" (set "generator=MinGW Makefiles")
  67. - if "%compiler_name%"=="gcc" (set "build=mingw32-make -j4")
  68. - if "%compiler_name%"=="gcc" (set "test=mingw32-make CTEST_OUTPUT_ON_FAILURE=1 test")
  69. # MSVC specific commands
  70. - if "%compiler_version%"=="14" (set "vs_version=8" & set "vs_year=2005")
  71. - if "%compiler_version%"=="15" (set "vs_version=9" & set "vs_year=2008")
  72. - if "%compiler_version%"=="16" (set "vs_version=10" & set "vs_year=2010")
  73. - if "%compiler_version%"=="17" (set "vs_version=11" & set "vs_year=2012")
  74. - if "%compiler_version%"=="18" (set "vs_version=12" & set "vs_year=2013")
  75. - if "%compiler_version%"=="19" (set "vs_version=14" & set "vs_year=2015")
  76. - if "%compiler_name%"=="msvc" (set "generator=Visual Studio %vs_version% %vs_year%")
  77. - if "%compiler_name%"=="msvc" (
  78. if "%platform%"=="x64" (
  79. set "generator=%generator% Win64"
  80. )
  81. )
  82. - if %compiler_version% gtr 9 (set platform=%platform:x86=Win32%)
  83. - if "%compiler_name%"=="msvc" (set "msbuild_opts=/clp:OnlyErrors;OnlyWarnings /nologo /m /v:m")
  84. - if "%compiler_name%"=="msvc" (set "build=msbuild %msbuild_opts% /p:Configuration=%configuration% /p:Platform=%platform% civetweb.sln")
  85. - if "%compiler_name%"=="msvc" (set "test=msbuild %msbuild_opts% RUN_TESTS.vcxproj")
  86. # Add the compiler path if needed
  87. - if not "%compiler_path%"=="" (set "PATH=%PATH%;%compiler_path%")
  88. # git bash conflicts with MinGW makefiles
  89. - if "%generator%"=="MinGW Makefiles" (set "PATH=%PATH:C:\Program Files (x86)\Git\bin=%")
  90. # Useful locations
  91. - set "source_path=%cd%"
  92. - set "output_path=%source_path%\output"
  93. - set "build_path=%output_path%\build"
  94. - set "install_path=%output_path%\install"
  95. - set "third_party_dir=C:\third-party"
  96. # Generate the build files
  97. - mkdir "%build_path%"
  98. - cd "%build_path%"
  99. - cmake --version
  100. - appveyor AddMessage -Category Information "Generating '%generator%'"
  101. - cmake
  102. -G "%generator%"
  103. -DCMAKE_BUILD_TYPE=%build_type%
  104. -DBUILD_SHARED_LIBS=%build_shared%
  105. -DCIVETWEB_SERVE_NO_FILES=%no_files%
  106. "-DCIVETWEB_THIRD_PARTY_DIR=%third_party_dir:\=\\%"
  107. -DCIVETWEB_ENABLE_THIRD_PARTY_OUTPUT=YES
  108. -DCIVETWEB_ENABLE_SSL=%enable_ssl%
  109. -DCIVETWEB_ENABLE_SSL_DYNAMIC_LOADING=%enable_ssl_dynamic_loading%
  110. -DCIVETWEB_ENABLE_WEBSOCKETS=%enable_websockets%
  111. -DCIVETWEB_ENABLE_CXX=%enable_cxx%
  112. -DCIVETWEB_ENABLE_LUA=%enable_lua%
  113. -DCIVETWEB_ENABLE_LUA_SHARED=%enable_lua_shared%
  114. -DCIVETWEB_C_STANDARD=%c_standard%
  115. -DCIVETWEB_CXX_STANDARD=%cxx_standard%
  116. "%source_path%"
  117. - powershell Push-AppveyorArtifact CMakeCache.txt
  118. - cd "%source_path%"
  119. build_script:
  120. - cd
  121. - cd "%build_path%"
  122. - appveyor AddMessage -Category Information "Build command '%build%'"
  123. - cmd /c "%build%"
  124. - cd "%source_path%"
  125. test_script:
  126. - cd "%build_path%"
  127. - appveyor AddMessage -Category Information "Test command '%build%'"
  128. - cmd /c "%test%"
  129. - cd "%source_path%"
  130. after_test:
  131. - cmake "-DCMAKE_INSTALL_PREFIX=%install_path%" -P "%build_path%/cmake_install.cmake"
  132. matrix:
  133. fast_finish: true
  134. cache:
  135. - C:\mingw-builds -> mingw.cmd
  136. - C:\third-party -> **\CMakeLists.txt
  137. - C:\ssl