buildwin.cmd 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem
  4. rem buildwin.cmd
  5. rem
  6. rem POCO C++ Libraries command-line build script
  7. rem for MS Visual Studio 2003 to 2010
  8. rem
  9. rem $Id: //poco/1.4/dist/buildwin.cmd#2 $
  10. rem
  11. rem Copyright (c) 2006-2012 by Applied Informatics Software Engineering GmbH
  12. rem and Contributors.
  13. rem
  14. rem Original version by Aleksandar Fabijanic.
  15. rem Modified by Guenter Obiltschnig.
  16. rem
  17. rem Usage:
  18. rem ------
  19. rem buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL]
  20. rem VS_VERSION: 71|80|90|100|110
  21. rem ACTION: build|rebuild|clean
  22. rem LINKMODE: static_mt|static_md|shared|all
  23. rem CONFIGURATION: release|debug|both
  24. rem PLATFORM: Win32|x64|WinCE
  25. rem SAMPLES: samples|nosamples
  26. rem TESTS: tests|notests
  27. rem TOOL: devenv|vcexpress|wdexpress|msbuild
  28. rem
  29. rem VS_VERSION is required argument. Default is build all.
  30. rem Change OPENSSL_DIR to match your setup
  31. set OPENSSL_DIR=C:\OpenSSL
  32. set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
  33. set OPENSSL_LIB=%OPENSSL_DIR%\lib;%OPENSSL_DIR%\lib\VC
  34. set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
  35. set LIB=%LIB%;%OPENSSL_LIB%
  36. rem Change MYSQL_DIR to match your setup
  37. set MYSQL_DIR=C:\PROGRA~1\MySQL\MYSQLS~1.5
  38. set MYSQL_INCLUDE=%MYSQL_DIR%\include
  39. set MYSQL_LIB=%MYSQL_DIR%\lib
  40. set INCLUDE=%INCLUDE%;%MYSQL_INCLUDE%
  41. set LIB=%LIB%;%MYSQL_LIB%
  42. set POCO_BASE=%CD%
  43. set PATH=%POCO_BASE%\bin64;%POCO_BASE%\bin;%PATH%
  44. rem VS_VERSION {71 | 80 | 90 | 100 | 110}
  45. if "%1"=="" goto usage
  46. set VS_VERSION=vs%1
  47. if not defined VCINSTALLDIR (
  48. if %1==71 (call "%VS71COMNTOOLS%vsvars32.bat") else (
  49. if %1==80 (call "%VS80COMNTOOLS%vsvars32.bat") else (
  50. if %1==90 (call "%VS90COMNTOOLS%vsvars32.bat") else (
  51. if %1==100 (call "%VS100COMNTOOLS%vsvars32.bat") else (
  52. if %1==110 (call "%VS110COMNTOOLS%vsvars32.bat")
  53. ))))
  54. if not defined VSINSTALLDIR (
  55. echo Error: No Visual C++ environment found.
  56. echo Please run this script from a Visual Studio Command Prompt
  57. echo or run "%%VSnnCOMNTOOLS%%\vsvars32.bat" first.
  58. goto :EOF
  59. )
  60. )
  61. set VCPROJ_EXT=vcproj
  62. if %VS_VERSION%==vs100 (set VCPROJ_EXT=vcxproj)
  63. if %VS_VERSION%==vs110 (set VCPROJ_EXT=vcxproj)
  64. if "%8"=="" goto use_devenv
  65. set BUILD_TOOL=%8
  66. goto use_custom
  67. :use_devenv
  68. set BUILD_TOOL=devenv
  69. if "%VS_VERSION%"=="vs100" (set BUILD_TOOL=msbuild)
  70. if "%VS_VERSION%"=="vs110" (set BUILD_TOOL=msbuild)
  71. :use_custom
  72. if not "%BUILD_TOOL%"=="msbuild" (set USEENV=/useenv)
  73. if "%BUILD_TOOL%"=="msbuild" (
  74. set ACTIONSW=/t:
  75. set CONFIGSW=/p:Configuration=
  76. set EXTRASW=/m
  77. set USEENV=/p:UseEnv=true
  78. )
  79. if not "%BUILD_TOOL%"=="msbuild" (set ACTIONSW=/)
  80. if "%VS_VERSION%"=="vs100" (goto msbuildok)
  81. if "%VS_VERSION%"=="vs110" (goto msbuildok)
  82. if "%BUILD_TOOL%"=="msbuild" (
  83. echo "Cannot use msbuild with Visual Studio 2008 or earlier."
  84. exit
  85. )
  86. :msbuildok
  87. rem ACTION [build|rebuild|clean]
  88. set ACTION=%2
  89. if not "%ACTION%"=="build" (
  90. if not "%ACTION%"=="rebuild" (
  91. if not "%ACTION%"=="" (
  92. if not "%ACTION%"=="clean" goto usage)))
  93. if "%ACTION%"=="" (set ACTION="build")
  94. rem LINKMODE [static|shared|both]
  95. set LINK_MODE=%3
  96. if not "%LINK_MODE%"=="static_mt" (
  97. if not "%LINK_MODE%"=="static_md" (
  98. if not "%LINK_MODE%"=="shared" (
  99. if not "%LINK_MODE%"=="" (
  100. if not "%LINK_MODE%"=="all" goto usage))))
  101. rem CONFIGURATION [release|debug|both]
  102. set CONFIGURATION=%4
  103. if not "%CONFIGURATION%"=="release" (
  104. if not "%CONFIGURATION%"=="debug" (
  105. if not "%CONFIGURATION%"=="" (
  106. if not "%CONFIGURATION%"=="both" goto usage)))
  107. rem PLATFORM [Win32|x64|WinCE]
  108. set PLATFORM=%5
  109. if not "%PLATFORM%"=="" (
  110. if not "%PLATFORM%"=="Win32" (
  111. if not "%PLATFORM%"=="x64" (
  112. if not "%PLATFORM%"=="WinCE" goto usage)))
  113. if "%PLATFORM%"=="" (set PLATFORM_SUFFIX=) else (
  114. if "%PLATFORM%"=="Win32" (set PLATFORM_SUFFIX=) else (
  115. if "%PLATFORM%"=="x64" (set PLATFORM_SUFFIX=_x64) else (
  116. if "%PLATFORM%"=="WinCE" (set PLATFORM_SUFFIX=_CE))))
  117. rem SAMPLES [samples|nosamples]
  118. set SAMPLES=%6
  119. if "%SAMPLES%"=="" (set SAMPLES=samples)
  120. rem TESTS [tests|notests]
  121. set TESTS=%7
  122. if "%TESTS%"=="" (set TESTS=notests)
  123. set DEBUG_SHARED=0
  124. set RELEASE_SHARED=0
  125. set DEBUG_STATIC_MT=0
  126. set RELEASE_STATIC_MT=0
  127. set DEBUG_STATIC_MD=0
  128. set RELEASE_STATIC_MD=0
  129. if %LINK_MODE%==shared (
  130. if %CONFIGURATION%==release (set RELEASE_SHARED=1) else (
  131. if %CONFIGURATION%==both (set RELEASE_SHARED=1) else (
  132. if "%CONFIGURATION%"=="" (set RELEASE_SHARED=1))))
  133. if %LINK_MODE%==shared (
  134. if %CONFIGURATION%==debug (set DEBUG_SHARED=1) else (
  135. if %CONFIGURATION%==both (set DEBUG_SHARED=1) else (
  136. if "%CONFIGURATION%"=="" (set DEBUG_SHARED=1))))
  137. if %LINK_MODE%==static_mt (
  138. if %CONFIGURATION%==release (set RELEASE_STATIC_MT=1) else (
  139. if %CONFIGURATION%==both (set RELEASE_STATIC_MT=1) else (
  140. if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MT=1))))
  141. if %LINK_MODE%==static_md (
  142. if %CONFIGURATION%==release (set RELEASE_STATIC_MD=1) else (
  143. if %CONFIGURATION%==both (set RELEASE_STATIC_MD=1) else (
  144. if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MD=1))))
  145. if %LINK_MODE%==static_mt (
  146. if %CONFIGURATION%==debug (set DEBUG_STATIC_MT=1) else (
  147. if %CONFIGURATION%==both (set DEBUG_STATIC_MT=1) else (
  148. if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MT=1))))
  149. if %LINK_MODE%==static_md (
  150. if %CONFIGURATION%==debug (set DEBUG_STATIC_MD=1) else (
  151. if %CONFIGURATION%==both (set DEBUG_STATIC_MD=1) else (
  152. if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MD=1))))
  153. if %LINK_MODE%==all (
  154. if %CONFIGURATION%==debug (
  155. set DEBUG_STATIC_MT=1
  156. set DEBUG_STATIC_MD=1
  157. set DEBUG_SHARED=1) else (
  158. if %CONFIGURATION%==release (
  159. set RELEASE_STATIC_MT=1
  160. set RELEASE_STATIC_MD=1
  161. set RELEASE_SHARED=1) else (
  162. if %CONFIGURATION%==both (
  163. set DEBUG_STATIC_MT=1
  164. set DEBUG_STATIC_MD=1
  165. set DEBUG_SHARED=1
  166. set RELEASE_STATIC_MT=1
  167. set RELEASE_STATIC_MD=1
  168. set RELEASE_SHARED=1) else (
  169. if "%CONFIGURATION%"=="" (
  170. set DEBUG_STATIC_MT=1
  171. set DEBUG_STATIC_MD=1
  172. set DEBUG_SHARED=1
  173. set RELEASE_STATIC_MT=1
  174. set RELEASE_STATIC_MD=1
  175. set RELEASE_SHARED=1)))))
  176. if "%LINK_MODE%"=="" (
  177. if %CONFIGURATION%==debug (
  178. set DEBUG_STATIC_MT=1
  179. set DEBUG_STATIC_MD=1
  180. set DEBUG_SHARED=1) else (
  181. if %CONFIGURATION%==release (
  182. set RELEASE_STATIC_MT=1
  183. set RELEASE_STATIC_MD=1
  184. set RELEASE_SHARED=1) else (
  185. if %CONFIGURATION%==both (
  186. set DEBUG_STATIC_MT=1
  187. set DEBUG_STATIC_MD=1
  188. set DEBUG_SHARED=1
  189. set RELEASE_STATIC_MT=1
  190. set RELEASE_STATIC_MD=1
  191. set RELEASE_SHARED=1) else (
  192. if "%CONFIGURATION%"=="" (
  193. set DEBUG_STATIC_MT=1
  194. set DEBUG_STATIC_MD=1
  195. set DEBUG_SHARED=1
  196. set RELEASE_STATIC_MT=1
  197. set RELEASE_STATIC_MD=1
  198. set RELEASE_SHARED=1)))))
  199. echo.
  200. echo.
  201. echo ########################################################################
  202. echo ####
  203. echo #### STARTING VISUAL STUDIO BUILD (%VS_VERSION%, %PLATFORM%)
  204. echo ####
  205. echo ########################################################################
  206. echo.
  207. echo.
  208. echo The following configurations will be built:
  209. if %DEBUG_SHARED%==1 (echo debug_shared)
  210. if %RELEASE_SHARED%==1 (echo release_shared)
  211. if %DEBUG_STATIC_MT%==1 (echo debug_static_mt)
  212. if %DEBUG_STATIC_MD%==1 (echo debug_static_md)
  213. if %RELEASE_STATIC_MT%==1 (echo release_static_mt)
  214. if %RELEASE_STATIC_MD%==1 (echo release_static_md)
  215. rem build for up to 4 levels deep
  216. for /f %%G in ('findstr /R "." components') do (
  217. if exist %%G (
  218. cd %%G
  219. for /f "tokens=1,2,3,4 delims=/" %%Q in ("%%G") do (
  220. set PROJECT_NAME=%%Q%PLATFORM_SUFFIX%_%VS_VERSION%.%VCPROJ_EXT%
  221. set TEST_PROJECT_NAME=testsuite/TestSuite%PLATFORM_SUFFIX%_%VS_VERSION%.%VCPROJ_EXT%
  222. if exist !PROJECT_NAME! (call :build %%G )
  223. set PROJECT_NAME=%%R%PLATFORM_SUFFIX%_%VS_VERSION%.%VCPROJ_EXT%
  224. if exist !PROJECT_NAME! (call :build %%G )
  225. set PROJECT_NAME=%%S%PLATFORM_SUFFIX%_%VS_VERSION%.%VCPROJ_EXT%
  226. if exist !PROJECT_NAME! (call :build %%G )
  227. set PROJECT_NAME=%%T%PLATFORM_SUFFIX%_%VS_VERSION%.%VCPROJ_EXT%
  228. if exist !PROJECT_NAME! (call :build %%G )
  229. )
  230. )
  231. cd %POCO_BASE%
  232. )
  233. )
  234. goto samples
  235. rem ////////////////////
  236. rem / build subroutine /
  237. rem ////////////////////
  238. :build
  239. echo.
  240. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  241. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  242. echo ++++ Building [!PROJECT_NAME!]
  243. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  244. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  245. echo.
  246. if %DEBUG_SHARED%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% /%ACTION% debug_shared !PROJECT_NAME! && echo. && echo. && echo.
  247. if %TESTS%==tests (
  248. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  249. )
  250. )
  251. if %RELEASE_SHARED%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared !PROJECT_NAME! && echo. && echo. && echo.
  252. if %TESTS%==tests (
  253. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  254. )
  255. )
  256. if %DEBUG_STATIC_MT%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt !PROJECT_NAME! && echo. && echo. && echo.
  257. if %TESTS%==tests (
  258. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  259. )
  260. )
  261. if %RELEASE_STATIC_MT%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt !PROJECT_NAME! && echo. && echo. && echo.
  262. if %TESTS%==tests (
  263. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  264. )
  265. )
  266. if %DEBUG_STATIC_MD%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md !PROJECT_NAME! && echo. && echo. && echo.
  267. if %TESTS%==tests (
  268. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  269. )
  270. )
  271. if %RELEASE_STATIC_MD%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md !PROJECT_NAME! && echo. && echo. && echo.
  272. if %TESTS%==tests (
  273. if exist !TEST_PROJECT_NAME! (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md !TEST_PROJECT_NAME! && echo. && echo. && echo.)
  274. )
  275. )
  276. echo.
  277. echo ------------------------------------------------------------------------
  278. echo ------------------------------------------------------------------------
  279. echo ---- Done building [!PROJECT_NAME!]
  280. echo ------------------------------------------------------------------------
  281. echo ------------------------------------------------------------------------
  282. echo.
  283. exit /b
  284. rem ////////////////////
  285. rem / build samples /
  286. rem ////////////////////
  287. :samples
  288. if %SAMPLES%==nosamples goto :EOF
  289. rem root level component samples
  290. for /f %%G in ('findstr /R "." components') do (
  291. if exist %%G\samples\samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln (
  292. cd %%G\samples
  293. echo.
  294. echo.
  295. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  296. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  297. echo ++++ Building [%%G/samples]
  298. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  299. echo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  300. echo.
  301. set PROJECT_NAME=samples%PLATFORM_SUFFIX%_%VS_VERSION%
  302. if %DEBUG_SHARED%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_shared !PROJECT_NAME!.sln && echo. && echo. && echo.)
  303. if %RELEASE_SHARED%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_shared !PROJECT_NAME!.sln && echo. && echo. && echo.)
  304. if %DEBUG_STATIC_MT%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_mt !PROJECT_NAME!.sln && echo. && echo. && echo.)
  305. if %RELEASE_STATIC_MT%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_mt !PROJECT_NAME!.sln && echo. && echo. && echo.)
  306. if %DEBUG_STATIC_MD%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%debug_static_md !PROJECT_NAME!.sln && echo. && echo. && echo.)
  307. if %RELEASE_STATIC_MD%==1 (!BUILD_TOOL! %USEENV% %EXTRASW% %ACTIONSW%%ACTION% %CONFIGSW%release_static_md !PROJECT_NAME!.sln && echo. && echo. && echo.)
  308. cd %POCO_BASE%
  309. echo.
  310. echo ------------------------------------------------------------------------
  311. echo ------------------------------------------------------------------------
  312. echo ---- Done building [%%G/samples]
  313. echo ------------------------------------------------------------------------
  314. echo ------------------------------------------------------------------------
  315. echo.
  316. )
  317. )
  318. echo.
  319. echo ------------------------------------------------------------------------
  320. echo ------------------------------------------------------------------------
  321. echo ---- Build completed.
  322. echo ------------------------------------------------------------------------
  323. echo ------------------------------------------------------------------------
  324. echo.
  325. goto :EOF
  326. :usage
  327. echo Usage:
  328. echo ------
  329. echo buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL]
  330. echo VS_VERSION: "71|80|90|100|110"
  331. echo ACTION: "build|rebuild|clean"
  332. echo LINKMODE: "static_mt|static_md|shared|all"
  333. echo CONFIGURATION: "release|debug|both"
  334. echo PLATFORM: "Win32|x64|WinCE"
  335. echo SAMPLES: "samples|nosamples"
  336. echo TESTS: "tests|notests"
  337. echo TOOL: "devenv|vcexpress|wdexpress|msbuild"
  338. echo.
  339. echo Default is build all.
  340. endlocal