@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%