#!/usr/bin/make -f

export DH_VERBOSE=1

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

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:=$(CURDIR)/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

DO_TEST:=true

# 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  \

%:
	FC=$(FC_DEFAULT) dh $@ --buildsystem=ecbuild --builddirectory=${BUILDDIR_DEFAULT} \
		--no-parallel --with fortran_mod

override_dh_auto_configure:
	dh_auto_configure -- \
	    ${BUILD_FLAGS} 
	( cd ${BUILDDIR_DEFAULT}/data ; tar axpf $(CURDIR)/../eccodes_$(DEB_VERSION_UPSTREAM).orig-data.tar.xz )

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
	# 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_clean:
	dh_auto_clean
	# Things that upstream leaves behind
	rm -f configure.ac configure configure.in
	rm -f tests/bitmap.rules tests/out.grib1 tests/out.grib2 tests/out.gribidx \
	      tests/rules tests/simple_ieee_test.grib1.txt tests/statistics.filter \
	      tests/statistics.out tests/x.grib \
	      data/change_scanning_rotated_ll.filter examples/F90/index.idx

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

override_dh_auto_test:
	$(DO_TEST) && ( LD_LIBRARY_PATH=${BUILDDIR_DEFAULT}/lib dh_auto_test  ) || true
	# for f in $(FC_OPTIONAL) ; do \
	#  ( $(DO_TEST) && ( LD_LIBRARY_PATH=${BUILDDIR}-$$f/lib dh_auto_test  ) || true ) ; done
