-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
98 lines (79 loc) · 2.97 KB
/
Makefile
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
JAVA=java
JAVAC=javac
JAR=jar
JDEBUGFLAGS=-O
############################################################
# Automatically "scrape" the version from the VERSION member variable in Othello.java:
DISTVERSION=$(shell cat src/edu/drexel/cs/ai/othello/Othello.java | grep "VERSION.*=" | sed -e 's/.*"\(.*\)".*/\1/')
DISTNAME=CS380othello-$(DISTVERSION)
RAWDIRS=edu/drexel/cs/ai/othello
DIRS=$(foreach dir,$(RAWDIRS),$(dir))
STUDENTS=$(subst CVS,,$(subst src/students/,,$(wildcard src/students/*)))
STUDENT_FILES=$(foreach student,$(STUDENTS),$(wildcard src/students/$(student)/*.java))
JAVA_FILES=$(foreach dir,$(DIRS),$(wildcard src/$(dir)/*.java))
PACKAGES=$(subst /,.,$(DIRS)) $(subst /,.,$(foreach student,$(STUDENTS),students/$(student)))
JARS=lib/othello.jar $(foreach student,$(STUDENTS),lib/$(student).jar)
.PHONY : all
all : othello javadoc $(JARS) obfus
othello : $(JARS)
@echo 'for i in lib/*.jar' > $@
@echo 'do' >> $@
@echo ' CP="$${i}:$${CP}"' >> $@
@echo 'done' >> $@
@echo 'CLASSPATH=$${CP} java edu.drexel.cs.ai.othello.Othello $$@' >> $@
@chmod 755 $@
.PHONY : build-othello
build-othello : $(JAVA_FILES) classes
$(JAVAC) $(JDEBUGFLAGS) -d classes/ $(JAVA_FILES)
classes/%.class : src/%.java classes
$(JAVAC) $(JDEBUGFLAGS) -d classes -classpath classes $<
classes :
mkdir -p $@
lib :
mkdir -p $@
lib/othello.jar : lib build-othello
@echo "Manifest-Version: 1.0" > .manifest.tmp
@echo "Main-Class: edu.drexel.cs.ai.othello.Othello" >> .manifest.tmp
$(JAR) cmf .manifest.tmp lib/othello.jar -C classes edu
@rm -rf .manifest.tmp
lib/%.jar : lib $(wildcard src/students/%/*.java)
$(JAVAC) $(JDEBUGFLAGS) -classpath lib/othello.jar -d classes/ $(wildcard src/students/$*/*.java)
@echo "Manifest-Version: 1.0" > .manifest.tmp
@echo "Main-Class: edu.drexel.cs.ai.othello.Othello" >> .manifest.tmp
$(JAR) cmf .manifest.tmp $@ -C classes students/$*
@rm -rf .manifest.tmp
obfus: $(JARS)
$(JAVA) -jar proguard.jar @profile.pro
.PHONY : clean
clean :
rm -rf othello
rm -rf lib
rm -rf classes
doc :
mkdir -p $@
# JAVADOC:
WINDOWTITLE = 'Othello $(DISTVERSION) API Specification'
DOCTITLE = $(WINDOWTITLE)
HEADER = '<b>Othello $(DISTVERSION)</b>'
BOTTOM = 'Copyright 2006–2007 <a href="http://www.sultanik.com/">Evan A. Sultanik</a></font>'
SRCDIR = 'src/'
.PHONY : javadoc
javadoc : doc
javadoc -d ./doc/ -use -splitIndex -author -windowtitle $(WINDOWTITLE) -doctitle $(DOCTITLE) -header $(HEADER) -bottom $(BOTTOM) -sourcepath $(SRCDIR) -protected -breakiterator $(PACKAGES)
.PHONY: dist
dist : $(DISTNAME).tar.gz
$(DISTNAME).tar : all
@rm -rf $(DISTNAME)
@mkdir $(DISTNAME)
@find src/ -name "*.java" -exec cp --parents \{\} $(DISTNAME)/ \;
@find src/ -name "Makefile" -exec cp --parents \{\} $(DISTNAME)/ \;
@cp -r doc $(DISTNAME)/
@cp othello $(DISTNAME)/
@cp AUTHORS COPYING INSTALL NEWS README ChangeLog Makefile $(DISTNAME)/
@cp -r lib $(DISTNAME)/
tar cvf $(DISTNAME).tar $(DISTNAME)
@rm -rf $(DISTNAME)
$(DISTNAME).tar.gz : $(DISTNAME).tar
gzip -f $(DISTNAME).tar