summaryrefslogtreecommitdiff
path: root/rules/java_cup/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'rules/java_cup/Makefile')
-rw-r--r--rules/java_cup/Makefile38
1 files changed, 38 insertions, 0 deletions
diff --git a/rules/java_cup/Makefile b/rules/java_cup/Makefile
new file mode 100644
index 0000000..7d60a02
--- /dev/null
+++ b/rules/java_cup/Makefile
@@ -0,0 +1,38 @@
+DESTDIR ?=
+JAR_DIR ?= /usr/share/java
+
+FAIL = exit 1
+FIND = find
+INSTALL = install
+JAR = jar
+JAVAC = javac
+MKDIRS = mkdir -p
+RM = rm -f
+TOUCH = touch
+
+dep_dir = $1 $(shell $(FIND) $1 2>/dev/null)
+
+all: PHONY java_cup.jar
+
+java_cup.jar: classes
+ $(JAR) cfe $@ java_cup.Main -C $< .
+ $(TOUCH) $<
+
+classes: . $(wildcard *.java) $(call dep_dir,runtime simple_calc)
+ $(RM) -r $@
+ $(MKDIRS) $@
+ $(JAVAC) -d $@ $(filter %.java,$^) || { $(RM) -r $@; $(FAIL); }
+ $(TOUCH) $@
+ $(TOUCH) .
+
+install: PHONY $(DESTDIR)$(JAR_DIR)/java_cup.jar
+
+$(DESTDIR)$(JAR_DIR)/%.jar: %.jar
+ $(INSTALL) -Dm644 $< $@
+
+clean: PHONY
+ $(RM) -r -- build *.jar
+
+.PHONY: PHONY
+.DELETE_ON_ERROR:
+.SECONDARY: