#!/usr/bin/make -f

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

export DH_VERBOSE = 1

# Parallel build support
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))

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

# Security Hardening
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/buildflags.mk
include /usr/share/dpkg/architecture.mk
include /usr/share/dpkg/pkg-info.mk

# THE FIX: Kill debug symbols AND ignore the ARM64 "alloc-size" warnings that stop builds
CLEAN_CFLAGS := $(shell echo $(CFLAGS) | sed 's/-g[0-9]*//g') -Wno-alloc-size-larger-than
CLEAN_CXXFLAGS := $(shell echo $(CXXFLAGS) | sed 's/-g[0-9]*//g') -Wno-alloc-size-larger-than

# Linker Fix: Use 'gold' on ARM64 to prevent RAM exhaustion/crashes
ARM_LDFLAGS = -Wl,--fuse-ld=gold

export BUILD_NAME = debian-${DEB_VERSION}

SCONS_OPTIONS = \
	platform=linuxbsd \
	arch=$(DEB_HOST_GNU_CPU) \
	--jobs=$(NUMJOBS) \
	precision=single \
	CC="$(CC)" \
	CXX="$(CXX)" \
	ccflags="$(CLEAN_CFLAGS)" \
	cxxflags="$(CLEAN_CXXFLAGS)" \
	linkflags="$(LDFLAGS) $(ARM_LDFLAGS)" \
	builtin_recastnavigation=yes \
	builtin_brotli=no \
	builtin_certs=no \
	system_certs_path=/etc/ssl/certs/ca-certificates.crt \
	builtin_enet=no \
	builtin_freetype=no \
	builtin_harfbuzz=no \
	builtin_icu4c=no \
	builtin_libogg=no \
	builtin_libpng=no \
	builtin_libtheora=no \
	builtin_libvorbis=no \
	builtin_libwebp=no \
	builtin_mbedtls=no \
	builtin_miniupnpc=no \
	builtin_pcre2=no \
	builtin_zlib=no \
	builtin_zstd=no \
	builtin_wslay=no \
	builtin_embree=yes \
	builtin_clipper2=yes \
	builtin_msdfgen=yes \
	builtin_glslang=yes \
	builtin_rvo2_2d=yes \
	builtin_rvo2_3d=yes \
	builtin_xatlas=yes \
	openxr=yes \
	use_static_cpp=no \
	tests=no \
	debug_symbols=no \
	separate_debug_symbols=no \
	engine_update_check=no \
	verbose=yes

# See ENVIRONMENT in dpkg-buildflags(1).
# Package maintainers to append CFLAGS.
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
# Package maintainers to append LDFLAGS.
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed


%:
	dh $@


# 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_build:
	# Build the Editor with production optimizations
	scons $(SCONS_OPTIONS) target=editor production=yes

override_dh_auto_install:
	# Godot 4 uses a specific naming convention for the binary
	# We use a wildcard to catch the correct arch name (arm64 vs aarch64)
	install -Dm0755 bin/godot.linuxbsd.editor.* debian/godot/usr/bin/godot
	install -Dm0644 misc/dist/linux/org.godotengine.Godot.desktop debian/godot/usr/share/applications/org.godotengine.Godot.desktop
	install -Dm0644 misc/dist/linux/org.godotengine.Godot.appdata.xml debian/godot/usr/share/metainfo/org.godotengine.Godot.appdata.xml
	install -Dm0644 icon.svg debian/godot/usr/share/icons/hicolor/scalable/apps/godot.svg
	install -Dm0644 misc/dist/linux/godot.6 debian/godot/usr/share/man/man6/godot.6
	dh_auto_install

override_dh_dwz:
	: