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

name = globus-common
_name = globus_common
version = 14.5
soname = 0

INSTALLDIR = $(CURDIR)/debian/tmp
GLOBUSPACKAGEDIR = $(INSTALLDIR)$(_datadir)/globus/packages

_prefix = /usr
_bindir = $(_prefix)/bin
_sbindir = $(_prefix)/sbin
_libdir = $(_prefix)/lib
_datadir = $(_prefix)/share
_mandir = $(_datadir)/man
_docdir = $(_datadir)/doc/lib$(name)-dev

DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)

ifneq (,$(filter $(DEB_HOST_ARCH_CPU), amd64 alpha ia64 s390x ppc64 sparc64))
flavor = gcc64
else
flavor = gcc32
endif

configure: configure-stamp

configure-stamp:
	dh_testdir

	/usr/share/globus/globus-bootstrap.sh

	dh_autotools-dev_updateconfig

	GLOBUS_VERSION=5.2.1 ./configure \
	   --disable-static \
	   --with-flavor=$(flavor) \
	   --enable-doxygen \
	   --with-docdir=$(_docdir) \
	   --with-backward-compatibility-hack

	# Reduce overlinking
	sed 's!CC -shared !CC \\$${wl}--as-needed -shared !g' -i libtool

	touch $@

build: build-arch build-indep

build-arch: build-stamp

build-indep: build-stamp

build-stamp: configure-stamp
	dh_testdir

	$(MAKE)

	touch $@

clean:
	dh_testdir
	dh_testroot

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

	dh_autotools-dev_restoreconfig

	# Remove autogenerated files

	rm -f aclocal.m4
	rm -f configure
	rm -f config.guess
	rm -f config.sub
	rm -f ltmain.sh
	rm -f mkinstalldirs

	rm -f doxygen/Doxyfile*
	rm -f doxygen/Makefile.am
	rm -f pkgdata/Makefile.am
	rm -f pkgdata/*.filelist
	rm -f pkgdata/*.gpt
	rm -f pkgdata/$(name).pc
	rm -f pkgdata/pkg_data_src.pc.in
	rm -f gptdata.sh
	rm -f globus_automake*
	rm -rf autom4te.cache

	rm -rf doxygen/doc

	rm -f config.h.in
	rm -f scripts/globus-domainname

	find . -name Makefile.in -exec rm {} ';'

	rm -f build-stamp configure-stamp

	dh_clean debian/*.install

install: build-stamp
	dh_testdir
	dh_testroot
	dh_prep

	$(MAKE) install DESTDIR=$(INSTALLDIR)

	# These scripts are intended to be sourced, not executed
	chmod -x $(INSTALLDIR)$(_datadir)/globus/globus-script-initializer
	chmod -x $(INSTALLDIR)$(_datadir)/globus/globus-sh-tools.sh

	# Remove libtool archives (.la files)
	find $(INSTALLDIR)$(_libdir) -name 'libglobus_common.la' \
	  -exec rm -v '{}' \;
	sed '/libglobus_common.la$$/d' \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist

	# This library is opened using lt_dlopenext, so the libtool archive
	# (.la file) can not be removed - fix libdir and clear dependency_libs
	# ... and move it to the main package
	for lib in `find $(INSTALLDIR)$(_libdir) \
	  -name 'libglobus_thread_*.la'` ; do \
	  sed -e "s!^libdir=.*!libdir=\'$(_libdir)\'!" \
	      -e "s!^dependency_libs=.*!dependency_libs=\'\'!" -i $$lib ; \
	done
	grep 'libglobus_thread_.*\.la$$' \
	  $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist \
	  >> $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_rtl.filelist
	sed '/libglobus_thread_.*\.la$$/d' \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist

	# Move globus-makefile-header to dev package
	grep globus-makefile-header \
	  $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_pgm.filelist \
	  >> $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist
	sed /globus-makefile-header/d \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_pgm.filelist

	# Move client man pages to progs package
	grep '.[18]$$' $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist \
	  >> $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_pgm.filelist
	sed '/.[18]$$/d' -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

	# Remove deprecated.3 man page (too common name)
	rm -f $(INSTALLDIR)$(_mandir)/man3/deprecated.3
	sed /deprecated\.3/d \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

	# Remove installed license file
	rm -f $(INSTALLDIR)$(_docdir)/GLOBUS_LICENSE
	sed /GLOBUS_LICENSE/d \
	  -i $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist

	# Use system jquery script
	if [ -r $(INSTALLDIR)$(_docdir)/html/jquery.js ] ; then \
	  rm $(INSTALLDIR)$(_docdir)/html/jquery.js ; \
	  ln -s /usr/share/javascript/jquery/jquery.js \
	    $(INSTALLDIR)$(_docdir)/html/jquery.js ; \
	  echo js:Depends=libjs-jquery >> debian/lib$(name)-doc.substvars ; \
	else \
	  echo js:Depends= >> debian/lib$(name)-doc.substvars ; \
	fi

	# Generate package filelists
	cat $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_rtl.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/lib$(name)$(soname).install
	cat $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_pgm.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/$(name)-progs.install
	cat $(GLOBUSPACKAGEDIR)/$(_name)/$(flavor)_dev.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/lib$(name)-dev.install
	cat $(GLOBUSPACKAGEDIR)/$(_name)/noflavor_doc.filelist \
	  | sed s!^!debian/tmp$(_prefix)! > debian/lib$(name)-doc.install

binary: binary-arch binary-indep

binary-arch: install
	dh_testdir
	dh_testroot
	dh_installdocs -a debian/README
	dh_installchangelogs -a
	dh_install -a --fail-missing
	dh_installman -a
	dh_link -a
	dh_strip -a --dbg-package=$(name)-dbg
	dh_compress -a
	dh_fixperms -a
	dh_perl -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a -l debian/lib$(name)$(soname)/usr/lib
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary-indep: install
	dh_testdir
	dh_testroot
	dh_installdocs -p lib$(name)-doc --link-doc=lib$(name)-dev
	dh_installdocs -i
	dh_installchangelogs -i
	dh_install -i --fail-missing
	dh_installman -i
	dh_link -i
	dh_compress -i -X .tag
	dh_fixperms -i
	dh_perl -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

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