PACKAGE=org.artisanlogiciel.games
PACKAGE_DIR=$(subst .,/,$(PACKAGE))
# maps with ant build.xml
OUT=../build
# external libraries
LIBS=../libs/artgaphics-0.1.0.jar
EDITOR=emacs

$(OUT):
	echo "[ERROR] Missing $(OUT)"
#	mkdir -p $(OUT)

clean:
	@find $(PACKAGE_DIR) -name "*.class" -type f -print0|xargs -0 --no-run-if-empty rm 2>/dev/null
	@find $(OUT) -name "*.class" -type f -print0|xargs -0 --no-run-if-empty rm 2>/dev/null

test:
	echo "$(pwd)/$(PACKAGE_DIR)"
	javac -sourcepath . -cp $(LIBS) -d $(OUT) $(PACKAGE_DIR)/LabyModel.java
	javac -sourcepath . -cp $(LIBS) -d $(OUT) $(PACKAGE_DIR)/Main.java
	java -cp $(OUT):$(LIBS):../lang $(PACKAGE).Main


run/%:	$(OUT)
	javac -cp $(LIBS):$(OUT) -d $(OUT) $(PACKAGE_DIR)/$(subst run/,,$@).java
	java -cp $(OUT):$(LIBS) $(PACKAGE)/$(subst run/,,$@) 

display:	run/Display


display/%: $(OUT)
	javac -cp $(LIBS) -d $(OUT) $(PACKAGE_DIR)/Display.java
	java -cp $(OUT):$(LIBS) $(PACKAGE).Display $(subst display/,,$@)

compile/%:
	javac -cp $(LIBS) -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 
