appveyor.yml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. version: build-{build}
  2. shallow_clone: true
  3. os: Visual Studio 2013
  4. environment:
  5. CMAKE_GENERATOR: "Visual Studio 12 2013"
  6. MSVCVERSION: "v120"
  7. MSVCYEAR: "vs2013"
  8. ENABLE_DRAFTS: ON
  9. matrix:
  10. - platform: x64
  11. configuration: Release
  12. WITH_LIBSODIUM: ON
  13. ENABLE_CURVE: ON
  14. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
  15. CMAKE_GENERATOR: "Visual Studio 16 2019"
  16. MSVCVERSION: "v142"
  17. MSVCYEAR: "vs2019"
  18. ARTIFACT_NAME: v142-x64
  19. - platform: Win32
  20. configuration: Release
  21. WITH_LIBSODIUM: OFF # unavailable build files for VS2008
  22. ENABLE_CURVE: ON
  23. CMAKE_GENERATOR: "Visual Studio 9 2008"
  24. MSVCVERSION: "v90"
  25. MSVCYEAR: "vs2008"
  26. ARTIFACT_NAME: v90
  27. - platform: Win32
  28. configuration: Release
  29. WITH_LIBSODIUM: ON
  30. ENABLE_CURVE: ON
  31. CMAKE_GENERATOR: "Visual Studio 10 2010"
  32. MSVCVERSION: "v100"
  33. MSVCYEAR: "vs2010"
  34. ARTIFACT_NAME: v100
  35. - platform: Win32
  36. configuration: Release
  37. WITH_LIBSODIUM: ON
  38. ENABLE_CURVE: ON
  39. ARTIFACT_NAME: v120
  40. - platform: x64
  41. configuration: Release
  42. WITH_LIBSODIUM: ON
  43. ENABLE_CURVE: ON
  44. ARTIFACT_NAME: v120-x64
  45. - platform: Win32
  46. configuration: Release
  47. POLLER: epoll
  48. API_POLLER: poll
  49. WITH_LIBSODIUM: ON
  50. ENABLE_CURVE: ON
  51. TEST_OPTIONS: '-E "(test_many_sockets)"'
  52. ARTIFACT_NAME: v120-epoll
  53. - platform: Win32
  54. configuration: Debug
  55. WITH_LIBSODIUM: ON
  56. ENABLE_CURVE: ON
  57. TEST_OPTIONS: '-E "(test_many_sockets)"'
  58. ARTIFACT_NAME: v120-gd
  59. - platform: x64
  60. configuration: Debug
  61. WITH_LIBSODIUM: ON
  62. ENABLE_CURVE: ON
  63. TEST_OPTIONS: '-E "(test_many_sockets)"'
  64. ARTIFACT_NAME: v120-gd-x64
  65. - platform: Win32
  66. configuration: Release
  67. WITH_LIBSODIUM: OFF
  68. ENABLE_CURVE: OFF
  69. ENABLE_DRAFTS: OFF
  70. ARTIFACT_NAME: v120-nocurve
  71. - platform: Win32
  72. configuration: Release
  73. WITH_LIBSODIUM: ON
  74. ENABLE_CURVE: ON
  75. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
  76. CMAKE_GENERATOR: "Visual Studio 14 2015"
  77. MSVCVERSION: "v140"
  78. MSVCYEAR: "vs2015"
  79. ARTIFACT_NAME: v140
  80. - platform: x64
  81. configuration: Release
  82. WITH_LIBSODIUM: ON
  83. ENABLE_CURVE: ON
  84. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
  85. CMAKE_GENERATOR: "Visual Studio 14 2015"
  86. MSVCVERSION: "v140"
  87. MSVCYEAR: "vs2015"
  88. ARTIFACT_NAME: v140-x64
  89. - platform: Win32
  90. configuration: Release
  91. WITH_LIBSODIUM: ON
  92. ENABLE_CURVE: ON
  93. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  94. CMAKE_GENERATOR: "Visual Studio 15 2017"
  95. MSVCVERSION: "v141"
  96. MSVCYEAR: "vs2017"
  97. TEST_OPTIONS: '-E "(test_many_sockets)"'
  98. ARTIFACT_NAME: v141
  99. - platform: x64
  100. configuration: Release
  101. WITH_LIBSODIUM: ON
  102. ENABLE_CURVE: ON
  103. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  104. CMAKE_GENERATOR: "Visual Studio 15 2017"
  105. MSVCVERSION: "v141"
  106. MSVCYEAR: "vs2017"
  107. TEST_OPTIONS: '-E "(test_many_sockets)"'
  108. ARTIFACT_NAME: v141-x64
  109. - platform: cygwin64
  110. WITH_LIBSODIUM: OFF
  111. ENABLE_CURVE: ON
  112. CMAKE_GENERATOR: "Unix Makefiles"
  113. ARTIFACT_NAME: cygwin64
  114. - platform: mingw64
  115. WITH_LIBSODIUM: OFF
  116. ENABLE_CURVE: ON
  117. CMAKE_GENERATOR: "MSYS Makefiles"
  118. ARTIFACT_NAME: mingw64
  119. - platform: Win32-uwp
  120. configuration: Debug
  121. WITH_LIBSODIUM: OFF
  122. ENABLE_CURVE: OFF
  123. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  124. CMAKE_GENERATOR: "Visual Studio 15 2017"
  125. MSVCVERSION: "v141"
  126. MSVCYEAR: "vs2017"
  127. ARTIFACT_NAME: v141-gd-uwp
  128. CMAKE_SYSTEM_NAME: WindowsStore
  129. CMAKE_SYSTEM_VERSION: 10.0.18362
  130. EXTRA_FLAGS: -DCMAKE_SYSTEM_NAME=%CMAKE_SYSTEM_NAME% -DCMAKE_SYSTEM_VERSION=%CMAKE_SYSTEM_VERSION% -DBUILD_TESTS=OFF
  131. - platform: Win32-uwp
  132. configuration: Release
  133. WITH_LIBSODIUM: OFF
  134. ENABLE_CURVE: OFF
  135. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  136. CMAKE_GENERATOR: "Visual Studio 15 2017"
  137. MSVCVERSION: "v141"
  138. MSVCYEAR: "vs2017"
  139. ARTIFACT_NAME: v141-uwp
  140. CMAKE_SYSTEM_NAME: WindowsStore
  141. CMAKE_SYSTEM_VERSION: 10.0.18362
  142. EXTRA_FLAGS: -DCMAKE_SYSTEM_NAME=%CMAKE_SYSTEM_NAME% -DCMAKE_SYSTEM_VERSION=%CMAKE_SYSTEM_VERSION% -DBUILD_TESTS=OFF
  143. matrix:
  144. fast_finish: false
  145. allow_failures:
  146. - platform: cygwin64 # TODO allow failures until tests are fixed
  147. - platform: mingw64 # TODO allow failures until tests are fixed
  148. init:
  149. - cmd: if "%NO_PR%"=="TRUE" (
  150. if "%APPVEYOR_PULL_REQUEST_NUMBER%" NEQ "" (
  151. echo "Build is disabled for PRs, aborting" &&
  152. appveyor exit
  153. )
  154. )
  155. #- ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
  156. - cmake --version
  157. - msbuild /version
  158. - cmd: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0 /f
  159. cache:
  160. - C:\projects\libsodium
  161. - C:\cygwin64\var\cache\setup
  162. install:
  163. - cmd: if "%Platform%"=="cygwin64" C:\cygwin64\setup-x86_64.exe --quiet-mode --no-shortcuts --upgrade-also --packages cmake,cygwin-devel,gcc-g++,libncurses-devel,make,pkg-config
  164. - cmd: if "%Platform%"=="cygwin64" set PATH=C:\cygwin64\bin;%PATH%
  165. - cmd: if "%Platform%"=="mingw64" C:\msys64\usr\bin\bash -lc "pacman -Qg"
  166. - cmd: if "%Platform%"=="mingw64" set PATH=C:\msys64\usr\bin;%PATH%
  167. - cmd: if "%Platform%"=="x64" (if not "%MSVCVERSION%"=="v142" set "CMAKE_GENERATOR=%CMAKE_GENERATOR% Win64")
  168. - cmd: echo "Generator='%CMAKE_GENERATOR%'"
  169. - cmd: echo "Platform='%Platform%'"
  170. - cmd: if "%WITH_LIBSODIUM%"=="ON" set LIBSODIUMDIR=C:\projects\libsodium
  171. - cmd: if "%WITH_LIBSODIUM%"=="ON" (
  172. if not exist "%LIBSODIUMDIR%" (
  173. git clone --branch stable --depth 1 --quiet "https://github.com/jedisct1/libsodium.git" %LIBSODIUMDIR%
  174. ) else (
  175. git -C "%LIBSODIUMDIR%" pull
  176. )
  177. )
  178. - cmd: if "%WITH_LIBSODIUM%"=="ON" msbuild /v:minimal /maxcpucount:%NUMBER_OF_PROCESSORS% /p:Configuration=%Configuration%DLL %LIBSODIUMDIR%\builds\msvc\%MSVCYEAR%\libsodium\libsodium.vcxproj
  179. - cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_LIBRARY_DIR="%LIBSODIUMDIR%\bin\%Platform%\%Configuration%\%MSVCVERSION%\dynamic"
  180. - cmd: if "%WITH_LIBSODIUM%"=="ON" set SODIUM_INCLUDE_DIR="%LIBSODIUMDIR%\src\libsodium\include"
  181. - ps: if (${env:WITH_LIBSODIUM} -eq "ON") { Copy-Item "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\libsodium.lib" -Destination "C:\projects\libsodium\bin\${env:Platform}\${env:Configuration}\${env:MSVCVERSION}\dynamic\sodium.lib" }
  182. clone_folder: C:\projects\libzmq
  183. before_build:
  184. - cmd: set LIBZMQ_SRCDIR=%cd%
  185. - cmd: set LIBZMQ_BUILDDIR=C:\projects\build_libzmq
  186. # TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
  187. # - cmd: curl -L https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.1.0.1141-windows.zip -o sonar-scanner-cli-3.1.0.1141-windows.zip
  188. # - cmd: unzip sonar-scanner-cli-3.1.0.1141-windows.zip
  189. # - cmd: set BUILDLOG="%LIBZMQ_SRCDIR%\build.log"
  190. - cmd: md "%LIBZMQ_BUILDDIR%"
  191. - cd "%LIBZMQ_BUILDDIR%"
  192. - cmd: if "%PLATFORM%" == "cygwin64" set APPVEYOR_BUILD_FOLDER=/cygdrive/C/projects/libzmq
  193. - cmd: if "%ENABLE_ANALYSIS%"=="ON" ( set LIBZMQ_WERROR="OFF" ) else ( set LIBZMQ_WERROR="ON" )
  194. - cmd: cmake -D CMAKE_INCLUDE_PATH="%SODIUM_INCLUDE_DIR%" -D CMAKE_LIBRARY_PATH="%SODIUM_LIBRARY_DIR%" -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D ENABLE_DRAFTS="%ENABLE_DRAFTS%" -D ENABLE_ANALYSIS="%ENABLE_ANALYSIS%" -D ENABLE_CURVE="%ENABLE_CURVE%" -D API_POLLER="%API_POLLER%" -D POLLER="%POLLER%" %EXTRA_FLAGS% -D WITH_LIBSODIUM="%WITH_LIBSODIUM%" -D LIBZMQ_WERROR="%LIBZMQ_WERROR%" -G "%CMAKE_GENERATOR%" "%APPVEYOR_BUILD_FOLDER%"
  195. - cmd: cd "%LIBZMQ_SRCDIR%"
  196. - ps: $env:ZMQ_VERSION_MAJOR = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_MAJOR ([0-9]+).*").Matches.Groups[1].Value
  197. - ps: $env:ZMQ_VERSION_MINOR = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_MINOR ([0-9]+).*").Matches.Groups[1].Value
  198. - ps: $env:ZMQ_VERSION_PATCH = (Select-String -Path .\include\zmq.h -Pattern ".*#define ZMQ_VERSION_PATCH ([0-9]+).*").Matches.Groups[1].Value
  199. - ps: $env:ZMQ_VERSION = "${env:ZMQ_VERSION_MAJOR}.${env:ZMQ_VERSION_MINOR}.${env:ZMQ_VERSION_PATCH}"
  200. - cmd: echo "ZMQ_VERSION is %ZMQ_VERSION%"
  201. build_script:
  202. - cmd: set verbosity=Minimal
  203. - cmd: if "%MSVCYEAR%"=="vs2008" set verbosity=Normal
  204. - cmd: if "%MSVCYEAR%"=="vs2008" set path=C:\Windows\Microsoft.NET\Framework\v3.5;%path%
  205. - cmd: cd "%LIBZMQ_BUILDDIR%"
  206. - cmd: if "%PLATFORM:~0,5%" == "Win32" (
  207. if "%MSVCYEAR%"=="vs2008" (
  208. cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install
  209. ) else (
  210. cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
  211. )
  212. )
  213. - cmd: if "%PLATFORM%" == "x64" (
  214. cmake --build %LIBZMQ_BUILDDIR% --config %configuration% --target install -- -verbosity:Minimal -maxcpucount -logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
  215. )
  216. - cmd: if "%PLATFORM%" == "cygwin64" (
  217. cmake --build . -- -j5
  218. )
  219. - cmd: if "%PLATFORM%" == "mingw64" (
  220. cmake --build . -- -j5
  221. )
  222. # TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
  223. # build_script:
  224. # - cmd: msbuild %LIBZMQ_BUILDDIR%\ZeroMQ.sln /verbosity:detailed >%BUILDLOG%
  225. after_build:
  226. # TODO this does not work with sonarcloud.io, as it misses the sonar-cxx plugin
  227. # - cmd: cd "%LIBZMQ_SRCDIR%"
  228. # - cmd: dir
  229. # - cmd: sonar-scanner-3.1.0.1141-windows\bin\sonar-scanner
  230. # -Dsonar.scm.provider=git
  231. # -Dsonar.projectKey=libzmq-msvc
  232. # -Dsonar.organization=sigiesec-github
  233. # -Dsonar.sources=include,src,tests,unittests
  234. # -Dsonar.host.url=https://sonarcloud.io
  235. # -Dsonar.login=%SONARQUBE_TOKEN%
  236. # -Dsonar.cxx.compiler.parser="Visual C++"
  237. # -Dsonar.cxx.compiler.reportPath=build.log
  238. # -Dsonar.cxx.compiler.charset=UTF-8
  239. # -Dsonar.cxx.compiler.regex=^(?<filename>.*)\\((?<line>[0-9]+)\\):\\x20warning\\x20(?<id>C\\d\\d\\d\\d):(?<message>.*)$
  240. # TODO this should be done differently, using the INSTALL cmake target, the current handling depends on the details of the CMakeLists.txt
  241. - cmd: cd %LIBZMQ_BUILDDIR%\bin\%Configuration%"
  242. - cmd: if "%WITH_LIBSODIUM%"=="ON" copy "%SODIUM_LIBRARY_DIR%\libsodium.dll" .
  243. - cmd: copy "%LIBZMQ_SRCDIR%\include\zmq.h" .
  244. - cmd: copy ..\..\lib\%Configuration%\libzmq*.lib . & exit 0
  245. - cmd: 7z a -y -bd -mx=9 libzmq.zip *.exe *.dll *.pdb *.h *.lib
  246. - ps: Push-AppveyorArtifact "libzmq.zip" -Filename "libzmq-${env:ARTIFACT_NAME}-${env:ZMQ_VERSION_MAJOR}_${env:ZMQ_VERSION_MINOR}_${env:ZMQ_VERSION_PATCH}.zip"
  247. test_script:
  248. - cmd: cd "%LIBZMQ_BUILDDIR%"
  249. # TODO run tests in parallel only on selected platforms, since they fail on others, see https://github.com/zeromq/libzmq/issues/3123
  250. - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013" set PARALLELIZE=ON
  251. - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015" set PARALLELIZE=ON
  252. - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 12 2013 Win64" set PARALLELIZE=ON
  253. - cmd: if "%CMAKE_GENERATOR%"=="Visual Studio 14 2015 Win64" set PARALLELIZE=ON
  254. - cmd: if not defined TEST_OPTIONS set "TEST_OPTIONS= "
  255. - cmd: if "%PARALLELIZE%"=="ON" (
  256. echo "Running tests in parallel" &&
  257. set TEST_OPTIONS=%TEST_OPTIONS% -j5
  258. )
  259. - cmd: if "%APPVEYOR_REPO_TAG%"=="false" (ctest -C "%Configuration%" -V %TEST_OPTIONS%)
  260. deploy:
  261. - provider: BinTray
  262. username: somdoron
  263. api_key:
  264. secure: B4TC4GvUMbwX13Skh2Kvyc6SnqLkjNS9W0gtN2yxUC2Y4oQSCK2F4eRgtpMpCasg
  265. subject: zeromq
  266. repo: generic
  267. package: libzmq
  268. publish: true
  269. override: true
  270. version: ${ZMQ_VERSION}
  271. on:
  272. APPVEYOR_REPO_TAG: true
  273. # the analysis build is repeated; apparently appveyor only uses the first section that matches some branch
  274. for:
  275. -
  276. branches:
  277. only:
  278. - master
  279. environment:
  280. matrix:
  281. - platform: Win32
  282. configuration: Release
  283. API_POLLER: poll
  284. WITH_LIBSODIUM: ON
  285. ENABLE_CURVE: ON
  286. NO_PR: TRUE
  287. - platform: x64
  288. configuration: Release
  289. WITH_LIBSODIUM: ON
  290. ENABLE_CURVE: ON
  291. NO_PR: TRUE
  292. - platform: Win32
  293. configuration: Release
  294. WITH_LIBSODIUM: ON
  295. ENABLE_CURVE: ON
  296. NO_PR: TRUE
  297. - platform: Win32
  298. configuration: Release
  299. WITH_LIBSODIUM: ON
  300. ENABLE_CURVE: ON
  301. ENABLE_ANALYSIS: ON
  302. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  303. CMAKE_GENERATOR: "Visual Studio 15 2017"
  304. MSVCVERSION: "v141"
  305. MSVCYEAR: "vs2017"
  306. NO_PR: TRUE
  307. -
  308. branches:
  309. only:
  310. - /.*analyze$/
  311. environment:
  312. matrix:
  313. - platform: Win32
  314. configuration: Release
  315. WITH_LIBSODIUM: ON
  316. ENABLE_CURVE: ON
  317. ENABLE_ANALYSIS: ON
  318. APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
  319. CMAKE_GENERATOR: "Visual Studio 15 2017"
  320. MSVCVERSION: "v141"
  321. MSVCYEAR: "vs2017"
  322. NO_PR: TRUE