#!/usr/bin/make -f

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

COMPILER_FAMILY := gnu15
MPI_FAMILY      := mvapich2
export MPI_FAMILY
PNAME           := fftw
VERSION         := 3.3.10
INSTALL_PATH    := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/$(MPI_FAMILY)/$(PNAME)/$(VERSION)
DEB_HOST_ARCH   ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
SRCDIR          := $(CURDIR)/$(PNAME)-$(VERSION)
PKG             := $(CURDIR)/debian/$(PNAME)-$(COMPILER_FAMILY)-$(MPI_FAMILY)-ohpc
ENV             := bash /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 \
			http://www.fftw.org/fftw-$(VERSION).tar.gz
	rm -rf $(SRCDIR)
	tar xf SOURCES/$(PNAME)-$(VERSION).tar.gz

override_dh_auto_build:
	cd $(SRCDIR) && for prec in single double long-double; do \
		mkdir -p build_$${prec} && cd build_$${prec} && \
		PREC_FLAGS="" && \
		ARCH_FLAGS="" && \
		case "$(DEB_HOST_ARCH)" in \
			amd64) ARCH_FLAGS="--enable-sse2 --enable-avx --enable-avx2" ;; \
			arm64) ARCH_FLAGS="--enable-neon" ;; \
			ppc64el) ARCH_FLAGS="--enable-vsx" ;; \
		esac && \
		case $${prec} in \
			single) PREC_FLAGS="--enable-float" ;; \
			double) PREC_FLAGS="" ;; \
			long-double) PREC_FLAGS="--enable-long-double"; ARCH_FLAGS="" ;; \
		esac && \
		$(ENV) ../configure CC=mpicc F77=mpif90 --prefix=$(INSTALL_PATH) --enable-shared --disable-dependency-tracking \
			--enable-threads --enable-openmp --enable-mpi --enable-static=no \
			$${ARCH_FLAGS} $${PREC_FLAGS} && \
		$(ENV) make -j$$(nproc) && \
		cd .. ; \
	done

override_dh_auto_install:
	cd $(SRCDIR) && for prec in single double long-double; do \
		cd build_$${prec} && \
		$(ENV) make DESTDIR=$(PKG) install && \
		cd .. ; \
	done
	# Remove libtool archives
	find $(PKG) -name '*.la' -delete
	# Fix buildroot references
	find $(PKG) -name '*.pc' | xargs -r sed -i 's|$(PKG)||g'
	# 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:
