#!/usr/bin/make -f


export DH_VERBOSE=1

include /usr/share/debhelper/dh-fortran/fortran-support.mk
include /usr/share/dpkg/buildflags.mk

BUILDDIR:=debian/build
BUILDDIR_DEFAULT:=$(BUILDDIR)-$(FC_DEFAULT)

# The magic debhelper  rule
%:
	dh $@  --builddirectory=${BUILDDIR_DEFAULT} --with fortran_mod

DESTDIR=$(CURDIR)/debian/tmp/
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)

# To enable all, uncomment following line
DEB_BUILD_MAINT_OPTIONS:= hardening=+all
DEB_CFLAGS_MAINT_APPEND:= -Wall -pedantic -fPIC
export DEB_BUILD_MAINT_OPTIONS
export DEB_CFLAGS_MAINT_APPEND DEB_CFLAGS_MAINT_APPEND


CPPFLAGS+= -I/usr/include/cdTime

ARCH:=$(shell dpkg --print-architecture)

# On amd64don't do fPIE, only relro
ifeq ($(ARCH), amd64)
  export LDFLAGS= -Wl,-z,relro -Wl,-z,now
endif

ifneq ($(wildcard /usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial/libhdf5.so),)
  WITH_HDF5:=--with-hdf5=/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/serial
else
  WITH_HDF5:=--with-hdf5=/usr
endif


BUILD_FLAGS = \
	--prefix=/usr --libdir=$(LIBDIR) \
	--enable-cdi-lib --with-zlib=/usr --with-netcdf=/usr  --with-proj=/usr \
	$(WITH_OPENMP) $(WITH_HDF5) \
	--enable-iso-c-interface  --with-fftw3 --with-curl=/usr --with-udunits2=/usr \
	--with-szlib \
	--enable-hirlam-extensions \
	--with-libxml2=usr/ \
	--with-eccodes=/usr --disable-cgribex --with-magics=/usr

override_dh_auto_clean:
	dh_auto_clean	|| echo "distclean ok"
	rm -rf $(BUILDDIR)-*
	if test -f libcdi/src/cfortran.h.orig ; then ( rm libcdi/src/cfortran.h; mv libcdi/src/cfortran.h.orig libcdi/src/cfortran.h); fi
	rm -rf debian/build-*

define dh_configure_fortran_TEMPLATE =

 CPPFLAGS_$(1) = $(CPPFLAGS) \
		$(if $(filter $(1), flangext gfortran),  -DgFortran,  ) \
 		$(if $(filter $(1), flang),              -DflangFortran,  )
 FCFLAGS_$(1) = $(if $(filter $(1), gfortran),  $(FCFLAGS), $(FCFLAGS_FOR_BUILD) )
 LDFLAGS_$(1) = $(if $(filter $(1), gfortran),  $(LDFLAGS)  )

 dh_configure_fortran_$(1):
	@echo DEBUGF CALLING dh_configure_fortran_$(1)
	dh_auto_configure --builddirectory=$(BUILDDIR)-$(1) -- \
			$(BUILD_FLAGS)  \
			FC=$(call get_fc_exe, $(1)) \
			CPPFLAGS="$$(CPPFLAGS_$(1))" FCFLAGS="$$(FCFLAGS_$(1))" FFLAGS="$$(FCFLAGS_$(1))" \
			LIBS="-lm -ljpeg -lz -lcurl" LDFLAGS="$$(LDFLAGS_$(1))"
	@echo DEBUGF LEAVING dh_configure_fortran_$(1)
endef
$(eval $(call foreach_fc,configure))

override_dh_auto_configure:
	[ -f libcdi/src/cfortran.h.orig ]|| ( cp libcdi/src/cfortran.h libcdi/src/cfortran.h.orig)
	ln -sf /usr/include/cfortran.h libcdi/src/cfortran.h

define dh_build_fortran_TEMPLATE =
 dh_build_fortran_$(1):
	@echo CALLING dh_build_fortran_$(1)
	dh_auto_build --builddirectory=$(BUILDDIR)-$(1)
	@echo LEAVING dh_build_fortran_$(1)
endef
$(eval $(call foreach_fc,build))

override_dh_auto_build:
	# Ignore error here ; it mostly works
	- (cd contrib  && LC_ALL=C.UTF-8 ruby makecompl.rb )

override_dh_auto_install:
	dh_auto_install
	for d in debian/tmp/$(LIBDIR)/pkgconfig/cdi.pc $(BUILDDIR_DEFAULT)/libcdi/src/pkgconfig/cdi_f2003.pc ; do \
		sed -e 's%${CURDIR}%/build/cdo%g' < $$d > debian/tmp/x ; \
		mv debian/tmp/x $$d ; \
	done
#		sed -e 's%${CURDIR}%/build/cdo%g' < $(BUILDDIR_FLANG)/libcdi/src/pkgconfig/cdi_f2003.pc > debian/tmp/x ; \
#		mv debian/tmp/x $(BUILDDIR_FLANG)/libcdi/src/pkgconfig/cdi_f2003.pc ) || true
	mkdir -p $(DESTDIR)/usr/share/bash-completions/completions $(DESTDIR)//usr/share/zsh/functions/Completion/Linux
	cp contrib/cdoCompletion.bash $(DESTDIR)/usr/share/bash-completions/completions/cdo
	cp contrib/cdoCompletion.zsh $(DESTDIR)//usr/share/zsh/functions/Completion/Linux/_cdo
	find $(DESTDIR) -name '*.la' -delete -o -name '*.so' -delete -o -name '*.so.0' -delete
	mkdir -p $(DESTDIR)/$(LIBDIR)/fortran/gfortran
	mv $(DESTDIR)/$(LIBDIR)/libcdi_f2003.so.0.0.0  $(DESTDIR)/$(LIBDIR)//libcdi_f2003-gfortran.so.0.0.0
	mv $(DESTDIR)/$(LIBDIR)/libcdi_f2003.a	 $(DESTDIR)/$(LIBDIR)/fortran/gfortran
	patchelf  --set-soname libcdi_f2003-gfortran.so.0 $(DESTDIR)/$(LIBDIR)//libcdi_f2003-gfortran.so.0.0.0
#	$(DO_FLANG) && ( \
#		mkdir -p $(DESTDIR)/$(LIBDIR)/fortran/flang ; \
#		cp  ./debian/build-flang/libcdi/src/.libs/libcdi_f2003.a $(DESTDIR)/$(LIBDIR)/fortran/flang ; \
#		) || true

override_dh_dwz:
	@echo "DWZ currently breaks because of patchelf"

override_dh_auto_test:
	# Need to define path to 'cdo' for python tests
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	export PATH=$(PATH):$(CURDIR)/src make check
endif
