1@echo off
2
3REM  Licensed to the Apache Software Foundation (ASF) under one or more
4REM  contributor license agreements.  See the NOTICE file distributed with
5REM  this work for additional information regarding copyright ownership.
6REM  The ASF licenses this file to You under the Apache License, Version 2.0
7REM  (the "License"); you may not use this file except in compliance with
8REM  the License.  You may obtain a copy of the License at
9REM
10REM      http://www.apache.org/licenses/LICENSE-2.0
11REM
12REM  Unless required by applicable law or agreed to in writing, software
13REM  distributed under the License is distributed on an "AS IS" BASIS,
14REM  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15REM  See the License for the specific language governing permissions and
16REM  limitations under the License.
17
18REM This is an inordinately troublesome piece of code, particularly because it
19REM tries to work on both Win9x and WinNT-based systems. If we could abandon '9x
20REM support, things would be much easier, but sadly, it is not yet time.
21REM Be cautious about editing this, and only add WinNT specific stuff in code that
22REM only runs on WinNT.
23
24if "%HOME%"=="" goto homeDrivePathPre
25if exist "%HOME%\antrc_pre.bat" call "%HOME%\antrc_pre.bat"
26
27:homeDrivePathPre
28if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePre
29if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePre
30if exist "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_pre.bat"
31
32:userProfilePre
33if "%USERPROFILE%"=="" goto alpha
34if "%USERPROFILE%"=="%HOME%" goto alpha
35if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto alpha
36if exist "%USERPROFILE%\antrc_pre.bat" call "%USERPROFILE%\antrc_pre.bat"
37
38:alpha
39
40if "%OS%"=="Windows_NT" @setlocal
41if "%OS%"=="WINNT" @setlocal
42
43if "%ANT_HOME%"=="" goto setDefaultAntHome
44
45:stripAntHome
46if not _%ANT_HOME:~-1%==_\ goto checkClasspath
47set ANT_HOME=%ANT_HOME:~0,-1%
48goto stripAntHome
49
50:setDefaultAntHome
51rem %~dp0 is expanded pathname of the current script under NT
52set ANT_HOME=%~dp0..
53
54:checkClasspath
55set _USE_CLASSPATH=yes
56rem CLASSPATH must not be used if it is equal to ""
57if "%CLASSPATH%"=="""" set _USE_CLASSPATH=no
58if "%CLASSPATH%"=="" set _USE_CLASSPATH=no
59
60rem Slurp the command line arguments. This loop allows for an unlimited number
61rem of arguments (up to the command line limit, anyway).
62set ANT_CMD_LINE_ARGS=%1
63if ""%1""=="""" goto doneStart
64shift
65:setupArgs
66if ""%1""=="""" goto doneStart
67if ""%1""==""-noclasspath"" goto clearclasspath
68set ANT_CMD_LINE_ARGS=%ANT_CMD_LINE_ARGS% %1
69shift
70goto setupArgs
71
72rem here is there is a -noclasspath in the options
73:clearclasspath
74set _USE_CLASSPATH=no
75shift
76goto setupArgs
77
78rem This label provides a place for the argument list loop to break out
79rem and for NT handling to skip to.
80
81:doneStart
82
83if _USE_CLASSPATH==no goto findAntHome
84
85:stripClasspath
86if not _%CLASSPATH:~-1%==_\ goto findAntHome
87set CLASSPATH=%CLASSPATH:~0,-1%
88goto stripClasspath
89
90:findAntHome
91rem find ANT_HOME if it does not exist due to either an invalid value passed
92rem by the user or the %0 problem on Windows 9x
93if exist "%ANT_HOME%\lib\ant.jar" goto checkJava
94
95rem check for ant in Program Files
96if not exist "%ProgramFiles%\ant" goto checkSystemDrive
97set ANT_HOME=%ProgramFiles%\ant
98goto checkJava
99
100:checkSystemDrive
101rem check for ant in root directory of system drive
102if not exist %SystemDrive%\ant\lib\ant.jar goto checkCDrive
103set ANT_HOME=%SystemDrive%\ant
104goto checkJava
105
106:checkCDrive
107rem check for ant in C:\ant for Win9X users
108if not exist C:\ant\lib\ant.jar goto noAntHome
109set ANT_HOME=C:\ant
110goto checkJava
111
112:noAntHome
113echo ANT_HOME is set incorrectly or ant could not be located. Please set ANT_HOME.
114goto end
115
116:checkJava
117set _JAVACMD=%JAVACMD%
118
119if "%JAVA_HOME%" == "" goto noJavaHome
120if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
121if "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\java.exe
122goto checkJikes
123
124:noJavaHome
125if "%_JAVACMD%" == "" set _JAVACMD=java.exe
126
127:checkJikes
128if not "%JIKESPATH%"=="" goto runAntWithJikes
129
130:runAnt
131if "%_USE_CLASSPATH%"=="no" goto runAntNoClasspath
132:runAntWithClasspath
133"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
134rem Check the error code of the Ant build
135if not "%OS%"=="Windows_NT" goto onError
136set ANT_ERROR=%ERRORLEVEL%
137goto end
138
139:runAntNoClasspath
140"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
141rem Check the error code of the Ant build
142if not "%OS%"=="Windows_NT" goto onError
143set ANT_ERROR=%ERRORLEVEL%
144goto end
145
146:runAntWithJikes
147
148if not _%JIKESPATH:~-1%==_\ goto checkJikesAndClasspath
149set JIKESPATH=%JIKESPATH:~0,-1%
150goto runAntWithJikes
151
152:checkJikesAndClasspath
153
154if "%_USE_CLASSPATH%"=="no" goto runAntWithJikesNoClasspath
155
156:runAntWithJikesAndClasspath
157"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS%  -cp "%CLASSPATH%" %ANT_CMD_LINE_ARGS%
158rem Check the error code of the Ant build
159if not "%OS%"=="Windows_NT" goto onError
160set ANT_ERROR=%ERRORLEVEL%
161goto end
162
163:runAntWithJikesNoClasspath
164"%_JAVACMD%" %ANT_OPTS% -classpath "%ANT_HOME%\lib\ant-launcher.jar" "-Dant.home=%ANT_HOME%" "-Djikes.class.path=%JIKESPATH%" org.apache.tools.ant.launch.Launcher %ANT_ARGS% %ANT_CMD_LINE_ARGS%
165rem Check the error code of the Ant build
166if not "%OS%"=="Windows_NT" goto onError
167set ANT_ERROR=%ERRORLEVEL%
168goto end
169
170:onError
171rem Windows 9x way of checking the error code.  It matches via brute force.
172for %%i in (1 10 100) do set err%%i=
173for %%i in (0 1 2) do if errorlevel %%i00 set err100=%%i
174if %err100%==2 goto onError200
175if %err100%==0 set err100=
176for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%%i0 set err10=%%i
177if "%err100%"=="" if %err10%==0 set err10=
178:onError1
179for %%i in (0 1 2 3 4 5 6 7 8 9) do if errorlevel %err100%%err10%%%i set err1=%%i
180goto onErrorEnd
181:onError200
182for %%i in (0 1 2 3 4 5) do if errorlevel 2%%i0 set err10=%%i
183if err10==5 for %%i in (0 1 2 3 4 5) do if errorlevel 25%%i set err1=%%i
184if not err10==5 goto onError1
185:onErrorEnd
186set ANT_ERROR=%err100%%err10%%err1%
187for %%i in (1 10 100) do set err%%i=
188
189:end
190rem bug ID 32069: resetting an undefined env variable changes the errorlevel.
191if not "%_JAVACMD%"=="" set _JAVACMD=
192if not "%_ANT_CMD_LINE_ARGS%"=="" set ANT_CMD_LINE_ARGS=
193
194if "%ANT_ERROR%"=="0" goto mainEnd
195
196rem Set the return code if we are not in NT.  We can only set
197rem a value of 1, but it's better than nothing.
198if not "%OS%"=="Windows_NT" echo 1 > nul | choice /n /c:1
199
200rem Set the ERRORLEVEL if we are running NT.
201if "%OS%"=="Windows_NT" color 00
202
203goto omega
204
205:mainEnd
206
207rem If there were no errors, we run the post script.
208if "%OS%"=="Windows_NT" @endlocal
209if "%OS%"=="WINNT" @endlocal
210
211if "%HOME%"=="" goto homeDrivePathPost
212if exist "%HOME%\antrc_post.bat" call "%HOME%\antrc_post.bat"
213
214:homeDrivePathPost
215if "%HOMEDRIVE%%HOMEPATH%"=="" goto userProfilePost
216if "%HOMEDRIVE%%HOMEPATH%"=="%HOME%" goto userProfilePost
217if exist "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat" call "%HOMEDRIVE%%HOMEPATH%\antrc_post.bat"
218
219:userProfilePost
220if "%USERPROFILE%"=="" goto omega
221if "%USERPROFILE%"=="%HOME%" goto omega
222if "%USERPROFILE%"=="%HOMEDRIVE%%HOMEPATH%" goto omega
223if exist "%USERPROFILE%\antrc_post.bat" call "%USERPROFILE%\antrc_post.bat"
224
225:omega
226
227