#!/usr/bin/make -f
# -*- makefile-gmake -*-
#
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# This has to be exported to make some magic below work.
export DH_OPTIONS

export DEB_BUILD_MAINT_OPTIONS=reproducible=-timeless

BUILD_TYPE=release

%:
	dh $@ --with gir

override_dh_auto_configure:
	if dpkg -l nvidia-cuda-toolkit > /dev/null 2>&1; then	\
	  ARROW_CUDA=ON;					\
	  ARROW_PLASMA=ON;					\
	else							\
	  ARROW_CUDA=OFF;					\
	  ARROW_PLASMA=OFF;					\
	fi;							\
	if python3 -c 'import numpy' > /dev/null 2>&1; then	\
	  ARROW_PYTHON=ON;					\
	else							\
	  ARROW_PYTHON=OFF;					\
	fi;							\
	dh_auto_configure					\
	  --sourcedirectory=cpp					\
	  --builddirectory=cpp_build				\
	  --buildsystem=cmake+ninja				\
	  --							\
	  -DARROW_COMPUTE=ON					\
	  -DARROW_CSV=ON					\
	  -DARROW_CUDA=$${ARROW_CUDA}				\
	  -DARROW_DATASET=ON					\
	  -DARROW_FILESYSTEM=ON					\
	  -DARROW_FLIGHT=ON					\
	  -DARROW_FLIGHT_SQL=ON					\
	  -DARROW_GANDIVA=ON					\
	  -DARROW_GANDIVA_JAVA=OFF				\
	  -DARROW_GCS=ON					\
	  -DARROW_HDFS=ON					\
	  -DARROW_JSON=ON					\
	  -DARROW_MIMALLOC=ON					\
	  -DARROW_ORC=ON					\
	  -DARROW_PACKAGE_KIND=deb				\
	  -DARROW_PARQUET=ON					\
	  -DARROW_PLASMA=$${ARROW_PLASMA}			\
	  -DARROW_PYTHON=$${ARROW_PYTHON}			\
	  -DARROW_S3=ON						\
	  -DARROW_USE_CCACHE=OFF				\
	  -DARROW_WITH_BROTLI=ON				\
	  -DARROW_WITH_BZ2=ON					\
	  -DARROW_WITH_LZ4=ON					\
	  -DARROW_WITH_SNAPPY=ON				\
	  -DARROW_WITH_ZLIB=ON					\
	  -DARROW_WITH_ZSTD=ON					\
	  -DCMAKE_BUILD_TYPE=$(BUILD_TYPE)			\
	  -DCMAKE_UNITY_BUILD=ON				\
	  -DCUDAToolkit_ROOT=/usr				\
	  -DPARQUET_REQUIRE_ENCRYPTION=ON			\
	  -DPythonInterp_FIND_VERSION=ON			\
	  -DPythonInterp_FIND_VERSION_MAJOR=3

override_dh_auto_build:
	dh_auto_build				\
	  --sourcedirectory=cpp			\
	  --builddirectory=cpp_build
	dh_auto_configure				\
	  --sourcedirectory=c_glib			\
	  --builddirectory=c_glib_build			\
	  --buildsystem=meson+ninja			\
	  --						\
	  -Darrow_cpp_build_type=$(BUILD_TYPE)		\
	  -Darrow_cpp_build_dir=../cpp_build		\
	  -Dgtk_doc=true				\
	  -Dvapi=true
	env							\
	  LD_LIBRARY_PATH=$(CURDIR)/cpp_build/$(BUILD_TYPE)	\
	    dh_auto_build					\
	      --sourcedirectory=c_glib				\
	      --builddirectory=c_glib_build			\
	      --buildsystem=meson+ninja

override_dh_auto_install:
	dh_auto_install				\
	  --sourcedirectory=c_glib		\
	  --builddirectory=c_glib_build		\
	  --buildsystem=meson+ninja
	# Remove built files to reduce disk usage
	dh_auto_clean				\
	  --sourcedirectory=c_glib		\
	  --builddirectory=c_glib_build		\
	  --buildsystem=meson+ninja

	dh_auto_install				\
	  --sourcedirectory=cpp			\
	  --builddirectory=cpp_build
	# Remove built files to reduce disk usage
	dh_auto_clean				\
	  --sourcedirectory=cpp			\
	  --builddirectory=cpp_build

override_dh_auto_test:
	# TODO: We need Boost 1.64 or later to build tests for
	# Apache Arrow Flight.
	# git clone --depth 1 https://github.com/apache/arrow-testing.git
	# git clone --depth 1 https://github.com/apache/parquet-testing.git
	# cd cpp_build &&								\
	#   env									\
	#     ARROW_TEST_DATA=$(CURDIR)/arrow-testing/data			\
	#     PARQUET_TEST_DATA=$(CURDIR)/parquet-testing/data			\
	#       ctest --exclude-regex 'arrow-cuda-test|plasma-client_tests'

# libarrow.so: avoid failing with "Unknown DWARF DW_OP_172"
# libgandiva.so: avoid failing with "Unknown DWARF DW_OP_255"
#   See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=949296
# plasma-store-server: avoid failing with "Unknown DWARF DW_OP_1"
override_dh_dwz:
	dh_dwz \
	  --exclude=libarrow.so \
	  --exclude=libgandiva.so \
	  --exclude=plasma-store-server
