#!/usr/bin/make -f

DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
DESTDIR=$(CURDIR)/debian/tmp$(LIBDIR)

FC := $(shell basename $(shell readlink -f /usr/bin/gfortran))
MPIFC := /usr/bin/mpif90
FFLAGS += -fopenmp -fno-range-check -fPIC
MPIFFLAGS += -fopenmp -fPIC
CFLAGS += -fPIC
SO := 3
MN := 0
VER := $(SO).$(MN)

%:
	dh $@
override_dh_auto_build:

override_dh_auto_install:
	mkdir -p $(DESTDIR)/shared
	mkdir -p $(DESTDIR)/ispack
	$(MAKE) DESTDIR=$(DESTDIR) \
	  FC="$(FC)" FFLAGS="$(FFLAGS)" \
	  MPIFC="$(MPIFC)" MPIFFLAGS="$(MPIFFLAGS)" \
	  CC="$(CC)" CFLAGS="$(CFLAGS)" \
	  SSE=fort LIBNAME=libispack3-fort
	( cd $(DESTDIR)/shared/; rm libispack3-fort.so )
	( cd $(DESTDIR)/; mv *.a ispack/)
	( $(MPIFC) $(LDFLAGS) -shared -Wl,-soname=libispack3-fort.so.$(SO) \
	    -o $(DESTDIR)/ispack/libispack3-fort.so.$(VER) $(CURDIR)/*/src/*.o )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-fort.so.$(VER) libispack3-fort.so )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-fort.so.$(VER) libispack3-fort.so.$(SO) )
	$(MAKE) clean
ifeq ($(DEB_HOST_MULTIARCH), x86_64-linux-gnu)
	$(MAKE) DESTDIR=$(DESTDIR) \
	  FC="$(FC)" FFLAGS="$(FFLAGS)" \
	  MPIFC="$(MPIFC)" MPIFFLAGS="$(MPIFFLAGS)" \
	  CC="$(CC)" CFLAGS="$(CFLAGS)" \
	  SSE=avx LIBNAME=libispack3-avx
	( cd $(DESTDIR)/shared/; rm libispack3-avx.so )
	( cd $(DESTDIR)/; mv *.a ispack/)
	( $(MPIFC) $(LDFLAGS) -shared -Wl,-soname=libispack3-avx.so.$(SO) \
	    -o $(DESTDIR)/ispack/libispack3-avx.so.$(VER) $(CURDIR)/*/src/*.o )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-avx.so.$(VER) libispack3-avx.so )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-avx.so.$(VER) libispack3-avx.so.$(SO) )
	$(MAKE) clean
	$(MAKE) DESTDIR=$(DESTDIR) \
	  FC="$(FC)" FFLAGS="$(FFLAGS)" \
	  MPIFC="$(MPIFC)" MPIFFLAGS="$(MPIFFLAGS)" \
	  CC="$(CC)" CFLAGS="$(CFLAGS)" \
	  SSE=fma LIBNAME=libispack3-fma
	( cd $(DESTDIR)/shared/; rm libispack3-fma.so )
	( cd $(DESTDIR)/; mv *.a ispack/)
	( $(MPIFC) $(LDFLAGS) -shared -Wl,-soname=libispack3-fma.so.$(SO) \
	    -o $(DESTDIR)/ispack/libispack3-fma.so.$(VER) $(CURDIR)/*/src/*.o )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-fma.so.$(VER) libispack3-fma.so )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-fma.so.$(VER) libispack3-fma.so.$(SO) )
	$(MAKE) clean
	$(MAKE) DESTDIR=$(DESTDIR) \
	  FC="$(FC)" FFLAGS="$(FFLAGS)" \
	  MPIFC="$(MPIFC)" MPIFFLAGS="$(MPIFFLAGS)" \
	  CC="$(CC)" CFLAGS="$(CFLAGS)" \
	  SSE=avx512 LIBNAME=libispack3-avx512
	( cd $(DESTDIR)/shared/; rm libispack3-avx512.so )
	( cd $(DESTDIR)/; mv *.a ispack/)
	( $(MPIFC) $(LDFLAGS) -shared -Wl,-soname=libispack3-avx512.so.$(SO) \
	    -o $(DESTDIR)/ispack/libispack3-avx512.so.$(VER) $(CURDIR)/*/src/*.o )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-avx512.so.$(VER) libispack3-avx512.so )
	( cd $(DESTDIR)/ispack/; ln -s libispack3-avx512.so.$(VER) libispack3-avx512.so.$(SO) )
endif

override_dh_installdeb:
	for pkg in libispack3 libispack3-dev; do \
	  for script in postinst prerm; do \
	    if [ -f debian/$${pkg}.$${script}.in ]; then \
	    sed 's|@DEB_HOST_MULTIARCH@|$(DEB_HOST_MULTIARCH)|g' \
	      debian/$${pkg}.$${script}.in > debian/$${pkg}.$${script}; \
	    fi \
	  done \
	done
	dh_installdeb

override_dh_installchangelogs:
	dh_installchangelogs $(CURDIR)/CHANGELOG

override_dh_auto_clean:
	dh_auto_clean
	rm -fr $(DESTDIR)
	rm -f $(CURDIR)/debian/*.postinst
	rm -f $(CURDIR)/debian/*.prerm
