summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2006-05-11 15:29:25 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2006-05-11 15:29:25 +0000
commitde29ef0ac4a7be7a9321f03e8a12490b0833d4ac (patch)
treedc9808b21ad49615ad9f35cf3714bb9ef231e2be /src
parent88a1448f33fbd271eefe9c155015a5c31eb223bc (diff)
downloadscala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.tar.gz
scala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.tar.bz2
scala-de29ef0ac4a7be7a9321f03e8a12490b0833d4ac.zip
Seriously cleaned-up the build script.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/ant/templates/generic-unix.tmpl97
-rw-r--r--src/compiler/scala/tools/ant/templates/generic-windows.tmpl5
-rw-r--r--src/compiler/scala/tools/ant/templates/tool-unix.tmpl33
-rw-r--r--src/compiler/scala/tools/ant/templates/tool-windows.tmpl5
-rw-r--r--src/compiler/scala/tools/nsc/Settings.scala8
-rw-r--r--src/compiler/scala/tools/nsc/util/ClassPath.scala2
6 files changed, 76 insertions, 74 deletions
diff --git a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
index fffc0b3e9f..540f170abd 100644
--- a/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
+++ b/src/compiler/scala/tools/ant/templates/generic-unix.tmpl
@@ -16,6 +16,17 @@ case "`uname`" in
Darwin*) darwin=true ;;
esac
+# Prints out version if the "-version" flag is passed
+for flag in "$@@" ; do
+ #TODO: take version only if it is before the tool class name
+ if [ "$flag" = '-version' ] ; then
+ echo "Scala runtime version @version@ -- @copyright@"
+ ${JAVACMD:=java} -version
+ exit 0
+ fi
+done
+
+# Finding the root folder for this Scala distribution
SOURCE=$0;
SCRIPT=`basename "$SOURCE"`;
while [ -h "$SOURCE" ]; do
@@ -31,71 +42,56 @@ done;
SCALA_HOME=`dirname "$SOURCE"`/..;
SCALA_HOME=`cd "$SCALA_HOME"; pwd`;
-EXTENSION_CLASSPATH="@extclasspath@"
-USER_CLASSPATH="."
+# Will contain (at the end of the script) all arguments that weren't explicitly handled
USER_ARGS=""
-if [ "$EXTENSION_CLASSPATH" = "" ] ; then
- for jar in `ls "$SCALA_HOME"/lib/*.jar` ; do
- if [ "$EXTENSION_CLASSPATH" = "" ] ; then
- EXTENSION_CLASSPATH="$jar"
- else
- EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$jar"
- fi
- done
-fi
-
+# Constructing the user class-path in three overriding steps
+# Step 1: Class-path set to default value "."
+USER_CLASSPATH="."
+# Step 2: Class-path overridden to value of "CLASSPATH" environment variable
if [ "$CLASSPATH" != "" ] ; then
USER_CLASSPATH="$CLASSPATH"
fi
-
-QQ_CP_ARGUMENT=0
-for i in "$@@" ; do
- if [ "$QQ_CP_ARGUMENT" -eq 1 ] ; then
- USER_CLASSPATH=$i
- QQ_CP_ARGUMENT=0
+# Step 3: Class-path overridden to value of "-classpath" script parameter
+IS_CP_ARGUMENT=0
+for arg in "$@@" ; do
+ if [ "$IS_CP_ARGUMENT" -eq 1 ] ; then
+ USER_CLASSPATH=$arg
+ IS_CP_ARGUMENT=0
else
- if [ "$i" = "-cp" ] || [ "$i" = "-classpath" ] ; then
- QQ_CP_ARGUMENT=1
+ if [ "$arg" = "-cp" ] || [ "$arg" = "-classpath" ] ; then
+ IS_CP_ARGUMENT=1
else
- USER_ARGS="$USER_ARGS $i"
- QQ_CP_ARGUMENT=0
+ USER_ARGS="$USER_ARGS $arg"
+ IS_CP_ARGUMENT=0
fi
fi
done
-MYCLASSPATH=""
+# Constructing the extension classpath
+EXTENSION_CLASSPATH="@extclasspath@"
if [ "$EXTENSION_CLASSPATH" = "" ] ; then
- MYCLASSPATH="$USER_CLASSPATH"
-else
- if [ "$USER_CLASSPATH" = "" ] ; then
- MYCLASSPATH="$EXTENSION_CLASSPATH"
- else
- MYCLASSPATH="$USER_CLASSPATH:$EXTENSION_CLASSPATH"
- fi
+ for ext in `ls -L "$SCALA_HOME"/lib/*` ; do
+ if [ "$EXTENSION_CLASSPATH" = "" ] ; then
+ EXTENSION_CLASSPATH="$ext"
+ else
+ EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$ext"
+ fi
+ done
fi
+# Setting the boot class-path to be the standard library (either as a JAR or a folder)
BOOT_CLASSPATH="@bootclasspath@"
-if [ "$BOOT_CLASSPATH" = "" ] && [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then
- BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar"
-fi
-
-if [ "$BOOT_CLASSPATH" != "" ] ; then
- if [ "$MYCLASSPATH" = "" ] ; then
- MYCLASSPATH="$BOOT_CLASSPATH"
- else
- MYCLASSPATH="$BOOT_CLASSPATH:$MYCLASSPATH"
+if [ "$BOOT_CLASSPATH" = "" ] ; then
+ if [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then
+ BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar"
+ elif [ -d "$SCALA_HOME/lib/library" ] ; then
+ BOOT_CLASSPATH="$SCALA_HOME/lib/library"
fi
fi
-for flag in "$@@" ; do
- #TODO: take version only if it is before the tool class name
- if [ "$flag" = '-version' ] ; then
- echo "Scala runtime version @version@ -- @copyright@"
- ${JAVACMD:=java} -version
- exit 0
- fi
-done
+# The merge of all three previous classpaths. All Scala code must currently be in a single class loader.
+MERGED_CLASSPATH="$BOOT_CLASSPATH:$USER_CLASSPATH:$EXTENSION_CLASSPATH"
if $cygwin; then
if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
@@ -104,10 +100,7 @@ if $cygwin; then
format=windows
fi
SCALA_HOME=`cygpath --$format "$SCALA_HOME"`
- USER_CLASSPATH=`cygpath --path --$format "$USER_CLASSPATH"`
- BOOT_CLASSPATH=`cygpath --path --$format "$BOOT_CLASSPATH"`
- EXTENSION_CLASSPATH=`cygpath --path --$format "$EXTENSION_CLASSPATH"`
- MYCLASSPATH=`cygpath --path --$format "$MYCLASSPATH"`
+ MERGED_CLASSPATH=`cygpath --path --$format "$MYCLASSPATH"`
fi
-${JAVACMD:=java} @javaflags@ -cp "$MYCLASSPATH" -Dscala.home="$SCALA_HOME" @properties@ $USER_ARGS
+${JAVACMD:=java} @javaflags@ -cp "$MERGED_CLASSPATH" -Dscala.home="$SCALA_HOME" @properties@ $USER_ARGS
diff --git a/src/compiler/scala/tools/ant/templates/generic-windows.tmpl b/src/compiler/scala/tools/ant/templates/generic-windows.tmpl
index 5635d9a3ee..46b42d3e78 100644
--- a/src/compiler/scala/tools/ant/templates/generic-windows.tmpl
+++ b/src/compiler/scala/tools/ant/templates/generic-windows.tmpl
@@ -26,7 +26,7 @@ if "%_JAVACMD%"=="" set _JAVACMD=java
set _EXTENSION_CLASSPATH=@extclasspath@
if "%_EXTENSION_CLASSPATH%"=="" (
- for %%f in ("%_SCALA_HOME%\lib\*.jar") do call :add_cpath "%%f"
+ for %%f in ("%_SCALA_HOME%\lib\*") do call :add_cpath "%%f"
)
set _BOOT_CLASSPATH=@bootclasspath@
@@ -34,6 +34,9 @@ if "%_BOOT_CLASSPATH%"=="" (
if exist "%_SCALA_HOME%\lib\scala-library.jar" (
set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\scala-library.jar
)
+ if exist "%_SCALA_HOME%\lib\library" (
+ set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\library
+ )
)
rem We use the value of the CLASSPATH environment variable if defined
diff --git a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
index 538566745b..1bf7259ddd 100644
--- a/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
+++ b/src/compiler/scala/tools/ant/templates/tool-unix.tmpl
@@ -16,6 +16,7 @@ case "`uname`" in
Darwin*) darwin=true ;;
esac
+# Finding the root folder for this Scala distribution
SOURCE=$0;
SCRIPT=`basename "$SOURCE"`;
while [ -h "$SOURCE" ]; do
@@ -31,31 +32,31 @@ done;
SCALA_HOME=`dirname "$SOURCE"`/..;
SCALA_HOME=`cd "$SCALA_HOME"; pwd`;
+# Constructing the extension classpath
EXTENSION_CLASSPATH="@extclasspath@"
if [ "$EXTENSION_CLASSPATH" = "" ] ; then
- for jar in `ls "$SCALA_HOME"/lib/*.jar` ; do
+ for ext in `ls -L "$SCALA_HOME"/lib/*` ; do
if [ "$EXTENSION_CLASSPATH" = "" ] ; then
- EXTENSION_CLASSPATH="$jar"
+ EXTENSION_CLASSPATH="$ext"
else
- EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$jar"
+ EXTENSION_CLASSPATH="$EXTENSION_CLASSPATH:$ext"
fi
done
fi
+# Setting the boot class-path to be the standard library (either as a JAR or a folder)
BOOT_CLASSPATH="@bootclasspath@"
-if [ "$BOOT_CLASSPATH" = "" ] && [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then
- BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar"
-fi
-
-MYCLASSPATH="$EXTENSION_CLASSPATH"
-if [ "$BOOT_CLASSPATH" != "" ] ; then
- if [ "$MYCLASSPATH" = "" ] ; then
- MYCLASSPATH="$BOOT_CLASSPATH"
- else
- MYCLASSPATH="$BOOT_CLASSPATH:$MYCLASSPATH"
+if [ "$BOOT_CLASSPATH" = "" ] ; then
+ if [ -f "$SCALA_HOME/lib/scala-library.jar" ] ; then
+ BOOT_CLASSPATH="$SCALA_HOME/lib/scala-library.jar"
+ elif [ -d "$SCALA_HOME/lib/library" ] ; then
+ BOOT_CLASSPATH="$SCALA_HOME/lib/library"
fi
fi
+# The merge of the two previous classpaths. All Scala code must currently be in a single class loader.
+MERGED_CLASSPATH="$BOOT_CLASSPATH:$EXTENSION_CLASSPATH"
+
if $cygwin; then
if [ "$OS" = "Windows_NT" ] && cygpath -m .>/dev/null 2>/dev/null ; then
format=mixed
@@ -63,9 +64,7 @@ if $cygwin; then
format=windows
fi
SCALA_HOME=`cygpath --$format "$SCALA_HOME"`
- BOOT_CLASSPATH=`cygpath --path --$format "$BOOT_CLASSPATH"`
- EXTENSION_CLASSPATH=`cygpath --path --$format "$EXTENSION_CLASSPATH"`
- MYCLASSPATH=`cygpath --path --$format "$MYCLASSPATH"`
+ MERGED_CLASSPATH=`cygpath --path --$format "$MERGED_CLASSPATH"`
fi
-${JAVACMD:=java} @javaflags@ -cp "$MYCLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ @class@ @toolflags@ "$@@"
+${JAVACMD:=java} @javaflags@ -cp "$MERGED_CLASSPATH" -Dscala.home="$SCALA_HOME" -Denv.classpath="$CLASSPATH" -Dscala.tool.name="@name@" -Dscala.tool.version="@version@" @properties@ @class@ @toolflags@ "$@@"
diff --git a/src/compiler/scala/tools/ant/templates/tool-windows.tmpl b/src/compiler/scala/tools/ant/templates/tool-windows.tmpl
index 4a15430d50..198e764e05 100644
--- a/src/compiler/scala/tools/ant/templates/tool-windows.tmpl
+++ b/src/compiler/scala/tools/ant/templates/tool-windows.tmpl
@@ -26,7 +26,7 @@ if "%_JAVACMD%"=="" set _JAVACMD=java
set _EXTENSION_CLASSPATH=@extclasspath@
if "%_EXTENSION_CLASSPATH%"=="" (
- for %%f in ("%_SCALA_HOME%\lib\*.jar") do call :add_cpath "%%f"
+ for %%f in ("%_SCALA_HOME%\lib\*") do call :add_cpath "%%f"
)
set _BOOT_CLASSPATH=@bootclasspath@
@@ -34,6 +34,9 @@ if "%_BOOT_CLASSPATH%"=="" (
if exist "%_SCALA_HOME%\lib\scala-library.jar" (
set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\scala-library.jar
)
+ if exist "%_SCALA_HOME%\lib\library" (
+ set _BOOT_CLASSPATH=%_SCALA_HOME%\lib\library
+ )
)
set _MYCLASSPATH=%_EXTENSION_CLASSPATH%
diff --git a/src/compiler/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala
index 2cca35fa3a..e54c051d11 100644
--- a/src/compiler/scala/tools/nsc/Settings.scala
+++ b/src/compiler/scala/tools/nsc/Settings.scala
@@ -49,8 +49,12 @@ class Settings(error: String => unit) {
private def guessedScalaBootClassPath = {
val scalaHome = System.getProperty("scala.home")
if (scalaHome != null) {
- val guess = new File(new File(new File(scalaHome), "lib"), "scala-library.jar")
- if (guess.exists()) guess.getPath() else null
+ val guessJar = new File(new File(new File(scalaHome), "lib"), "scala-library.jar")
+ if (guessJar.exists()) guessJar.getPath()
+ else {
+ val guessDir = new File(new File(new File(scalaHome), "lib"), "library")
+ if (guessDir.exists()) guessDir.getPath() else null
+ }
} else null
}
diff --git a/src/compiler/scala/tools/nsc/util/ClassPath.scala b/src/compiler/scala/tools/nsc/util/ClassPath.scala
index 5b140f2411..42533665f9 100644
--- a/src/compiler/scala/tools/nsc/util/ClassPath.scala
+++ b/src/compiler/scala/tools/nsc/util/ClassPath.scala
@@ -207,7 +207,7 @@ class ClassPath(onlyPresentation: Boolean) {
if (file != null) {
for (val file0 <- file) {
val name = file0.name
- if (name.endsWith(".jar") || name.endsWith(".zip")) {
+ if (name.endsWith(".jar") || name.endsWith(".zip") || file0.isDirectory) {
val archive = AbstractFile.getDirectory(new File(file.file, name))
if (archive != null) entries += (new Library(archive))
}