#!/usr/bin/make -f

# See debhelper(7) (uncomment to enable).
# Output every command that modifies files on the build system.
#export DH_VERBOSE = 1


# See FEATURE AREAS in dpkg-buildflags(1).
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all

export DEB_BUILD_MAINT_OPTIONS = optimize=-lto hardening=-relro

# Architecture detection
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)

# Prefer gcc versions, otherwise fallback to gcc.
export CC = $(shell for _cc in gcc-4.5 gcc-4.7 gcc-4.9 gcc false; do \
		if which "$$_cc" >/dev/null 2>&1; then echo "$$_cc"; break; fi; done)

# See ENVIRONMENT in dpkg-buildflags(1).
# Package maintainers to append CFLAGS.
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic

export DEB_CFLAGS_MAINT_STRIP = -fstack-protector-strong -fcf-protection=full

# Package maintainers to append LDFLAGS.
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed


%:
	dh $@ --parallel
#	dh $@ --max-parallel=1


# dh_make generated override targets.
# This is an example for Cmake (see <https://bugs.debian.org/641051>).
#override_dh_auto_configure:
#	dh_auto_configure -- \
#	-DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)

override_dh_auto_configure:
	# Run configure
	# 64-bit logic for amd64 and arm64
ifneq (,$(filter $(DEB_HOST_ARCH), amd64 arm64))
	./configure --prefix=/opt/wine-devel \
				--libdir=\$${prefix}/lib \
				--mandir=\$${prefix}/share/man \
				--infodir=\$${prefix}/share/info \
				--enable-win64 \
				--disable-tests \
				$(CONFFLAGS)

	# 32-bit ARM logic (armhf, armel, armv7l) to bypass .incbin errors using Clang
else ifneq (,$(filter $(DEB_HOST_ARCH), armhf armel armv7l))
	CC="clang" \
	CXX="clang++" \
	CROSSCC="clang" \
	CROSSTARGET="arm-w64-mingw32" \
	WRCFLAGS="--preprocessor=clang -E -xc -DRC_INVOKED" \
	./configure --prefix=/opt/wine-devel \
				--libdir=\$${prefix}/lib \
				--mandir=\$${prefix}/share/man \
				--infodir=\$${prefix}/share/info \
				--with-mingw \
				--disable-tests \
				$(CONFFLAGS)

	# i386 and other architectures
else
	./configure --prefix=/opt/wine-devel \
				--libdir=\$${prefix}/lib \
				--mandir=\$${prefix}/share/man \
				--infodir=\$${prefix}/share/info \
				--disable-tests \
				$(CONFFLAGS)
endif

override_dh_auto_test:
	# Skip tests for build speed and reliability

override_dh_installdocs:
	dh_installdocs --link-doc=wine-devel

override_dh_install:
	# Check if we are on aarch64/arm64 to prevent dh_missing errors from the previous log
	# If the files exist in debian/tmp but aren't being moved, dh_install needs to be explicit
	dh_install --list-missing

	# Compat symlinks for bindir
	mkdir -p debian/winehq-devel/usr/bin
	if [ -d "debian/wine-devel/opt/wine-devel/bin" ]; then \
		for _file in $$(ls "debian/wine-devel/opt/wine-devel/bin"); do \
			ln -s "/opt/wine-devel/bin/$$_file" "debian/winehq-devel/usr/bin/$$_file"; \
		done; \
	fi

	# Compat symlinks for desktop file
	mkdir -p "debian/winehq-devel/usr/share/applications"
	if [ -d "debian/wine-devel/opt/wine-devel/share/applications" ]; then \
		for _file in $$(ls "debian/wine-devel/opt/wine-devel/share/applications"); do \
			ln -s "/opt/wine-devel/share/applications/$$_file" "debian/winehq-devel/usr/share/applications/$$_file"; \
		done; \
	fi

override_dh_strip:
	dh_strip -Xwine-pthread -Xwine-kthread --dbg-package=wine-devel-dbg

override_dh_shlibdeps:
	dh_shlibdeps -l $(CURDIR)/debian/tmp/opt/wine-devel/lib/