#!/usr/bin/make -f
# 
# Copyright (C) 2008 Francesco Paolo Lovergine <frankie@debian.org>
# Released under GPL. See /usr/share/common-licenses/GPL for
# more information about the license.
#

RELEASE	:= 4.2.10
ARCHIVE	:= upstream/HDF$(RELEASE).tar.gz
PACKAGE := libhdf4
SOVER   := 0
DESTDIR	:= $(CURDIR)/debian/tmp
DESTDIR_ALT	:= $(CURDIR)/debian/tmp-alt

F77     := gfortran
CC	:= gcc
CXX	:= g++
LIBS    := -ljpeg -lz -lm 

CFLAGS = $(shell dpkg-buildflags --get CFLAGS; dpkg-buildflags --get CPPFLAGS)
LDFLAGS = $(shell dpkg-buildflags --get  LDFLAGS)

ifneq (,$(findstring verbose,$(DEB_BUILD_OPTIONS)))
   DH_VERBOSE=1
   export DH_VERBOSE
endif

ifeq ($(shell arch), s390x)
   DISABLE_TESTS=1
else
   DISABLE_TESTS=0
endif

unpack:		stamps/unpack-stamp
patch:		stamps/patch-stamp
build-arch:	debian/control stamps/build-arch-stamp
build-indep:	debian/control stamps/build-indep-stamp
build:		debian/control build-arch build-indep
install:	stamps/install-stamp
install-doc:	stamps/install-doc-stamp
binary:		debian/control binary-indep binary-arch 

stamps/unpack-stamp: debian/control
	dh_testdir
	mkdir HDF$(RELEASE)
	bash debian/copysources.sh $(RELEASE)
	mkdir -p stamps
	touch $@

stamps/patch-stamp: stamps/unpack-stamp
	dh_testdir
	rm -rf HDF4 && mv -f HDF$(RELEASE) HDF4
	# create alternative patches on fly
	cp -a debian/patches debian/patches1
	cp -a debian/patches debian/patches2
	# add a patch to series
	echo shared_fortran >>debian/patches1/series
	echo autotools >>debian/patches2/series
	QUILT_PATCH_OPTS="-p1" QUILT_PATCHES=debian/patches1 quilt push -a --color=auto || [ $$? = 2 ]
	mv -f .pc .pc1
	mv -f HDF4 HDF$(RELEASE)

	rm -rf HDF4 && mv -f HDF4_ALT HDF4 
	QUILT_PATCH_OPTS="-p1" QUILT_PATCHES=debian/patches2 quilt push -a --color=auto || [ $$? = 2 ]
	mv -f .pc .pc2
	mv -f HDF4 HDF4_ALT
	touch $@

unpatch:
	dh_testdir
	rm -rf HDF4 && mv -f HDF$(RELEASE) HDF4
	mv -f .pc1 .pc 
	QUILT_PATCH_OPTS="-p1" QUILT_PATCHES=debian/patches1 quilt pop -a || true
	mv -f .pc .pc1
	mv HDF4 HDF$(RELEASE)

	rm -rf HDF4 && mv -f HDF4_ALT HDF4 && mv .pc2 .pc
	QUILT_PATCH_OPTS="-p1" QUILT_PATCHES=debian/patches2 quilt pop -a || true
	mv -f .pc .pc2
	mv -f HDF4 HDF4_ALT
	rm -rf $(CURDIR)/stamps/patch-stamp HDF4 .pc .pc1 .pc2 $(CURDIR)/debian/patches1 $(CURDIR)/debian/patches2

configure: stamps/configure-stamp
stamps/configure-stamp: patch
	rm -rf HDF4 && ln -sf HDF$(RELEASE) HDF4
	# build the 'regular' netcdf-clashing flavor.
	cd HDF4 \
		&& libtoolize \
		&& autoreconf -i \
		&& F77="$(F77)" CC="$(CC)" CXX="$(CXX)" ./configure --prefix=/usr --includedir=/usr/include/hdf \
			      				     --enable-shared  --enable-fortran
	# ./hdf/fmpool/config.sub
	#
	# build a netcdf compatible flavor, without fortran functions.
	cd HDF4_ALT \
		&& libtoolize \
		&& autoreconf -i \
		&& CC="$(CC)" CXX="$(CXX)" ./configure --prefix=/usr --includedir=/usr/include/hdf --disable-netcdf \
			      				      --enable-shared --disable-fortran
	touch $@

stamps/build-arch-stamp: patch configure
	dh_testdir
	TESTS_ENVIRONMENT="LD_LIBRARY_PATH=$(CURDIR)/HDF4/hdf/src:$(CURDIR)/HDF4/mfhdf/libsrc:/usr/lib" \
			$(MAKE) -C HDF4 \
					F77="$(F77)"  CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" \
			                LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)"
			if [ "$(DISABLE_TESTS)" = 0 ]; then \
			$(MAKE) -C HDF4 check\
				F77="$(F77)"  CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" \
			        LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)"; \
			fi
	TESTS_ENVIRONMENT="LD_LIBRARY_PATH=$(CURDIR)/HDF4_ALT/hdf/src:$(CURDIR)/HDF4_ALT/mfhdf/libsrc:/usr/lib" \
			$(MAKE) -C HDF4_ALT  \
					CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" \
			                LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)"
			if [ "$(DISABLE_TESTS)" = 0 ]; then \
			$(MAKE) -C HDF4_ALT check \
				CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" \
		                LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)"; \
			fi;
	touch $@

stamps/build-indep-stamp: patch

stamps/install-doc-stamp: build-indep
	dh_testdir
	dh_testroot
	dh_prep -i
	
	install -d -o root -g root $(DESTDIR)/usr/share/doc/$(PACKAGE) 
	for archive in $(CURDIR)/debian/*.uue; do \
		uudecode -o /dev/stdout $${archive} | tar xzf - -C $(DESTDIR)/usr/share/doc/$(PACKAGE); \
	done
	find $(DESTDIR)/usr/share/doc/$(PACKAGE)/UG_Examples -type f -exec chmod a-x {} \;
	install -d -o root -g root $(DESTDIR)/usr/share/doc-base
	cp $(CURDIR)/debian/docbase-ref $(DESTDIR)/usr/share/doc-base/libhdf4-ref
	cp $(CURDIR)/debian/docbase-user $(DESTDIR)/usr/share/doc-base/libhdf4-user
	touch $@

stamps/install-stamp: build-arch
	dh_testdir
	dh_testroot
	dh_prep -a
	
	$(MAKE) -C HDF4 install DESTDIR=$(DESTDIR) 
	sed -e "s/^\.TH HDF 1/\.TH HDF 3/"  $(DESTDIR)/usr/share/man/man1/hdf.1 >$(DESTDIR)/usr/share/man/man1/hdf.3
	rm -f $(DESTDIR)/usr/share/man/man1/hdf.1
	
	$(MAKE) -C HDF4_ALT install DESTDIR=$(DESTDIR_ALT) 
	mv $(DESTDIR_ALT)/usr/lib $(DESTDIR)/usr/lib-alt
	mv $(DESTDIR_ALT)/usr/include $(DESTDIR)/usr/include-alt
	
	# strip rpath into binaries and libraries	
	for obj in $(DESTDIR)/usr/bin/* $(DESTDIR)/usr/lib/*.so.* $(DESTDIR)/usr/lib-alt/*.so.*; do \
		chrpath -d $${obj} || true; \
	done
	# Empty out the dependency field in our .la files
	for file in $(DESTDIR)/usr/lib/*.la $(DESTDIR)/usr/lib-alt/*.la; do \
		sed -i -e "/dependency_libs/ s/'.*'/''/" $$file ; \
	done
	# rename programs also provided by netcdf-bin
	mv $(DESTDIR)/usr/bin/ncdump $(DESTDIR)/usr/bin/ncdump-hdf
	mv $(DESTDIR)/usr/bin/ncgen $(DESTDIR)/usr/bin/ncgen-hdf
	# rename manuals also provided by netcdf-bin
	mv $(DESTDIR)/usr/share/man/man1/ncdump.1 $(DESTDIR)/usr/share/man/man1/ncdump-hdf.1
	sed -e 's/ncdump/ncdump-hdf/g' $(DESTDIR)/usr/share/man/man1/ncdump-hdf.1
	mv $(DESTDIR)/usr/share/man/man1/ncgen.1 $(DESTDIR)/usr/share/man/man1/ncgen-hdf.1
	sed -e 's/ncgen/ncgen-hdf/g' $(DESTDIR)/usr/share/man/man1/ncgen-hdf.1
	
	touch $@

binary-arch: install
	dh_testdir -a
	dh_testroot -a
	dh_install -a --sourcedir=$(DESTDIR)
	dh_installchangelogs -a
	dh_installdocs -a
	dh_installman -a
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -a -l$(DESTDIR)/usr/lib:$(DESTDIR)/usr/lib-alt
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a


binary-indep: install-doc
	dh_testdir -i
	dh_testroot -i
	dh_install -i --sourcedir=$(DESTDIR)
	dh_installchangelogs -i
	dh_installdocs -i
	dh_installman -i
	dh_link -i
	dh_compress -i 
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

debian/control: debian/control.in
	sed -e 's/@PACKAGE@/$(PACKAGE)/g' -e 's/@SOVER@/$(SOVER)/g' \
		$(CURDIR)/debian/control.in >$(CURDIR)/debian/control

clean: debian/control
	dh_testdir
	dh_testroot
	rm -rf stamps HDF$(RELEASE) HDF4 HDF4_ALT .pc .pc1 .pc2 $(CURDIR)/debian/patches1 $(CURDIR)/debian/patches2 $(DESTDIR_ALT)
	rm -f patches 
	dh_clean

.PHONY: $(ARCHIVE) clean binary-indep binary-arch configure unpack patch build-arch build-indep build install install-doc binary
