#!/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=1.9.19.2

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

	# Fix location dir
	sed -e 's/\(LOCATION_DIR.*\)"$$prefix"/\1""/g' -i project/acinclude.m4

	# Fix default Globus location
	sed -e 's!\(GLOBUS_LOCATION\)!{\1:-/usr}!' -i project/voms.m4

	# Fix default vomses file location
	sed -e 's!"/opt/glite/etc/vomses"!"/etc/vomses"!' \
		-i src/api/ccapi/voms_api.cc

	# /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

	# 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 \
	   --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-stamp
	:

build-stamp: configure-stamp
	dh_testdir

	GZIP_ENV="GZIP=--best" $(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

	sed -e 's/\(LOCATION_DIR.*\)""/\1"$$prefix"/g' -i project/acinclude.m4

	sed -e 's!{\(GLOBUS_LOCATION\):-/usr}!\1!' -i project/voms.m4

	sed -e 's!"/etc/vomses"!"/opt/glite/etc/vomses"!' \
		-i src/api/ccapi/voms_api.cc

	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

	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 -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 

	GZIP_ENV="GZIP=--best" $(MAKE) install DESTDIR=$(INSTALLDIR)

	rm -f $(INSTALLDIR)$(_bindir)/edg-voms*
	rm -f $(INSTALLDIR)$(_sbindir)/edg-voms*
	rm -f $(INSTALLDIR)$(_mandir)/man1/edg-voms*
	rm -f $(INSTALLDIR)$(_mandir)/man8/edg-voms*
	rm -rf $(INSTALLDIR)$(_mandir)/man3

	rm -f $(INSTALLDIR)$(_libdir)/*.la

	mv $(INSTALLDIR)$(_includedir)/glite/security/voms \
	   $(INSTALLDIR)$(_includedir)/$(name)
	rm -rf $(INSTALLDIR)$(_includedir)/glite

	rm $(INSTALLDIR)$(_includedir)/$(name)/voms_apic_nog.h
	rm $(INSTALLDIR)$(_mandir)/man1/testvoms.1*
	rm $(INSTALLDIR)$(_mandir)/man8/voms-install-replica.8*

	mv $(INSTALLDIR)$(_datadir)/vomses.template \
	   $(INSTALLDIR)$(_datadir)/$(name)

	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)

	sed -e 's!$${datapath}/etc/voms/voms!$${basepath}/share/voms/voms!' \
	    -e 's/useradd/\#&/' -e 's/groupadd/\#&/' \
	    -e 's/vomsd(8)/voms(8)/' \
	    -i $(INSTALLDIR)$(_datadir)/$(name)/voms_install_db

	echo '$$ECHO -en "--x509_user_cert=/etc/grid-security/voms/hostcert.pem\\n" >> $$datapath/etc/voms/$$voms_vo/voms.conf' >> \
		$(INSTALLDIR)$(_datadir)/$(name)/voms_install_db
	echo '$$ECHO -en "--x509_user_key=/etc/grid-security/voms/hostkey.pem\\n" >> $$datapath/etc/voms/$$voms_vo/voms.conf' >> \
		$(INSTALLDIR)$(_datadir)/$(name)/voms_install_db

	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/libvomsapi0/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 "$(name)-$(version)" ]; then \
	    echo "Please remove existing directory '$(name)-$(version)'" ; \
	    exit -1 ; \
	  fi ; \
	  echo "Fetching upstream CVS version" ; \
	  cvs -d:pserver:anonymous:@glite.cvs.cern.ch:/cvs/glite co \
	    -r glite-security-voms_R_`echo $(version)|tr "." "_"` \
	    -d $(name)-$(version) org.glite.security.voms ; \
	  echo "Packing it up." ; \
	  GZIP=-9 tar --exclude=CVS -z -c -f ../$(name)_$(version).orig.tar.gz $(name)-$(version) ; \
	  echo "Cleaning up." ; \
	  rm -rf $(name)-$(version) ; \
	fi

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