#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS = hardening=+bindnow

built_binaries := $(shell dh_listpackages)

include /usr/share/dpkg/default.mk

confflags = \
	--disable-alsa-shared \
	--disable-arts \
	--disable-directx \
	--disable-esd \
	--disable-fusionsound \
	--disable-jack \
	--disable-joystick-mfi \
	--disable-kmsdrm-shared \
	--disable-libsamplerate-shared \
	--disable-nas \
	--disable-pulseaudio-shared \
	--disable-render-d3d \
	--disable-rpath \
	--disable-video-cocoa \
	--disable-video-directfb \
	--disable-video-metal \
	--disable-video-opengles1 \
	--disable-video-rpi \
	--disable-video-vivante \
	--disable-wasapi \
	--disable-wayland-shared \
	--disable-x11-shared \
	--disable-xinput \
	--enable-alsa \
	--enable-dbus \
	--enable-fcitx \
	--enable-hidapi \
	--enable-hidapi-joystick \
	--enable-ibus \
	--enable-libsamplerate \
	--enable-pulseaudio \
	--enable-sdl2-config \
	--enable-sndio \
	--enable-vendor-info="${DEB_VENDOR} ${DEB_VERSION}" \
	--enable-video-kmsdrm \
	--enable-video-opengl \
	--enable-video-opengles \
	--enable-video-opengles2 \
	--enable-video-x11 \
	$(NULL)

# disable autoheader (invoked automatically by autoreconf), necessary in order
# to use debhelper compat level v10 without overriding dh-autoreconf calls
export AUTOHEADER := /bin/true


ifeq ($(DEB_HOST_ARCH_CPU),powerpc)
  confflags += --disable-altivec
endif

ifeq ($(DEB_HOST_ARCH_CPU),ppc64el)
  confflags += --disable-altivec
endif

ifeq ($(DEB_HOST_ARCH_OS),linux)
  confflags += --enable-libdecor
  confflags += --enable-libudev
  confflags += --enable-pipewire
  confflags += --enable-video-vulkan
  confflags += --enable-video-wayland
else
  confflags += --disable-libdecor
  confflags += --disable-libudev
  confflags += --disable-pipewire
  confflags += --disable-video-vulkan
  confflags += --disable-video-wayland
endif

# don't use libunwind even if it happens to be installed
confflags += ac_cv_header_libunwind_h=no

%:
	dh $@

override_dh_auto_configure:
	dh_auto_configure -- $(confflags)
	# test/configure.ac uses AC_PATH_X, so we need to pass in
	# --x-includes and --x-libraries to avoid it wanting to use
	# xmkmf to discover the right values.
	# test/configure.ac doesn't respect CPPFLAGS or LDFLAGS.
	dh_auto_configure \
		--buildsystem=autoconf \
		--sourcedirectory=$(CURDIR)/test \
		--builddirectory=$(CURDIR)/debian/build-tests \
		-- \
		--x-includes=/usr/include \
		--x-libraries=/usr/lib/$(DEB_HOST_MULTIARCH) \
		SDL_CFLAGS=-I$(CURDIR)/include \
		SDL_LIBS="-L$(CURDIR)/build/.libs -lSDL2" \
		ac_cv_lib_SDL2_ttf_TTF_Init=no \
		CFLAGS="$(CPPFLAGS) $(CFLAGS) $(LDFLAGS)" \
		$(NULL)

override_dh_auto_build-indep:
	GZIP="-9n" tar \
		--exclude=autom4te.cache \
		--owner=0 --group=0 --mode=go=rX,u+rw,a-s \
		--clamp-mtime --mtime="@$(SOURCE_DATE_EPOCH)" \
		--sort=name \
		-czf debian/examples.tar.gz test
	sed -e 's/FULL_PATH_NAMES *=.*/FULL_PATH_NAMES = NO/' < docs/doxyfile > debian/Doxyfile
	cd docs && doxygen ../debian/Doxyfile
	# useless files
	find docs/output -name "*.md5" -delete
	find docs/output -type d -empty -delete

# Force examples to be installed in libsdl2-doc, it does not happen with compat
# level v11 despite having the file debian/libsdl2-doc.examples (it gets
# installed as part of libsdl2-dev instead)
override_dh_installexamples-indep:
	dh_installexamples -i --doc-main-package=libsdl2-doc

override_dh_auto_build-arch: build-library build-tests
override_dh_auto_build-indep: build-library
build-library:
	dh_auto_build -- V=1
build-tests:
	dh_auto_build \
		--buildsystem=autoconf \
		--sourcedirectory=$(CURDIR)/test \
		--builddirectory=$(CURDIR)/debian/build-tests \
		-- \
		V=1


override_dh_auto_clean-indep:
	dh_auto_clean
	rm -f debian/Doxyfile
	rm -f debian/examples.tar.gz
	rm -rf docs/output

override_dh_auto_test-arch:
ifeq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),)
	rm -f debian/tests-failed
	dh_auto_test || touch debian/tests-failed
	LD_LIBRARY_PATH=$(CURDIR)/build/.libs \
	dh_auto_test \
		--buildsystem=autoconf \
		--sourcedirectory=$(CURDIR)/test \
		--builddirectory=$(CURDIR)/debian/build-tests \
		-- \
		V=1 || touch debian/tests-failed
	if [ -e debian/tests-failed ]; then exit 1; fi
endif

override_dh_auto_install-arch:
	dh_auto_install -- V=1
	dh_auto_install \
		--buildsystem=autoconf \
		--sourcedirectory=$(CURDIR)/test \
		--builddirectory=$(CURDIR)/debian/build-tests \
		-- \
		V=1

# debhelper >= 13.4 makes all of /usr/libexec executable, which is not
# quite right for installed-tests
override_dh_fixperms:
	dh_fixperms -Xusr/libexec/installed-tests
ifneq ($(filter %-tests,$(built_binaries)),)
	chmod --recursive --changes a+rX,u+w,og-w debian/libsdl2-tests/usr/libexec/installed-tests
endif

override_dh_install:
	mkdir -p debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/SDL2
	mv debian/tmp/usr/include/SDL2/SDL_config.h debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/SDL2/_real_SDL_config.h
	ln -s ../../SDL2/SDL_platform.h debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/SDL2/
	ln -s ../../SDL2/begin_code.h debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/SDL2/
	ln -s ../../SDL2/close_code.h debian/tmp/usr/include/$(DEB_HOST_MULTIARCH)/SDL2/
	dh_install

override_dh_link:
	# to address lintian warning
	# W: libsdl2-2.0-0: dev-pkg-without-shlib-symlink usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.0.0 usr/lib/x86_64-linux-gnu/libSDL2-2.0.so
	dh_link -plibsdl2-dev usr/lib/$(DEB_HOST_MULTIARCH)/libSDL2-2.0.so.0 usr/lib/$(DEB_HOST_MULTIARCH)/libSDL2-2.0.so
	dh_link --remaining-packages

override_dh_installchangelogs:
	dh_installchangelogs -- WhatsNew.txt
