#!/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
# To get cmake to pick up hardening flags when invoked directly:
CFLAGS+=$(CPPFLAGS)
CXXFLAGS+=$(CPPFLAGS)
#


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-indep:

override_dh_auto_configure-arch:
	dh_auto_configure -a -- -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 .. ; cd .. ; \
	  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 -DDISABLE_SIMD=1 .. ; cd .. ; \
	  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 .. ; cd .. ; \
	fi
	# Build of NEON for ARM has been disabled since it FTBFS with the current version:
	#if [ "${arch}" = "armel" ] || \
	#   [ "${arch}" = "armhf" ] ; then \
	#  mkdir -p obj_neon && cd obj_neon && 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-indep:

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

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


override_dh_auto_build-indep:

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


override_dh_auto_install-indep:

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

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


override_dh_auto_test-indep:

# Tests pass when building without SIMD extensions, but not with:
# - AVX extensions (without AVX2)
# - SSE4.2 extensions (without AVX2 and AVX)
override_dh_auto_test-arch:
	dh_auto_test -a
	#if [ "${arch}" = "amd64" ] || \
	#   [ "${arch}" = "i386" ] ; then \
	#  cd obj_avx  && make test ; cd .. ; \
	#  cd obj_avx2 && make test ; cd .. ; \
	#  cd obj_sse4 && make test ; cd .. ; \
	#fi

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