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

