From 3083fde2dda88949a0c80564f9a161633a02812f Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 17 Oct 2011 18:01:02 +0200 Subject: [PATCH] binary distribution for Kotlin --- .idea/ant.xml | 8 +++ build.xml | 64 ++++++++++++++++++++++++ compiler/cli/bin/kotlinc | 96 ++++++++++++++++++++++++++++++++++++ compiler/cli/bin/kotlinc.bat | 51 +++++++++++++++++++ 4 files changed, 219 insertions(+) create mode 100644 build.xml create mode 100644 compiler/cli/bin/kotlinc create mode 100644 compiler/cli/bin/kotlinc.bat diff --git a/.idea/ant.xml b/.idea/ant.xml index 544e1256edb..37ffae42808 100644 --- a/.idea/ant.xml +++ b/.idea/ant.xml @@ -26,6 +26,14 @@ + + + + + + + + diff --git a/build.xml b/build.xml new file mode 100644 index 00000000000..9f10c18ad52 --- /dev/null +++ b/build.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/compiler/cli/bin/kotlinc b/compiler/cli/bin/kotlinc new file mode 100644 index 00000000000..6763c5e7605 --- /dev/null +++ b/compiler/cli/bin/kotlinc @@ -0,0 +1,96 @@ +#!/bin/bash --posix +# +############################################################################## +# Copyright 2002-2011, LAMP/EPFL +# Copyright 2011, JetBrains +# +# This is free software; see the distribution for copying conditions. +# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. +############################################################################## + +cygwin=false; +case "`uname`" in + CYGWIN*) cygwin=true ;; +esac + +# Finding the root folder for this Kotlin distribution +SOURCE=$0; +SCRIPT=`basename "$SOURCE"`; +while [ -h "$SOURCE" ]; do + SCRIPT=`basename "$SOURCE"`; + LOOKUP=`ls -ld "$SOURCE"`; + TARGET=`expr "$LOOKUP" : '.*-> \(.*\)$'`; + if expr "${TARGET:-.}/" : '/.*/$' > /dev/null; then + SOURCE=${TARGET:-.}; + else + SOURCE=`dirname "$SOURCE"`/${TARGET:-.}; + fi; +done; + +# see #2092 +KOTLIN_HOME=`dirname "$SOURCE"` +KOTLIN_HOME=`cd "$KOTLIN_HOME"; pwd -P` +KOTLIN_HOME=`cd "$KOTLIN_HOME"/..; pwd` + +# Remove spaces from KOTLIN_HOME on windows +if $cygwin; then + KOTLIN_HOME=`cygpath --windows --short-name "$KOTLIN_HOME"` + KOTLIN_HOME=`cygpath --unix "$KOTLIN_HOME"` +fi + +# Constructing the extension classpath +TOOL_CLASSPATH="" +if [ -z "$TOOL_CLASSPATH" ] ; then + for ext in "$KOTLIN_HOME"/lib/* ; do + if [ -z "$TOOL_CLASSPATH" ] ; then + TOOL_CLASSPATH="$ext" + else + TOOL_CLASSPATH="$TOOL_CLASSPATH:$ext" + fi + done +fi + +[ -n "$JAVA_OPTS" ] || JAVA_OPTS="-Xmx256M -Xms32M" + +# break out -D and -J options and add them to JAVA_OPTS as well +# so they reach the underlying JVM in time to do some good. The +# -D options will be available as system properties. +declare -a java_args +declare -a kotlin_args + +while [ $# -gt 0 ]; do + case "$1" in + -D*) + # pass to kotlin as well: otherwise we lose it sometimes when we + # need it, e.g. communicating with a server compiler. + java_args=("${java_args[@]}" "$1") + kotlin_args=("${kotlin_args[@]}" "$1") + shift + ;; + -J*) + # as with -D, pass to scala even though it will almost + # never be used. + java_args=("${java_args[@]}" "${1:2}") + kotlin_args=("${kotlin_args[@]}" "$1") + shift + ;; + *) + kotlin_args=("${kotlin_args[@]}" "$1") + shift + ;; + esac +done + +# reset "$@" to the remaining args +set -- "${kotlin_args[@]}" + +if [ -z "$JAVACMD" -a -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/java" ]; then + JAVACMD="$JAVA_HOME/bin/java" +fi + +"${JAVACMD:=java}" \ + $JAVA_OPTS \ + "${java_args[@]}" \ + ${CPSELECT}${TOOL_CLASSPATH} \ + org.jetbrains.jet.cli.KotlinCompiler "$@" diff --git a/compiler/cli/bin/kotlinc.bat b/compiler/cli/bin/kotlinc.bat new file mode 100644 index 00000000000..20d2e1795d8 --- /dev/null +++ b/compiler/cli/bin/kotlinc.bat @@ -0,0 +1,51 @@ +rem based on scalac.bat from the Scala distribution +rem ########################################################################## +rem # Copyright 2002-2011, LAMP/EPFL +rem # Copyright 2011, JetBrains +rem # +rem # This is free software; see the distribution for copying conditions. +rem # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A +rem # PARTICULAR PURPOSE. +rem ########################################################################## +@echo off + +@setlocal +call :set_home + +if not "%JAVA_HOME%"=="" ( + if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe" +) + +if "%_JAVACMD%"=="" set _JAVACMD=java + +rem We use the value of the JAVA_OPTS environment variable if defined +set _JAVA_OPTS=-Xmx256M -Xms32M + +set _TOOL_CLASSPATH= +if "%_TOOL_CLASSPATH%"=="" ( + for %%f in ("%_KOTLIN_HOME%\lib\*") do call :add_cpath "%%f" + for /d %%f in ("%_KOTLIN_HOME%\lib\*") do call :add_cpath "%%f" +) + +"%_JAVACMD%" %_JAVA_OPTS% cp "%_TOOL_CLASSPATH%" org.jetbrains.jet.cli.KotlinCompiler %* +goto end + +rem ########################################################################## +rem # subroutines + +:add_cpath + if "%_TOOL_CLASSPATH%"=="" ( + set _TOOL_CLASSPATH=%~1 + ) else ( + set _TOOL_CLASSPATH=%_TOOL_CLASSPATH%;%~1 + ) +goto :eof + +:set_home + set _BIN_DIR= + for %%i in (%~sf0) do set _BIN_DIR=%_BIN_DIR%%%~dpsi + set _KOTLIN_HOME=%_BIN_DIR%.. +goto :eof + +:end +@endlocal