# Andreas Romeyke, SLUB Dresden
# Plugin, welches TIFFs via checkit_tiff validiert

# Pfad zu Java
JAVAPATH:=$(wildcard /usr/lib/jvm/java-1.17.0-openjdk-*/bin/)
JAVARELEASE:=17

# Verwendete Rosetta-Version
ROSETTAVERSION:=8.0.0

# Pfad zum Rosetta-SDK
ROSETTASDK:=/exlibris/dps/d4_1/system.dir/dps-sdk-${ROSETTAVERSION}/dps-sdk-projects/dps-sdk-deposit/lib/

# classpath
JUNITCLASSPATH:=/usr/share/java/junit4.jar
CLASSPATH:=$(shell find ${ROSETTASDK} -name "*.jar" -print | xargs echo | sed -e "s/ /:/g")

# sources
PLUGINCLASS:=SLUBRetroMonographieTIFFFormatValidationPlugin
SOURCES:=java/org/slub/rosetta/dps/repository/plugin/${PLUGINCLASS}.java
OBJS:=$(SOURCES:.java=.class)
PLUGINVERSION:=$(shell grep -o "<pl:version>.*</pl:version>" PLUGIN-INF/*.xml | sed -e "s#<pl:version>##g" | sed -e "s#</pl:version>##g")
JAR:=${PLUGINCLASS}.jar
BUILD:=build/

all: $(BUILD) $(JAR)

help:
	@echo "erzeugt Plugin für Rosetta von Exlibris"
	@echo ""
	@echo "Das Argument 'clean' löscht temporäre Dateien, 'help' gibt diese Hilfe aus und"
	@echo "'all' erzeugt ein JAR-File und ein Bash-Script welches das Java-Programm"
	@echo "aufruft."

jarclean:
	@rm -Rf $(BUILD)

test:   $(OBJS) 
	java -cp ${CLASSPATH}:$(JUNITCLASSPATH) org.junit.runner.JUnitCore 

clean: jarclean
	@rm -Rf doc/
	find ./java/org/ -name "*.class" -exec rm -f \{\} \;
	@rm -Rf $(JAR)

distclean: clean
	find ./ -name "*~" -exec rm -f \{\} \;
	@rm -Rf null

$(BUILD):
	@mkdir $@;
	@mkdir $@/lib

$(JAR): $(OBJS)
	@cp -r PLUGIN-INF/ $(BUILD)
	@cp -r META-INF/ $(BUILD)
	@cd java; find ./ -name "*.class" -print -exec cp --parents -r \{\} $(PWD)/$(BUILD) \; ; cd ..
	@cd $(BUILD); ${JAVAPATH}/jar cfvM ../$@ ./* ; cd ..

%.class: %.java
	${JAVAPATH}/javac --release ${JAVARELEASE} -g -classpath ${CLASSPATH}:${JUNITCLASSPATH} -Xlint:all $<

doc: $(SOURCES)
	javadoc -d doc/ $^

check_prerequisites:
	@echo -n "### Checking java path: $(JAVAPATH) ...."
	@if [ -e $(JAVAPATH) ]; then echo "fine :)"; else echo " not found! :("; fi
	@echo -n "### Checking Exlibris Rosetta SDK path: $(ROSETTASDK) ...."
	@if [ -e $(ROSETTASDK) ]; then echo "fine :)"; else echo " not found! :("; fi

.PHONY: help clean distclean jarclean test