summaryrefslogtreecommitdiff
path: root/Makefile.examples
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2005-10-07 13:35:05 +0000
committermichelou <michelou@epfl.ch>2005-10-07 13:35:05 +0000
commit391ec164070dfc0eb251ff29c104673031cd6931 (patch)
tree25b9165e3bc01ef2305d20b13425ff1516c0e767 /Makefile.examples
parentce8279816d2f1cae4b835a40d301a0ea5edc5e82 (diff)
downloadscala-391ec164070dfc0eb251ff29c104673031cd6931.tar.gz
scala-391ec164070dfc0eb251ff29c104673031cd6931.tar.bz2
scala-391ec164070dfc0eb251ff29c104673031cd6931.zip
- initial check-in.
Diffstat (limited to 'Makefile.examples')
-rw-r--r--Makefile.examples124
1 files changed, 124 insertions, 0 deletions
diff --git a/Makefile.examples b/Makefile.examples
new file mode 100644
index 0000000000..c3eb88b561
--- /dev/null
+++ b/Makefile.examples
@@ -0,0 +1,124 @@
+############################################################-*-Makefile-*-####
+# Makefile for the Scala Examples
+##############################################################################
+# $Id$
+
+##############################################################################
+# Configuration
+
+ROOT = .
+
+##############################################################################
+# Variables
+
+SCALA_HOME = $(ROOT)
+
+PACKAGE_DIR = examples
+SOURCE_DIR = $(ROOT)/sources
+OUTPUT_DIR = $(ROOT)/classes
+
+SCALA_FILES += computeserver
+SCALA_FILES += auction
+SCALA_FILES += boundedbuffer
+SCALA_FILES += oneplacebuffer
+SCALA_FILES += fors
+SCALA_FILES += futures
+SCALA_FILES += iterators
+SCALA_FILES += maps
+SCALA_FILES += Parsers
+SCALA_FILES += parsers1
+SCALA_FILES += parsers2
+SCALA_FILES += patterns
+SCALA_FILES += sort
+SCALA_FILES += sort1
+SCALA_FILES += sort2
+#SCALA_FILES += typeinf
+SCALA_FILES += expressions/expressions-current
+#SCALA_FILES += jolib/Ref
+#SCALA_FILES += jolib/parallelOr
+SCALA_FILES += pilib/elasticBuffer
+SCALA_FILES += pilib/handover
+SCALA_FILES += pilib/mobilePhoneProtocol
+SCALA_FILES += pilib/rwlock
+SCALA_FILES += pilib/scheduler
+SCALA_FILES += pilib/semaphore
+SCALA_FILES += pilib/twoPlaceBuffer
+SCALA_FILES += pilib/piNat
+
+SCALA_SOURCES += $(SCALA_FILES:%=$(SOURCE_DIR)/$(PACKAGE_DIR)/%.scala)
+
+SCALAC ?= $(SCALA_HOME)/bin/scalac
+SCALAC_OPTIONS += -d $(call CYGWIN_PATH,$(OUTPUT_DIR))
+
+SCALA ?= $(SCALA_HOME)/bin/scala
+SCALA_OPTIONS += -cp $(call CYGWIN_PATH,$(OUTPUT_DIR))
+
+SCALAP ?= $(SCALA_HOME)/bin/scalap
+SCALAP_OPTIONS += -classpath $(call CYGWIN_PATH,$(OUTPUT_DIR))
+
+##############################################################################
+
+ECHO = echo
+FIND = find
+GREP = grep
+MKDIR = mkdir
+RM = rm -f
+RUN = $(ECHO) '$(1)'; $(1) || exit $$?
+SED = sed
+TOUCH = touch
+
+CYGWIN_TEST = $(filter CYGWIN%,$(shell $(UNAME)))
+CYGWIN_PATH = $(if $(CYGWIN_TEST),`$(CYGPATH) -w -p $(1)`,$(1))
+CYGWIN_FILE = $(if $(CYGWIN_TEST),`$(CYGPATH) -w $(1)`,$(1))
+
+##############################################################################
+# Commands
+
+help:
+ @$(ECHO) "Usage: make -f Makefile.examples [ option ]"
+ @$(ECHO) " all generate class files for all examples"
+ @$(ECHO) " build [ FILES=<files> ] generate class files for FILES or all"
+ @$(ECHO) " examples if parameter FILES is omitted"
+ @$(ECHO) " clean remove all generated class files"
+ @$(ECHO) " help display this usage message"
+ @$(ECHO) " run [ MAIN=<main> ] execute the Scala program MAIN or all"
+
+all: .latest-examples-build
+
+build:
+ @if [ -z "$(FILES)" ]; then \
+ $(MAKE) -f Makefile.examples all; \
+ else \
+ $(call RUN,$(SCALAC) $(SCALAC_OPTIONS) $(FILES)); \
+ fi
+
+run: build
+ @if [ -z "$(MAIN)" ]; then \
+ classes=`cd $(OUTPUT_DIR) && $(FIND) . -name "*.class" | $(GREP) -v '\\$$'`; \
+ classes=`$(ECHO) "$$classes" | $(SED) -e "s#./##" -e "s#.class##g" -e "s#/#.#g"`; \
+ for class in $$classes; do \
+ hasMain=`$(SCALAP) $(SCALAP_OPTIONS) $$class | $(GREP) -c "final def main("`; \
+ [ $$hasMain -gt 0 ] && $(SCALA) $(SCALA_OPTIONS) $$class; \
+ done; \
+ else \
+ $(call RUN,$(SCALA) $(SCALA_OPTIONS) $(MAIN)); \
+ fi
+
+clean:
+ $(RM) -r .latest-examples* $(OUTPUT_DIR)/$(PACKAGE_DIR)
+
+.PHONY: all
+.PHONY: build
+.PHONY: clean
+.PHONY: help
+.PHONY: run
+
+##############################################################################
+# Targets
+
+.latest-examples-build: $(SCALA_SOURCES)
+ @[ -d "$(OUTPUT_DIR)/$(PACKAGE_DIR)" ] || $(MKDIR) -p $(OUTPUT_DIR)/$(PACKAGE_DIR)
+ $(SCALAC) $(SCALAC_OPTIONS) $(SCALA_SOURCES)
+ @$(TOUCH) $@
+
+##############################################################################