[WinOF] added clean option, clearer usage test, cleanup.
[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\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}"\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 \r
53 exit /B 1 \r
54 \r
55 :OK\r
56 \r
57 if not "%WDM_INC_PATH%" == "" (\r
58     echo %0: Error - %0 unable to run from WDK window,\r
59     echo     use %comspec%\r
60     exit /B 1\r
61 )\r
62 \r
63 rem remove build artifacts\r
64 if "%1" == "clean" (\r
65     echo Removing build artifacts and folders...\r
66     call %CD%\etc\clean-build.bat\r
67     exit /B 0\r
68 )\r
69 \r
70 rem set CERTNAME=noCert\r
71 set CERTNAME=cse1CStore\r
72 \r
73 rem A Digital driver signing certificate store name may be required.\r
74 if "%1" == "all" (\r
75     if "%CERTNAME%" == "noCert" set /P CERTNAME=[Enter Certificate Store Name] \r
76     if "%CERTNAME%" == "" (\r
77         echo %0\r
78         echo %0: Err - driver signing certificate store name required.\r
79         echo %0: see certmgr.exe\r
80         exit /B 1\r
81     )\r
82 )\r
83 \r
84 if "%1" == "msi" (\r
85     if "%CERTNAME%" == "noCert" set /P CERTNAME=[Enter Certificate Store Name] \r
86     if "%CERTNAME%" == "" (\r
87         echo %0\r
88         echo %0: Err - driver signing certificate store name required.\r
89         echo %0: see certmgr.exe\r
90         exit /B 1\r
91     )\r
92 )\r
93 \r
94 rem Use this WDK\r
95 \r
96 set _DDK=C:\WinDDK\6001.18001\r
97 \r
98 if NOT EXIST %_DDK% (\r
99     echo Missing WDK @ %_DDK%\r
100     exit /B 1\r
101 )\r
102 echo %0 - Building with WDK @ %_DDK%\r
103 \r
104 rem Platform SDK path - watchout for missing LoadPerf.h (installsp.c)\r
105 set _PSDK=C:\progra~1\mi2578~1\r
106 \r
107 rem WARNING - SVN set depends on the path '\openIB-windows-svn\xxx\gen1', where SVN is set to XXX\r
108 rem  substring[23rd...26th] chars (offset counting) == xxxx\r
109 \r
110 rem If this example method doesn't fit your environment, set SVN accordingly.\r
111 rem Note - OPENIB_REV is assigned SVN in a child script.\r
112 \r
113 set SVN=%CD:~22,4%\r
114 \r
115 rem assumes %CD% == '...\gen1\trunk'\r
116 set BSE=%CD%\r
117 set WIX=%CD:trunk=Branches\WinOF\WIX%\r
118 \r
119 set RBIN_WLH=%WIX%\wlh\bin%\r
120 set RBIN_WNET=%WIX%\wnet\bin%\r
121 set RBIN_WXP=%WIX%\wxp\bin%\r
122 \r
123 if NOT EXIST "..\branches\WinOF\WIX\build-all-MSI.bat" (\r
124     echo %0 - Missing .msi installer build script\r
125     echo    ..\branches\WinOF\WIX\build-all-MSI.bat\r
126     exit /B 1\r
127 )\r
128 \r
129 rem WIX Installer files (.msi) destination folder - set for local environment.\r
130 rem \r
131 set IDIR=%SystemRoot%\temp\r
132 \r
133 echo Building for OPENIB_REV %SVN%, installer files @ %IDIR%\r
134 echo   Drivers signed using Certificate '%CERTNAME%'\r
135 \r
136 rem pause thoughtfully.\r
137 if exist %windir%\system32\timeout.exe (\r
138     timeout /T 10\r
139 ) else (\r
140     pause\r
141 )\r
142 \r
143 if NOT EXIST "%IDIR%" (\r
144     echo %0 - Missing Installer file destination folder %IDIR%\r
145     exit /B 1\r
146 )\r
147 \r
148 rem Verify WIX 2.0 toolset is available - if not, download from\r
149 rem http://sourceforge.net/project/showfiles.php?group_id=105970&package_id=114109\r
150 rem   select wix-2.0.5325.0-binaries.zip download and unzip to\r
151 rem   ..\branches\WinOF\WIX\WIX_tools\\r
152 rem\r
153 if NOT EXIST %WIX%\WIX_tools\wix-2.0.5325.0-binaries (\r
154     echo %0 - Missing WIX tools @ %WIX%\WIX_tools \r
155     exit /B 1\r
156 )\r
157 \r
158 if NOT EXIST etc\makebin.bat (\r
159     echo %0 - Missing etc\makebin.bat, script must run from gen1\trunk\r
160     exit /B 1\r
161 )\r
162 set STIME=%TIME%\r
163 \r
164 rem skip build - assumes binaries already built.\r
165 \r
166 if "%1" == "wix" (\r
167     set CERTNAME=nosign\r
168     goto mk_msi\r
169 )\r
170 \r
171 if "%1" == "msi" (\r
172     if not EXIST "%RBIN_WLH%"  goto InstallBin\r
173     if not EXIST "%RBIN_WNET%" goto InstallBin\r
174     if not EXIST "%RBIN_WXP%"  goto InstallBin\r
175     goto mk_msi\r
176 )\r
177 \r
178 if "%1" == "makebin" goto InstallBin\r
179 \r
180 set OPS=-wgcPM 3\r
181 if "%1" == "allnoforce" (\r
182     rem Compile everything only if needed.\r
183     set OPS=-wgPM 3\r
184 )\r
185 if "%1" == "compilenoforce" (\r
186     rem Compile everything only if needed.\r
187     set OPS=-wgPM 3\r
188 )\r
189 \r
190 if "%1" == "all" (\r
191     echo Removing build artifacts and folders...\r
192     call %CD%\etc\clean-build.bat\r
193 )\r
194 \r
195 rem ********* Compile for WLH - Windows Server 2008 & Vista\r
196 \r
197 rem WLH x64\r
198 echo %0 - Build WLH x64 Checked\r
199 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
200 if ERRORLEVEL 1 exit /B 1\r
201 echo %0 - Build WLH x64 Free\r
202 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
203 if ERRORLEVEL 1 exit /B 1\r
204 \r
205 rem WLH x86\r
206 \r
207 echo %0 - Build WLH x86 Checked\r
208 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
209 if ERRORLEVEL 1 exit /B 1\r
210 echo %0 - Build WLH x86 Free\r
211 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
212 if ERRORLEVEL 1 exit /B 1\r
213 \r
214 rem WLH ia64\r
215 echo %0 - Build WLH ia64 Checked\r
216 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
217 if ERRORLEVEL 1 exit /B 1\r
218 echo %0 - Build WLH ia64 Free\r
219 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_IA64.bat %SVN% %CD% %_DDK% %_PSDK% WLH & build %OPS%"\r
220 if ERRORLEVEL 1 exit /B 1\r
221 \r
222 \r
223 rem ********* WXP - Windows XP - x86 only\r
224 \r
225 rem Fix XP WSD/installsp.exe build problems\r
226 \r
227 if exist .\ulp\wsd\dirs           rename .\ulp\wsd\dirs Xdirs\r
228 if exist .\tools\wsdinstall\dirs  rename .\tools\wsdinstall\dirs Xdirs\r
229 echo %0 - Build XP x86 Checked\r
230 %COMSPEC% /C "call %BSE%\etc\IB_CHK_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
231 if ERRORLEVEL 1 exit /B 1\r
232 \r
233 echo %0 - Build XP x86 Free\r
234 %COMSPEC% /C "call %BSE%\etc\IB_FRE_BLD_x86.bat %SVN% %CD% %_DDK% %_PSDK% WXP & build %OPS%"\r
235 if ERRORLEVEL 1 exit /B 1\r
236 \r
237 rem restore WSD/installsp builds\r
238 if exist .\ulp\wsd\Xdirs           rename .\ulp\wsd\Xdirs dirs  \r
239 if exist .\tools\wsdinstall\Xdirs  rename .\tools\wsdinstall\Xdirs dirs\r
240 \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