summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Washburn <geoffrey.washburn@epfl.ch>2008-08-03 14:54:36 +0000
committerGeoffrey Washburn <geoffrey.washburn@epfl.ch>2008-08-03 14:54:36 +0000
commit6938beb1d44c4b00eae712a58bd092e0ef50a4c1 (patch)
tree0172e6c4db67042e85ec690899f6f8a24c3300cb
parenta254fe545f765887cc55e8661034e57f4a7fd538 (diff)
downloadscala-6938beb1d44c4b00eae712a58bd092e0ef50a4c1.tar.gz
scala-6938beb1d44c4b00eae712a58bd092e0ef50a4c1.tar.bz2
scala-6938beb1d44c4b00eae712a58bd092e0ef50a4c1.zip
Added ignores for things the OMake script will ...
Added ignores for things the OMake script will create Many improvements to the OMake script, particularly to make it compatible with the Ant script.
-rw-r--r--OMakefile167
1 files changed, 133 insertions, 34 deletions
diff --git a/OMakefile b/OMakefile
index 090da59d0c..e773392deb 100644
--- a/OMakefile
+++ b/OMakefile
@@ -1,65 +1,164 @@
+######################################################################
+
# If you aren't running on a LAMP system, you need to make sure you
-# have JAVA_HOME and JAVACMD set correctly
+# have JAVA_HOME and JAVACMD (and optionally JAVAC) set correctly.
JAVA_HOME = $(getenv JAVA_HOME, /home/linuxsoft/apps/java-1.6/)
JAVACMD = $(getenv JAVACMD, /home/linuxsoft/apps/java-1.6/bin/java)
+JAVAC = $(getenv JAVAC, $(JAVA_HOME)$(DIRSEP)bin$(DIRSEP)javac)
+# Default options for the JVM
+JAVA_OPTS = -Xms1024M -Xmx1024M -XX:MaxPermSize=256M
-JAVAC = $(JAVA_HOME)$(DIRSEP)bin$(DIRSEP)javac
+######################################################################
-COMMON_CLASSPATH = $(addprefix .$(DIRSEP)lib$(DIRSEP), jline.jar msil.jar fjbg.jar)
+# The current copyright string
+COPYRIGHT_STRING = "Copyright 2002-2008, LAMP/EPFL"
+# Need to generate this correctly
+VERSION_NUMBER = 2.7.2
-BOOT_CLASSPATH = $(array $(addprefix .$(DIRSEP)lib$(DIRSEP), scala-library.jar scala-compiler.jar) $(COMMON_CLASSPATH))
-DIST_CLASSPATH = $(array $(addprefix .$(DIRSEP)build$(DIRSEP)boot$(DIRSEP), compiler library) $(COMMON_CLASSPATH))
-TEST_CLASSPATH = $(array $(addprefix .$(DIRSEP)build$(DIRSEP)dist$(DIRSEP), compiler library partest) $(COMMON_CLASSPATH))
+# The directory where the STARR is kept
+LIB_DIR = .$(DIRSEP)lib
+# The directory where we store the built files
+BUILD_DIR = .$(DIRSEP)build
+# The directory where the locker files are kept
+LOCKER_DIR = $(BUILD_DIR)$(DIRSEP)locker
+LOCKER_CLASS_DIR = $(LOCKER_DIR)$(DIRSEP)classes
+# The directory where the quick files are kept
+QUICK_DIR = $(BUILD_DIR)$(DIRSEP)quick
+QUICK_CLASS_DIR = $(QUICK_DIR)$(DIRSEP)classes
-JAVA_OPTS = -Xms1024M -Xmx1024M -XX:MaxPermSize=256M
+# Scala compiler class
+SCALAC_CLASS = scala.tools.nsc.Main
-.PHONY : boot dist clean test
+# The Partest class
+PARTEST_CLASS = scala.tools.partest.nest.NestRunner
-.DEFAULT : test
+# Arguments used to configure which tests are run
+PARTEST_ARGS = --pos --neg --run --jvm --jvm5 --res --shootout
+
+######################################################################
+
+# CLASSPATHs for the various build modes
+COMMON_CLASSPATH = $(addprefix $(LIB_DIR)$(DIRSEP), jline.jar msil.jar fjbg.jar)
+
+STARR_CLASSPATH = $(array $(addprefix $(LIB_DIR)$(DIRSEP), scala-library.jar scala-compiler.jar) $(COMMON_CLASSPATH))
+# Debugging remove
+#println($(string $(STARR_CLASSPATH)))
+LOCKER_CLASSPATH = $(array $(addprefix $(LOCKER_CLASS_DIR)$(DIRSEP), compiler library) $(COMMON_CLASSPATH))
+QUICK_CLASSPATH = $(array $(addprefix $(QUICK_CLASS_DIR)$(DIRSEP), compiler library partest) $(COMMON_CLASSPATH))
-cond-mkdir(dir) =
+######################################################################
+
+# Helper functions
+
+# Convert a sequence to a path by concatenating it together with
+# the appropriate separator for the current platform
+topath(seq) =
+ return $(concat $(PATHSEP), $(seq))
+
+# Create an empty file
+touch(file) =
+ close($(fopen $(file), w))
+
+# "idempotent-mkdir", create a directory if it doesn't already exist
+idem-mkdir(dir) =
if $(not $(file-exists $(dir)))
# println(Creating directory $(dir))
mkdir(-p $(dir))
+# Write a property file
+propfile(file) =
+ handle = $(fopen $(file), w)
+ # Need to correctly generated date/time
+ fprint($(handle), "# Generated at some time")
+ fprint($(handle), "copyright.string="$(COPYRIGHT_STRING))
+ fprint($(handle), "version.number="$(VERSION_NUMBER))
+ close($(handle))
+
+# Compile the Scala files in the sequence args with the specified
+# classpath, placing the generated class files in the directory outdir
scalac(classpath, outdir, args) =
# println(scalac compiling $(string $(args)))
- $(JAVACMD) -cp $(concat $(PATHSEP), $(classpath)) $(JAVA_OPTS) scala.tools.nsc.Main -d $(outdir) $(args)
-
-partest(classpath) =
- # println(testing)
- $(JAVACMD) -cp $(concat $(PATHSEP), $(classpath)) $(JAVA_OPTS) \
- scala.tools.partest.nest.NestRunner --classpath .$(DIRSEP)build$(DIRSEP)dist --show-diff --pos --neg --run --jvm --jvm5 --res --shootout
+ $(JAVACMD) -cp $(topath $(classpath)) $(JAVA_OPTS) $(SCALAC_CLASS) -d $(outdir) $(args)
+# Compile the Java files in the sequence args with the specified
+# classpath, placing the generated class files in the directory outdir
javac(classpath, outdir, args) =
# println(javac compiling $(string $(args)))
- $(JAVAC) -cp $(concat $(PATHSEP), $(classpath)) -d $(outdir) $(args)
+ $(JAVAC) -cp $(topath $(classpath)) -d $(outdir) $(args)
+# Build an instance of the Scala compiler and libraries using
+# the compiler in the specified classpath as the bootstrap
+# compiler, and placing the result in the directory outdir
buildscala(classpath, outdir) =
- cond-mkdir($(outdir)/compiler)
- scalac($(classpath), $(outdir)$(DIRSEP)compiler, \
+ idem-mkdir($(outdir)$(DIRSEP)classes$(DIRSEP)compiler)
+ scalac($(classpath), $(outdir)$(DIRSEP)classes$(DIRSEP)compiler, \
$(find ./src/compiler/scala/tools/nsc -name *.scala) $(find ./src/compiler/scala/tools/util -name *.scala))
- cond-mkdir($(outdir)/library)
- javac($(classpath), $(outdir)$(DIRSEP)library, $(find ./src/library -name *.java) $(find ./src/actors -name *.java))
- scalac($(classpath), $(outdir)$(DIRSEP)library, $(find ./src/library -name *.scala) $(find ./src/actors -name *.scala))
- cond-mkdir($(outdir)/partest)
+ propfile($(outdir)$(DIRSEP)classes$(DIRSEP)compiler$(DIRSEP)compiler.properties)
+ # For compatibility with the old ant script we'll create a flag
+ # touch($(outdir)$(DIRSEP)compiler.complete)
+ idem-mkdir($(outdir)$(DIRSEP)classes$(DIRSEP)library)
+ javac($(classpath), $(outdir)$(DIRSEP)classes$(DIRSEP)library, \
+ $(find ./src/library -name *.java) $(find ./src/actors -name *.java))
+ scalac($(classpath), $(outdir)$(DIRSEP)classes$(DIRSEP)library, \
+ $(find ./src/library -name *.scala) \
+ $(find ./src/dbc -name *.scala) \
+ $(find ./src/swing -name *.scala) \
+ $(find ./src/actors -name *.scala))
# Need to copy over script.js and style.css for scaladoc to find them
- cp($(addprefix ./src/compiler/scala/tools/nsc/doc/,script.js style.css) $(outdir)/compiler/scala/tools/nsc/doc)
+ cp($(addprefix ./src/compiler/scala/tools/nsc/doc/,script.js style.css) \
+ $(outdir)$(DIRSEP)classes$(DIRSEP)compiler$(DIRSEP)scala$(DIRSEP)tools$(DIRSEP)nsc$(DIRSEP)doc)
+ propfile($(outdir)$(DIRSEP)classes$(DIRSEP)compiler$(DIRSEP)library.properties)
+ # For compatibility with the old ant script we'll create some flags
+ touch($(outdir)$(DIRSEP)library.complete)
+ # touch($(outdir)$(DIRSEP)all.complete)
+
+# Run partest with respect to the specified classpath
+partest(classpath) =
+ # println(testing)
+ $(JAVACMD) -cp $(topath $(classpath)) $(JAVA_OPTS) \
+ $(PARTEST_CLASS) --show-diff $(PARTEST_ARGS)
+
+######################################################################
+# Specify those targets that are "phony", as in, they do not
+# correspond to actual files that will be created.
+
+.PHONY : locker quick partest test clean all.clean locker.clean
+
+# Specify the default target
+.DEFAULT : test
+
+######################################################################
+
+# Just clean out the quick build
clean :
- $(rm -rf ./build)
+ $(rm -rf $(QUICK_DIR))
+
+# Just clean out the locker
+locker.clean :
+ $(rm -rf $(LOCKER_DIR))
+
+# Clean up everything
+all.clean :
+ $(rm -rf $(BUILD_DIR))
+
+######################################################################
+
+locker $(LOCKER_DIR) :
+ buildscala($(STARR_CLASSPATH), $(LOCKER_DIR))
-boot :
- buildscala($(BOOT_CLASSPATH), .$(DIRSEP)build$(DIRSEP)boot)
+quick $(QUICK_DIR) : $(LOCKER_DIR)
+ buildscala($(LOCKER_CLASSPATH), $(QUICK_DIR))
-dist : boot
- buildscala($(DIST_CLASSPATH), .$(DIRSEP)build$(DIRSEP)dist)
- # Build partest
- javac($(DIST_CLASSPATH), .$(DIRSEP)build$(DIRSEP)dist$(DIRSEP)partest, \
+partest : quick
+ idem-mkdir($(QUICK_CLASS_DIR)$(DIRSEP)partest)
+ javac($(LOCKER_CLASSPATH), $(QUICK_CLASS_DIR)$(DIRSEP)partest, \
$(find ./src/partest/scala -name *.java))
- scalac($(DIST_CLASSPATH), .$(DIRSEP)build$(DIRSEP)dist$(DIRSEP)partest, \
+ scalac($(LOCKER_CLASSPATH), $(QUICK_CLASS_DIR)$(DIRSEP)partest, \
$(filter-out %PartestTask.scala %AntRunner.scala, $(find ./src/partest/scala -name *.scala)))
+ # For compatibility with the old ant script we'll create a flag
+ # touch($(QUICK_DIR)$(DIRSEP)partest.complete)
-test : dist
- partest($(TEST_CLASSPATH))
+test : partest
+ partest($(QUICK_CLASSPATH))