#!/usr/bin/make -f

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

export DH_VERBOSE=1

export LLVM_SYMBOLIZER=/usr/bin/llvm-symbolizer-17

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

TMPDIR:=$(CURDIR)/debian/tmp
LIBDIR:=/usr/lib/$(DEB_HOST_MULTIARCH)
# Test suite requires 4 processors. Fake it
export OMPI_MCA_rmaps_base_oversubscribe=1

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

NO_TEST_ARCH:= mips64el 
DO_TEST:= $(if $(filter $(DEB_TARGET_ARCH), $(NO_TEST_ARCH)), false, true)

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

override_dh_auto_clean:
	dh_auto_clean
	rm -rf ${BUILDDIR}-*

define dh_configure_fortran_TEMPLATE =
  FCFLAGS_$(1) = $(if $(filter $(1), gfortran),  $(FCFLAGS), $(FCFLAGS_FOR_BUILD) )
  dh_configure_fortran_$(1):
	@echo DEBUG CMAKE_Fortran_FLAGS="$$(FCFLAGS_$(1))"
	dh_auto_configure --builddirectory=${BUILDDIR}-$(1)  -- \
			-DCMAKE_Fortran_COMPILER=$(call get_fc_exe,$(1)) \
			-DCMAKE_Fortran_FLAGS="$$(FCFLAGS_$(1))"
	@echo DEBUGF LEAVING dh_configure_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_before,configure))


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))


override_dh_auto_test:
	$(DO_TEST) && (  for f in $(FC_DEFAULT) $(FC_OPTIONAL) ; do \
		dh_auto_test --builddirectory=debian/build-$$f ; \
		done )   || echo "Ignoring test failures"

define dh_install_fortran_TEMPLATE =
  dh_install_fortran_$(1):
	@echo DEBUGF  CALLING dh_install_fortran_$(1)
	mkdir -p $(TMPDIR)/$(LIBDIR)
	cp $(BUILDDIR)-$(1)/lib/libfckit.so.0d $(TMPDIR)/$(LIBDIR)/libfckit-$(1).so.0d
	patchelf  --set-soname libfckit-gfortran.so.0d $(TMPDIR)/$(LIBDIR)/libfckit-$(1).so.0d
	patchelf  --remove-rpath $(TMPDIR)/$(LIBDIR)/libfckit-$(1).so.0d
	dh_install -p libfckit0d $(LIBDIR)/libfckit-$(1).so.0d
	dh_link -p libfckit-dev $(LIBDIR)/libfckit-$(1).so.0d $(LIBDIR)/fortran/$(1)/libfckit.so
	dh_link -p libfckit-dev $(LIBDIR)/libfckit-$(1).so.0d $(LIBDIR)/libfckit-$(1).so
	@echo DEBUGF  LEAVING dh_install_fortran_$(1)
endef
$(eval $(call foreach_fc_execute_after,install))
	

override_dh_auto_install:
	dh_auto_install --builddirectory=debian/build-$(FC_DEFAULT)
	# Fixup cmake files. Hack. can we do better with patches to upstream ?
	sed -i -e 's%$${fckit_INSTALL_PREFIX}/libexec%/usr/bin%g'		      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%${CURDIR}%/build/fckit/%g'     			      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%/usr/bin/python %/usr/bin/python3 %g'	       	      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%fckit-fypp.py%fckit-fypp%' 			 	      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%fckit-eval.sh%fckit-eval%'			  	      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%fctest-generate-runner.py%fctest-generate-runner%'  	      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	sed -i -e 's%/usr/lib/cmake%${LIBDIR}/cmake%g'  		 	      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-targets.cmake
	sed -i -e 's%$${_IMPORT_PREFIX}/lib/libfckit%${LIBDIR}/libfckit%g'	    $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-targets.cmake
	sed -i -e 's%$${_IMPORT_PREFIX}/include%/usr/include/${DEB_HOST_MULTIARCH}%g' $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-targets.cmake
	sed -i -e 's%$${_IMPORT_PREFIX}/module%${FMODDIR}%g' 			      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-targets.cmake
	sed -i -e 's%python3\.[0-9]*%python3%g'  				      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-import.cmake
	# TODO: This will need work when flang is supported
	sed -i -e 's%libfckit.so.0d%libfckit-${FC_DEFAULT}.so.0d%g'			      $(TMPDIR)/$(LIBDIR)/cmake/fckit/fckit-targets-release.cmake
	# rename those with script extensions
	mv $(TMPDIR)/usr/libexec/fckit-eval.sh $(TMPDIR)/usr/libexec/fckit-eval
	mv $(TMPDIR)/usr/libexec/fckit-fypp.py $(TMPDIR)/usr/libexec/fckit-fypp
	mv $(TMPDIR)/usr/libexec/fctest-generate-runner.py $(TMPDIR)/usr/libexec/fctest-generate-runner
	chmod -x $(TMPDIR)/$(LIBDIR)/cmake/fckit/*

override_dh_dwz:
	@echo "Override dwz as it breaks on shlibs edited by patchelf" 
