[WinOF] buildrelease.bat usages of 'C:' changed to '%SystemDrive%'.
[mirror/winof/.git] / 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 ..\Branches\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 | wix | clean {OPENIB_REV}\r
11 rem\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>\branches\WinOF\Wix\* accessible.\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 \r
33 echo Unknown arg '%1' ?\r
34 \r
35 :usage\r
36 \r
37 echo "usage: BuildRelease all | allnoforce | compile | compilenoforce | makebin | msi | wix | clean {OPENIB_REV value}"\r
38 echo where:\r
39 echo    all - force recompile, install binaries to WIX tree, sign drivers and\r
40 echo          build installers.\r
41 \r
42 echo    allnoforce - recompile only if needed, install binaries to WIX tree,\r
43 echo                 sign drivers and build installers.\r
44 echo    compile - force a recompile/link of everything then exit.\r
45 echo    compilenoforce - recompile/link only if needed then exit.\r
46 echo    makebin - assumes binaries are built, will installs binaries to WIX tree\r
47 echo              then exit.\r
48 echo    msi - assumes binaries are installed in WIX tree, signs drivers and\r
49 echo          create installers (.msi files) in IDIR.\r
50 echo    wix - build .msi installers, assumes (drivers signed) .cat files exist\r
51 echo    clean - remove build artifacts for a clean build: .obj, .sys, ...\r
52 echo :\r
53 echo    {OPENIB_REV}\r
54 echo       optional, if set then OPENIB_REV is assigned this value.\r
55 echo            example: BuildRelease all 1414\r
56 \r
57 exit /B 1 \r
58 \r
59 :OK\r
60 \r
61 if not "%WDM_INC_PATH%" == "" (\r
62     echo %0: Error - %0 unable to run from WDK window,\r
63     echo     use %comspec%\r
64     exit /B 1\r
65 )\r
66 \r
67 rem remove build artifacts\r
68 if "%1" == "clean" (\r
69     echo Removing build artifacts and folders...\r
70     call %CD%\etc\clean-build.bat\r
71     exit /B 0\r
72 )\r
73 \r
74 rem set CERTNAME=noCert\r
75 set CERTNAME=cse1CStore\r
76 \r
77 rem A Digital driver signing certificate store name may be required.\r
78 if "%1" == "all" (\r
79     if "%CERTNAME%" == "noCert" set /P CERTNAME=[Enter Certificate Store Name] \r
80     if "%CERTNAME%" == "" (\r
81         echo %0\r
82         echo %0: Err - driver signing certificate store name required.\r
83         echo %0: see certmgr.exe\r
84         exit /B 1\r
85     )\r
86 )\r
87 \r
88 if "%1" == "msi" (\r
89     if "%CERTNAME%" == "noCert" set /P CERTNAME=[Enter Certificate Store Name] \r
90     if "%CERTNAME%" == "" (\r
91         echo %0\r
92         echo %0: Err - driver signing certificate store name required.\r
93         echo %0: see certmgr.exe\r
94         exit /B 1\r
95     )\r
96 )\r
97 \r
98 rem Use this WDK\r
99 \r
100 set _DDK=%SystemDrive%\WinDDK\6001.18001\r
101 \r
102 if NOT EXIST %_DDK% (\r
103     echo Missing WDK @ %_DDK%\r
104     exit /B 1\r
105 )\r
106 echo %0 - Building with WDK @ %_DDK%\r
107 \r
108 rem Platform SDK path - watchout for missing LoadPerf.h (installsp.c)\r
109 set _PSDK=%SystemDrive%\progra~1\mi2578~1\r
110 \r
111 rem setup value for OPENIB_REV assignment.\r
112 \r
113 if not "%2" == "" (\r
114     set SVN=%2\r
115 ) else (\r
116     rem WARNING - SVN value depends on the path '\openIB-windows-svn\XXX\gen1',\r
117     rem where SVN is set to XXX\r
118     rem  substring[23rd...26th] chars (offset counting) == xxxx\r
119     rem Note - OPENIB_REV is assigned SVN in a child script.\r
120 \r
121     set SVN=%CD:~22,4%\r
122 )\r
123 \r
124 rem assumes %CD% == '...\gen1\trunk'\r
125 set BSE=%CD%\r
126 set WIX=%CD:trunk=Branches\WinOF\WIX%\r
127 \r
128 set RBIN_WLH=%WIX%\wlh\bin%\r
129 set RBIN_WNET=%WIX%\wnet\bin%\r
130 set RBIN_WXP=%WIX%\wxp\bin%\r
131 \r
132 if NOT EXIST "..\branches\WinOF\WIX\build-all-MSI.bat" (\r
133     echo %0 - Missing .msi installer build script\r
134     echo    ..\branches\WinOF\WIX\build-all-MSI.bat\r
135     exit /B 1\r
136 )\r
137 \r
138 rem WIX Installer files (.msi) destination folder - set for local environment.\r
139 rem \r
140 set IDIR=%SystemRoot%\temp\r
141 \r
142 echo Building for OPENIB_REV %SVN%, installer files @ %IDIR%\r
143 echo   Drivers signed using Certificate '%CERTNAME%'\r
144 \r
145 rem pause thoughtfully.\r
146 if exist %windir%\system32\timeout.exe (\r
147     timeout /T 10\r
148 ) else (\r
149     pause\r
150 )\r
151 \r
152 if NOT EXIST "%IDIR%" (\r
153     echo %0 - Missing Installer file destination folder %IDIR%\r
154     exit /B 1\r
155 )\r
156 \r
157 rem Verify WIX 2.0 toolset is available - if not, download from\r
158 rem http://sourceforge.net/project/showfiles.php?group_id=105970&package_id=114109\r
159 rem   select wix-2.0.5325.0-binaries.zip download and unzip to\r
160 rem   ..\branches\WinOF\WIX\WIX_tools\\r
161 rem\r
162 if NOT EXIST %WIX%\WIX_tools\wix-2.0.5325.0-binaries (\r
163     echo %0 - Missing WIX tools @ %WIX%\WIX_tools \r
164     exit /B 1\r
165 )\r
166 \r
167 if NOT EXIST etc\makebin.bat (\r
168     echo %0 - Missing etc\makebin.bat, script must run from gen1\trunk\r
169     exit /B 1\r
170 )\r
171 set STIME=%TIME%\r
172 \r
173 rem skip build - assumes binaries already built.\r
174 \r
175 if "%1" == "wix" (\r
176     set CERTNAME=nosign\r
177     goto mk_msi\r
178 )\r
179 \r
180 if "%1" == "msi" (\r
181     if not EXIST "%RBIN_WLH%"  goto InstallBin\r
182     if not EXIST "%RBIN_WNET%" goto InstallBin\r
183     if not EXIST "%RBIN_WXP%"  goto InstallBin\r
184     goto mk_msi\r
185 )\r
186 \r
187 if "%1" == "makebin" goto InstallBin\r
188 \r
189 set OPS=-wgcPM 3\r
190 if "%1" == "allnoforce" (\r
191     rem Compile everything only if needed.\r
192     set OPS=-wgPM 3\r
193 )\r
194 if "%1" == "compilenoforce" (\r
195     rem Compile everything only if needed.\r
196     set OPS=-wgPM 3\r
197 )\r
198 \r
199 if "%1" == "all" (\r
200     echo Removing build artifacts and folders...\r
201     call %CD%\etc\clean-build.bat\r
202 )\r
203 \r
204 rem ********* Compile for WLH - Windows Server 2008 & Vista\r
205 \r
206 rem WLH x64\r
207 echo %0 - Build WLH x64 Checked\r
208 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
209 if ERRORLEVEL 1 exit /B 1\r
210 echo %0 - Build WLH x64 Free\r
211 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
212 if ERRORLEVEL 1 exit /B 1\r
213 \r
214 rem WLH x86\r
215 \r
216 echo %0 - Build WLH x86 Checked\r
217 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
218 if ERRORLEVEL 1 exit /B 1\r
219 echo %0 - Build WLH x86 Free\r
220 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
221 if ERRORLEVEL 1 exit /B 1\r
222 \r
223 rem WLH ia64\r
224 echo %0 - Build WLH ia64 Checked\r
225 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
226 if ERRORLEVEL 1 exit /B 1\r
227 echo %0 - Build WLH ia64 Free\r
228 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
229 if ERRORLEVEL 1 exit /B 1\r
230 \r
231 \r
232 rem ********* WXP - Windows XP - x86 only\r
233 \r
234 echo %0 - Build XP x86 Checked\r
235 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
236 if ERRORLEVEL 1 exit /B 1\r
237 \r
238 echo %0 - Build XP x86 Free\r
239 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
240 if ERRORLEVEL 1 exit /B 1\r
241 \r
242 \r
243 rem ********* WNET - Windows Server 2003\r
244 echo %0 - Build WNET x64 Checked\r
245 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
246 if ERRORLEVEL 1 exit /B 1\r
247 echo %0 - Build WNET x64 Free\r
248 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
249 if ERRORLEVEL 1 exit /B 1\r
250 \r
251 echo %0 - Build WNET x86 Checked\r
252 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
253 if ERRORLEVEL 1 exit /B 1\r
254 echo %0 - Build WNET x86 Free\r
255 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
256 if ERRORLEVEL 1 exit /B 1\r
257 \r
258 echo %0 - Build WNET ia64 Checked\r
259 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
260 if ERRORLEVEL 1 exit /B 1\r
261 echo %0 - Build WNET ia64 Free\r
262 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WNET & build %OPS%"\r
263 if ERRORLEVEL 1 exit /B 1\r
264 \r
265 if "%1" == "compile" goto finito\r
266 if "%1" == "compilenoforce" goto finito\r
267 \r
268 rem Install binaries into WIX environment, build msi installers.\r
269 \r
270 :InstallBin\r
271 \r
272 echo Create binary release tree - suitible for WinOF-WIX installer build.\r
273 \r
274 if EXIST "%RBIN_WLH%"  (rmdir /S /Q %RBIN_WLH% &  echo %0 - removed %RBIN_WLH%)\r
275 if EXIST "%RBIN_WNET%" (rmdir /S /Q %RBIN_WNET% & echo %0 - removed %RBIN_WNET%)\r
276 if EXIST "%RBIN_WXP%"  (rmdir /S /Q %RBIN_WXP% &  echo %0 - removed %RBIN_WXP%)\r
277 \r
278 mkdir %RBIN_WLH%\r
279 mkdir %RBIN_WNET%\r
280 mkdir %RBIN_WXP%\r
281 \r
282 if EXIST "%BSE%\etc\makebin.bat" (\r
283     echo etc\makebin.bat %BSE% %RBIN_WLH% wlh\r
284     call %BSE%\etc\makebin.bat %BSE% %RBIN_WLH% wlh\r
285     if ERRORLEVEL 1 (\r
286         echo %0: Err in makebin.bat %BSE% %RBIN_WLH% wlh\r
287         exit /B 1\r
288     )\r
289     echo etc\makebin.bat %BSE% %RBIN_WNET% wnet\r
290     call %BSE%\etc\makebin.bat %BSE% %RBIN_WNET% wnet\r
291     if ERRORLEVEL 1 (\r
292         echo %0: Err in makebin.bat %BSE% %RBIN_WNET% wnet\r
293         exit /B 1\r
294     )\r
295     echo etc\makebin.bat %BSE% %RBIN_WXP% wxp\r
296     call %BSE%\etc\makebin.bat %BSE% %RBIN_WXP% wxp\r
297     if ERRORLEVEL 1 (\r
298         echo %0: Err in makebin.bat %BSE% %RBIN_WXP% wxp\r
299         exit /B 1\r
300     )\r
301 )\r
302 \r
303 if "%1" == "makebin" goto finito\r
304 \r
305 :mk_msi\r
306 \r
307 echo %0 - Drivers Signed with %CERTNAME% , Binary releases built in\r
308 echo     %RBIN_WLH%\r
309 echo     %RBIN_WNET%\r
310 echo     %RBIN_WXP%\r
311 \r
312 rem build WIX installers --> see ..\branches\WinOF\WIX\r
313 \r
314 %COMSPEC% /V:on /E:on /C "%_DDK%\bin\setenv.bat %_DDK% fre X64 WNET & cd /D %WIX% & build-all-MSI %CERTNAME% %IDIR%"\r
315 \r
316 \r
317 :finito\r
318 \r
319 echo .\r
320 echo %0: Finished %0 %*\r
321 echo %0:   Started  %STIME%\r
322 echo %0:   Finished %TIME%\r
323 \r
324 endlocal\r
325 @echo on\r