#!/usr/bin/make -f
#export DH_VERBOSE = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all

# Derivative
distribution := $(shell lsb_release --id --short)
distrel := $(shell lsb_release --codename --short)
derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \
               elif dpkg-vendor --derives-from Debian; then echo Debian; \
               else echo Unknown; fi)
ifeq ($(distrel),n/a)
  distrel := sid
endif

# For multiarch
include /usr/share/dpkg/architecture.mk
# For DEB_VERSION_UPSTREAM
include /usr/share/dpkg/pkg-info.mk
GGML_BUILD_NUMBER=$(subst 0.0.,,$(DEB_VERSION_UPSTREAM))

FLAGS_ARGEO=-O3 -g -DNDEBUG

# GGML_NATIVE:ON corresponds to -march=native
CMAKE_OPTS  = -DGGML_NATIVE=OFF \
              -DCMAKE_BUILD_TYPE=RelWithDebInfo \
              -DCMAKE_C_FLAGS_RELWITHDEBINFO="$(FLAGS_ARGEO)" \
              -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="$(FLAGS_ARGEO)" \
              -DGGML_BUILD_NUMBER=$(GGML_BUILD_NUMBER) \
              -DGGML_BUILD_TESTS=OFF \
              -DGGML_BUILD_EXAMPLES=OFF \
              -DGGML_BACKEND_DL=ON \
              -DGGML_BACKEND_DIR=/usr/lib/${DEB_HOST_MULTIARCH}/ggml/backends0 \

# Common backends
CMAKE_OPTS += -DGGML_RPC=ON \

ifeq ($(filter pkg.ggml.novulkan,$(DEB_BUILD_PROFILES)),)
CMAKE_OPTS += -DGGML_VULKAN=ON
endif

ifeq ($(DEB_TARGET_ARCH),arm64)
ifeq ($(distribution),Ubuntu)
# Optimize for Raspberry Pi 5 on Ubuntu
CMAKE_OPTS += -DGGML_CPU_ALL_VARIANTS=OFF \
              -DGGML_NATIVE=ON
else
CMAKE_OPTS += -DGGML_CPU_ALL_VARIANTS=OFF \
              -DGGML_CPU_ARM_ARCH=armv8-a
endif
else

CMAKE_OPTS += -DGGML_CPU_ALL_VARIANTS=ON

ifeq ($(filter pkg.ggml.nocuda,$(DEB_BUILD_PROFILES)),)
CMAKE_OPTS += -DGGML_CUDA=ON \
              -DCMAKE_CUDA_FLAGS_RELWITHDEBINFO="$(FLAGS_ARGEO)" \
              -DGGML_CUDA_FORCE_MMQ=ON \
              -DGGML_CUDA_FA_ALL_QUANTS=OFF \
              -DCUDAToolkit_ROOT=/usr
endif

endif # arm64

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

override_dh_auto_configure:
	dh_auto_configure -- $(CMAKE_OPTS)

override_dh_installexamples:
	dh_installexamples --exclude=.gitignore
