# Get JAVAC definition
include ${TRICK_HOME}/share/trick/makefiles/Makefile.common

JAVAC ?= javac
JAVAC_FLAGS = -g -Xlint:unchecked -Xlint:deprecation

SRC_DIR   = src
SRC_FILES = $(shell find ${SRC_DIR} -type f -name \*.java)
BUILD_DIR = build
DEST_DIR  = ${BUILD_DIR}/classes
LIB_DIR   = ${TRICK_HOME}/$(LIBEXEC)/trick/java/lib
DIST_DIR  = ${TRICK_HOME}/$(LIBEXEC)/trick/java/dist
RESOURCES_DIR  = ${TRICK_HOME}/$(LIBEXEC)/trick/java/resources
DOCS_API_DIR   = ${TRICK_HOME}/share/doc/trick/java
TEST_REPORTS_DIR = test/reports

empty :=
space := $(empty) $(empty)
CLASS_PATH = $(subst $(space),:,$(wildcard ${LIB_DIR}/*.jar))

RESOURCES = $(subst src/,,$(shell find src/trick -name resources))
RESOURCES += $(subst src/,,$(shell find src/trick -name jaxb.index))

all: ${DIST_DIR}/trick.jar resources
	@echo "Java build successful"

${DEST_DIR} ${DIST_DIR} ${RESOURCES_DIR} ${DOCS_API_DIR}:
	mkdir -p $@

${DIST_DIR}/trick.jar: compile ${DIST_DIR}
	@echo "Creating jar file..."
	@jar cf ${DIST_DIR}/trick.jar -C ${DEST_DIR} .
	@cd ${SRC_DIR} && jar uf ${DIST_DIR}/trick.jar ${RESOURCES}

external_jars:
	@ $(MAKE) -C  $(LIB_DIR)

compile: ${DEST_DIR} external_jars
	@echo "Building Trick GUIs..."
	@${JAVAC} ${JAVAC_FLAGS} -classpath ${CLASS_PATH} -d ${DEST_DIR} -sourcepath ${SRC_DIR} ${SRC_FILES}

resources: ${RESOURCES_DIR}/trick_icon.png

${RESOURCES_DIR}/trick_icon.png: ${SRC_DIR}/trick/common/resources/trick_icon.png ${RESOURCES_DIR}
	@cp $< $@

JAVA_DOC_LINKS = \
 -link "http://docs.oracle.com/javase/6/docs/api/" \
 -link "http://www.jfree.org/jfreechart/api/javadoc/" \
 -link "http://junit.sourceforge.net/javadoc/"

javadoc: ${DOCS_API_DIR}
	javadoc -d ${DOCS_API_DIR} -classpath ${CLASS_PATH} -sourcepath ${SRC_DIR} -windowtitle "Trick GUI API" ${JAVA_DOC_LINKS} trick ${SRC_FILES}

clean:
	rm -rf ${BUILD_DIR}
	rm -rf ${DIST_DIR}
	rm -rf ${RESOURCES_DIR}
	rm -rf ${TEST_REPORTS_DIR}

clean_obj:
	rm -rf ${BUILD_DIR}

clean_docs:
	rm -rf ${DOCS_API_DIR}