1 #!/usr/bin/env bash 2 # 3 ############################################################################## 4 # Copyright 2002-2011, LAMP/EPFL 5 # Copyright 2011-2015, JetBrains 6 # 7 # This is free software; see the distribution for copying conditions. 8 # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 9 # PARTICULAR PURPOSE. 10 ############################################################################## 11 12 cygwin=false; 13 case "`uname`" in 14 CYGWIN*) cygwin=true ;; 15 esac 16 17 # Based on findScalaHome() from scalac script 18 findKotlinHome() { 19 local source="${BASH_SOURCE[0]}" 20 while [ -h "$source" ] ; do 21 local linked="$(readlink "$source")" 22 local dir="$(cd -P $(dirname "$source") && cd -P $(dirname "$linked") && pwd)" 23 source="$dir/$(basename "$linked")" 24 done 25 (cd -P "$(dirname "$source")/.." && pwd) 26 } 27 28 KOTLIN_HOME="$(findKotlinHome)" 29 30 if $cygwin; then 31 # Remove spaces from KOTLIN_HOME on windows 32 KOTLIN_HOME=`cygpath --windows --short-name "$KOTLIN_HOME"` 33 fi 34 35 [ -n "$JAVA_OPTS" ] || JAVA_OPTS="-Xmx256M -Xms32M" 36 37 declare -a java_args 38 declare -a kotlin_args 39 40 while [ $# -gt 0 ]; do 41 case "$1" in 42 -D*) 43 java_args=("${java_args[@]}" "$1") 44 shift 45 ;; 46 -J*) 47 java_args=("${java_args[@]}" "${1:2}") 48 shift 49 ;; 50 *) 51 kotlin_args=("${kotlin_args[@]}" "$1") 52 shift 53 ;; 54 esac 55 done 56 57 if [ -z "$JAVACMD" -a -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then 58 JAVACMD="$JAVA_HOME/bin/java" 59 fi 60 61 declare -a kotlin_app 62 63 if [ -n "$KOTLIN_RUNNER" ]; 64 then 65 java_args=("${java_args[@]}" "-Dkotlin.home=${KOTLIN_HOME}") 66 kotlin_app=("${KOTLIN_HOME}/lib/kotlin-runner.jar" "org.jetbrains.kotlin.runner.Main") 67 else 68 [ -n "$KOTLIN_COMPILER" ] || KOTLIN_COMPILER=org.jetbrains.kotlin.cli.jvm.K2JVMCompiler 69 java_args=("${java_args[@]}" "-noverify") 70 71 kotlin_app=("${KOTLIN_HOME}/lib/kotlin-preloader.jar" "org.jetbrains.kotlin.preloading.Preloader" "-cp" "${KOTLIN_HOME}/lib/kotlin-compiler.jar" $KOTLIN_COMPILER) 72 fi 73 74 "${JAVACMD:=java}" $JAVA_OPTS "${java_args[@]}" -cp "${kotlin_app[@]}" "${kotlin_args[@]}" 75