#!/usr/bin/make -f
#export DH_VERBOSE=1

export DEB_BUILD_MAINT_OPTIONS=hardening=+all
export LC_ALL=C.UTF-8
export TZ=UTC

DEB_CPPFLAGS_MAINT_APPEND := \
	-DWITH_OPENARENA \
	$(NULL)

DEB_CFLAGS_MAINT_APPEND := \
	-fsigned-char \
	$(NULL)

include /usr/share/dpkg/default.mk

%:
	dh $@

ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
TARGET = release
else
TARGET = debug
endif

OPTIONS := \
	BUILD_DIR=debian/build \
	USE_CODEC_OPUS=1 \
	USE_CODEC_VORBIS=1 \
	USE_CURL=1 \
	USE_CURL_DLOPEN=0 \
	USE_INTERNAL_LIBS=0 \
	USE_LOCAL_HEADERS=0 \
	USE_OPENAL=1 \
	USE_OPENAL_DLOPEN=0 \
	USE_VOIP=1 \
	$(shell $(CURDIR)/debian/q3arch make ${DEB_HOST_GNU_CPU} ${DEB_HOST_GNU_SYSTEM}) \
	BUILD_CLIENT_SMP=1 \
	BUILD_GAME_SO=1 \
	BUILD_GAME_QVM=0 \
	VERSION=$(DEB_VERSION)/$(DEB_VENDOR) \
	CFLAGS='$(filter-out -fPIE -pie,$(CFLAGS)) $(CPPFLAGS)' \
	NOTSHLIBCFLAGS='$(filter -fPIE -pie,$(CFLAGS))' \
	LDFLAGS='$(filter-out -fPIE -pie,$(LDFLAGS))' \
	NOTSHLIBLDFLAGS='$(filter -fPIE -pie,$(LDFLAGS))' \
	FULLBINEXT="" \
	NO_STRIP=1 \
	$(NULL)

ifeq ($(DH_QUIET),1)
	OPTIONS += V=0
else
	OPTIONS += V=1
endif

override_dh_auto_clean:
	dh_auto_clean -- $(OPTIONS)

override_dh_auto_build:
	dh_auto_build -- $(OPTIONS) $(TARGET)

override_dh_auto_install: DESTDIR = debian/tmp
override_dh_auto_install:
	install -d $(DESTDIR)/usr/lib/ioquake3/baseq3/
	$(MAKE) copyfiles $(OPTIONS) COPYDIR=$(DESTDIR)/usr/lib/ioquake3
	install -m644 README.md debian/build/README
	install -d $(DESTDIR)/usr/lib/quake3/base/baseq3/
	install -d $(DESTDIR)/usr/lib/quake3/demo/demoq3/
	install -d $(DESTDIR)/usr/lib/quake3/ta/baseq3/
	install -d $(DESTDIR)/usr/lib/quake3/ta/missionpack/
	cd $(DESTDIR)/usr/lib/quake3/base/baseq3 && ln -s ../../../ioquake3/baseq3/*.so .
	cd $(DESTDIR)/usr/lib/quake3/demo/demoq3 && ln -s ../../../ioquake3/baseq3/*.so .
	cd $(DESTDIR)/usr/lib/quake3/ta/baseq3 && ln -s ../../../ioquake3/baseq3/*.so .
	cd $(DESTDIR)/usr/lib/quake3/ta/missionpack && ln -s ../../../ioquake3/missionpack/*.so .

ifeq ($(filter pkg.flatpak.app,$(DEB_BUILD_PROFILES)),)
ifeq ($(DEB_HOST_ARCH_OS),linux)
override_dh_install-arch:
	dh_install -a
	dh_apparmor -pioquake3 --profile-name=usr.lib.ioquake3.ioquake3
	dh_apparmor -pioquake3-server --profile-name=usr.lib.ioquake3.ioq3ded
endif
endif

override_dh_strip:
	dh_strip --ddeb-migration='ioquake3-dbg (<< 1.36+u20160914+dfsg1-1~)'

# ---------------------------------------------------------------------------

ORIG_SOURCE = ioquake3
ORIG_REPO ?= https://github.com/ioquake/ioq3
ORIG_REL = 1.36
# Empty if packaging a tagged release
ORIG_REV = 6387c336b645a5cffe7b44880609ff4f10c7320a
# Use the date of the ORIG_REV, or 20130426.1 if you snapshot twice in a day,
# or empty if ORIG_REV is
ORIG_DATE = 20180108
ORIG_SUFFIX = ~dfsg

ifeq (${ORIG_REV},)
	# I have no idea what tags are going to look like, because there
	# aren't any yet. For now, assume they'll be like "1.37".
	ORIG_VER := ${ORIG_REL}${ORIG_SUFFIX}
	ORIG_EXPORT := ${ORIG_REL}
else
	# I'd use "+gitsomething", but that sorts earlier than
	# "+svn1788", and "++gitsomething" is really ugly. +u sorts later,
	# and can be justified as short for "upstream".
	ORIG_VER := ${ORIG_REL}+u${ORIG_DATE}${ORIG_SUFFIX}
	ORIG_EXPORT := ${ORIG_REV}
endif

.PHONY: get-orig-source
get-orig-source:
	git clone --bare --depth=1 ${ORIG_REPO} ${ORIG_SOURCE}-${ORIG_VER}.git
	GIT_DIR=${ORIG_SOURCE}-${ORIG_VER}.git git fetch ${ORIG_REPO} ${ORIG_EXPORT}
	GIT_DIR=${ORIG_SOURCE}-${ORIG_VER}.git git archive \
		--format=tar \
		--prefix=${ORIG_SOURCE}-${ORIG_VER}.orig/ \
		${ORIG_EXPORT} | tar -xf-
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/AL
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/SDL12
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/SDL2
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/curl*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/tools/lcc
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/jpeg-8c
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/libcurl*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/libogg-*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/libs
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/libspeex
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/libvorbis-*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/opus-*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/opusfile-*
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig/code/zlib
	tar --xz -cvf ${ORIG_SOURCE}_${ORIG_VER}.orig.tar.xz ${ORIG_SOURCE}-${ORIG_VER}.orig
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.orig
	rm -rf ${ORIG_SOURCE}-${ORIG_VER}.git

# to be invoked from a git checkout with upstream github as a remote;
# tarball ends up in ../build-area
maintainer-get-orig-source:
	$(MAKE) -f debian/rules get-orig-source ORIG_REPO=$$(pwd)/.git
	mv -i -v ${ORIG_SOURCE}_${ORIG_VER}.orig.tar.xz ../build-area/
	@echo "try using:"
	@echo "gbp import-orig --upstream-vcs-tag=${ORIG_REV} ../build-area/${ORIG_SOURCE}_${ORIG_VER}.orig.tar.xz"
