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

DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

name=voms
version=2.0.6

include /usr/share/quilt/quilt.make

INSTALLDIR = $(CURDIR)/debian/tmp

_prefix = /usr
_bindir = $(_prefix)/bin
_sbindir = $(_prefix)/sbin
_libdir = $(_prefix)/lib
_includedir = $(_prefix)/include
_sysconfdir = /etc
_localstatedir = /var
_datadir = $(_prefix)/share
_mandir = $(_datadir)/man
_docdir = $(_datadir)/doc

configure: configure-stamp
	:

configure-stamp: $(QUILT_STAMPFN)
	dh_testdir

	for f in config.sub config.guess ; do \
	  if [ -e /usr/share/misc/$$f -a ! -e project/$$f.dist ] ; then \
	    mv project/$$f project/$$f.dist ; \
	    cp -f /usr/share/misc/$$f project/$$f ; \
	  fi ; \
	done

	# Remove embedded gsoap sources
	rm -f src/server/stdsoap2.c src/server/stdsoap2.h src/server/soap*

	# Remove some junk
	rm -rf .classpath .settings

	# Fix bad permissions
	find . '(' -name '*.h' -o -name '*.c' -o -name '*.cpp' -o \
		   -name '*.cc' -o -name '*.java' ')' -exec chmod a-x {} ';'

	# /var/lock/subsys is a redhat-ism - use /var/run/voms instead
	sed -e 's!/lock/subsys!/run/voms!g' -i src/install/voms.start.in

	# Use pdflatex
	sed -e 's!^\(USE_PDFLATEX *= *\)NO!\1YES!' -i src/api/ccapi/Makefile.am

	# Do not force java target
	sed 's/ -target 1.5//' -i src/api/java/Makefile.am

	# Set java source version when using gcj
	readlink /usr/lib/jvm/default-java | grep -q gcj && \
	  sed 's/$$(JAVAC)/& -source 1.5/' -i src/api/java/Makefile.am || :

	# Touch to avoid rerunning bison and flex
	touch -r src/utils/vomsfake.y src/utils/vomsparser.h
	touch -r src/utils/vomsfake.y src/utils/vomsparser.c
	touch -r src/utils/vomsfake.y src/utils/lex.yy.c

	# Add java dependencies to classpath
	echo "Class-Path: /usr/share/java/bcprov.jar:/usr/share/java/commons-cli.jar:/usr/share/java/commons-lang.jar:/usr/share/java/log4j-1.2.jar" >> \
	    src/api/java/Manifest.add

	# rebootstrap
	./autogen.sh

	CFLAGS="$(CFLAGS)" CXXFLAGS="$(CFLAGS)" FFLAGS="$(CFLAGS)" \
	LDFLAGS="-Wl,-z,defs" ./configure \
	   --host=$(DEB_HOST_GNU_TYPE) \
	   --build=$(DEB_BUILD_GNU_TYPE) \
	   --prefix=$(_prefix) \
	   --sysconfdir=$(_datadir) \
	   --mandir='$${datadir}/man' \
	   --infodir='$${datadir}/info' \
	   --libexecdir=$(_datadir) \
	   --disable-glite \
	   --enable-docs \
	   --with-java-home=/usr/lib/jvm/default-java \
	   --with-bc=/usr/share/java/bcprov.jar \
	   --with-commons-cli=/usr/share/java/commons-cli.jar \
	   --with-commons-lang=/usr/share/java/commons-lang.jar \
	   --with-log4j=/usr/share/java/log4j-1.2.jar

	touch $@

build: build-indep build-arch
	:

build-indep: build-stamp
	:

build-arch: build-stamp
	:

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	cd doc/apidoc/api/VOMS_C_API/latex && make
	cd doc/apidoc/api/VOMS_CC_API/latex && make

	mkdir javadoc
	cd javadoc && \
	CLASSPATH=../src/api/java:/usr/share/java/bcprov.jar:/usr/share/java/commons-cli.jar:/usr/share/java/commons-lang.jar:/usr/share/java/log4j-1.2.jar \
	  /usr/lib/jvm/default-java/bin/javadoc \
	    ../src/api/java/org/glite/voms/*.java \
	    ../src/api/java/org/glite/voms/ac/*.java \
	    ../src/api/java/org/glite/voms/contact/*.java

	touch $@

unpatch: cleanup

clean: unpatch
	:

cleanup:
	dh_testdir
	dh_testroot

	if [ -r Makefile ] ; then $(MAKE) clean && $(MAKE) distclean ; fi

	find . -name Makefile.in -exec rm {} ';'
	rm -f aclocal.m4
	rm -f configure
	rm -f project/ltmain.sh
	rm -f src/autogen/config.h.in

	rm -f m4/lt~obsolete.m4
	rm -f m4/ltversion.m4
	rm -f m4/ltoptions.m4
	rm -f m4/ltsugar.m4
	rm -f m4/libtool.m4

	sed -e 's!/run/voms!/lock/subsys!g' \
	    -e 's!/lock/subsys.pid!/run/voms.pid!g' \
	    -i src/install/voms.start.in

	sed -e 's!^\(USE_PDFLATEX *= *\)YES!\1NO!' -i src/api/ccapi/Makefile.am

	sed 's/ -source 1.5//' -i src/api/java/Makefile.am

	grep -q 'target 1.5' src/api/java/Makefile.am || \
	  sed 's/$$(JAVAC)/& -target 1.5/' -i src/api/java/Makefile.am

	sed '/Class-Path:/d' -i src/api/java/Manifest.add

	for f in config.sub config.guess ; do \
	  if [ -e project/$$f.dist ] ; then \
	    mv -f project/$$f.dist project/$$f ; \
	  fi ; \
	done

	rm -f src/server/vomsSOAP.GetAttributeCertificate.req.xml
	rm -f src/server/vomsSOAP.GetAttributeCertificate.res.xml
	rm -f src/server/vomsSOAP.nsmap

	rm -rf doc/apidoc
	rm -rf javadoc
	rm -rf test/utest/.deps
	rm -f test/utest/Makefile
	rm -f test/Makefile
	rm -f .test

	rm -f build-stamp configure-stamp

	dh_clean debian/voms-server.voms.init

install: build-stamp
	dh_testdir
	dh_testroot
	dh_clean -k 

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	rm -rf $(INSTALLDIR)$(_mandir)/man3
	rm $(INSTALLDIR)$(_libdir)/*.la

	rm $(INSTALLDIR)$(_mandir)/man8/voms-install-replica.8

	sed -e 's/\$$PREFIX//' -e 's/\.glite/.voms/' -e 's/RThis/R This/' \
	    -i $(INSTALLDIR)$(_mandir)/man1/voms-proxy-init.1

	rm $(INSTALLDIR)$(_datadir)/vomses.template

	mv $(INSTALLDIR)$(_datadir)/m4 $(INSTALLDIR)$(_datadir)/aclocal

	rm $(INSTALLDIR)$(_datadir)/init.d/voms
	install src/install/voms.start $(CURDIR)/debian/voms-server.voms.init

	mkdir -p $(INSTALLDIR)$(_sysconfdir)/grid-security/vomsdir
	mkdir -p $(INSTALLDIR)$(_sysconfdir)/grid-security/$(name)
	mkdir -p $(INSTALLDIR)$(_sysconfdir)/$(name)
	mkdir -p $(INSTALLDIR)$(_localstatedir)/log/$(name)

	mkdir -p $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_C_API
	cp -pr doc/apidoc/api/VOMS_C_API/html \
		$(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_C_API
	install -m 644 doc/apidoc/api/VOMS_C_API/latex/refman.pdf \
		$(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_C_API
	rm $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_C_API/html/jquery.js
	ln -s /usr/share/javascript/jquery/jquery.js \
	    $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_C_API/html/jquery.js

	mkdir -p $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_CC_API
	cp -pr doc/apidoc/api/VOMS_CC_API/html \
		$(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_CC_API
	install -m 644 doc/apidoc/api/VOMS_CC_API/latex/refman.pdf \
		$(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_CC_API
	rm $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_CC_API/html/jquery.js
	ln -s /usr/share/javascript/jquery/jquery.js \
	    $(INSTALLDIR)/$(_docdir)/voms-dev/VOMS_CC_API/html/jquery.js

	mkdir -p $(INSTALLDIR)/$(_docdir)/libvomsjapi-java
	cp -pr javadoc $(INSTALLDIR)/$(_docdir)/libvomsjapi-java/api

binary-indep:
	:

binary-arch: install
	dh_testdir
	dh_testroot
	mkdir -p debian/voms-doc$(_docdir)
	ln -s voms-dev debian/voms-doc$(_docdir)/voms-doc
	mkdir -p debian/libvomsjapi-java-doc$(_docdir)
	ln -s libvomsjapi-java \
		debian/libvomsjapi-java-doc$(_docdir)/libvomsjapi-java-doc
	dh_installchangelogs ChangeLog
	dh_installdocs
	dh_installexamples
	dh_install --fail-missing
	dh_installinit --name=voms
	dh_installman
	dh_link
	dh_nativejava
	dh_lintian
	dh_strip --dbg-package=voms-dbg
	dh_compress
	dh_fixperms
	dh_makeshlibs
	dh_installdeb
	dh_shlibdeps -l debian/libvomsapi1/usr/lib
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
	:

get-orig-source:
	if [ -r $(name)_$(version).orig.tar.gz ] ; then \
	  echo "$(name)_$(version).orig.tar.gz already exists." ; \
	else \
	  if [ -d voms ]; then \
	    echo "Please remove existing directory 'voms'" ; \
	    exit 1 ; \
	  fi ; \
	  echo "Fetching upstream git version" ; \
	  git clone git://testbed002.cnaf.infn.it/opt/gits/voms.git ; \
	  ( cd voms ; \
	  git archive --format tar --prefix $(name)-$(version)/ \
	    voms_R_`echo $(version)|tr "." "_"` | \
	    gzip - > ../$(name)_$(version).orig.tar.gz ) ; \
	  echo "Cleaning up." ; \
	  rm -rf voms ; \
	fi

.PHONY: build-indep build-arch build clean binary-indep binary-arch binary install configure get-orig-source
