blob: 36b620669cefc93c019ef8a0fc0be37ef6d69d60 [file] [log] [blame]
@echo off
REM Copyright (C) 2007 The Android Open Source Project
REM
REM Licensed under the Apache License, Version 2.0 (the "License");
REM you may not use this file except in compliance with the License.
REM You may obtain a copy of the License at
REM
REM http://www.apache.org/licenses/LICENSE-2.0
REM
REM Unless required by applicable law or agreed to in writing, software
REM distributed under the License is distributed on an "AS IS" BASIS,
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
REM See the License for the specific language governing permissions and
REM limitations under the License.
REM don't modify the caller's environment
setlocal
REM Locate dx.jar in the directory where dx.bat was found and start it.
REM Set up prog to be the path of this script, including following symlinks,
REM and set up progdir to be the fully-qualified pathname of its directory.
set prog=%~f0
REM Change current directory to where dx is, to avoid issues with directories
REM containing whitespaces.
cd /d %~dp0
set jarfile=dx.jar
set frameworkdir=
if exist %frameworkdir%%jarfile% goto JarFileOk
set frameworkdir=lib\
if exist %frameworkdir%%jarfile% goto JarFileOk
set frameworkdir=..\framework\
:JarFileOk
set jarpath=%frameworkdir%%jarfile%
set javaOpts=
set args=
REM By default, give dx a max heap size of 1 gig. This can be overridden
REM by using a "-JXmx..." option (see below).
set defaultMx=-Xmx1024M
REM capture all arguments to process them below
set params=%*
:nextArg
if "%params%"=="" goto endArgs
REM Note: advanced substitions don't work on %1..%N. We need to assign to
REM a variable first.
REM We also can't use %1..%N directly because an option such as --output=name
REM gets automagically converted into %1=--output and %2=name (yes, really!)
REM Instead we manually extract the first token from the params variable.
for /F "tokens=1*" %%a in ("%params%") do call :getArg "%%a" "%%b"
if "%defaultMx%"=="" goto notXmx
if "%A:~0,5%" NEQ "-JXmx" goto notXmx
set defaultMx=
:notXmx
if "%A:~0,2%" NEQ "-J" goto notJ
set javaOpts=%javaOpts% -%A:~2%
goto nextArg
:notJ
set args=%args% %A%
goto nextArg
:getArg
REM this subroutine is called by the for /F with the first argument of params
REM and the rest of the line. The "goto :eof" actually exits the subroutine.
set A=%~1
set params=%~2
goto :eof
:endArgs
set javaOpts=%javaOpts% %defaultMx%
call java %javaOpts% -Djava.ext.dirs=%frameworkdir% -jar %jarpath% %args%