#!/usr/bin/make -f

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

COMPILER_FAMILY := gnu15
MPI_FAMILY      := mpich
export MPI_FAMILY
PNAME           := adios2
VERSION         := 2.11.0
INSTALL_PATH    := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/$(MPI_FAMILY)/$(PNAME)/$(VERSION)
SRCDIR          := $(CURDIR)/ADIOS2-$(VERSION)
PKG             := $(CURDIR)/debian/$(PNAME)-$(COMPILER_FAMILY)-$(MPI_FAMILY)-ohpc
ENV             := OHPC_MODULES="phdf5" bash /build/devel/build-mpi.sh

%:
	dh $@

override_dh_auto_configure:
	test -s SOURCES/v$(VERSION).tar.gz || \
		wget -q -O SOURCES/v$(VERSION).tar.gz \
			https://github.com/ornladios/ADIOS2/archive/refs/tags/v$(VERSION).tar.gz
	rm -rf $(SRCDIR)
	tar xf SOURCES/v$(VERSION).tar.gz

override_dh_auto_build:
	mkdir -p $(SRCDIR)/adios2-build
	cd $(SRCDIR)/adios2-build && $(ENV) bash -c '\
		export CC=mpicc && \
		export CXX=mpicxx && \
		export F77=mpif77 && \
		export FC=mpif90 && \
		export MPICC=mpicc && \
		export MPIFC=mpif90 && \
		export MPICXX=mpicxx && \
		export CFLAGS="$${CFLAGS} -Wno-implicit-int -Wno-implicit-function-declaration -Wno-incompatible-pointer-types" && \
		cmake \
			-DCMAKE_INSTALL_PREFIX=$(INSTALL_PATH) \
			-DCMAKE_BUILD_TYPE=Release \
			-DCMAKE_C_COMPILER=$${MPICC} \
			-DCMAKE_CXX_COMPILER=$${MPICXX} \
			-DBUILD_SHARED_LIBS=ON \
			-DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \
			-DADIOS2_USE_MPI=ON \
			-DADIOS2_USE_HDF5=ON -DHDF5_ROOT="$${HDF5_DIR}" \
			-DADIOS2_USE_ZeroMQ=OFF \
			-DADIOS2_USE_Fortran=ON \
			-DADIOS2_USE_Python=OFF \
			-DADIOS2_USE_SST=ON \
			-DADIOS2_USE_BZip2=ON \
			-DADIOS2_USE_EXTERNAL_YAMLCPP=ON \
			-DBUILD_TESTING=OFF \
			-DADIOS2_BUILD_EXAMPLES=OFF \
			-DPYTHON_EXECUTABLE=/usr/bin/python3 \
			-DPython_FIND_STRATEGY=LOCATION \
			.. && \
		make -j$$(nproc)'

override_dh_auto_install:
	cd $(SRCDIR)/adios2-build && $(ENV) bash -c '\
		make DESTDIR=$(PKG) install'
	# 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)/lib64:$(PKG)$(INSTALL_PATH)/lib -- --ignore-missing-info || true

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

override_dh_auto_test:
