#!/usr/bin/make -f

# export DH_VERBOSE=1

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

include /usr/share/mpi-default-dev/debian_defaults
MPI:=$(ARCH_DEFAULT_MPI_IMPL)

DO_FLANG:=$(if $(wildcard /usr/bin/flang),true, false)

# Version numbers
EX_SO_MAJOR=5
EX_SO_MINOR=14
EX_SO_PATCH=0
EX_SONAME:=libexoIIv2c.so.$(EX_SO_MAJOR)
EX_SONAME_FULL=$(EX_SONAME).$(EX_SO_MINOR).$(EX_SO_PATCH)
NE_SO_MAJOR=3
NE_SO_MINOR=09
NE_SO_PATCH=0
NE_SONAME=libnemesis.so.$(NE_SO_MAJOR)
NE_SONAME_FULL=$(NE_SONAME).$(NE_SO_MINOR).$(NE_SO_PATCH)

TOPDIR=$(shell pwd)
PKGDIR=debian/libexodusii-dev
PREFIX=$(TOPDIR)/debian/tmp/usr
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
NETCDF_DIR=$(LIBDIR)/netcdf/mpi

CMAKE_FLAGS:= \
			-DHDF5_LIBRARY=$(LIBDIR)/hdf5/openmpi \
			-DHDF5_C_LIBRARY_hdf5=$(LIBDIR)/hdf5/$(MPI)/libhdf5.so \
			-DNETCDF_LIBRARY=$(NETCDF_DIR)/libnetcdf.so \
			-DNETCDF_INCLUDE_DIR=$(NETCDF_DIR)/include 

# Magic debhelper rule
%:
	dh $@ --buildsystem cmake --sourcedirectory=exodus

# Workaround to cmake ignoring CPPFLAGS; needed for hardening
CFLAGS=$(shell  dpkg-buildflags --get CFLAGS) $(shell  dpkg-buildflags --get CPPFLAGS)
LDFLAGS=$(shell  dpkg-buildflags --get LDFLAGS) 

override_dh_auto_configure:
	dh_auto_configure -- $(CMAKE_FLAGS)

override_dh_auto_clean:
	dh_auto_clean
	rm -rf *build exodusii

override_dh_auto_build:
	dh_auto_build
	# Shared build.
	mkdir -p exodus-shared-build
	( cd exodus-shared-build && \
		cmake ../exodus -DCMAKE_INSTALL_PREFIX=$(PREFIX)  \
			$(CMAKE_FLAGS) \
			-DBUILD_SHARED_LIBS=TRUE -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,relro -Wl,--as-needed"  && \
		$(MAKE))
	mkdir -p exodus-static-build
	( cd exodus-static-build && \
		cmake ../exodus -DCMAKE_INSTALL_PREFIX=$(PREFIX)  \
			$(CMAKE_FLAGS) \
			-DBUILD_SHARED_LIBS=FALSE && $(MAKE) )
	# Then build nemesis
	ln -sf exodus exodusii
	mkdir -p nemesis-static-build
	(cd nemesis-static-build && \
		cmake ../nemesis $(CMAKE_FLAGS) \
			-DEXODUS_LIBRARY=$(TOPDIR)/exodus-shared-build/cbind/$(EX_SONAME_FULL)  && \
		$(MAKE))
	mkdir -p nemesis-shared-build
	( cd nemesis-shared-build && \
		cmake ../nemesis $(CMAKE_FLAGS) \
		-DEXODUS_LIBRARY=$(TOPDIR)/exodus-shared-build/cbind/$(EX_SONAME_FULL) \
			 -DBUILD_SHARED_LIBS=TRUE -DCMAKE_SHARED_LINKER_FLAGS="-Wl,-z,relro -Wl,--as-needed" && \
		$(MAKE) )	

override_dh_auto_install:
	$(MAKE) -C exodus-shared-build install
	dh_auto_install
	dh_install -p libexodusii-dev nemesis-static-build/libnemesis.a $(LIBDIR)
	dh_install -p libexodusii-dev usr/lib/libexoIIv2c.a $(LIBDIR)
	dh_install -p libexodusii-dev usr/lib/libexoIIv2for.a $(LIBDIR)
	dh_install -p libexodusii5  exodus-shared-build/cbind/$(EX_SONAME_FULL) $(LIBDIR)
	dh_install -p libnemesis3  nemesis-shared-build/$(NE_SONAME_FULL) $(LIBDIR)
	chrpath -d debian/libnemesis3/$(LIBDIR)/$(NE_SONAME_FULL)
	chrpath -d debian/libexodusii5/$(LIBDIR)/$(EX_SONAME_FULL)
	dh_link -p libexodusii5 $(LIBDIR)/$(EX_SONAME_FULL) $(LIBDIR)/$(EX_SONAME).$(EX_SO_MINOR)
	dh_link -p libexodusii5 $(LIBDIR)/$(EX_SONAME_FULL) $(LIBDIR)/$(EX_SONAME)
	dh_link -p libnemesis3  $(LIBDIR)/$(NE_SONAME_FULL) $(LIBDIR)/$(NE_SONAME).$(NE_SO_MINOR)
	dh_link -p libnemesis3  $(LIBDIR)/$(NE_SONAME_FULL) $(LIBDIR)/$(NE_SONAME)
	dh_link -p libexodusii-dev $(LIBDIR)/$(EX_SONAME_FULL) $(LIBDIR)/libexoIIv2c.so
	dh_link -p libexodusii-dev $(LIBDIR)/$(NE_SONAME_FULL) $(LIBDIR)/libnemesis.so
