#! /usr/bin/make -f

# this will avoid unneded dependencies
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

_prefix			:= /opt/alt/curlssl/usr
_bindir			:= $(_prefix)/bin
_lib			:= lib/$(DEB_HOST_MULTIARCH)
_libdir			:= $(_prefix)/$(_lib)
_sysconfdir		:= $(_prefix)/etc
_includedir		:= $(_prefix)/include
_mandir			:= $(_prefix)/share/man
_defaultdocdir	:= $(_prefix)/share/doc

skip_tests ?= 0

pkg_config_libs_path := ${_libdir}/pkgconfig



LIBSSH2_PREFIX = /opt/alt/libssh2
LDFLAGS += -Wl,-rpath=$(LIBSSH2_PREFIX)/$(_lib)
LDFLAGS += -L$(LIBSSH2_PREFIX)/$(_lib)
pkg_config_libs_path := $(pkg_config_libs_path):$(LIBSSH2_PREFIX)/$(_lib)/pkgconfig

OPENSSL_PREFIX = /opt/alt/openssl
LDFLAGS += -Wl,-rpath=$(OPENSSL_PREFIX)/$(_lib)
LDFLAGS += -L$(OPENSSL_PREFIX)/$(_lib)
pkg_config_libs_path := $(pkg_config_libs_path):$(OPENSSL_PREFIX)/$(_lib)/pkgconfig


LDFLAGS += -Wl,-rpath=$(_prefix)/$(_lib)

TMP_ROOT = debian/tmp

CONFIGURE_ARGS = --disable-dependency-tracking \
	--with-openssl=$(OPENSSL_PREFIX) \
	--with-libssh2=$(LIBSSH2_PREFIX) \
	--with-libidn2 \
	--disable-static \
	--enable-symbol-hiding \
	--enable-ipv6 \
	--enable-threaded-resolver \
	--with-lber-lib=lber \
	--with-gssapi=/usr \
	--with-nghttp2 \
	--includedir=$(_includedir) \
	--prefix=$(_prefix)  \
	--mandir=$(_mandir) \
	--libdir=$(_libdir) \
	--with-ca-path=/etc/ssl/certs \
	--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt

%:
	dh $@

override_dh_auto_configure:
	# dst link not found
	printf "1560\n" >> tests/data/DISABLED
	# disable flaky tests (curl 8.19.0)
	# 763 - Unicode hostname IDN, 1501 - FTP slow LIST, 1583 - SFTP empty file
	printf "763\n1501\n1583\n" >> tests/data/DISABLED
	# curl 8.19.0 dropped OpenSSL < 3.0 support; patch for alt-openssl11 compat
	sed -i '/#elif !defined(HAVE_BORINGSSL_LIKE)/,/#  endif/{/#elif !defined(HAVE_BORINGSSL_LIKE)/d;/#  ifndef HAVE_OPENSSL3/d;/#    error "OpenSSL 3.0.0 or later required"/d;/#  endif/d}' lib/vtls/openssl.c
	sed -i '/if test "$$ssl_msg" = .OpenSSL.;/,/^    fi$$/{/checking for OpenSSL >= v3/,/^    fi$$/d;/if test "$$ssl_msg" = .OpenSSL.;/d}' configure
	sed -i 's/OpenSSL_version(OPENSSL_VERSION_STRING)/OpenSSL_version(OPENSSL_VERSION)/' lib/vtls/openssl.c
	./configure ${CONFIGURE_ARGS}

override_dh_auto_install:
	dh_auto_install

	echo ${pkg_config_libs_path} | sed 's@^:@@' | sed 's@:$$@@' > $(TMP_ROOT)$(_libdir)/pkgconfig/pkg_config_libs_path
	sed -i 's@^Libs: @Libs: -Wl,-rpath=$${libdir} @' $(TMP_ROOT)$(_libdir)/pkgconfig/*.pc
	if [ ! -f /usr/lib/$(DEB_HOST_MULTIARCH)/pkgconfig/ldap.pc ]; then \
		sed -i '/Requires.private:/s@ldap,\?@@' $(TMP_ROOT)$(_libdir)/pkgconfig/*.pc; \
	fi

	dh_movefiles -p alt-curlssl \
		$(_bindir)/curl \
		$(_bindir)/wcurl \
		$(_mandir)/man1/curl.1 \
		$(_mandir)/man1/wcurl.1

	dh_movefiles -p alt-libcurlssl \
		$(_libdir)/libcurl.so.4*

	dh_movefiles -p alt-libcurlssl-dev \
		$(_bindir)/curl-config \
		$(_libdir)/libcurl.so \
		$(_libdir)/libcurl.la \
		$(_libdir)/pkgconfig/* \
		$(_includedir) \
		$(_mandir)/man1/curl-config.1 \
		$(_prefix)/share/aclocal/libcurl.m4

	dh_movefiles -p alt-libcurlssl-doc \
		$(_mandir)/man3

	dh_installexamples -p alt-libcurlssl-doc \
		docs/examples/

	dh_installdocs -p alt-libcurlssl-doc \
		README \
		docs/BINDINGS.md \
		docs/BUGS.md \
		docs/CONTRIBUTE.md \
		docs/FAQ.md \
		docs/FEATURES.md \
		docs/HISTORY.md \
		docs/INTERNALS.md \
		docs/KNOWN_BUGS.md \
		docs/THANKS \
		docs/TODO.md \
		docs/TheArtOfHttpScripting.md \
		docs/VERSIONS.md

	dh_link -p alt-libcurlssl-doc \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_maprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mfprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_msnprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_msprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mvaprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mvfprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mvprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mvsnprintf.3 \
		$(_mandir)/man3/curl_mprintf.3  $(_mandir)/man3/curl_mvsprintf.3 \
		$(_mandir)/man3/curl_strequal.3 $(_mandir)/man3/curl_strnequal.3

override_dh_installchangelogs:
	dh_installchangelogs CHANGES.md

override_dh_compress:
	dh_compress -A -X.pdf

override_dh_strip:
	dh_strip -palt-libcurlssl \
		--dbg-package=alt-libcurlssl-dbg
	dh_strip --remaining-packages

override_dh_auto_test:
ifneq ($(skip_tests),1)
ifeq ($(DEB_HOST_ARCH),arm64)
	# Tuxcare ELS: -F downgrades failures to warnings on flaky tests. Such
	# approach seems superior to skipping the individual tests completely.
	make TFLAGS='~flaky' test-full
else
	make test-full
endif
else
	echo "Skipping unit tests because of skip_tests set"
endif

override_dh_missing:
	dh_missing --fail-missing
