2 # Copyright 2012, Ralph Ronnquist.
7 CP := $(shell ./classpath)
9 DIRS = com/intendico/gorite
10 DIRS += com/intendico/data
11 DIRS += com/intendico/gorite/addon
12 DIRS += com/intendico/data/addon
13 DIRS += com/intendico/sdp
15 EXGORITE = tests/com/intendico/gorite/examples
16 EXDATA = tests/com/intendico/data/examples
18 SRC := $(foreach D,$(DIRS),$(wildcard $(D)/*.java))
19 SOURCES := $(filter-out %/package-info.java,$(SRC))
20 CLASSES = $(SOURCES:%.java=%.class)
21 CURRENT = $(foreach C,$(CLASSES),$(wildcard $(C)))
22 MISSING = $(filter-out $(CURRENT),$(CLASSES))
23 OUTDATED = $(shell find $(DIRS) -name "*.java" \
24 $(if $(CURRENT),-newer $(word 1,$(shell ls -1t $(CURRENT)))))
28 .PHONY: clean compile javadoc
30 #JAVASRCVERSION = -source 1.4 -Xlint:unchecked
31 JAVASRCVERSION = -Xlint:-unchecked
33 compile: $(OUTDATED) $(MISSING:%.class=%.java)
34 CLASSPATH=$(CP) javac $(JAVASRCVERSION) $?
36 gorite.jar: $(if $(OUTDATED)$(MISSING),compile) $(SOURCES)
38 jar uf gorite.jar $(addsuffix /*.class,$(DIRS))
41 install gorite.jar ../../lib/
44 rm -f $(CLASSES:%.class=%*.class) gorite.jar
47 javadoc: VERSION := v11RC05
48 JAVAAPI = http://download.oracle.com/javase/6/docs/api
49 YEAR = $(shell date +%Y)
50 DOCARGS = -overview overview.html -private -d html
51 DOCARGS += -footer "© Copyright $(YEAR), Ralph Ronnquist."
52 DOCARGS += -header "GORITE Version $(VERSION)"
53 DOCARGS += -linksource
54 DOCARGS += -linkoffline "$(JAVAAPI)" pkg/java
55 DOCARGS += -classpath $(CP)
60 javadoc $(DOCARGS) $(subst /,.,$(DIRS)) $(TESTS)
61 #cat HEADER > html/Main.java
62 #more $(EXGORITE)/spacetravel/[A-Z]*.java >> html/Main.java
64 TESTS = $(wildcard $(EXGORITE)/*/*.java)
65 TESTS += $(wildcard $(EXDATA)/*/*.java)
67 SKIP := $(EXGORITE)/mice/
68 SKIP += $(EXGORITE)/klotski/
69 SKIP += $(EXGORITE)/chapter3_sensors/
72 TCP = $(shell pwd)/tests:$(shell pwd)/gorite.jar
73 TDIR = $(filter-out $(SKIP),$(sort $(dir $(TESTS))))
75 .PHONY: tests $(TDIR) .force
77 #PROPS = -Dgorite.goal.trace=yes
78 PROPS = -Xss60k -Xmx200m
79 #PROPS += -Dgorite.tracer=com.intendico.gorite.addon.ConsoleTracer
82 $(TDIR): gorite.jar .force
84 @CLASSPATH=$(TCP) java $(PROPS) $(@:tests/%=%)Main 2>&1 | $@filter > /tmp/tests.log
85 @diff -N $@output /tmp/tests.log
90 tests: gorite.jar $(TESTS)
91 @$(MAKE) -s $(filter-out ./,$(sort $(dir $?))) 2>&1 | \
92 tee regression.$$(date +%Y%m%d-%H%M)
96 tests/com/intendico/gorite/examples/fleet/: A = 20 100
98 @echo "===== Test: $@"
99 CLASSPATH=$(TCP) javac -Xlint:unchecked $@*.java
100 CLASSPATH=$(TCP) java $(PROPS) $(@:tests/%=%)Main $(A)
101 @echo "===== End: $@"
103 tests: gorite.jar $(TESTS)
105 @echo "****************************************************"
106 @$(MAKE) $(filter-out ./,$(sort $(dir $?))) 2>&1 | \
107 tee log.$$(date +%Y%m%d-%H%M)
111 doc/%.html: doc/%.sdf
112 cd doc; sdf -2html $$(basename $?)
116 TARFLAG = --exclude=CVS
117 BINDIST = gorite.jar html $(DOCS)
118 SRCDIST = $(BINDIST) $(SRC) $(TESTS) overview.html Makefile classpath
119 SRCDIST += $(wildcard $(EXGORITE)/*/filter)
120 SRCDIST += $(wildcard $(EXGORITE)/*/output)
122 #SRCDIST += DIFF.baseline
124 srcdist: DOCARGS += -linksource
125 srcdist: javadoc $(DOCS) $(SRCDIST)
127 tar czf dist/gorite-src-$$(date +%Y%m%d).tgz $(TARFLAG) $(SRCDIST)
129 bindist: javadoc $(DOCS) $(BINDIST)
131 tar czf dist/gorite-$$(date +%Y%m%d).tgz $(TARFLAG) $(BINDIST)