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: