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

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

patch:
	if [ ! -d .pc ]; then \
	  QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2; \
	fi

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
	rm -f stamp-* build-doc 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 Version configure contrib/Makefile contrib/configure contrib/utilities/Makefile contrib/utilities/configure
	rm -f base/include/base/config.h base/include/base/config.h.in
	rm -f lac/include/lac/lapack_templates.h
	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/Makefile doc/doxygen/doxygen.log doc/doxygen/*.dox
	dh_clean

stamp-configure: 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
	touch $@

build: stamp-build
stamp-build: 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) all
	touch $@

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

install: build
# We distribute the libs, and put the includes and common files in -dev
	install -d debian/libdeal.ii-dbg$(version)/usr/lib
	mv lib/*.g.so.$(version) debian/libdeal.ii-dbg$(version)/usr/lib/
	install -d debian/libdeal.ii$(version)/usr/lib
	mv lib/*.so.$(version) debian/libdeal.ii$(version)/usr/lib/
	install -d debian/libdeal.ii-dbg/usr/lib
	mv lib/*.g.so debian/libdeal.ii-dbg/usr/lib/
	install -d debian/libdeal.ii-dev/usr/lib
	mv lib/*.so debian/libdeal.ii-dev/usr/lib/
	install -d debian/libdeal.ii-dev/usr/include/deal.II
	cp -a deal.II/include/* lac/include/* base/include/* \
	  debian/libdeal.ii-dev/usr/include/deal.II/
	install -d debian/libdeal.ii-dev/usr/share/deal.II
	cp -a common/* debian/libdeal.ii-dev/usr/share/deal.II
# 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
# There are a couple of binaries in common/scripts which belong in $(version)
	install -d debian/libdeal.ii$(version)/usr/lib/deal.II-$(version)
	mv debian/libdeal.ii-dev/usr/share/deal.II/scripts/expand_instantiations \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_dependencies \
	  debian/libdeal.ii$(version)/usr/lib/deal.II-$(version)/
	ln -s ../../../lib/deal.II-$(version)/expand_instantiations \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/expand_instantiations
	ln -s ../../../lib/deal.II-$(version)/make_dependencies \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_dependencies
	rm -f debian/libdeal.ii-dev/usr/share/deal.II/scripts/*.cc \
	  debian/libdeal.ii-dev/usr/share/deal.II/scripts/make_tarfile.sh
# Remove backup files
	rm -f debian/libdeal.ii-dev/usr/include/deal.II/base/config.h.in~
	touch $@

binary-indep: install build-doc
	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/\/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
	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
	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
	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 clean
