#!/usr/bin/make -f

DEB_TAR_SRCDIR = gtool5-20101228
DEB_TARBALL = $(CURDIR)/upstream/$(DEB_TAR_SRCDIR).tar.gz
SRC_TREE = $(CURDIR)/build-tree/$(DEB_TAR_SRCDIR)

include /usr/share/cdbs/1/rules/tarball.mk
include /usr/share/cdbs/1/rules/debhelper.mk
#include /usr/share/cdbs/1/class/autotools.mk
include /usr/share/cdbs/1/class/langcore.mk
include /usr/share/cdbs/1/rules/patchsys-quilt.mk

# Add here any variable or target overrides you need.
FC        := /usr/bin/gfortran
MPIFC     := /usr/bin/mpif90.openmpi
MPIEXEC   := /usr/bin/mpiexec.openmpi
SYSFFLAGS := -O3 -fPIC -fall-intrinsics
#FFLAGS    := $(SYSFFLAGS)
FFLAGS    :=
RUBY      := /usr/bin/ruby1.8
MANPAGES  := debian/*.1
EXT       := gnu

CONFIGURE_ENV     :=							\
	FC="$(FC)" SYSFFLAGS="$(SYSFFLAGS)"			\
	FFLAGS="$(FFLAGS)" RUBY="$(RUBY)"
CONFIGURE_ENV_MPI :=							\
	FC="$(MPIFC)" SYSFFLAGS="$(SYSFFLAGS)"		\
	FFLAGS="$(FFLAGS)" RUBY="$(RUBY)"
CONFIGURE_FLAGS   :=							\
	--with-netcdf=/usr/lib/libnetcdf.a			\
	--with-netcdff=/usr/lib/libnetcdff.a		\
	--with-netcdf-include=/usr/include			\
	--with-abort=abort							\
	--with-getarg=f2003std						\
	--with-getenv=f2003std
CONFIGURE_FLAGS_SERIAL := $(CONFIGURE_FLAGS)	\
	--disable-mpi
CONFIGURE_FLAGS_MPI := $(CONFIGURE_FLAGS)		\
	--with-mpiexec="$(MPIEXEC)"
DEB_INSTALL_DOCS_ALL := $(SRC_TREE)/README
DEB_INSTALL_DOCS_gtool5-doc := $(SRC_TREE)/doc $(SRC_TREE)/htmltools
DEB_COMPRESS_EXCLUDE := .rd .nc
DEB_INSTALL_MANPAGES_gtool5 := $(MANPAGES)

pre-build::
	cd debian \
		&& rd2 -r rd/rd2man-lib 	\
	  gt5frt.rd > gt5frt.$(EXT).1		\
		&& rd2 -r rd/rd2man-lib 	\
	  gt5frt.rd > gt5frt.openmpi-$(EXT).1	\
		&& rd2 -r rd/rd2man-lib 	\
	  gt5config.rd > gt5config.$(EXT).1 	\
		&& rd2 -r rd/rd2man-lib 	\
	  gt5config.rd > gt5config.openmpi-$(EXT).1
	(cd debian && PACKAGE=gtool5 EXT=$(EXT) PRIORITY=20 sh ./pre-build.sh)

configure/gtool5:: pre-configure configure-serial configure-parallel
pre-configure: pre-configure-stamp
pre-configure-stamp:
	cp -r $(SRC_TREE) $(SRC_TREE)-parallel
	touch $@
configure-serial:: configure-serial-stamp
configure-serial-stamp:
	(cd $(SRC_TREE) && \
	  $(CONFIGURE_ENV) ./configure $(CONFIGURE_FLAGS_SERIAL) --prefix=/usr/lib/gtool5)
	touch $@
configure-parallel: configure-parallel-stamp
configure-parallel-stamp:
	(cd $(SRC_TREE)-parallel && \
	  $(CONFIGURE_ENV_MPI) ./configure $(CONFIGURE_FLAGS_MPI) --prefix=/usr/lib/gtool5)
	touch $@

build/gtool5:: build-serial build-parallel
build-serial: build-serial-stamp
build-serial-stamp:
	( cd $(SRC_TREE) && make && make test )
	touch $@
build-parallel: build-parallel-stamp
build-parallel-stamp:
	( cd $(SRC_TREE)-parallel && make && make test )
	touch $@

install/gtool5:: install-serial install-parallel
install-serial: install-serial-stamp
install-serial-stamp:
	( cd $(SRC_TREE) && make install prefix=$(CURDIR)/debian/gtool5/usr/lib/gtool5 )
	touch $@
install-parallel: install-parallel-stamp
install-parallel-stamp:
	( cd $(SRC_TREE)-parallel && make install prefix=$(CURDIR)/debian/gtool5/usr/lib/gtool5-mpi )
	touch $@

install/gtool5-doc:: install-gtool5-doc-stamp
install-gtool5-doc-stamp:
	touch $@

clean::
	rm -rf $(SRC_TREE)-parallel
	rm -f debian/*.links
	rm -f debian/*.postinst
	rm -f debian/*.prerm
	rm -f debian/*.dirs
	rm -f $(MANPAGES)
	rm -f $(CURDIR)/upstream/*.cdbs-config_list
