#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1


# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
LIBMESH_VERSION=0.7.1

# shared library versions, option 1
version=2.0.5
major=2

libmesh/config.status: libmesh/configure.in
	dh_testdir
	cp /usr/share/misc/config.guess libmesh/
	cp /usr/share/misc/config.sub libmesh/
	QUILT_PATCHES=debian/patches quilt push -a || test $$? = 2
	cd libmesh && libtoolize && autoreconf -I m4/
	cd libmesh && PETSC_DIR=/usr/lib/petsc PETSC_ARCH=$(shell petscarch) \
	  SLEPC_DIR=/usr/lib/slepc \
	  LDFLAGS=-Wl,-soname,libmesh.so.$(LIBMESH_VERSION),-lpetsc,-lpetscdm,-lpetscksp,-lpetscmat,-lpetscsnes,-lpetscvec,-lscotchmetis,-lblas,-ltbb,-ltbbmalloc,-lvtkIO,-lvtkCommon,-lvtkFiltering \
	  ./configure --prefix=/usr \
	   --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
	   --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info \
	   --disable-laspack --disable-sfc --disable-gzstreams --disable-gmv \
	   --disable-tecplot --disable-parmetis --disable-tetgen \
	   --disable-triangle --disable-exodus --disable-libHilbert \
	   --with-mpi=/usr --with-cxx=mpicxx --with-cc=mpicc --with-f77=mpif77\
	   --enable-second --enable-ifem --enable-metis --enable-perflog \
	   --enable-vtk --with-vtk-include=/usr/include/vtk-5.6 --with-tbb=/usr

build: build-arch
build-arch: libmesh/config.status
	dh_testdir
	$(MAKE) -C libmesh
	touch $@

build-indep: libmesh/config.status
	dh_testdir
	$(MAKE) -C libmesh doc
	touch $@

clean:
	dh_testdir
	dh_testroot
	rm -f build-arch
	QUILT_PATCHES=debian/patches quilt pop -a -R || test $$? = 2

	[ ! -f libmesh/Make.common ] || $(MAKE) -C libmesh distclean
	rm -f libmesh/config.sub libmesh/config.guess libmesh/config.log
	find -type f -name '.*' -exec '{}' ';'

	dh_clean

meshlib = $(CURDIR)/debian/libmesh$(LIBMESH_VERSION)
meshdev = $(CURDIR)/debian/libmesh-dev

install: install-stamp
install-stamp: build
	dh_testdir
	dh_testroot
	dh_clean
	dh_installdirs

	mkdir -p $(meshlib)/usr/lib
	mkdir -p $(meshdev)/usr/lib
	libdir=`grep "hosttype " libmesh/Make.common | cut -d "=" -f 2 | cut -c 2-`; \
	cp libmesh/lib/$${libdir}_opt/libmesh.so $(meshlib)/usr/lib/libmesh.so.$(LIBMESH_VERSION)
	ln -s libmesh.so.$(LIBMESH_VERSION) $(meshdev)/usr/lib/libmesh.so
	mkdir -p $(meshdev)/usr/include/libmesh
	cp libmesh/include/base/* libmesh/include/enums/* libmesh/include/error_estimation/* libmesh/include/fe/* libmesh/include/geom/* libmesh/include/mesh/* libmesh/include/numerics/* libmesh/include/parallel/* libmesh/include/partitioning/* libmesh/include/quadrature/* libmesh/include/solvers/* libmesh/include/utils/* $(meshdev)/usr/include/libmesh
	rm $(meshdev)/usr/include/libmesh/libmesh_config.h.in
	-rm $(meshdev)/usr/include/libmesh/libmesh_contrib_config.h.in
	touch $@

# Build architecture-independent files here.
binary-indep: build-indep install-stamp
	dh_testdir -i
	dh_testroot -i
	dh_installchangelogs -i libmesh/CHANGES
	dh_installdocs -i
	mv debian/libmesh-doc/usr/share/doc/libmesh-doc/man \
	  debian/libmesh-doc/usr/share/
	mv debian/libmesh-doc/usr/share/doc/libmesh-doc/latex/*/*.pdf \
	  debian/libmesh-doc/usr/share/doc/libmesh-doc/
	rm -rf debian/libmesh-doc/usr/share/doc/libmesh-doc/latex \
	  debian/libmesh-doc/usr/share/doc/libmesh-doc/Doxyfile* \
	  debian/libmesh-doc/usr/share/doc/libmesh-doc/dot*
	dh_installexamples -i "--exclude=.depend"
	for exmake in `ls debian/exmake/Makefile.ex* | sed 's/debian\/exmake\/Makefile.//'`; do \
	  cp -f debian/exmake/Makefile.$$exmake \
	    $(CURDIR)/debian/libmesh-doc/usr/share/doc/libmesh-doc/examples/$$exmake/Makefile; \
	done
	dh_compress -i -X.php -X.js -X.pdf
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install-stamp
	dh_testdir -a
	dh_testroot -a
	dh_installchangelogs -a libmesh/CHANGES
	dh_installdocs -a
	dh_installman -a
	dh_link -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_installdeb -a
	dh_shlibdeps -av
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

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

get-orig-source:
	wget http://qa.debian.org/watch/sf.php/libmesh/libmesh-0.6.4.tar.gz
	tar xzf libmesh-0.6.4.tar.gz
	rm -r libmesh-0.6.4/libmesh/contrib/laspack
	rm -r libmesh-0.6.4/libmesh/contrib/metis
	rm -r libmesh-0.6.4/libmesh/contrib/parmetis
	rm -r libmesh-0.6.4/libmesh/contrib/sfcurves
	rm -r libmesh-0.6.4/libmesh/contrib/tecplot
	rm -r libmesh-0.6.4/libmesh/contrib/tetgen
	rm -r libmesh-0.6.4/libmesh/contrib/triangle
	find libmesh-0.6.4 -type f -name '.*' -exec rm '{}' ';'
	mv libmesh-0.6.4 libmesh-0.6.4.dfsg
	tar czf libmesh_0.6.4.dfsg.orig.tar.gz libmesh-0.6.4.dfsg
	rm -r libmesh-0.6.4.dfsg libmesh-0.6.4.tar.gz
