#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=-all
export CFLAGS =
export CXXFLAGS =
export LDFLAGS =

export COMPILER_FAMILY := intel
export COMPILER_FAMILY
export MPI_FAMILY      := openmpi5
PNAME           := mfem
VERSION         := 4.9
INSTALL_PATH    := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/$(MPI_FAMILY)/$(PNAME)/$(VERSION)
SRCDIR          := $(CURDIR)/$(PNAME)-$(VERSION)
PKG             := $(CURDIR)/debian/$(PNAME)-$(COMPILER_FAMILY)-$(MPI_FAMILY)-ohpc
ENV             := OHPC_MODULES="hypre metis netcdf petsc superlu_dist ptscotch" bash /usr/src/packages/BUILD/devel/build-mpi.sh

%:
	dh $@

override_dh_auto_configure:
	test -s SOURCES/$(PNAME)-$(VERSION).tar.gz || \
		wget -q -O SOURCES/$(PNAME)-$(VERSION).tar.gz \
			https://github.com/mfem/mfem/archive/v$(VERSION).tar.gz
	rm -rf $(SRCDIR)
	tar xf SOURCES/$(PNAME)-$(VERSION).tar.gz
	cd $(SRCDIR) && patch -p1 < $(CURDIR)/SOURCES/mfem-4.9-hypre-timing-redefine.patch

override_dh_auto_build:
	cd $(SRCDIR) && $(ENV) bash -c '\
		make config \
			PREFIX=$(INSTALL_PATH) \
			CXXFLAGS="$$CXXFLAGS -fPIC -std=c++17 -Wno-maybe-uninitialized" \
			MFEM_USE_MPI=YES \
			MFEM_USE_LAPACK=NO \
			HYPRE_OPT=-I$$HYPRE_INC HYPRE_LIB="-L$$HYPRE_LIB -lHYPRE" \
			METIS_OPT=-I$$METIS_INC METIS_LIB="-L$$METIS_LIB -lmetis" \
			MFEM_USE_NETCDF=YES NETCDF_OPT=-I$$NETCDF_INC NETCDF_LIB="-L$$NETCDF_LIB -lnetcdf" \
			MFEM_USE_PETSC=YES PETSC_OPT=-I$$PETSC_INC PETSC_LIB="-L$$PETSC_LIB -lpetsc" \
			MFEM_USE_SUPERLU=YES SUPERLU_OPT=-I$$SUPERLU_DIST_INC SUPERLU_LIB="-L$$SUPERLU_DIST_LIB -lsuperlu_dist" \
			STATIC=NO SHARED=YES MFEM_DEBUG=NO && \
		make -j$$(nproc)'

override_dh_auto_install:
	cd $(SRCDIR) && $(ENV) bash -c '\
		make PREFIX=$(PKG)$(INSTALL_PATH) install'
	# Fix buildroot paths in config.mk
	sed -i 's|$(PKG)||g' $(PKG)$(INSTALL_PATH)/share/mfem/config.mk
	# Install versioned shared library
	install -m 644 $(SRCDIR)/libmfem.so $(PKG)$(INSTALL_PATH)/lib/libmfem.so.$(VERSION)
	# Ensure all files are readable
	find $(PKG)$(INSTALL_PATH)/. -type f -exec chmod 644 -- {} +
	# Install modulefile
	mkdir -p $(PKG)/opt/ohpc/pub/moduledeps/$(COMPILER_FAMILY)-$(MPI_FAMILY)/$(PNAME)
	install -m 644 debian/modulefile $(PKG)/opt/ohpc/pub/moduledeps/$(COMPILER_FAMILY)-$(MPI_FAMILY)/$(PNAME)/$(VERSION)

override_dh_auto_clean:
	rm -rf $(SRCDIR)

override_dh_usrlocal:

override_dh_shlibdeps:
	dh_shlibdeps -l$(PKG)$(INSTALL_PATH)/lib -- --ignore-missing-info || true

override_dh_strip:
	dh_strip --no-automatic-dbgsym || true

override_dh_auto_test:
