#!/usr/bin/make -f

export DH_VERBOSE=1

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

export FC_DEFAULT:= gfortran
export FC_OPTIONAL:= 
export FC:=gfortran

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

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

# For hardening
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) #  -fPIC
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
LDFLAGS:=$(shell dpkg-buildflags --get LDFLAGS)



export LDFLAGS CFLAGS CPPFLAGS CXXFLAGS

# Pull in ecbuild macros rather than local ones
BUILD_FLAGS =  \
	-DENABLE_INSTALL_ECCODES_DEFINITIONS=ON \
	-DENABLE_INSTALL_ECCODES_SAMPLES=ON \
	-DENABLE_PNG=ON \
	-DENABLE_AEC=ON \
	-DENABLE_RPATHS=OFF \
	-DENABLE_RELATIVE_RPATHS=OFF \
	-DCMAKE_C_CFLAGS="${CFLAGS} ${LDFLAGS}" \
	-DENABLE_ALIGN_MEMORY=ON \
	-DENABLE_GRIB_TIMER=ON \
	-DENABLE_ECCODES_OMP_THREADS=On  \

%:
	dh $@ --buildsystem=ecbuild --builddirectory=${BUILDDIR_DEFAULT}  --no-parallel 

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

define dh_configure_fortran_TEMPLATE =
  FCFLAGS_$(1) = $(if $(filter $(1), gfortran),  $(FCFLAGS), \
			$(if $(filter $(1), lfortran),  "-g", \
			$(FCFLAGS_FOR_BUILD)))
  dh_configure_fortran_$(1):
	dh_auto_configure --builddirectory=${BUILDDIR}-$(1)  -- \
			-DCMAKE_Fortran_COMPILER=/usr/bin//gfortran  \
			-DCMAKE_Fortran_FLAGS="$$(FCFLAGS_$(1))"
	( cd ${BUILDDIR}-$(1)/data ; tar axpf $(CURDIR)/../eccodes_$(DEB_VERSION_UPSTREAM).orig-data.tar.xz )
	@echo DEBUGF LEAVING dh_configure_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,configure))


define dh_install_fortran_TEMPLATE =
  dh_install_fortran_$(1):
	@echo DEBUGF  CALLING dh_install_fortran_$(1)
	dh_fortran_lib --flavor $(1) $(BUILDDIR)-$(1)/lib/libeccodes_f90_static.a
	dh_fortran_lib --flavor $(1) $(BUILDDIR)-$(1)/lib/libeccodes_f90.so.0
	# dh_fortran_mod -p libeccodes-dev $(BUILDDIR)-$(1)/include/*.mod
	@echo DEBUGF  LEAVING dh_install_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,install))

override_dh_install:
	cd $(BUILDDIR_DEFAULT) && $(MAKE) install DESTDIR=$(DESTDIR)  
	# Move to multiarch dir
	mkdir -p  $(DESTDIR)/$(INCDIR)
	mv $(DESTDIR)/usr/include/*.h $(DESTDIR)/$(INCDIR)
	for d in libeccodes_f90.so	libeccodes.so ; do \
		chrpath -d $(DESTDIR)/$(LIBDIR)/$$d.0 ; done
	chrpath -d $(DESTDIR)/usr/bin/grib_to_netcdf
	dh_install
	# Setup cmake files for magics++, metview, etc.
	sed -i -e 's%$${_IMPORT_PREFIX}/include%/usr/include/${DEB_HOST_MULTIARCH}%g' 	$(CMAKEDIR)/eccodes-targets.cmake
	sed -i -e 's%/usr/lib/libeccodes%${LIBDIR}/libeccodes%' 			$(CMAKEDIR)/eccodes-targets-release.cmake
	sed -i -e 's%$${_IMPORT_PREFIX}%/usr%'                  			$(CMAKEDIR)/eccodes-targets-release.cmake
	sed -i -e 's%${LIBDIR}/libopenjpeg.so;%%' 					$(CMAKEDIR)/eccodes-targets-release.cmake
	sed -i -e 's%;${LIBDIR}/libpng.so%%g' 						$(CMAKEDIR)/eccodes-targets-release.cmake
	sed -i -e 's%;${LIBDIR}/libopenjpeg.so%%g' 					$(CMAKEDIR)/eccodes-config.cmake
	sed -i -e 's%$${PACKAGE_PREFIX_DIR}/lib/cmake/eccodes%${LIBDIR}/cmake/eccodes%g' $(CMAKEDIR)/eccodes-config.cmake
	sed -i -e 's%;${LIBDIR}/libpng.so%%g' 						$(CMAKEDIR)/eccodes-config.cmake
	dh_fortran_mod
	-cp debian/build-gfortran14/include/*.mod debian/libeccodes-dev/${LIBDIR}/fortran/gfortran-mod-15
	# For bit-reproducibility, sanitize the build paths
	for f in eccodes-config.cmake eccodes-import.cmake ; do \
		sed -i -e 's%${CURDIR}%/build/eccodes%g' $(CMAKEDIR)/$$f ; \
		sed -i -e 's%$${eccodes_BASE_DIR}/share%/usr/share%g' $(CMAKEDIR)/$$f ; \
		done
	# file exists on full builds only
	[ - e debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h ] && ( \
		sed -i -e 's%${CURDIR}%/build/eccodes%g'  debian/libeccodes-dev/$(INCDIR)/eccodes_ecbuild_config.h \
		) || true	

override_dh_auto_test:
	@echo Tests ignore on this build

override_dh_auto_clean:
	dh_auto_clean
	rm -rf debian/build-*

override_dh_fixperms:
	dh_fixperms
	-chmod -x debian/libeccodes-dev/usr/share/doc/libeccodes-dev/examples/F90/include.sh
	-chmod +x debian/libeccodes-data/usr/share/eccodes/definitions/installDefinitions.sh


define dh_test_fortran_TEMPLATE =
  dh_test_fortran_$(1):
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	(LD_LIBRARY_PATH=$(BUILDDIR)-$(1)/lib dh_auto_test --builddirectory=$(BUILDDIR)-$(1) || true)
endif
endef
$(eval $(call foreach_fc_execute_before,test))

override_dh_dwz:
	@echo "pass; dwz currently breaks"
