# Makefile zum Kompilieren von Java-Programmen
#
# Autor: Wolfgang Runte (woru@informatik.uni-osnabrueck.de)

# Dateien & Verzeichnisse
MAIN_CLASS = Main
JAR_FILE = $(MAIN_CLASS).jar
ZIP_FILE = $(MAIN_CLASS)_src.zip
SOURCES_DIR = code
CLASSES_DIR = classes
JAVADOC_DIR = doc
PWD = $(shell pwd)
MANIFEST_TMP_FILE = Manifest.txt

# Kommandos & Parameter
JAVA = java
JAVAC = javac
JAVAC_PARAMS = -d $(CLASSES_DIR) -sourcepath $(SOURCES_DIR)
JAVADOC = javadoc -private -author -version
JAR = jar
ZIP = zip
ZIP_PARAMS = -x \*.svn/*
RM = rm -vrf
CD = cd
ECHO = echo
MKDIR = mkdir -p


all: jarsrc clean

jarsrc: jar
	$(JAR) -uf $(JAR_FILE) -C $(SOURCES_DIR) .	

jar: compile Manifest.txt
	$(JAR) -cfm $(JAR_FILE) $(MANIFEST_TMP_FILE) -C $(CLASSES_DIR) .

run:
	$(JAVA) -jar $(JAR_FILE)

Manifest.txt:
	$(ECHO) Main-Class: $(MAIN_CLASS) > $(MANIFEST_TMP_FILE)

compile: classes
	$(JAVAC) $(JAVAC_PARAMS) $(SOURCES_DIR)/$(MAIN_CLASS).java

classes:
	$(MKDIR) $(CLASSES_DIR)

clean:
	$(RM) $(CLASSES_DIR) $(JAVADOC_DIR) $(MANIFEST_TMP_FILE)

sources:
	$(ZIP) -r $(ZIP_FILE) $(SOURCES_DIR) $(ZIP_PARAMS)

javadoc:
	$(CD) $(PWD)/$(SOURCES_DIR) && $(JAVADOC) -d $(PWD)/$(JAVADOC_DIR) *

