#!/usr/bin/make -f

include /usr/share/dpkg/default.mk

ifeq (,$(filter terse,$(DEB_BUILD_OPTIONS)))
    export DH_VERBOSE = 1
endif

export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1

CFLAGS   += $(CPPFLAGS)
CXXFLAGS += $(CPPFLAGS)

empty :=

DEB_CMAKE_EXTRA_FLAGS = \
    -DCMAKE_INSTALL_INCLUDEDIR=include/$(DEB_HOST_MULTIARCH) \
    -DCMAKE_SKIP_RPATH=FALSE \
    -DCMAKE_SKIP_INSTALL_RPATH=TRUE \
    -DCMAKE_BUILD_TYPE=RelWithDebInfo \
    -DWITH_DEBUG_ALL=OFF \
    -DBUILD_TESTING=OFF \
    -DWITH_CHANNELS=ON \
    -DBUILTIN_CHANNELS=ON \
    -DWITH_SERVER=ON \
    -DWITH_PROXY=OFF \
    -DWITH_CLIENT_INTERFACE=OFF \
    -DWITH_PULSE=ON \
    -DWITH_ICU=ON \
    -DWITH_CUPS=ON \
    -DWITH_PCSC=ON \
    -DWITH_JPEG=ON \
    -DWITH_KERBEROS=ON \
    -DWITH_CLANG_FORMAT=OFF \
    -DWITH_OPUS=ON \
    -DWITH_SAMPLE=OFF \
    -DWITH_OPENSC_PKCS11_LINKED=OFF \
    -DWITH_VAAPI=OFF \
    -WITH_SMARTCARD_EMULATE=ON \
    -DRDTK_FORCE_STATIC_BUILD=ON \
    -DUWAC_FORCE_STATIC_BUILD=ON \
    -DWITH_BINARY_VERSIONING=ON \
    $(empty)

ifneq (,$(filter armel,$(DEB_HOST_ARCH)))
    DEB_CMAKE_EXTRA_FLAGS += \
        -DWITH_NEON=OFF \
        $(empty)
endif

ifneq (,$(filter linux,$(DEB_HOST_ARCH_OS)))
    DEB_CMAKE_EXTRA_FLAGS += \
        -DCHANNEL_URBDRC=ON \
        -DCHANNEL_URBDRC_CLIENT=ON \
        -DWITH_WAYLAND=ON \
        $(empty)
else
    DEB_CMAKE_EXTRA_FLAGS += \
        -DCHANNEL_URBDRC=OFF \
        -DCHANNEL_URBDRC_CLIENT=OFF \
        $(empty)

    DEB_CMAKE_EXTRA_FLAGS += \
        -DWITH_ALSA=OFF \
        -DWITH_LIBSYSTEMD=OFF \
        -DWITH_WAYLAND=OFF \
        $(empty)
endif

# Ubuntu can't have ffmpeg in main
# Ubuntu doesn't yet have cjson or pkcs11-helper
# or uriparser in main
ifeq ($(shell dpkg-vendor --is Ubuntu && echo yes),yes)
    DEB_CMAKE_EXTRA_FLAGS += \
        -DWITH_AAD=OFF \
        -DWITH_FFMPEG=OFF \
        -DWITH_GSM=OFF \
        -DWITH_CAIRO=ON \
        -DWITH_PKCS11=OFF \
        -DWITH_SWSCALE=OFF \
        -DWITH_URIPARSER=OFF \
        $(empty)
else
    DEB_CMAKE_EXTRA_FLAGS += \
        -DWITH_GSM=ON \
        -DWITH_SWSCALE=ON \
        -DWITH_DSP_FFMPEG=ON \
        -DSWScale_INCLUDE_DIRS=/usr/include/$(DEB_HOST_MULTIARCH) \
        -DWITH_CAIRO=OFF \
        $(empty)
endif

%:
	dh $@

# char 026 (0x16) is seemed to be safe separator for sed "s" command;
# idea taken from Debian src:nginx/debian/dh_nginx.
# (however, they're using 0x17)
xSEDx :=$(shell printf '\026')

override_dh_auto_configure:
	dh_auto_configure -- $(DEB_CMAKE_EXTRA_FLAGS)
	# mangle CFLAGS value stored in buildflags.h.
	# fixes build path leakage.
	o='-f(debug|file)-prefix-map' ; \
	sed -E -i \
	    -e "s$(xSEDx)$${o}=[^=]+=\. $(xSEDx)$(xSEDx)g;" \
	    -e "s$(xSEDx) $${o}=[^=]+=\.$(xSEDx)$(xSEDx)g;" \
	obj-$(DEB_HOST_GNU_TYPE)/include/freerdp/buildflags.h
	sed -E -i \
	    -e "s$(xSEDx)$${o}=[^=]+=\. $(xSEDx)$(xSEDx)g;" \
	    -e "s$(xSEDx) $${o}=[^=]+=\.$(xSEDx)$(xSEDx)g;" \
	obj-$(DEB_HOST_GNU_TYPE)/winpr/include/winpr/buildflags.h
	# remove unused config define (not packaging freerdp-proxy so far).
	# fixes build path leakage.
	# NB: mangle that define to something like
	#   /usr/lib/$(DEB_HOST_MULTIARCH)/freerdp/proxy-plugins
	# if you consider to package freerdp-proxy.
	sed -i \
	    -e '/FREERDP_PROXY_PLUGINDIR/d' \
	    obj-$(DEB_HOST_GNU_TYPE)/include/freerdp/build-config.h

# NB debhelper 13+: convert to execute_before_dh_install
override_dh_install: TMP_LIB = debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
override_dh_install:
	rm -rf $(TMP_LIB)/*.a
	mkdir -p $(TMP_LIB)/freerdp/
	dh_install

# NB debhelper 13+: remove override
override_dh_missing:
	dh_missing --fail-missing

get-orig-source:
	uscan --noconf --force-download --rename --download-current-version --destdir=..
