summaryrefslogtreecommitdiff
path: root/rules/groovy/Makefile
blob: d7e8d3a770dfcafa76c8206e7bd7bd74b4dd3cd4 (plain)
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
DESTDIR ?=
JAR_DIR ?= /usr/share/java

ANTLR2 = $(JAVA) antlr.Tool
CP = cp
FAIL = exit 1
FIND = find
INSTALL = install
JAR = jar
JAVA = java
JAVAC = javac
MKDIRS = mkdir -p
RM = rm -f

dep_dir = $1 $(shell $(FIND) $1 2>/dev/null)

all: PHONY build/groovy.jar

build/generated-sources: $(call dep_dir,src/main)
	for grammar in $(filter %.g,$^); do $(MKDIRS) $$(dirname $$grammar) && $(ANTLR2) -o $$(dirname $$grammar) $$grammar || { $(RM) -r $@; $(FAIL); }; done
build/classes: $(call dep_dir,src/main src/resources build/generated-sources)
	$(RM) -r $@
	$(MKDIRS) $@
	$(CP) -a src/main/META-INF $@
	$(CP) -a src/resources/* $@
	$(FIND) src/main build/generated-sources -name '*.java' -exec $(JAVAC) -d $@ {} +
build/groovy.jar: $(call dep_dir,build/classes)
	$(JAR) -cf $@ -C build/classes .

install: PHONY $(DESTDIR)$(JAR_DIR)/groovy.jar

$(DESTDIR)$(JAR_DIR)/groovy.jar: build/groovy.jar
	$(INSTALL) -Dm644 $< $@

clean: PHONY
	$(RM) -r build

.PHONY: PHONY
.DELETE_ON_ERROR: