#!/usr/bin/make -f

# Include architecture definitions for DEB_HOST_ARCH logic
include /usr/share/dpkg/architecture.mk

export DEB_CFLAGS_MAINT_STRIP = -fstack-protector-strong -fcf-protection=full
export DEB_BUILD_MAINT_OPTIONS = optimize=-lto
export DEB_BUILD_MAINT_OPTIONS = hardening=-relro

# Prefer gcc-4.5, then 4.7, then 4.9 - 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)

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

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

	# Special logic for armhf using Clang to bypass assembly/toolchain errors
else ifeq ($(DEB_HOST_ARCH), armhf)
	CC="clang" \
	CXX="clang++" \
	CROSSCC="clang" \
	CROSSTARGET="arm-w64-mingw32" \
	WRCFLAGS="--preprocessor=clang -E -xc -DRC_INVOKED" \
	./configure --prefix=/opt/wine-stable \
				--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-stable \
				--libdir=\$${prefix}/lib \
				--mandir=\$${prefix}/share/man \
				--infodir=\$${prefix}/share/info \
				--disable-tests \
				$(CONFFLAGS)
endif


override_dh_auto_test:
	# Wine's test suite does not pass on build daemons, skip it for now


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


override_dh_install:
	dh_install --fail-missing

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

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

	# Compat manpages - Unblocked and safe
	for _dir in man1 de.UTF-8/man1 fr.UTF-8/man1 pl.UTF-8/man1; do \
		if [ -d "debian/wine-stable/opt/wine-stable/share/man/$$_dir" ]; then \
			mkdir -p "debian/winehq-stable/usr/share/man/$$_dir"; \
			for _file in $$(ls "debian/wine-stable/opt/wine-stable/share/man/$$_dir"); do \
				ln -s "/opt/wine-stable/share/man/$$_dir/$$_file" "debian/winehq-stable/usr/share/man/$$_dir/$$_file"; \
			done; \
			ln -sf "/opt/wine-stable/share/man/$$_dir/wine.1" "debian/winehq-stable/usr/share/man/$$_dir/wine.1"; \
		fi; \
	done


override_dh_strip:
	# Added -X flags to protect PE binaries during stripping on ARM
	dh_strip -Xwine-pthread -Xwine-kthread -X.dll -X.exe -X.a --dbg-package=wine-stable-dbg


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