#!/usr/bin/make -f

include /usr/share/dpkg/architecture.mk

#export DH_VERBOSE = 1

# 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

# for dh_gencontrol
include /usr/share/dpkg/default.mk
major-ghidraversion=$(shell echo $(DEB_VERSION_UPSTREAM) | cut -d. -f 1)
minor-ghidraversion=$(shell echo $(DEB_VERSION_UPSTREAM) | cut -d. -f 2)
minormax-ghidraversion=$(shell echo $$(( $(minor-ghidraversion) + 1 )) )

%:
	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

	$(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


override_dh_gencontrol:
	# generate automatically the correct versioned dependencies on ghidra-data
	dh_gencontrol -- -Vghidra:Depends="ghidra-data (>= $(major-ghidraversion).$(minor-ghidraversion)), ghidra-data (<< $(major-ghidraversion).$(minormax-ghidraversion))"
