#!/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/langcore.mk
include /usr/share/cdbs/1/rules/patchsys-quilt.mk

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

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-g95.a			\
	--with-netcdf-include=/usr/include/netcdf-g95		\
	--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_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/$(PACKAGES):: 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-g95 )
	touch $@
configure-parallel: configure-parallel-stamp
configure-parallel-stamp:
	(cd $(SRC_TREE)-parallel && \
	  $(CONFIGURE_ENV_MPI) ./configure $(CONFIGURE_FLAGS_MPI) --prefix=/usr/lib/gtool5-g95 )
	touch $@

build/$(PACKAGES):: 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/$(PACKAGES):: install-serial install-parallel
install-serial: install-serial-stamp
install-serial-stamp:
	( cd $(SRC_TREE) && make install prefix=$(CURDIR)/debian/$(PACKAGES)/usr/lib/$(PACKAGES) )
	touch $@
install-parallel: install-parallel-stamp
install-parallel-stamp:
	( cd $(SRC_TREE)-parallel && make install prefix=$(CURDIR)/debian/$(PACKAGES)/usr/lib/$(PACKAGES)-mpi )
	touch $@

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