buildwin.cmd 12 KB

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