73cb5ff84e9efd5cebba1bc7cc9dd7919dc64895
[mirror/winof/.git] / WinOF / BuildRelease.bat
1 @echo off\r
2 setlocal\r
3 rem\r
4 rem EXAMPLE - Build entire openIB-windows release & WIX installers (.msi) files.\r
5 rem           Binary release is constructed in WinOF\Wix\OS\bin.\r
6 rem           Processor architecture specific WIX installers are constructed\r
7 rem           in %IDIR%\r
8 rem\r
9 rem BuildRelease option\r
10 rem  option == all | allnoforce | compile | compilenoforce | makebin | msi |\r
11 rem            wix | clean | msi-label | msi-del | msi-dir {OPENIB_REV}\r
12 \r
13 rem This script is an 'example' of a one-command entire IB stack build to\r
14 rem single-file installer; used to build a WinOF releases.\r
15 rem Script is designed to be invoked from the <whatever>\gen1\trunk folder with\r
16 rem <whatever>\gen1\trunk\WinOF\Wix\* present.\r
17 rem\r
18 rem Verify the following env vars are suitible for your system configuration.\r
19 rem     _DDK, _PSDK, SVN, IDIR\r
20 \r
21 if "%1" == "" goto usage\r
22 if "%1" == "/?" goto usage\r
23 if "%1" == "-h" goto usage\r
24 if "%1" == "all" goto OK\r
25 if "%1" == "allnoforce" goto OK\r
26 if "%1" == "compile" goto OK\r
27 if "%1" == "compilenoforce" goto OK\r
28 if "%1" == "makebin" goto OK\r
29 if "%1" == "msi" goto OK\r
30 if "%1" == "wix" goto OK\r
31 if "%1" == "clean" goto OK\r
32 if "%1" == "msi-label" goto OK\r
33 if "%1" == "msi-del" goto OK\r
34 if "%1" == "msi-dir" goto OK\r
35 \r
36 echo Unknown arg '%1' ?\r
37 \r
38 :usage\r
39 \r
40 echo "usage: BuildRelease command {OPENIB_REV value}"\r
41 echo where 'command' may be:\r
42 echo    all - force recompile, install binaries to WIX tree, sign drivers and\r
43 echo          build installers.\r
44 \r
45 echo    allnoforce - recompile only if needed, install binaries to WIX tree,\r
46 echo                 sign drivers and build installers.\r
47 echo    compile - force a recompile/link of everything then exit.\r
48 echo    compilenoforce - recompile/link only if needed then exit.\r
49 echo    makebin - assumes binaries are built, will installs binaries to WIX tree\r
50 echo              then exit.\r
51 echo    msi - assumes binaries are installed in WIX tree, signs drivers and\r
52 echo          create installers (.msi files) in IDIR.\r
53 echo    wix - build .msi installers, assumes (drivers signed) .cat files exist\r
54 echo    clean - remove build artifacts for a clean build: .obj, .sys, ...\r
55 echo    msi-label {OPENIB_REV}\r
56 echo           rename WOF_os*_arch*.msi to WOF_os*_arch*_svn#.msi \r
57 echo           Uniquely identify installers just created.\r
58 echo           If OPENIB_REV arg used, then rename WOF_os*_arch*argVal.msi\r
59 echo           otherwise, use SVN# from path.\r
60 echo    msi-del - del %windir%\temp\WOF_os*_arch*.msi\r
61 echo    msi-dir - del %windir%\temp\WOF_os*_arch*.msi\r
62 echo :\r
63 echo    {OPENIB_REV}\r
64 echo       optional, if set then OPENIB_REV is assigned this value.\r
65 echo            example: BuildRelease all 1414\r
66 \r
67 exit /B 1 \r
68 \r
69 :OK\r
70 \r
71 if not "%WDM_INC_PATH%" == "" (\r
72     echo %0: Error - %0 unable to run from WDK window,\r
73     echo     use %comspec%\r
74     exit /B 1\r
75 )\r
76 \r
77 rem assumes %CD% == '<...>\gen1\trunk'\r
78 set BSE=%CD%\r
79 set WIX=%CD%\WinOF\WIX\r
80 \r
81 rem Use Wix V2 binaries.\r
82 rem set WIX_BIN=wix-2.0.5325.0-binaries\r
83 set WIX_BIN=wix-2.0.5805.0-binaries\r
84 \r
85 set RBIN_WLH=%WIX%\wlh\bin%\r
86 set RBIN_WNET=%WIX%\wnet\bin%\r
87 set RBIN_WXP=%WIX%\wxp\bin%\r
88 \r
89 rem remove build artifacts\r
90 if "%1" == "clean" (\r
91     echo Removing build artifacts and folders...\r
92     call %CD%\etc\clean-build.bat\r
93     if exist %WIX%\wlh\bin (\r
94                 echo Removing %WIX%\wlh\bin\r
95                 rmdir /Q /S %WIX%\wlh\bin\r
96     )\r
97     if exist %WIX%\wnet\bin (\r
98                 echo Removing %WIX%\wnet\bin\r
99                 rmdir /Q /S %WIX%\wnet\bin\r
100     )\r
101     if exist %WIX%\wxp\bin (\r
102                 echo Removing %WIX%\wxp\bin\r
103                 rmdir /Q /S %WIX%\wxp\bin\r
104     )\r
105     exit /B 0\r
106 )\r
107 \r
108 rem Driver Signing Certificate filename, assumes %WIX%\%CERTFILE% is valid.\r
109 rem set CERTFILE=noCert\r
110 set CERTFILE=MSCV-VSClass3.cer\r
111 set CERTSNAME="OpenFabrics Alliance"\r
112 \r
113 rem A Digital driver signing certificate store name may be required.\r
114 if "%1" == "all" (\r
115     if "%CERTFILE%" == "noCert" set /P CERTFILE=[Enter Certificate FileName] \r
116     if "%CERTFILE%" == "" (\r
117         echo %0\r
118         echo %0: Err - driver signing certificate filename required.\r
119         echo %0: see certmgr.exe\r
120         exit /B 1\r
121     )\r
122 )\r
123 \r
124 if "%1" == "msi" (\r
125     if "%CERTFILE%" == "noCert" set /P CERTFILE=[Enter Certificate FileName] \r
126     if "%CERTFILE%" == "" (\r
127         echo %0\r
128         echo %0: Err - driver signing certificate filename required.\r
129         echo %0: see certmgr.exe\r
130         exit /B 1\r
131     )\r
132 )\r
133 \r
134 rem Use this WDK\r
135 \r
136 set _DDK=%SystemDrive%\WinDDK\6001.18001\r
137 \r
138 if NOT EXIST %_DDK% (\r
139     echo Missing WDK @ %_DDK%\r
140     exit /B 1\r
141 )\r
142 \r
143 rem Platform SDK path - watchout for missing LoadPerf.h (installsp.c)\r
144 set _PSDK=%SystemDrive%\progra~1\mi2578~1\r
145 \r
146 rem set this to be the current svn commit number; overrides svn in path\r
147 rem processing. Additionally if set to 'latest' code expects ..\..\..\latest.txt\r
148 rem to contain the SVN number to use.\r
149 rem set USE_SVN=1748\r
150 set USE_SVN=latest\r
151 \r
152 rem setup value for OPENIB_REV assignment.\r
153 if "%2" == "" (\r
154     rem Determine SVN value from current path.\r
155     rem WARNING - SVN value depends on the path '\openIB-windows-svn\XXX\gen1',\r
156     rem where SVN is set to XXX\r
157     rem  substring[23rd...26th] chars (offset counting) == xxxx\r
158     rem Note - OPENIB_REV is assigned SVN in a child script.\r
159 \r
160     if "%USE_SVN%" == "" (\r
161         set SVN=%CD:~22,4%\r
162     ) else (\r
163         if "%USE_SVN%" == "latest" (\r
164 rem                     set /P SVN=<F:\openIB-windows-svn\latest.txt\r
165                         set /P SVN=< ..\..\..\latest.txt\r
166                 ) else (\r
167                         set SVN=%USE_SVN%\r
168                 )\r
169     )\r
170     set LBL=_svn.!SVN!\r
171 ) else (\r
172     set SVN=%2\r
173     set LBL=%2\r
174 )\r
175 \r
176 if NOT EXIST "%WIX%\build-all-MSI.bat" (\r
177     echo %0 - Missing .msi installer build script\r
178     echo    %WIX%\build-all-MSI.bat\r
179     exit /B 1\r
180 )\r
181 \r
182 rem WIX Installer files (.msi) destination folder - set for local environment.\r
183 set IDIR=%SystemRoot%\temp\r
184 \r
185 if "%1" == "msi-label" (\r
186     pushd %IDIR%\r
187     if exist WOF_wxp_x86.msi (\r
188         if exist WOF_wxp_x86%LBL%.msi del /F/Q WOF_wxp_x86%LBL%.msi\r
189         rename WOF_wxp_x86.msi WOF_wxp_x86%LBL%.msi\r
190     )\r
191 \r
192     if exist WOF_wnet_x86.msi (\r
193         if exist WOF_wnet_x86%LBL%.msi del /F/Q WOF_wnet_x86%LBL%.msi\r
194         rename WOF_wnet_x86.msi WOF_wnet_x86%LBL%.msi\r
195     )\r
196     if exist WOF_wnet_x64.msi (\r
197         if exist WOF_wnet_x64%LBL%.msi del /F/Q WOF_wnet_x64%LBL%.msi\r
198         rename WOF_wnet_x64.msi WOF_wnet_x64%LBL%.msi\r
199     )\r
200     if exist WOF_wnet_ia64.msi (\r
201        if exist WOF_wnet_ia64%LBL%.msi del /F/Q WOF_wnet_ia64%LBL%.msi\r
202        rename WOF_wnet_ia64.msi WOF_wnet_ia64%LBL%.msi\r
203     )\r
204 \r
205     if exist WOF_wlh_x86.msi (\r
206         if exist WOF_wlh_x86%LBL%.msi del /F/Q WOF_wlh_x86%LBL%.msi\r
207         rename WOF_wlh_x86.msi WOF_wlh_x86%LBL%.msi\r
208     )\r
209     if exist WOF_wlh_x64.msi  (\r
210         if exist WOF_wlh_x64%LBL%.msi del /F/Q WOF_wlh_x64%LBL%.msi\r
211         rename WOF_wlh_x64.msi WOF_wlh_x64%LBL%.msi\r
212     )\r
213     if exist WOF_wlh_ia64.msi  (\r
214         if exist WOF_wlh_ia64%LBL%.msi del /F/Q WOF_wlh_ia64%LBL%.msi\r
215         rename WOF_wlh_ia64.msi WOF_wlh_ia64%LBL%.msi\r
216     )\r
217     dir WOF_*%LBL%.msi\r
218     popd\r
219     exit /B 0\r
220 )\r
221 \r
222 if "%1" == "msi-del" (\r
223     echo Deleting WOF_{wxp,wnet,wlh}_{x86,x64,ia64}%LBL%.msi\r
224     pushd %IDIR%\r
225     if exist WOF_wxp_x86%LBL%.msi del /F/P WOF_wxp_x86%LBL%.msi\r
226 \r
227     if exist WOF_wnet_x86%LBL%.msi del /F/P WOF_wnet_x86%LBL%.msi\r
228     if exist WOF_wnet_x64%LBL%.msi del /F/P WOF_wnet_x64%LBL%.msi\r
229     if exist WOF_wnet_ia64%LBL%.msi del /F/P WOF_wnet_ia64%LBL%.msi\r
230 \r
231     if exist WOF_wlh_x86%LBL%.msi del /F/P WOF_wlh_x86%LBL%.msi\r
232     if exist WOF_wlh_x64%LBL%.msi del /F/P WOF_wlh_x64%LBL%.msi\r
233     if exist WOF_wlh_ia64%LBL%.msi del /F/P WOF_wlh_ia64%LBL%.msi\r
234 \r
235     dir /N/OD WOF_*.msi\r
236     popd\r
237     exit /B 0\r
238 )\r
239 \r
240 if "%1" == "msi-dir" (\r
241     pushd %IDIR%\r
242     dir /N/OD WOF_*.msi\r
243     popd\r
244     exit /B 0\r
245 )\r
246 \r
247 echo %0 - Building with WDK @ %_DDK%\r
248 echo Building for OPENIB_REV %SVN%, installer files (.msi) @ %IDIR%\r
249 echo   Drivers signed using Certificate '%CERTFILE%'\r
250 \r
251 rem pause thoughtfully.\r
252 if exist %windir%\system32\timeout.exe (\r
253     timeout /T 10\r
254 ) else (\r
255     pause\r
256 )\r
257 \r
258 if NOT EXIST "%IDIR%" (\r
259     echo %0 - Missing Installer file destination folder %IDIR%\r
260     exit /B 1\r
261 )\r
262 \r
263 rem Verify WIX 2.0 toolset is available - if not, download from\r
264 rem http://sourceforge.net/project/showfiles.php?group_id=105970&package_id=114109\r
265 rem   select wix-2.0.5805.0-binaries.zip download and unzip to\r
266 rem   <...>\gen1\trunk\WinOF\WIX\WIX_tools\\r
267 rem\r
268 if NOT EXIST %WIX%\WIX_tools\%WIX_BIN% (\r
269     echo %0 - Missing WIX tools @ %WIX%\WIX_tools\%WIX_BIN% \r
270     exit /B 1\r
271 )\r
272 \r
273 if NOT EXIST etc\makebin.bat (\r
274     echo %0 - Missing etc\makebin.bat, script must run from gen1\trunk\r
275     exit /B 1\r
276 )\r
277 set STIME=%TIME%\r
278 \r
279 rem skip build - assumes binaries already built.\r
280 \r
281 if "%1" == "wix" (\r
282     set MSI_CMD=msi\r
283     goto mk_msi\r
284 )\r
285 \r
286 set MSI_CMD=all\r
287 if "%1" == "msi" (\r
288     if not EXIST "%RBIN_WLH%"  goto InstallBin\r
289     if not EXIST "%RBIN_WNET%" goto InstallBin\r
290     if not EXIST "%RBIN_WXP%"  goto InstallBin\r
291     goto mk_msi\r
292 )\r
293 \r
294 if "%1" == "makebin" goto InstallBin\r
295 \r
296 set OPS=-wgcPM 3\r
297 if "%1" == "allnoforce" (\r
298     rem Compile everything only if needed.\r
299     set OPS=-wgPM 3\r
300 )\r
301 if "%1" == "compilenoforce" (\r
302     rem Compile everything only if needed.\r
303     set OPS=-wgPM 3\r
304 )\r
305 \r
306 if "%1" == "all" (\r
307     echo Removing build artifacts and folders...\r
308     call %CD%\etc\clean-build.bat\r
309     if exist %WIX%\wlh\bin (\r
310                 echo Removing %WIX%\wlh\bin\r
311                 rmdir /Q /S %WIX%\wlh\bin\r
312     )\r
313     if exist %WIX%\wnet\bin (\r
314                 echo Removing %WIX%\wnet\bin\r
315                 rmdir /Q /S %WIX%\wnet\bin\r
316     )\r
317     if exist %WIX%\wxp\bin (\r
318                 echo Removing %WIX%\wxp\bin\r
319                 rmdir /Q /S %WIX%\wxp\bin\r
320     )\r
321 )\r
322 \r
323 rem ************ Setup Env for Building \r
324 \r
325 set WDK_PATH=%_DDK%\r
326 set WINOF_PATH=%CD%\r
327 set OPENIB_REV=%SVN%\r
328 set PLATFORM_SDK_PATH=%_PSDK%\r
329 \r
330 rem ********* Compile for WLH - Windows Server 2008 & Vista\r
331 rem WLH x64\r
332 echo %0 - Build WLH x64 Checked\r
333 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk x64 2008 %OPS%"\r
334 if ERRORLEVEL 1 exit /B 1\r
335 echo %0 - Build WLH x64 Free\r
336 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre x64 2008 %OPS%"\r
337 if ERRORLEVEL 1 exit /B 1\r
338 \r
339 rem WLH x86\r
340 \r
341 echo %0 - Build WLH x86 Checked\r
342 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk x86 2008 %OPS%"\r
343 if ERRORLEVEL 1 exit /B 1\r
344 echo %0 - Build WLH x86 Free\r
345 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre x86 2008 %OPS%"\r
346 if ERRORLEVEL 1 exit /B 1\r
347 \r
348 rem WLH ia64\r
349 echo %0 - Build WLH ia64 Checked\r
350 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk ia64 2008 %OPS%"\r
351 if ERRORLEVEL 1 exit /B 1\r
352 echo %0 - Build WLH ia64 Free\r
353 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre ia64 2008 %OPS%"\r
354 if ERRORLEVEL 1 exit /B 1\r
355 \r
356 \r
357 rem ********* WXP - Windows XP - x86 only\r
358 \r
359 echo %0 - Build XP x86 Checked\r
360 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk x86 xp %OPS%"\r
361 if ERRORLEVEL 1 exit /B 1\r
362 \r
363 echo %0 - Build XP x86 Free\r
364 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre x86 xp %OPS%"\r
365 if ERRORLEVEL 1 exit /B 1\r
366 \r
367 \r
368 rem ********* WNET - Windows Server 2003\r
369 echo %0 - Build WNET x64 Checked\r
370 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk x64 2003 %OPS%"\r
371 if ERRORLEVEL 1 exit /B 1\r
372 echo %0 - Build WNET x64 Free\r
373 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre x64 2003 %OPS%"\r
374 if ERRORLEVEL 1 exit /B 1\r
375 \r
376 echo %0 - Build WNET x86 Checked\r
377 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk x86 2003 %OPS%"\r
378 if ERRORLEVEL 1 exit /B 1\r
379 echo %0 - Build WNET x86 Free\r
380 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre x86 2003 %OPS%"\r
381 if ERRORLEVEL 1 exit /B 1\r
382 \r
383 echo %0 - Build WNET ia64 Checked\r
384 %COMSPEC% /C "call %BSE%\etc\bldwo.bat chk ia64 2003 %OPS%"\r
385 if ERRORLEVEL 1 exit /B 1\r
386 echo %0 - Build WNET ia64 Free\r
387 %COMSPEC% /C "call %BSE%\etc\bldwo.bat fre ia64 2003 %OPS%"\r
388 if ERRORLEVEL 1 exit /B 1\r
389 \r
390 if "%1" == "compile" goto finito\r
391 if "%1" == "compilenoforce" goto finito\r
392 \r
393 rem Install binaries into WIX environment, build msi installers.\r
394 \r
395 :InstallBin\r
396 \r
397 echo Create binary release tree - suitible for WinOF-WIX installer build.\r
398 \r
399 if EXIST "%RBIN_WLH%"  (rmdir /S /Q %RBIN_WLH% &  echo %0 - removed %RBIN_WLH%)\r
400 if EXIST "%RBIN_WNET%" (rmdir /S /Q %RBIN_WNET% & echo %0 - removed %RBIN_WNET%)\r
401 if EXIST "%RBIN_WXP%"  (rmdir /S /Q %RBIN_WXP% &  echo %0 - removed %RBIN_WXP%)\r
402 \r
403 mkdir %RBIN_WLH%\r
404 mkdir %RBIN_WNET%\r
405 mkdir %RBIN_WXP%\r
406 \r
407 if EXIST "%BSE%\etc\makebin.bat" (\r
408     call %BSE%\etc\makebin.bat %BSE% %RBIN_WLH% wlh\r
409     if ERRORLEVEL 1 (\r
410         echo %0: Err in makebin.bat %BSE% %RBIN_WLH% wlh\r
411         exit /B 1\r
412     )\r
413     call %BSE%\etc\makebin.bat %BSE% %RBIN_WNET% wnet\r
414     if ERRORLEVEL 1 (\r
415         echo %0: Err in makebin.bat %BSE% %RBIN_WNET% wnet\r
416         exit /B 1\r
417     )\r
418     call %BSE%\etc\makebin.bat %BSE% %RBIN_WXP% wxp\r
419     if ERRORLEVEL 1 (\r
420         echo %0: Err in makebin.bat %BSE% %RBIN_WXP% wxp\r
421         exit /B 1\r
422     )\r
423 )\r
424 \r
425 if "%1" == "makebin" goto finito\r
426 \r
427 :mk_msi\r
428 \r
429 echo %0 - Drivers Signed with %CERTFILE%\r
430 echo   Binary releases created in\r
431 echo     %RBIN_WLH%\r
432 echo     %RBIN_WNET%\r
433 echo     %RBIN_WXP%\r
434 \r
435 rem build WIX installers --> see WinOF\WIX\r
436 \r
437 %COMSPEC% /V:on /E:on /C "%_DDK%\bin\setenv.bat %_DDK% fre X64 WNET & cd /D %WIX% & build-all-MSI %MSI_CMD% %CERTFILE% %CERTSNAME% %IDIR%"\r
438 \r
439 \r
440 :finito\r
441 \r
442 echo .\r
443 echo %0: Finished %0 %*\r
444 echo %0:   Started  %STIME%\r
445 echo %0:   Finished %TIME%\r
446 \r
447 endlocal\r
448 @echo on\r