Merge branch 'charm' of charmgit:charm into charm
[charm.git] / src / langs / charj / Makefile
1
2 ANT := ant -lib lib/ant-antlr3.jar
3 CLASSPATH := lib/antlr-3.2.jar:lib/JSAP-2.1.jar
4 SRCDIR := src/charj/translator
5 BUILDDIR := build/src/charj/translator
6 ANTLRC := java -classpath $(CLASSPATH) org.antlr.Tool
7 ANTLRFLAGS := -Xmultithreaded -o $(BUILDDIR) -lib $(BUILDDIR)
8
9 SRC_GRAMMARS := $(wildcard $(SRCDIR)/*.g)
10 BUILD_GRAMMARS := $(subst $(SRCDIR),$(BUILDDIR),$(SRC_GRAMMARS:.g=.d))
11
12 .PHONY: all build grammars clean doc
13 all: build grammars
14         $(ANT) dist
15
16 # TODO: Maybe we should be using something like gathertree to create the
17 # build directory instead of ad-hoc copying.
18 build:
19         @echo "\ninit:"
20         @mkdir -p $(BUILDDIR)
21         @cp -p $(SRCDIR)/* $(BUILDDIR)
22         @cp -p $(SRCDIR)/../Main.java $(BUILDDIR)/../
23         @mkdir -p build/classes
24         @mkdir -p build/classes/META-INF
25         @mkdir -p build/lib
26         @mkdir -p docs
27         @echo "\nantlr:"
28
29 clean:
30         $(ANT) clean
31
32 doc:
33         $(ANT) doc
34
35 grammars: build $(BUILD_GRAMMARS)
36
37 # All grammar files depend on the Charj.g being compiled first,
38 # so that the token list is available.
39 $(BUILDDIR)/Charj.d: $(SRCDIR)/Charj.g
40         @echo "\n    [antlr] $(<F)"
41         $(ANTLRC) $(ANTLRFLAGS) $(BUILDDIR)/$(<F)
42         @touch $@
43
44 $(BUILDDIR)/%.d: $(SRCDIR)/%.g $(BUILDDIR)/Charj.d
45         @echo "\n    [antlr] $(<F)"
46         $(ANTLRC) $(ANTLRFLAGS) $(BUILDDIR)/$(<F)
47         @touch $@
48