blob: c3eb88b561d287c9e6331413e1705063ce156a06 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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) $@
##############################################################################
|