#!/usr/bin/make -f

#export DH_VERBOSE=1

include /usr/share/dpkg/pkg-info.mk


export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

export DEB_BUILD_MAINT_OPTIONS = hardening=+all

CHANGELOG_DATE ?= $(shell LC_ALL=C date -u -d @$(SOURCE_DATE_EPOCH) +"%d %B %Y")

multiarch = $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)
arch = $(shell dpkg-architecture -qDEB_BUILD_ARCH)

%:
	dh $@

override_dh_auto_configure::
	dh_auto_configure -- -DRPATH=1 -DCUSTOM_RPATH=/usr/lib/srslte -DENABLE_SSE=0 -DENABLE_AVX=0 -DENABLE_AVX2=0 -DENABLE_FMA=0 -DENABLE_AVX512=0 -DENABLE_NEON=0 -DDISABLE_SIMD=1
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  mkdir -p obj_avx && cd obj_avx && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(multiarch) -DRPATH=1 -DCUSTOM_RPATH=/usr/lib/srslte/avx -DENABLE_AVX512=0 -DENABLE_FMA=0 -DENABLE_AVX2=0 -DDISABLE_SIMD=1 .. ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  mkdir -p obj_avx2 && cd obj_avx2 && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(multiarch) -DRPATH=1 -DCUSTOM_RPATH=/usr/lib/srslte/avx2 -DENABLE_AVX512=0 -DENABLE_FMA=0 -DDISABLE_SIMD=1 .. ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  mkdir -p obj_sse4 && cd obj_sse4 && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(multiarch) -DRPATH=1 -DCUSTOM_RPATH=/usr/lib/srslte/sse4 -DENABLE_AVX512=0 -DENABLE_FMA=0 -DENABLE_AVX2=0 -DENABLE_AVX=0 -DDISABLE_SIMD=1 .. ; \
	fi
	if [ "${arch}" = "arm64" ] || \
	   [ "${arch}" = "armel" ] || \
	   [ "${arch}" = "armhf" ] ; then \
	  mkdir -p obj_avx && cd obj_avx && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run "-GUnix Makefiles" -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/$(multiarch) -DRPATH=1 -DCUSTOM_RPATH=/usr/lib/srslte/neon -DENABLE_AVX512=0 -DENABLE_FMA=0 -DENABLE_AVX2=0 -DDISABLE_SIMD=1 .. ; \
	fi

override_dh_installman:
	cd debian/man ; CHANGELOG_DATE="$(CHANGELOG_DATE)" ./genmanpages.sh
	dh_installman

override_dh_auto_clean:
	dh_auto_clean
	$(RM) debian/man/*.1
	$(RM) -r obj_avx
	$(RM) -r debian/tmp_avx
	$(RM) -r debian/tmp_avx2
	$(RM) -r debian/tmp_sse4

override_dh_auto_build:
	dh_auto_build
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] || \
	   [ "${arch}" = "arm64" ] || \
	   [ "${arch}" = "armel" ] || \
	   [ "${arch}" = "armhf" ] ; then \
	  cd obj_avx && make ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  cd obj_avx2 && make ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  cd obj_sse4 && make ; \
	fi

override_dh_auto_install:
	dh_auto_install
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] || \
	   [ "${arch}" = "arm64" ] || \
	   [ "${arch}" = "armel" ] || \
	   [ "${arch}" = "armhf" ] ; then \
	  cd obj_avx && mkdir -p ../debian/tmp_avx && make DESTDIR=../debian/tmp_avx install ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  cd obj_avx2 && mkdir -p ../debian/tmp_avx2 && make DESTDIR=../debian/tmp_avx2 install ; \
	fi
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  cd obj_sse4 && mkdir -p ../debian/tmp_sse4 && make DESTDIR=../debian/tmp_sse4 install ; \
	fi

override_dh_install:
	dh_install
	if [ "${arch}" = "amd64" ] || \
	   [ "${arch}" = "i386" ] ; then \
	  mkdir -p debian/srslte/usr/lib/srslte/avx ; \
	  mkdir -p debian/srslte/usr/lib/srslte/avx2 ; \
	  mkdir -p debian/srslte/usr/lib/srslte/sse4 ; \
	  mkdir -p debian/srslte/usr/lib/srslte/bin ; \
	  cp debian/tmp_avx/usr/lib/srslte/libsrslte_rf.so debian/srslte/usr/lib/srslte/avx/ ; \
	  cp debian/tmp_avx/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-avx ; \
	  cp debian/tmp_avx/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-avx ; \
	  cp debian/tmp_avx2/usr/lib/srslte/libsrslte_rf.so debian/srslte/usr/lib/srslte/avx2/ ; \
	  cp debian/tmp_avx2/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-avx2 ; \
	  cp debian/tmp_avx2/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-avx2 ; \
	  cp debian/tmp_sse4/usr/lib/srslte/libsrslte_rf.so debian/srslte/usr/lib/srslte/sse4/ ; \
	  cp debian/tmp_sse4/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-sse4 ; \
	  cp debian/tmp_sse4/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-sse4 ; \
	  mv debian/srslte/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-generic ; \
	  mv debian/srslte/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-generic ; \
	  cp debian/script/srsenb debian/srslte/usr/bin/srsenb ; \
	  cp debian/script/srsue debian/srslte/usr/bin/srsue ; \
	fi
	if [ "${arch}" = "arm64" ] || \
	   [ "${arch}" = "armel" ] || \
	   [ "${arch}" = "armhf" ] ; then \
	  mkdir -p debian/srslte/usr/lib/srslte/neon ; \
	  mkdir -p debian/srslte/usr/lib/srslte/bin ; \
	  cp debian/tmp_avx/usr/lib/srslte/libsrslte_rf.so debian/srslte/usr/lib/srslte/neon/ ; \
	  cp debian/tmp_avx/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-neon ; \
	  cp debian/tmp_avx/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-neon ; \
	  mv debian/srslte/usr/bin/srsue debian/srslte/usr/lib/srslte/bin/srsue-generic ; \
	  mv debian/srslte/usr/bin/srsenb debian/srslte/usr/lib/srslte/bin/srsenb-generic ; \
	  cp debian/script/srsenb debian/srslte/usr/bin/srsenb ; \
	  cp debian/script/srsue debian/srslte/usr/bin/srsue ; \
	fi


# Skipping tests for now since quite a few of the 456 tests are unreliable:
override_dh_auto_test:
	# skip executing tests

override_dh_installsystemd:
	dh_installsystemd --no-enable --no-start
