#!/usr/bin/make -f
# Made with the aid of debmake, by Christoph Lameter,
# based on the sample debian/rules file for GNU hello by Ian Jackson.

package=deal.ii
version=7.1.0

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

patch: stamp-patch
stamp-patch:
	if [ ! -d .pc ]; then \
	  QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2; \
	fi
	if [ ! -e configure.upstream ]; then \
	  cp -a configure configure.upstream; \
	  cp -a include/deal.II/base/config.h.in include/deal.II/base/config.h.in.upstream; \
	fi
	touch $@

clean:
	dh_testdir
	if [ -e common/Make.global_options ]; then $(MAKE) distclean; fi
	if [ -d .pc ]; then \
	  QUILT_PATCHES=debian/patches quilt pop -a -R || test $$? = 2; \
	  rm -rf .pc; \
	fi
	if [ -e configure.upstream ]; then \
	  rm -f configure include/deal.II/base/config.h.in; \
	  mv configure.upstream configure; \
	  mv include/deal.II/base/config.h.in.upstream include/deal.II/base/config.h.in; \
	fi
	rm -f stamp-* install-*
	rm -f config.status config.log
	rm -f contrib/config.status contrib/config.log
	rm -f contrib/utilities/config.status contrib/utilities/config.log

	rm -f common/Make.global_options common/Makefile.template common/Make.global_options
	rm -f common/template-arguments common/scripts/make_dependencies.pl
	rm -f common/scripts/make_todo.pl common/scripts/report_features
	rm -f Version contrib/Makefile contrib/configure contrib/utilities/Makefile contrib/utilities/configure
	rm -f include/deal.II/base/config.h
	rm -f include/deal.II/lac/lapack_templates.h
	rm -rf doc/doxygen/deal.II/search
	rm -f doc/doxygen/header.html doc/doxygen/header.tex
	rm -f doc/doxygen/header.136 doc/doxygen/options.136
	rm -f doc/doxygen/tutorial/toc.html
	rm -f doc/doxygen/Makefile
	rm -f doc/development/makefile.rules.html
	rm -f doc/title.html
	rm -rf lib/contrib
	rm -rf lib/debug lib/optimized lib/bin

	rm -f doc/Makefile doc/doxygen/doxygen.log doc/doxygen/*.dox
	dh_clean

stamp-configure: stamp-patch
	dh_testdir
	aclocal --force
	autoreconf -i -v
	CXX=mpicxx CC=mpicc PETSC_DIR=/usr/lib/petsc PETSC_ARCH=`petscarch` \
	  SLEPC_DIR=/usr/lib/slepc SLEPC_ARCH=linux-gnu-c-opt \
	  ./configure --prefix=/usr --enable-parser --enable-multithreading \
	  --enable-shared \
	  --with-boost-libs=/usr/lib --with-boost-include=/usr/include/boost \
	  --with-blas --with-lapack \
	  --with-umfpack-libs=/usr/lib --with-umfpack-include=/usr/include/suitesparse \
	  --with-metis-libs=/usr/lib --with-metis-include=/usr/include/metis/ \
	  --with-trilinos-libs=/usr/lib --with-trilinos-include=/usr/include/trilinos \
	  --with-netcdf-libs=/usr/lib --with-netcdf-include=/usr/include \
	  --with-arpack=/usr \
	  --with-mumps=/usr --with-scalapack=/usr --with-blacs=/usr
	touch $@

build: build-arch
build-arch: stamp-build-arch
stamp-build-arch: stamp-configure
	dh_testdir
# Move aside Make.global_options and replace it with something temporary
	mv common/Make.global_options common/Make.global_options.orig
	sed 's/$$(LIBDIR)\/lib/-L$$(LIBDIR) -l/' < common/Make.global_options.orig \
	  | sed 's/.g$$(lib-suffix)/.g/' | sed 's/call$$(lib-suffix)/call/' \
	  | sed 's/hsl$$(lib-suffix)/hsl/' | sed 's/ase$$(lib-suffix)/ase/' \
	  | sed 's/lac$$(lib-suffix)/lac/' | sed 's/_1d$$(lib-suffix)/_1d/' \
	  | sed 's/_2d$$(lib-suffix)/_2d/' | sed 's/_3d$$(lib-suffix)/_3d/' \
	  > common/Make.global_options
	$(MAKE) $(MAKEFLAG) optimized
	touch $@

build-indep: stamp-build-indep
stamp-build-indep: stamp-configure
	$(MAKE) $(MAKEFLAG) online-doc
	touch $@

install-arch: build-arch
	touch $@

install-indep: build-indep
	touch $@

binary-indep: install-indep
	dh_testdir -i
	dh_testroot -i
	dh_installdirs -i
	dh_install -i
#	dh_movefiles -i
	dh_installdocs -i
	rm -rf debian/deal.ii-examples/usr/share/doc/deal.ii-examples/step-*/doc
	
# Fix example Makefiles
	for mfile in `ls debian/deal.ii-examples/usr/share/doc/deal.ii-examples/step-*/Makefile`; do \
	  mv $$mfile $$mfile.in; \
	  sed 's/$$D\/common/$$D/' < $$mfile.in | \
	    sed 's/$$D\/include\/deal\.II/\/usr\/include\/deal.II/' | \
	    sed 's/$$D/\/usr\/share\/deal.II/' | \
	    sed 's/debug-mode = on/debug-mode = off/' | \
	    grep -v 'D = ' > $$mfile; \
	  rm -f $$mfile.in; \
	done
# Fix Make.global_options
	rm -f debian/libdeal.ii-dev/usr/share/deal.II/Make.global_options*
	sed "s/`echo $(CURDIR) | sed 's/\//\\\\\//g'`/\/usr/" \
	  < common/Make.global_options.orig | \
	  sed 's/deal.II\/include/include\/deal.II/' \
	  > debian/libdeal.ii-dev/usr/share/deal.II/Make.global_options
# Removing the binaries that go in $(version)
	rm -f debian/libdeal.ii-dev/usr/share/deal.II/scripts/report_features \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_dependencies \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/expand_instantiations
# Link to scripts in $(version) and make "make_todo.pl" executable
	ln -s ../../../lib/deal.II-$(version)/make_dependencies \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_dependencies
	ln -s ../../../lib/deal.II-$(version)/report_features \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/report_features
	chmod +x debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_todo.pl
# Remove backup files
	rm -f debian/libdeal.ii-dev/usr/include/deal.II/base/config.h.in~
	rm -f debian/libdeal.ii-dev/usr/share/deal.II/scripts/*.in \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/*.cc \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_tarfile.sh

	dh_installchangelogs -i
	dh_compress -i -XMakefile -Xcc -Xinp
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary-arch: install-arch
	dh_testdir -a
	dh_testroot -a
	dh_installdirs -a
	dh_install -a
#	dh_movefiles -a
#	install -d debian/libdeal.ii-dbg$(version)/usr/share/lintian/overrides
#	install -m 644 debian/libdeal.ii-dbg$(version).overrides \
#	  debian/libdeal.ii-dbg$(version)/usr/share/lintian/overrides/libdeal.ii-dbg$(version)
	dh_installdocs -a

	dh_installchangelogs -a
	dh_strip -a -X.g --dbg-package=libdeal.ii-dbg$(version)
	dh_makeshlibs -a
	dh_compress -a
	dh_fixperms -a
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch

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