#!/usr/bin/make -f
# -*- makefile -*-

configure: configure-stamp

configure-stamp:
	dh_testdir
	mh_patchpom -plibjglobus-parent-java pom.xml
	mh_patchpom -plibjglobus-parent-java test-utils/pom.xml
	mh_patchpom -plibjglobus-parent-java container-test-utils/pom.xml
	mh_patchpom -plibjglobus-ssl-proxies-java ssl-proxies/pom.xml
	mh_patchpom -plibjglobus-jsse-java jsse/pom.xml
	mh_patchpom -plibjglobus-gss-java gss/pom.xml
	mh_patchpom -plibjglobus-gram-java gram/pom.xml
	mh_patchpom -plibjglobus-gridftp-java gridftp/pom.xml
	mh_patchpom -plibjglobus-ssl-proxies-tomcat-java ssl-proxies-tomcat/pom.xml
	mh_patchpom -plibjglobus-io-java io/pom.xml
	mh_patchpom -plibjglobus-myproxy-java myproxy/pom.xml
	mh_patchpom -plibjglobus-axisg-java axis/pom.xml

	# Adjust Java version
	sed -e 's!<source>.*</source>!<source>1.5</source>!' \
	    -e 's!<target>.*</target>!<target>1.5</target>!' -i pom.xml

	# Move test classes to test directory
	mkdir -p gram/src/test/java/org/globus/gram/util
	mv gram/src/main/java/org/globus/gram/Gram15Test.java \
	   gram/src/test/java/org/globus/gram/Gram15Test.java
	mv gram/src/main/java/org/globus/gram/GramTest.java \
	   gram/src/test/java/org/globus/gram/GramTest.java
	mv gram/src/main/java/org/globus/gram/MultiUserGramTest.java \
	   gram/src/test/java/org/globus/gram/MultiUserGramTest.java
	mv gram/src/main/java/org/globus/gram/util/TestUtil.java \
	   gram/src/test/java/org/globus/gram/util/TestUtil.java

	# Move gram tests using io classes to io directory
	mkdir -p io/src/test/java/org/globus/gram/tests
	mkdir -p io/src/test/java/org/globus/gram/util
	mkdir -p io/src/test/resources
	mv gram/src/test/java/org/globus/gram/Gram15Test.java \
	   io/src/test/java/org/globus/gram/Gram15Test.java
	mv gram/src/test/java/org/globus/gram/tests/GramTest.java \
	   io/src/test/java/org/globus/gram/tests/GramTest.java
	mv gram/src/test/java/org/globus/gram/tests/test.sh \
	   io/src/test/java/org/globus/gram/tests/test.sh
	mv gram/src/test/java/org/globus/gram/util/TestUtil.java \
	   io/src/test/java/org/globus/gram/util/TestUtil.java
	mv gram/src/test/resources/test.properties \
	   io/src/test/resources/test.properties

	# Remove code duplication
	mkdir -p gss/src/test/java/org/globus/net/test
	mv gram/src/test/java/org/globus/net/test/GSIHttpURLConnectionTest.java \
	   gss/src/test/java/org/globus/net/test/GSIHttpURLConnectionTest.java
	rm -f gss/src/test/java/org/globus/net/GSIHttpURLConnectionTest.java
	rm -rf gram/src/main/java/org/globus/net      # also in gss
	rm -rf gram/src/main/java/org/globus/io/gass  # also in io

	# Move test.properties files to resources directories
	mkdir -p gridftp/src/test/resources/org/globus/ftp/test
	mkdir -p myproxy/src/test/resources/org/globus/myproxy/test
	rm -f gridftp/src/test/java/org/globus/ftp/test/test1.properties
	rm -f gridftp/src/test/java/test.properties
	mv gridftp/src/test/java/org/globus/ftp/test/test.properties \
	   gridftp/src/test/resources/org/globus/ftp/test/test.properties
	mv gridftp/src/test/java/org/globus/ftp/test/test.properties.in \
	   gridftp/src/test/resources/org/globus/ftp/test/test.properties.in
	mv myproxy/src/test/java/org/globus/myproxy/test/test.properties \
	   myproxy/src/test/resources/org/globus/myproxy/test/test.properties

	touch $@

build: build-arch build-indep

build-arch:

build-indep: build-stamp

build-stamp: configure-stamp
	dh_testdir
	debian/mvn-debian -Ptomcat6 \
	    -Dproject.build.sourceEncoding=UTF-8 -Dmaven.test.skip=true \
	    resources:resources compiler:compile jar:jar \
	    resources:testResources compiler:testCompile surefire:test \
	    javadoc:aggregate
	touch $@

clean:
	dh_testdir
	dh_testroot

	rm -rf target
	rm -rf */target

	[ -r pom.xml.save ] && mv pom.xml.save pom.xml || :
	[ -r test-utils/pom.xml.save ] && mv test-utils/pom.xml.save test-utils/pom.xml || :
	[ -r container-test-utils/pom.xml.save ] && mv container-test-utils/pom.xml.save container-test-utils/pom.xml || :
	[ -r ssl-proxies/pom.xml.save ] && mv ssl-proxies/pom.xml.save ssl-proxies/pom.xml || :
	[ -r jsse/pom.xml.save ] && mv jsse/pom.xml.save jsse/pom.xml || :
	[ -r gss/pom.xml.save ] && mv gss/pom.xml.save gss/pom.xml || :
	[ -r gram/pom.xml.save ] && mv gram/pom.xml.save gram/pom.xml || :
	[ -r gridftp/pom.xml.save ] && mv gridftp/pom.xml.save gridftp/pom.xml || :
	[ -r ssl-proxies-tomcat/pom.xml.save ] && mv ssl-proxies-tomcat/pom.xml.save ssl-proxies-tomcat/pom.xml || :
	[ -r io/pom.xml.save ] && mv io/pom.xml.save io/pom.xml || :
	[ -r myproxy/pom.xml.save ] && mv myproxy/pom.xml.save myproxy/pom.xml || :
	[ -r axis/pom.xml.save ] && mv axis/pom.xml.save axis/pom.xml || :

	# Undo move gram tests using io classes to io directory
	[ -r io/src/test/java/org/globus/gram/Gram15Test.java ] && \
	mv io/src/test/java/org/globus/gram/Gram15Test.java \
	   gram/src/test/java/org/globus/gram/Gram15Test.java || :
	[ -r io/src/test/java/org/globus/gram/tests/GramTest.java ] && \
	mv io/src/test/java/org/globus/gram/tests/GramTest.java \
	   gram/src/test/java/org/globus/gram/tests/GramTest.java || :
	[ -r io/src/test/java/org/globus/gram/tests/test.sh ] && \
	mv io/src/test/java/org/globus/gram/tests/test.sh \
	   gram/src/test/java/org/globus/gram/tests/test.sh || :
	[ -r io/src/test/java/org/globus/gram/util/TestUtil.java ] && \
	mv io/src/test/java/org/globus/gram/util/TestUtil.java \
	   gram/src/test/java/org/globus/gram/util/TestUtil.java || :
	[ -r io/src/test/resources/test.properties ] && \
	mv io/src/test/resources/test.properties \
	   gram/src/test/resources/test.properties || :

	# Undo move test classes to test directory
	[ -r gram/src/test/java/org/globus/gram/Gram15Test.java ] && \
	mv gram/src/test/java/org/globus/gram/Gram15Test.java \
	   gram/src/main/java/org/globus/gram/Gram15Test.java || :
	[ -r gram/src/test/java/org/globus/gram/GramTest.java ] && \
	mv gram/src/test/java/org/globus/gram/GramTest.java \
	   gram/src/main/java/org/globus/gram/GramTest.java || :
	[ -r gram/src/test/java/org/globus/gram/MultiUserGramTest.java ] && \
	mv gram/src/test/java/org/globus/gram/MultiUserGramTest.java \
	   gram/src/main/java/org/globus/gram/MultiUserGramTest.java || :
	[ -r gram/src/test/java/org/globus/gram/util/TestUtil.java ] && \
	mv gram/src/test/java/org/globus/gram/util/TestUtil.java \
	   gram/src/main/java/org/globus/gram/util/TestUtil.java || :

	# Undo remove code duplication
	[ -r gss/src/test/java/org/globus/net/test/GSIHttpURLConnectionTest.java ] && \
	mv gss/src/test/java/org/globus/net/test/GSIHttpURLConnectionTest.java \
	   gram/src/test/java/org/globus/net/test/GSIHttpURLConnectionTest.java || :

	# Undo move test.properties files to resources directories
	[ -r gridftp/src/test/resources/org/globus/ftp/test/test.properties ] && \
	mv gridftp/src/test/resources/org/globus/ftp/test/test.properties \
	   gridftp/src/test/java/org/globus/ftp/test/test.properties || :
	[ -r gridftp/src/test/resources/org/globus/ftp/test/test.properties.in ] && \
	mv gridftp/src/test/resources/org/globus/ftp/test/test.properties.in \
	   gridftp/src/test/java/org/globus/ftp/test/test.properties.in || :
	[ -r myproxy/src/test/resources/org/globus/myproxy/test/test.properties ] && \
	mv myproxy/src/test/resources/org/globus/myproxy/test/test.properties \
	   myproxy/src/test/java/org/globus/myproxy/test/test.properties || :

	rm -f build-stamp configure-stamp

	mh_clean
	dh_clean

install: build-stamp
	dh_testdir
	dh_testroot
	dh_prep

binary: binary-arch binary-indep

binary-arch:

binary-indep: install
	dh_testdir
	dh_testroot
	dh_installdocs
	dh_installchangelogs
	mh_installpom -plibjglobus-parent-java -e2.0.6 pom.xml

	for jar in ssl-proxies jsse gss gram gridftp ssl-proxies-tomcat io \
		   myproxy axisg ; do \
	    if [ "$$jar" = "axisg" ] ; then dir=axis ; else dir=$$jar ; fi ; \
	    mh_installpom -plibjglobus-$$jar-java -e2.0.6 $$dir/pom.xml ; \
	    mh_installjar -plibjglobus-$$jar-java -e2.0.6 $$dir/pom.xml \
		-l -njglobus-$$jar $$dir/target/$$jar-debian.jar ; \
	done

	dh_link
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_gencontrol
	dh_md5sums
	dh_builddeb

.PHONY: build build-arch build-indep binary binary-arch binary-indep clean configure install
