#!/usr/bin/make -f

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

COMPILER_FAMILY := intel
export COMPILER_FAMILY
MPI_FAMILY      := openmpi5
PNAME           := scalapack
VERSION         := 2.2.3
INSTALL_PATH    := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/$(MPI_FAMILY)/$(PNAME)/$(VERSION)
OPENBLAS_LIBDIR := /opt/ohpc/pub/libs/$(COMPILER_FAMILY)/openblas/0.3.32/lib
SRCDIR          := $(CURDIR)/$(PNAME)-$(VERSION)
PKG             := $(CURDIR)/debian/$(PNAME)-$(COMPILER_FAMILY)-$(MPI_FAMILY)-ohpc
ENV             := OHPC_MODULES="openblas" 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/Reference-ScaLAPACK/scalapack/archive/refs/tags/v$(VERSION).tar.gz
	rm -rf $(SRCDIR)
	tar xf SOURCES/v$(VERSION).tar.gz
	mkdir -p $(SRCDIR)/build
	cd $(SRCDIR)/build && $(ENV) cmake .. \
		-DCMAKE_INSTALL_PREFIX=$(INSTALL_PATH) \
		-DCMAKE_INSTALL_LIBDIR=lib \
		-DCMAKE_C_COMPILER=mpicc \
		-DCMAKE_Fortran_COMPILER=mpif90 \
		-DCMAKE_C_FLAGS="$${CFLAGS} -Wno-implicit-function-declaration -Wno-implicit-int -Wno-maybe-uninitialized -Wno-uninitialized -Wno-unused-variable -Wno-strict-aliasing -Wno-unused-but-set-variable -std=gnu89 -fPIC" \
		-DCMAKE_Fortran_FLAGS="$${FCFLAGS} -Wno-maybe-uninitialized -Wno-unused-label -Wno-unused-dummy-argument -Wno-unused-variable -Wno-tabs -fallow-argument-mismatch -fPIC" \
		-DBUILD_SHARED_LIBS=ON \
		-DBUILD_STATIC_LIBS=OFF \
		-DSCALAPACK_BUILD_TESTS=OFF \
		-DLAPACK_LIBRARIES=$(OPENBLAS_LIBDIR)/libopenblas.so \
		-DBLAS_LIBRARIES=$(OPENBLAS_LIBDIR)/libopenblas.so

override_dh_auto_build:
	cd $(SRCDIR)/build && $(ENV) $(MAKE) -j$$(nproc)

override_dh_auto_install:
	cd $(SRCDIR)/build && $(ENV) $(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)/lib -- --ignore-missing-info || true

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

override_dh_auto_test:
