[WinOF] script now understands trunk\WinOF instead of ..\branches\WinOF
[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 remove build artifacts\r
78 if "%1" == "clean" (\r
79     echo Removing build artifacts and folders...\r
80     call %CD%\etc\clean-build.bat\r
81     exit /B 0\r
82 )\r
83 \r
84 rem Driver Signing Certificate filename, assumes %WIX%\%CERTFILE% is valid.\r
85 rem set CERTFILE=noCert\r
86 set CERTFILE=MSCV-VSClass3.cer\r
87 set CERTSNAME="OpenFabrics Alliance"\r
88 \r
89 rem A Digital driver signing certificate store name may be required.\r
90 if "%1" == "all" (\r
91     if "%CERTFILE%" == "noCert" set /P CERTFILE=[Enter Certificate FileName] \r
92     if "%CERTFILE%" == "" (\r
93         echo %0\r
94         echo %0: Err - driver signing certificate filename required.\r
95         echo %0: see certmgr.exe\r
96         exit /B 1\r
97     )\r
98 )\r
99 \r
100 if "%1" == "msi" (\r
101     if "%CERTFILE%" == "noCert" set /P CERTFILE=[Enter Certificate FileName] \r
102     if "%CERTFILE%" == "" (\r
103         echo %0\r
104         echo %0: Err - driver signing certificate filename required.\r
105         echo %0: see certmgr.exe\r
106         exit /B 1\r
107     )\r
108 )\r
109 \r
110 rem Use this WDK\r
111 \r
112 set _DDK=%SystemDrive%\WinDDK\6001.18001\r
113 \r
114 if NOT EXIST %_DDK% (\r
115     echo Missing WDK @ %_DDK%\r
116     exit /B 1\r
117 )\r
118 \r
119 rem Platform SDK path - watchout for missing LoadPerf.h (installsp.c)\r
120 set _PSDK=%SystemDrive%\progra~1\mi2578~1\r
121 \r
122 rem set this to be the current svn commit number; overrides svn in path\r
123 rem processing.\r
124 set USE_SVN=1748\r
125 \r
126 rem setup value for OPENIB_REV assignment.\r
127 if "%2" == "" (\r
128     rem Determine SVN value from current path.\r
129     rem WARNING - SVN value depends on the path '\openIB-windows-svn\XXX\gen1',\r
130     rem where SVN is set to XXX\r
131     rem  substring[23rd...26th] chars (offset counting) == xxxx\r
132     rem Note - OPENIB_REV is assigned SVN in a child script.\r
133 \r
134     if "%USE_SVN%" == "" (\r
135         set SVN=%CD:~22,4%\r
136     ) else (\r
137         set SVN=%USE_SVN%\r
138     )\r
139     set LBL=_svn.!SVN!\r
140 ) else (\r
141     set SVN=%2\r
142     set LBL=%2\r
143 )\r
144 \r
145 rem assumes %CD% == '<...>\gen1\trunk'\r
146 set BSE=%CD%\r
147 set WIX=%CD%\WinOF\WIX\r
148 \r
149 rem Use Wix V2 binaries.\r
150 rem set WIX_BIN=wix-2.0.5325.0-binaries\r
151 set WIX_BIN=wix-2.0.5805.0-binaries\r
152 \r
153 set RBIN_WLH=%WIX%\wlh\bin%\r
154 set RBIN_WNET=%WIX%\wnet\bin%\r
155 set RBIN_WXP=%WIX%\wxp\bin%\r
156 \r
157 if NOT EXIST "%WIX%\build-all-MSI.bat" (\r
158     echo %0 - Missing .msi installer build script\r
159     echo    %WIX%\build-all-MSI.bat\r
160     exit /B 1\r
161 )\r
162 \r
163 rem WIX Installer files (.msi) destination folder - set for local environment.\r
164 set IDIR=%SystemRoot%\temp\r
165 \r
166 \r
167 if "%1" == "msi-label" (\r
168     pushd %IDIR%\r
169     if exist WOF_wxp_x86.msi (\r
170         if exist WOF_wxp_x86%LBL%.msi del /F/Q WOF_wxp_x86%LBL%.msi\r
171         rename WOF_wxp_x86.msi WOF_wxp_x86%LBL%.msi\r
172     )\r
173 \r
174     if exist WOF_wnet_x86.msi (\r
175         if exist WOF_wnet_x86%LBL%.msi del /F/Q WOF_wnet_x86%LBL%.msi\r
176         rename WOF_wnet_x86.msi WOF_wnet_x86%LBL%.msi\r
177     )\r
178     if exist WOF_wnet_x64.msi (\r
179         if exist WOF_wnet_x64%LBL%.msi del /F/Q WOF_wnet_x64%LBL%.msi\r
180         rename WOF_wnet_x64.msi WOF_wnet_x64%LBL%.msi\r
181     )\r
182     if exist WOF_wnet_ia64.msi (\r
183        if exist WOF_wnet_ia64%LBL%.msi del /F/Q WOF_wnet_ia64%LBL%.msi\r
184        rename WOF_wnet_ia64.msi WOF_wnet_ia64%LBL%.msi\r
185     )\r
186 \r
187     if exist WOF_wlh_x86.msi (\r
188         if exist WOF_wlh_x86%LBL%.msi del /F/Q WOF_wlh_x86%LBL%.msi\r
189         rename WOF_wlh_x86.msi WOF_wlh_x86%LBL%.msi\r
190     )\r
191     if exist WOF_wlh_x64.msi  (\r
192         if exist WOF_wlh_x64%LBL%.msi del /F/Q WOF_wlh_x64%LBL%.msi\r
193         rename WOF_wlh_x64.msi WOF_wlh_x64%LBL%.msi\r
194     )\r
195     if exist WOF_wlh_ia64.msi  (\r
196         if exist WOF_wlh_ia64%LBL%.msi del /F/Q WOF_wlh_ia64%LBL%.msi\r
197         rename WOF_wlh_ia64.msi WOF_wlh_ia64%LBL%.msi\r
198     )\r
199     dir WOF_*%LBL%.msi\r
200     popd\r
201     exit /B 0\r
202 )\r
203 \r
204 if "%1" == "msi-del" (\r
205     echo Deleting WOF_{wxp,wnet,wlh}_{x86,x64,ia64}%LBL%.msi\r
206     pushd %IDIR%\r
207     if exist WOF_wxp_x86%LBL%.msi del /F/P WOF_wxp_x86%LBL%.msi\r
208 \r
209     if exist WOF_wnet_x86%LBL%.msi del /F/P WOF_wnet_x86%LBL%.msi\r
210     if exist WOF_wnet_x64%LBL%.msi del /F/P WOF_wnet_x64%LBL%.msi\r
211     if exist WOF_wnet_ia64%LBL%.msi del /F/P WOF_wnet_ia64%LBL%.msi\r
212 \r
213     if exist WOF_wlh_x86%LBL%.msi del /F/P WOF_wlh_x86%LBL%.msi\r
214     if exist WOF_wlh_x64%LBL%.msi del /F/P WOF_wlh_x64%LBL%.msi\r
215     if exist WOF_wlh_ia64%LBL%.msi del /F/P WOF_wlh_ia64%LBL%.msi\r
216 \r
217     dir /N/OD WOF_*.msi\r
218     popd\r
219     exit /B 0\r
220 )\r
221 \r
222 if "%1" == "msi-dir" (\r
223     pushd %IDIR%\r
224     dir /N/OD WOF_*.msi\r
225     popd\r
226     exit /B 0\r
227 )\r
228 \r
229 echo %0 - Building with WDK @ %_DDK%\r
230 echo Building for OPENIB_REV %SVN%, installer files @ %IDIR%\r
231 echo   Drivers signed using Certificate '%CERTFILE%'\r
232 \r
233 rem pause thoughtfully.\r
234 if exist %windir%\system32\timeout.exe (\r
235     timeout /T 10\r
236 ) else (\r
237     pause\r
238 )\r
239 \r
240 if NOT EXIST "%IDIR%" (\r
241     echo %0 - Missing Installer file destination folder %IDIR%\r
242     exit /B 1\r
243 )\r
244 \r
245 rem Verify WIX 2.0 toolset is available - if not, download from\r
246 rem http://sourceforge.net/project/showfiles.php?group_id=105970&package_id=114109\r
247 rem   select wix-2.0.5805.0-binaries.zip download and unzip to\r
248 rem   <...>\gen1\trunk\WinOF\WIX\WIX_tools\\r
249 rem\r
250 if NOT EXIST %WIX%\WIX_tools\%WIX_BIN% (\r
251     echo %0 - Missing WIX tools @ %WIX%\WIX_tools\%WIX_BIN% \r
252     exit /B 1\r
253 )\r
254 \r
255 if NOT EXIST etc\makebin.bat (\r
256     echo %0 - Missing etc\makebin.bat, script must run from gen1\trunk\r
257     exit /B 1\r
258 )\r
259 set STIME=%TIME%\r
260 \r
261 rem skip build - assumes binaries already built.\r
262 \r
263 if "%1" == "wix" (\r
264     set MSI_CMD=msi\r
265     goto mk_msi\r
266 )\r
267 \r
268 set MSI_CMD=all\r
269 if "%1" == "msi" (\r
270     if not EXIST "%RBIN_WLH%"  goto InstallBin\r
271     if not EXIST "%RBIN_WNET%" goto InstallBin\r
272     if not EXIST "%RBIN_WXP%"  goto InstallBin\r
273     goto mk_msi\r
274 )\r
275 \r
276 if "%1" == "makebin" goto InstallBin\r
277 \r
278 set OPS=-wgcPM 3\r
279 if "%1" == "allnoforce" (\r
280     rem Compile everything only if needed.\r
281     set OPS=-wgPM 3\r
282 )\r
283 if "%1" == "compilenoforce" (\r
284     rem Compile everything only if needed.\r
285     set OPS=-wgPM 3\r
286 )\r
287 \r
288 if "%1" == "all" (\r
289     echo Removing build artifacts and folders...\r
290     call %CD%\etc\clean-build.bat\r
291 )\r
292 \r
293 rem ********* Compile for WLH - Windows Server 2008 & Vista\r
294 \r
295 rem WLH x64\r
296 echo %0 - Build WLH x64 Checked\r
297 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
298 if ERRORLEVEL 1 exit /B 1\r
299 echo %0 - Build WLH x64 Free\r
300 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
301 if ERRORLEVEL 1 exit /B 1\r
302 \r
303 rem WLH x86\r
304 \r
305 echo %0 - Build WLH x86 Checked\r
306 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
307 if ERRORLEVEL 1 exit /B 1\r
308 echo %0 - Build WLH x86 Free\r
309 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
310 if ERRORLEVEL 1 exit /B 1\r
311 \r
312 rem WLH ia64\r
313 echo %0 - Build WLH ia64 Checked\r
314 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
315 if ERRORLEVEL 1 exit /B 1\r
316 echo %0 - Build WLH ia64 Free\r
317 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
318 if ERRORLEVEL 1 exit /B 1\r
319 \r
320 \r
321 rem ********* WXP - Windows XP - x86 only\r
322 \r
323 echo %0 - Build XP x86 Checked\r
324 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
325 if ERRORLEVEL 1 exit /B 1\r
326 \r
327 echo %0 - Build XP x86 Free\r
328 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
329 if ERRORLEVEL 1 exit /B 1\r
330 \r
331 \r
332 rem ********* WNET - Windows Server 2003\r
333 echo %0 - Build WNET x64 Checked\r
334 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
335 if ERRORLEVEL 1 exit /B 1\r
336 echo %0 - Build WNET x64 Free\r
337 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
338 if ERRORLEVEL 1 exit /B 1\r
339 \r
340 echo %0 - Build WNET x86 Checked\r
341 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
342 if ERRORLEVEL 1 exit /B 1\r
343 echo %0 - Build WNET x86 Free\r
344 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
345 if ERRORLEVEL 1 exit /B 1\r
346 \r
347 echo %0 - Build WNET ia64 Checked\r
348 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
349 if ERRORLEVEL 1 exit /B 1\r
350 echo %0 - Build WNET ia64 Free\r
351 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
352 if ERRORLEVEL 1 exit /B 1\r
353 \r
354 if "%1" == "compile" goto finito\r
355 if "%1" == "compilenoforce" goto finito\r
356 \r
357 rem Install binaries into WIX environment, build msi installers.\r
358 \r
359 :InstallBin\r
360 \r
361 echo Create binary release tree - suitible for WinOF-WIX installer build.\r
362 \r
363 if EXIST "%RBIN_WLH%"  (rmdir /S /Q %RBIN_WLH% &  echo %0 - removed %RBIN_WLH%)\r
364 if EXIST "%RBIN_WNET%" (rmdir /S /Q %RBIN_WNET% & echo %0 - removed %RBIN_WNET%)\r
365 if EXIST "%RBIN_WXP%"  (rmdir /S /Q %RBIN_WXP% &  echo %0 - removed %RBIN_WXP%)\r
366 \r
367 mkdir %RBIN_WLH%\r
368 mkdir %RBIN_WNET%\r
369 mkdir %RBIN_WXP%\r
370 \r
371 if EXIST "%BSE%\etc\makebin.bat" (\r
372     call %BSE%\etc\makebin.bat %BSE% %RBIN_WLH% wlh\r
373     if ERRORLEVEL 1 (\r
374         echo %0: Err in makebin.bat %BSE% %RBIN_WLH% wlh\r
375         exit /B 1\r
376     )\r
377     call %BSE%\etc\makebin.bat %BSE% %RBIN_WNET% wnet\r
378     if ERRORLEVEL 1 (\r
379         echo %0: Err in makebin.bat %BSE% %RBIN_WNET% wnet\r
380         exit /B 1\r
381     )\r
382     call %BSE%\etc\makebin.bat %BSE% %RBIN_WXP% wxp\r
383     if ERRORLEVEL 1 (\r
384         echo %0: Err in makebin.bat %BSE% %RBIN_WXP% wxp\r
385         exit /B 1\r
386     )\r
387 )\r
388 \r
389 if "%1" == "makebin" goto finito\r
390 \r
391 :mk_msi\r
392 \r
393 echo %0 - Drivers Signed with %CERTFILE%\r
394 echo   Binary releases created in\r
395 echo     %RBIN_WLH%\r
396 echo     %RBIN_WNET%\r
397 echo     %RBIN_WXP%\r
398 \r
399 rem build WIX installers --> see WinOF\WIX\r
400 \r
401 %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
402 \r
403 \r
404 :finito\r
405 \r
406 echo .\r
407 echo %0: Finished %0 %*\r
408 echo %0:   Started  %STIME%\r
409 echo %0:   Finished %TIME%\r
410 \r
411 endlocal\r
412 @echo on\r