#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
#export DH_VERBOSE = 1

LC_ALL := C.UTF-8
export LC_ALL

# multiarch
include /usr/share/dpkg/architecture.mk

build_multiarch=build/$(DEB_HOST_MULTIARCH)
install_lib_multiarch=debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
install_libexec_multiarch=debian/tmp/usr/libexec/$(DEB_HOST_MULTIARCH)

# parallelism
DEB_BUILD_OPTIONS ?= parallel=8

# hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# ggml specific
ifeq ($(DEB_HOST_ARCH),aarch64)
	GGML_CPU_AARCH64 ?= ON
else
	GGML_CPU_AARCH64 ?= OFF
endif

ifeq ($(DEB_HOST_ARCH),amd64)
	GGML_CPU_ALL_VARIANTS ?= ON
else
	GGML_CPU_ALL_VARIANTS ?= OFF
endif

%:
# Use build/ for output, so that it is in the .gitignore of upstream
	dh $@ --buildsystem=cmake --builddirectory=$(build_multiarch)

override_dh_auto_configure:
	dh_auto_configure -- \
	-DCMAKE_LIBRARY_ARCHITECTURE="$(DEB_HOST_MULTIARCH)" \
	-DCMAKE_SKIP_BUILD_RPATH=ON \
	-DCMAKE_PROJECT_ggml_INCLUDE=debian/cmake/debian-ggml.cmake \
	-DCMAKE_BUILD_TYPE=Release \
	-DBUILD_SHARED_LIBS=ON \
	-DGGML_CCACHE=OFF \
	-DGGML_STANDALONE=ON \
	-DGGML_BUILD_TESTS=OFF \
	-DGGML_BUILD_EXAMPLES=OFF \
	-DGGML_CPU_AARCH64=$(GGML_CPU_AARCH64) \
	-DGGML_BACKEND_DL=ON \
	-DGGML_CPU_ALL_VARIANTS=$(GGML_CPU_ALL_VARIANTS) \
	-DGGML_NATIVE=OFF \
	\
	-DGGML_RPC=ON \
	-DGGML_BLAS=ON \
	-DGGML_BLAS_VENDOR=OpenBLAS \
	-DGGML_VULKAN=ON \
	-DGGML_CUDA=OFF \

override_dh_auto_install:
	dh_auto_install
	
	# Since no CMake install configuration is available for the libggml-* backend target:
	# - we set CMAKE_SKIP_BUILD_RPATH=ON during build
	# - we install the backends explicitly in libexec so that executables can be installed with them
	mkdir -p $(install_libexec_multiarch)/ggml
	for file in $(build_multiarch)/bin/libggml-*.so; do \
    	#patchelf --set-soname $$(basename "$$file") $$file; \
		install -t $(install_libexec_multiarch)/ggml $$file; \
	done

override_dh_installexamples:
	dh_installexamples --exclude=.gitignore
