#!/usr/bin/make -f

include /usr/share/dpkg/pkg-info.mk

# The +ds suffix only marks the repacked tarball; the library's own version is
# what upstream released.
UPSTREAM_VERSION = $(shell echo '$(DEB_VERSION_UPSTREAM)' | sed 's/+ds.*//')

# Reproducible timestamps inside the jar (dpkg exports SOURCE_DATE_EPOCH).
JAR_DATE = $(shell date -u -d @$(SOURCE_DATE_EPOCH) +%Y-%m-%dT%H:%M:%SZ)

%:
	dh $@ --with javahelper,maven_repo_helper --without=single-binary

# Upstream builds with Gradle and a large set of plugins that are not in Debian.
# The library is only five annotation sources and a module descriptor, so build
# it with javac and jar exactly as upstream's Gradle build lays it out:
# the annotations at source/target 8 (compiled against the current JDK's
# libraries, because @NullMarked refers to ElementType.MODULE) and
# module-info.class at release 9.
override_dh_auto_build:
	mkdir -p build/classes build/java9
	javac -source 8 -target 8 -encoding UTF-8 -Xlint:-options \
	  -d build/classes $$(find src/main/java -name '*.java')
	javac --release 9 -encoding UTF-8 \
	  --module-version $(UPSTREAM_VERSION) \
	  -d build/java9 src/java9/java/module-info.java \
	  $$(find src/main/java -name '*.java')
	cp build/java9/module-info.class build/classes/
	sed 's/@VERSION@/$(UPSTREAM_VERSION)/' debian/MANIFEST.MF.in \
	  > build/MANIFEST.MF
	jar --create --file build/jspecify.jar --manifest build/MANIFEST.MF \
	  --date=$(JAR_DATE) -C build/classes .

override_dh_auto_test:
	jar --describe-module --file build/jspecify.jar | grep -q '^org.jspecify@$(UPSTREAM_VERSION)'

override_dh_auto_clean:
	rm -rf build
