summaryrefslogtreecommitdiff
path: root/rules/groovy/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'rules/groovy/Makefile')
-rw-r--r--rules/groovy/Makefile39
1 files changed, 39 insertions, 0 deletions
diff --git a/rules/groovy/Makefile b/rules/groovy/Makefile
new file mode 100644
index 0000000..d7e8d3a
--- /dev/null
+++ b/rules/groovy/Makefile
@@ -0,0 +1,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: