#!/usr/bin/make -f

# output every command that modifies files on the build system.
#export DH_VERBOSE = 1

include /usr/share/dpkg/architecture.mk

# mandatory for gradle
GRADLE_VERSION=8.5
export GRADLE_USER_HOME=$(CURDIR)/debian/fakehome/.gradle

# define a writable user.home (Java user.home is different from $HOME value)
export _JAVA_OPTIONS=-Duser.home=$(CURDIR)/debian/fakehome

%:
	dh $@

override_dh_auto_build:
	# use a recent gradle release (version in Debian is too old)
	# create fakehome
	mkdir -p $(CURDIR)/debian/fakehome/.gradle
	# create a directory where to install gradle binary
	mkdir $(CURDIR)/debian/bin
	wget https://services.gradle.org/distributions/gradle-$(GRADLE_VERSION)-bin.zip -O $(CURDIR)/debian/bin/gradle-$(GRADLE_VERSION)-bin.zip
	unzip $(CURDIR)/debian/bin/gradle-$(GRADLE_VERSION)-bin.zip -d $(CURDIR)/debian/bin

	# build ghidra with installed gradle
	$(CURDIR)/debian/bin/gradle-$(GRADLE_VERSION)/bin/gradle -I gradle/support/fetchDependencies.gradle init
	# build native binaries for arm64
ifeq ($(DEB_HOST_ARCH),arm64)
	$(CURDIR)/debian/bin/gradle-$(GRADLE_VERSION)/bin/gradle buildNatives
endif

	# build Ghidra
	$(CURDIR)/debian/bin/gradle-$(GRADLE_VERSION)/bin/gradle buildGhidra

override_dh_auto_clean:
	dh_auto_clean
	rm -rf $(CURDIR)/debian/bin
	rm -rf $(CURDIR)/debian/fakehome

override_dh_install:
	dh_install
	# upstream generates a ghidra*.zip file with all the required
	# components. We use it to install ghidra
	unzip $(CURDIR)/build/dist/ghidra_*.zip -d $(CURDIR)/build-ghidra
	mv $(CURDIR)/build-ghidra/ghidra_* $(CURDIR)/build-ghidra/ghidra
	mkdir -p $(CURDIR)/debian/ghidra/usr/share
	cp -r $(CURDIR)/build-ghidra/ghidra $(CURDIR)/debian/ghidra/usr/share

	# move docs
	mkdir -p $(CURDIR)/debian/ghidra/usr/share/doc/ghidra
	mv $(CURDIR)/debian/ghidra/usr/share/ghidra/docs/* $(CURDIR)/debian/ghidra/usr/share/doc/ghidra
	rm -rf $(CURDIR)/debian/ghidra/usr/share/ghidra/docs

	# remove binaries for other archs / systems
	rm -rf $(CURDIR)/debian/ghidra//usr/share/ghidra/Ghidra/Features/FileFormats/data/sevenzipnativelibs/Win*
	rm -rf $(CURDIR)/debian/ghidra//usr/share/ghidra/Ghidra/Features/FileFormats/data/sevenzipnativelibs/Mac*
ifeq ($(DEB_HOST_ARCH),arm64)
	rm -rf $(CURDIR)/debian/ghidra//usr/share/ghidra/Ghidra/Features/FileFormats/data/sevenzipnativelibs/Linux-amd64*
endif

