PACKAGE=org.artisanlogiciel.games PACKAGE_DIR=$(subst .,/,$(PACKAGE)) OUT=out EDITOR=emacs $(OUT): mkdir -p $(OUT) clean: @find $(OUT) -name "*.class" -type f -print0|xargs -0 rm 2>/dev/null || echo "nothing to clean" test: javac -d $(OUT) $(PACKAGE_DIR)/LabyModel.java javac -d $(OUT) $(PACKAGE_DIR)/Main.java java -cp $(OUT) $(PACKAGE).Main run/%: $(OUT) javac -d $(OUT) $(PACKAGE_DIR)/$(subst run/,,$@).java java -cp $(OUT) $(PACKAGE)/$(subst run/,,$@) display: run/Display display/%: $(OUT) javac -d $(OUT) $(PACKAGE_DIR)/Display.java java -cp $(OUT) $(PACKAGE).Display $(subst display/,,$@) compile/%: javac -d $(OUT) $(PACKAGE_DIR)/$(subst compile/,,$@).java $(PACKAGE_DIR)/%.java: ./generate_new.sh class $(subst .java,,$(subst $(PACKAGE_DIR)/,,$@)) interface/%: ./generate_new.sh interface package_dir=$(PACKAGE_DIR) $(subst interface/,,$@) $(EDITOR) $(PACKAGE_DIR)/$(subst interface/,,$@).java work/%: $(PACKAGE_DIR)/$(subst work/,,%).java $(EDITOR) $< work: work/LabyModel save: git citool .PHONY: clean test work display work/% run/% save compile/% interface/% # tried to avoid intermediate file removal : does not work # .SECONDARY: $(PACKAGE_DIR)/%.java # this does work : once precious intermediate file is not removed. .PRECIOUS: $(PACKAGE_DIR)/%.java