#!/usr/bin/make -f

export INSTALL_PATH = /usr/share/bazel/tools
export DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

REMOTE_JDK_FLAGS = $(foreach ver,8 11 17 21,$(foreach plat,linux linux_aarch64 linux_ppc64le linux_s390x linux_riscv64 linux_loongarch64 linux_loong64 linux_mips64el linux_arm,$(foreach prefix,remotejdk remote_jdk,--override_repository=rules_java~~toolchains~$(prefix)$(ver)_$(plat)=$(CURDIR)/debian/mock_repos/local_jdk --override_repository=$(prefix)$(ver)_$(plat)=$(CURDIR)/debian/mock_repos/local_jdk)))

%:
	dh $@

override_dh_auto_build:
	# Compile proto locally
	mkdir -p src/main/java/com/google/devtools/build/lib/starlarkdocextract
	protoc --java_out=src/main/java stardoc/proto/stardoc_output.proto
	echo 'load("@rules_java//java:defs.bzl", "java_library")' > src/main/java/com/google/devtools/build/lib/starlarkdocextract/BUILD
	echo 'java_library(name = "starlarkdocextract_java_proto", srcs = ["StardocOutputProtos.java"], visibility = ["//visibility:public"], deps = ["@com_google_protobuf//:protobuf_java"])' >> src/main/java/com/google/devtools/build/lib/starlarkdocextract/BUILD

	# Create symlinks for mock repos
	mkdir -p debian/mock_repos/stardoc_maven
	ln -sf /usr/share/java/jcommander.jar debian/mock_repos/stardoc_maven/jcommander.jar
	ln -sf /usr/share/java/guava.jar debian/mock_repos/stardoc_maven/guava.jar
	ln -sf /usr/share/java/escapevelocity.jar debian/mock_repos/stardoc_maven/escapevelocity.jar
	ln -sf /usr/share/java/truth.jar debian/mock_repos/stardoc_maven/truth.jar
	ln -sf /usr/share/java/junit4.jar debian/mock_repos/stardoc_maven/junit4.jar

	# Create symlinks for mock protobuf module
	ln -sf /usr/share/java/protobuf.jar debian/mock_modules/protobuf/protobuf-java.jar

	# Build the renderer
	bazel build \
		$(REMOTE_JDK_FLAGS) \
		--override_repository=rules_java~~toolchains~remote_java_tools=/usr/lib/$(DEB_HOST_MULTIARCH)/bazel/java_tools \
		--override_repository=rules_java~~toolchains~remote_java_tools_linux=/usr/lib/$(DEB_HOST_MULTIARCH)/bazel/java_tools \
		--override_repository=rules_jvm_external~~maven~stardoc_maven=$(CURDIR)/debian/mock_repos/stardoc_maven \
		--override_module=rules_jvm_external=$(CURDIR)/debian/mock_modules/rules_jvm_external \
		--override_module=buildozer=$(CURDIR)/debian/mock_modules/buildozer \
		--override_module=zlib=$(CURDIR)/debian/mock_modules/zlib \
		--override_module=apple_support=$(CURDIR)/debian/mock_modules/apple_support \
		--override_module=protobuf=$(CURDIR)/debian/mock_modules/protobuf \
		--override_module=rules_pkg=/usr/share/bazel/rules/pkg \
		--override_module=rules_shell=/usr/share/bazel/rules/shell \
		--java_runtime_version=local_jdk \
		--tool_java_runtime_version=local_jdk \
		--javabase=@bazel_tools//tools/jdk:local_jdk \
		--host_javabase=@bazel_tools//tools/jdk:local_jdk \
		--java_header_compilation=false \
		--strategy=Javac=local \
		//src/main/java/com/google/devtools/build/stardoc/renderer:renderer_deploy.jar

	# Copy the built jar to debian/ for installation
	cp bazel-bin/src/main/java/com/google/devtools/build/stardoc/renderer/renderer_deploy.jar renderer_prebuilt.jar
	chmod 644 renderer_prebuilt.jar

override_dh_auto_install:

execute_before_dh_auto_clean:
	rm -rf /tmp/bazel-debian-build
	rm -rf src/main/java/com/google/devtools/build/lib/starlarkdocextract

	find debian/mock_repos/stardoc_maven -type l -delete || true
	rm -f debian/mock_modules/protobuf/protobuf-java.jar
