#! /usr/bin/make -f

export DH_VERBOSE=1

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

export MPICHLIB_CPPFLAGS=$(shell dpkg-buildflags --get CPPFLAGS)
export MPICHLIB_CFLAGS=$(shell dpkg-buildflags --get CFLAGS)
export MPICHLIB_CXXFLAGS=$(shell dpkg-buildflags --get CXXFLAGS)
export MPICHLIB_FFLAGS=$(shell dpkg-buildflags --get FFLAGS)
export MPICHLIB_FCFLAGS=$(shell dpkg-buildflags --get FFLAGS)
export FC=gfortran
export F77=gfortran

# Keep old library naming scheme
export MPILIBNAME=mpich

extra_flags += \
	--enable-shared \
	--prefix=/usr \
	--enable-fortran=all \
	--disable-rpath \
	--disable-wrapper-rpath \
	--sysconfdir=/etc/mpich \
	--libdir=/usr/lib/$(DEB_HOST_MULTIARCH) \
	--includedir=/usr/include/mpich \
	--docdir=/usr/share/doc/mpich \
	--with-hwloc-prefix=system

# BLCR checkpointing support
ifneq (,$(findstring $(DEB_HOST_ARCH),amd64 armel i386 powerpc))
	extra_flags += --enable-checkpointing --with-hydra-ckpointlib=blcr
endif

# On sparc and sh4, OPA isn't available, so we need to fallback to
# emulation mode. There's a performance penalty, unfortunately.
ifneq (,$(findstring $(DEB_HOST_GNU_CPU),sparc sh4))
	extra_flags += --with-atomic-primitives=no
endif

%:
	dh $@  --parallel --with autoreconf

override_dh_autoreconf:
	dh_autoreconf
	autoreconf -f -i src/mpl src/openpa src/mpi/romio src/pm/hydra

override_dh_auto_configure:
	dh_auto_configure -- $(extra_flags) CPPFLAGS="" CFLAGS="" CXXFLAGS="" FFLAGS="" FCFLAGS=""

override_dh_auto_build-indep:
	dh_auto_build -i
	cd $(CURDIR)/doc/installguide; rm *.pdf; $(MAKE) install.pdf
	cd $(CURDIR)/doc/logging; rm *.pdf; $(MAKE) logging.pdf
	#cd $(CURDIR)/doc/smpd; rm *.pdf; $(MAKE) smpd_pmi.pdf
	cd $(CURDIR)/doc/userguide; rm *.pdf; $(MAKE) user.pdf

override_dh_auto_install-arch:
	dh_auto_install -a

	# Rename executables (ignore upstream symlinks)
	for i in mpicc mpicxx mpifort; do \
	  (cd debian/tmp/usr/bin/ && mv $$i $$i.mpich); \
	done

    # Rename manpages
	for i in mpicc mpicxx mpiexec mpif77 mpifort; do \
	  (cd debian/tmp/usr/share/man/man1/ && mv $$i.1 $$i.mpich.1);\
	done

	# Fix incorrect paths in /usr/bin/mpi{cc,cxx,fort}.mpich
	for fn in debian/tmp/usr/bin/mpicc.mpich debian/tmp/usr/bin/mpicxx.mpich \
		debian/tmp/usr/bin/mpifort.mpich; do \
		sed -i 's:$(CURDIR)/debian/tmp/::g' $$fn ;\
	done

override_dh_install:
	dh_install
	mkdir -p debian/libmpich-dev/usr/lib/mpich
	ln -sf ../$(DEB_HOST_MULTIARCH) debian/libmpich-dev/usr/lib/mpich/lib

override_dh_installchangelogs:
	dh_installchangelogs README

# Correct lib*.so multiarch paths in libmpich-dev.postinst
override_dh_installdeb-arch:
	dh_installdeb -a
	sed -i 's:TRIPLET:$(DEB_HOST_MULTIARCH):g' debian/libmpich-dev/DEBIAN/postinst

# Some tests are failing on hurd-i386.
# Disable them, to be investiated later
disable_test_archs = hurd-i386
ifneq (,$(filter $(DEB_HOST_ARCH),$(disable_test_archs)))
override_dh_auto_test:

endif

