#!/usr/bin/make -f

GRADLE_TASKS = assemble startScripts docs
GRADLE_EXCLUDED_PROJECTS = distributions \
                           internalAndroidPerformanceTesting \
                           internalTesting \
                           internalIntegTesting \
                           internalPerformanceTesting
export GRADLE_VERSION = $(shell cat version.txt)

# Only for debug purpose
# export JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005

# Under fakeroot Gradle will show error while creating /root/.gradle, hence
# specifying the Gradle home location.
# Excluding userguidePdf since PDF compiling using xhtmlrenderer requires the
# headful JDK installed.
# Excluding :killExistingDaemons since it runs /bin/ps which is not installed in
# a Buildd.
GRADLE_FLAGS = --project-prop finalRelease=true --offline --stacktrace \
               --gradle-user-home debian/.gradlehome --no-daemon \
               $(patsubst %,-x :%:assemble,$(GRADLE_EXCLUDED_PROJECTS)) \
               -x userguidePdf -x :killExistingDaemons

# Support for DEB_BUILD_OPTIONS parallel=n
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMTHREADS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	GRADLE_FLAGS += --parallel --max-workers=$(NUMTHREADS)
endif

%:
	dh $@ --with maven_repo_helper,javahelper

override_dh_auto_build:
	mkdir --parents buildSrc/src/main/java
	# These symlinks are due to new APIs introduced in Gradle 3.1
	ln -s ../../../../subprojects/dependency-management/src/main/java/org/gradle/api/internal/runtimeshaded/PackageListGenerator.java buildSrc/src/main/java/PackageListGenerator.java
	ln -s ../../../../subprojects/dependency-management/src/main/java/org/gradle/api/internal/runtimeshaded/Trie.java buildSrc/src/main/java/Trie.java
	ln -s ../../../../subprojects/core/src/main/java/org/gradle/api/tasks/OrderSensitive.java buildSrc/src/main/java/OrderSensitive.java
	gradle $(GRADLE_TASKS) $(GRADLE_FLAGS) 
	pandoc -s -o debian/gradle.1 debian/gradle.1.md

override_dh_auto_clean:
	dh_auto_clean
	find . -wholename .*build/generated-resources | xargs echo | sed -e 's^build/generated-resources^build^g' | xargs rm -Rf
	rm -r -f .gradle debian/.gradlehome buildSrc/.gradle buildSrc/build build
	rm -r -f debian/gradle.1 subprojects/distributions/build
	$(RM) -r buildSrc/src/main/java

override_dh_install:
	dh_install
	# Remove lintian warning zero-byte-file-in-doc-directory
	rm debian/gradle-doc/usr/share/doc/gradle/dsl/dsl-standalone.html
	rm debian/gradle-doc/usr/share/doc/gradle/dsl/sidebar.js

get-orig-source:
	uscan --download-current-version --force-download --repack --compression xz

# since gradle build-depends on itself, a way to generate a deb from upstream
# binary distribution is provided with this target. With the resulting .deb,
# gradle can be rebuilt from source.
bootstrap:
	cd $(dir $(firstword $(MAKEFILE_LIST)))../ && \
	./debian/bootstrap.sh
