|
| 1 | +@echo off |
| 2 | +setlocal enabledelayedexpansion |
| 3 | + |
| 4 | +@rem ######################################################################### |
| 5 | +@rem ## Environment setup |
| 6 | + |
| 7 | +set _EXITCODE=0 |
| 8 | + |
| 9 | +set "_PROG_HOME=%~dp0" |
| 10 | + |
| 11 | +call "%_PROG_HOME%\common.bat" |
| 12 | +if not %_EXITCODE%==0 goto end |
| 13 | + |
| 14 | +set _DEFAULT_JAVA_OPTS=-Xmx768m -Xms768m |
| 15 | +@rem set _WITH_COMPILER=true |
| 16 | + |
| 17 | +set _COMPILER_MAIN=dotty.tools.dotc.Main |
| 18 | +set _DECOMPILER_MAIN=dotty.tools.dotc.decompiler.Main |
| 19 | +set _REPL_MAIN=dotty.tools.repl.Main |
| 20 | +set _SCRIPTING_MAIN=dotty.tools.scripting.Main |
| 21 | + |
| 22 | +call :args %* |
| 23 | + |
| 24 | +@rem ######################################################################### |
| 25 | +@rem ## Main |
| 26 | + |
| 27 | +call :classpathArgs |
| 28 | + |
| 29 | +set _SCRIPTING_STRING= |
| 30 | +if "%_PROG_NAME%"=="%_SCRIPTING_MAIN%" ( |
| 31 | + if not defined _TARGET_SCRIPT ( |
| 32 | + echo Error: Missing Scala script file 1>&2 |
| 33 | + set _EXITCODE=1 |
| 34 | + goto end |
| 35 | + ) |
| 36 | + set _SCRIPTING_STRING=-script %_TARGET_SCRIPT% %_SCRIPTING_ARGS% |
| 37 | +) |
| 38 | + |
| 39 | +if defined JAVA_OPTS ( set _JAVA_OPTS=%JAVA_OPTS% |
| 40 | +) else ( set _JAVA_OPTS=%_DEFAULT_JAVA_OPTS% |
| 41 | +) |
| 42 | +call "%_JAVACMD%" %_JAVA_OPTS% %_JAVA_DEBUG% %_JAVA_ARGS% %_JVM_CP_ARGS% ^ |
| 43 | +-Dscala.usejavacp=true ^ |
| 44 | +%_PROG_NAME% %_SCALA_ARGS% %_RESIDUAL_ARGS% %_SCRIPTING_STRING% |
| 45 | +if not %ERRORLEVEL%==0 ( |
| 46 | + set _EXITCODE=1 |
| 47 | + goto end |
| 48 | +) |
| 49 | +goto end |
| 50 | + |
| 51 | +@rem ######################################################################### |
| 52 | +@rem ## Subroutines |
| 53 | + |
| 54 | +:args |
| 55 | +set _JAVA_DEBUG= |
| 56 | +set _HELP= |
| 57 | +set _VERBOSE= |
| 58 | +set _QUIET= |
| 59 | +set _COLORS= |
| 60 | +set _PROG_NAME=%_COMPILER_MAIN% |
| 61 | +set _SCALA_ARGS= |
| 62 | +set _JAVA_ARGS= |
| 63 | +set _RESIDUAL_ARGS= |
| 64 | +set _SCRIPTING_ARGS= |
| 65 | +set _TARGET_SCRIPT= |
| 66 | + |
| 67 | +:args_loop |
| 68 | +if "%~1"=="" goto args_done |
| 69 | +set "__ARG=%~1" |
| 70 | +if defined _TARGET_SCRIPT ( |
| 71 | + call :addScripting "%__ARG%" |
| 72 | +) else if "%__ARG%"=="--" ( |
| 73 | + @rem for arg; do addResidual "$arg"; done; set -- ;; |
| 74 | +) else if "%__ARG%"=="-h" ( |
| 75 | + set _HELP=true |
| 76 | + call :addScala "-help" |
| 77 | +) else if "%__ARG%"=="-help" ( |
| 78 | + set _HELP=true |
| 79 | + call :addScala "-help" |
| 80 | +) else if "%__ARG%"=="-v" ( |
| 81 | + set _VERBOSE=true |
| 82 | + call :addScala "-verbose" |
| 83 | +) else if "%__ARG%"=="-verbose" ( |
| 84 | + set _VERBOSE=true |
| 85 | + call :addScala "-verbose" |
| 86 | +) else if "%__ARG%"=="-debug" ( set "_JAVA_DEBUG=%_DEBUG_STR%" |
| 87 | +) else if "%__ARG%"=="-q" ( set _QUIET=true |
| 88 | +) else if "%__ARG%"=="-quiet" ( set _QUIET=true |
| 89 | +@rem Optimize for short-running applications, see https://github.com/lampepfl/dotty/issues/222 |
| 90 | +) else if "%__ARG%"=="-Oshort" ( |
| 91 | + call :addJava "-XX:+TieredCompilation -XX:TieredStopAtLevel=1" |
| 92 | +) else if "%__ARG%"=="-repl" ( set _PROG_NAME=%_REPL_MAIN% |
| 93 | +) else if "%__ARG%"=="-script" ( |
| 94 | + set _PROG_NAME=%_SCRIPTING_MAIN% |
| 95 | + if "%~2"=="" goto args_done |
| 96 | + set "_TARGET_SCRIPT=%~2" |
| 97 | + shift |
| 98 | +) else if "%__ARG%"=="-compile" ( set _PROG_NAME=%_COMPILER_MAIN% |
| 99 | +) else if "%__ARG%"=="-decompile" ( set _PROG_NAME=%_DECOMPILER_MAIN% |
| 100 | +) else if "%__ARG%"=="-print-tasty" ( |
| 101 | + set _PROG_NAME=%_DECOMPILER_MAIN% |
| 102 | + call :addScala "-print-tasty" |
| 103 | +) else if "%__ARG%"=="-run" ( set _PROG_NAME=%_REPL_MAIN% |
| 104 | +) else if "%__ARG%"=="-colors" ( set _COLORS=true |
| 105 | +) else if "%__ARG%"=="-no-colors" ( set _COLORS= |
| 106 | +) else if "%__ARG%"=="-with-compiler" ( set _JVM_CP_ARGS=%_PSEP%%_SCALA3_COMP%%_PSEP%%_TASTY_CORE% |
| 107 | +@rem break out -D and -J options and add them to JAVA_OPTS as well |
| 108 | +@rem so they reach the JVM in time to do some good. The -D options |
| 109 | +@rem will be available as system properties. |
| 110 | +) else if "%__ARG:~0,2%"=="-D" ( call :addJava "%__ARG%" |
| 111 | +) else if "%__ARG:~0,2%"=="-J" ( call :addJava "%__ARG:~2%" |
| 112 | +) else ( call :addResidual "%__ARG%" |
| 113 | +) |
| 114 | +shift |
| 115 | +goto args_loop |
| 116 | +:args_done |
| 117 | +goto :eof |
| 118 | + |
| 119 | +@rem output parameter: _SCALA_ARGS |
| 120 | +:addScala |
| 121 | +set _SCALA_ARGS=%_SCALA_ARGS% %~1 |
| 122 | +goto :eof |
| 123 | + |
| 124 | +@rem output parameter: _JAVA_ARGS |
| 125 | +:addJava |
| 126 | +set _JAVA_ARGS=%_JAVA_ARGS% %~1 |
| 127 | +goto :eof |
| 128 | + |
| 129 | +@rem output parameter: _RESIDUAL_ARGS |
| 130 | +:addResidual |
| 131 | +set _RESIDUAL_ARGS=%_RESIDUAL_ARGS% %~1 |
| 132 | +goto :eof |
| 133 | + |
| 134 | +@rem output parameter: _SCRIPTING_ARGS |
| 135 | +:addScripting |
| 136 | +set _SCRIPTING_ARGS=%_SCRIPTING_ARGS% %~1 |
| 137 | +goto :eof |
| 138 | + |
| 139 | +@rem output parameter: _JVM_CP_ARGS |
| 140 | +:classpathArgs |
| 141 | +@rem echo scala3-compiler: %_SCALA3_COMP% |
| 142 | +@rem echo scala3-interface: %_SCALA3_INTF% |
| 143 | +@rem echo scala3-library: %_SCALA3_LIB% |
| 144 | +@rem echo tasty-core: %_TASTY_CORE% |
| 145 | +@rem echo scala-asm: %_SCALA_ASM% |
| 146 | +@rem echo scala-lib: %_SCALA_LIB% |
| 147 | +@rem echo sbt-intface: %_SBT_INTF% |
| 148 | + |
| 149 | +set __TOOLCHAIN=%_SCALA_LIB%%_PSEP% |
| 150 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_LIB%%_PSEP% |
| 151 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA_ASM%%_PSEP% |
| 152 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SBT_INTF%%_PSEP% |
| 153 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_INTF%%_PSEP% |
| 154 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_COMP%%_PSEP% |
| 155 | +set __TOOLCHAIN=%__TOOLCHAIN%%_TASTY_CORE%%_PSEP% |
| 156 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_STAGING%%_PSEP% |
| 157 | +set __TOOLCHAIN=%__TOOLCHAIN%%_SCALA3_TASTY_INSPECTOR%%_PSEP% |
| 158 | + |
| 159 | +@rem # jline |
| 160 | +set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_READER%%_PSEP% |
| 161 | +set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL%%_PSEP% |
| 162 | +set __TOOLCHAIN=%__TOOLCHAIN%%_JLINE_TERMINAL_JNA%%_PSEP% |
| 163 | +set __TOOLCHAIN=%__TOOLCHAIN%%_JNA% |
| 164 | + |
| 165 | +set _JVM_CP_ARGS=-classpath "%__TOOLCHAIN%" |
| 166 | +goto :eof |
| 167 | + |
| 168 | +@rem ######################################################################### |
| 169 | +@rem ## Cleanups |
| 170 | + |
| 171 | +:end |
| 172 | +exit /b %_EXITCODE% |
| 173 | +endlocal |
0 commit comments