#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
export DH_VERBOSE = 1

include /usr/share/dpkg/architecture.mk

# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed


# Neon always available on arm64, not armcomputelib on non-arm arches
ifeq ($(DEB_HOST_ARCH),arm64)
OPTS+=-DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMCOMPUTE_LIBRARIES='arm_compute'
endif
ifeq ($(DEB_HOST_ARCH),armhf)
OPTS+=-DARMCOMPUTECL=1 -DARMCOMPUTE_LIBRARIES='arm_compute'
endif
ifeq ($(DEB_HOST_ARCH),amd64)
OPTS+=-DARMCOMPUTECL=1 -DARMCOMPUTE_LIBRARIES='arm_compute'
endif

PYTHON_INCLUDE_DIR=$(shell python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())")
PYTHON_LIBRARY=$(shell python3 -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
export _PYTHON_SYSCONFIGDATA_NAME=_sysconfigdata__${DEB_HOST_MULTIARCH}
export _PYTHON_HOST_PLATFORM=${DEB_HOST_ARCH_OS}-$(if $(filter amd64,${DEB_HOST_ARCH}),x86_64,${DEB_HOST_ARCH})

%:
	dh $@ --with python3 --buildsystem=cmake --builddirectory=build-area

override_dh_auto_configure:
	flatc -c --gen-object-api --reflect-types --reflect-names -o $(CURDIR)/third-party/tensorflow/lite/schema/ $(CURDIR)/third-party/tensorflow/lite/schema/schema.fbs
	dh_auto_configure -- $(OPTS) -DBUILD_TESTS=1 \
                                     -DSHARED_BOOST=ON \
                                     -DARMNNREF=0 \
                                     -DBUILD_ARMNN_SERIALIZER=1 \
                                     -DBUILD_TF_LITE_PARSER=1 \
                                     -DTENSORFLOW_ROOT=$(CURDIR)/third-party/ \
                                     -DTF_LITE_SCHEMA_INCLUDE_PATH=$(CURDIR)/third-party/tensorflow/lite/schema/ \
                                     -DTF_LITE_GENERATED_PATH=$(CURDIR)/third-party/tensorflow \
                                     -DPYTHON_INCLUDE_DIR=$(PYTHON_INCLUDE_DIR)  \
                                     -DPYTHON_LIBRARY=$(PYTHON_LIBRARY) \
                                     -DBUILD_PYTHON_SRC=ON \
                                     -DSWIG_EXECUTABLE=/usr/bin/swig \
                                     -DBUILD_GATORD_MOCK=0 \
                                     -DDYNAMIC_BACKEND_PATHS='/usr/lib/$(DEB_HOST_MULTIARCH)/armnn33/'

execute_after_dh_install:
	#Something is putting RUNPATH in the SWIG libraries. Kill it.
	chrpath -d debian/python3-pyarmnn/usr/lib/python3/dist-packages/pyarmnn/_generated/*.so

override_dh_auto_test:
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
	# CpuRef backend built on all archs
	cp  ./build-area/src/backends/reference/Arm_CpuRef_backend.so .
	# CpuAcc and GpuAcc backends only built on arm64 or armhf
	cp  ./build-area/src/backends/cl/Arm_GpuAcc_backend.so .   || true
	cp  ./build-area/src/backends/neon/Arm_CpuAcc_backend.so . || true
	./build-area/UnitTests --test-suite-exclude=Compute_ArmComputeCl,MemCopyClNeon,CreateWorkloadCl,ClEndToEnd,ClLayerSupport,ClOptimizedNetwork,ClJsonPrinter,ClRuntime,Fp16Support,OpenClTimerBatchNorm,ClMemCopy,SendTimelinePacketTests,TimelinePacketTests,TimelineUtilityMethodsTests,Optimizer,Optimizer_ReduceMultipleAxesCpu,Optimizer_ReduceMultipleAxesGpu,Optimizer_FoldPadIntoQuantizedAvgPoolGpuAcc --test-case-exclude=OptimizeValidateWorkloadsDuplicateComputeDeviceWithFallback,DumpOutgoingValidFileEndToEnd
endif