#!/usr/bin/make -f

GRADLE_TASKS = assemble startScripts
GRADLE_EXCLUDED_PROJECTS = distributions \
                           internalTesting \
                           internalIntegTesting \
                           internalPerformanceTesting \
                           integTest \
                           performance \
                           smokeTest \
                           soak
export GRADLE_VERSION = $(shell cat version.txt)

# For building Gradle 4 using Gradle 3
GRADLE_COMPAT_BUILDSRC_SOURCE = \
  subprojects/core-api/src/main/java/org/gradle/api/file/Directory.java \
  subprojects/core-api/src/main/java/org/gradle/api/file/DirectoryProperty.java \
  subprojects/core-api/src/main/java/org/gradle/api/file/FileSystemLocation.java \
  subprojects/core-api/src/main/java/org/gradle/api/file/RegularFile.java \
  subprojects/core-api/src/main/java/org/gradle/api/file/RegularFileProperty.java \
  subprojects/core-api/src/main/java/org/gradle/api/NonNullApi.java \
  subprojects/core-api/src/main/java/org/gradle/api/provider/Property.java \
  subprojects/core-api/src/main/java/org/gradle/api/provider/Provider.java \
  subprojects/core/src/main/java/org/gradle/api/internal/file/TaskFileVarFactory.java \

# 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.
GRADLE_FLAGS = --project-prop finalRelease=true --offline --stacktrace \
               --gradle-user-home debian/.gradlehome --no-daemon \
               -Dgradle-debian-helper.hook.enabled=false \
               $(patsubst %,-x :%:assemble,$(GRADLE_EXCLUDED_PROJECTS))

# 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:
	$(RM) gradle.properties # Some properties here breaks the latest JVM
	mkdir --parents buildSrc/src/main/java/tmp # Symlinks are for building Gradle 4 using Gradle 3
	ln --symbolic --force --target-directory=buildSrc/src/main/java/tmp/ $(patsubst %,../../../../../%,$(GRADLE_COMPAT_BUILDSRC_SOURCE))
	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

# 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
