#!/usr/bin/make -f

# Start build by executing:
# $ debuild --prepend-path /usr/local/bin --no-tgz-check -us -uc

# Uncomment this line out to make installation process more chatty.
# Keep it on until we know there's no outstanding problems with installation.
# export DH_VERBOSE=1

# There's a bug here
export DEB_BUILD_MAINT_OPTIONS=hardening=-format
export http_proxy=127.0.0.1:9
export https_proxy=127.0.0.1:9

include /usr/share/dpkg/buildflags.mk


DB2MAN = /usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl
XP     = xsltproc --nonet --param man.charmap.use.subset "0"

cvd.1: debian/cvd.1.xml
	$(XP) $(DB2MAN) $<

cf_defaults.1: debian/cf_defaults.1.xml
	$(XP) $(DB2MAN) $<

%:
	dh $@ --with=config-package

override_dh_installinit:
	dh_installinit --name=cuttlefish-host-resources
	dh_installinit

override_dh_installsystemd:
	dh_installsystemd --name=cuttlefish-host-resources
	dh_installsystemd

override_dh_auto_build: cvd.1 cf_defaults.1
	echo "#WORKSPACE" > $(CURDIR)/base/cvd/WORKSPACE
	mkdir -p $(CURDIR)/debian/bazel_cache1
	mkdir -p $(CURDIR)/debian/bazel_cache2
	mkdir -p $(CURDIR)/debian/mock_repos/googleapis/google/rpc
	ln -sf /usr/lib/python3/dist-packages/google/rpc/status.proto $(CURDIR)/debian/mock_repos/googleapis/google/rpc/status.proto
	ln -sf /usr/lib/python3/dist-packages/google/rpc/code.proto $(CURDIR)/debian/mock_repos/googleapis/google/rpc/code.proto
	cd base/cvd && \
	env HOME=$(CURDIR)/debian/bazel_cache2 bazel build --linkopt="-Wl,--build-id=sha1" --spawn_strategy=local \
		--verbose_failures \
		--sandbox_debug \
		--repository_cache=$(CURDIR)/debian/bazel_cache1 \
		--strip=never \
		--copt="-g" \
		--copt="-isystem/usr/include/jsoncpp" \
		--copt="-isystem/usr/include/libxml2" \
		--copt="-isystem/usr/include/freetype2" \
		--copt="-isystem/usr/include/libpng16" \
		--copt="-isystem/usr/include/android" \
		--copt="-isystem/usr/include/libdrm" \
		--linkopt="-L/usr/lib/$(DEB_HOST_MULTIARCH)/android" \
		--linkopt="-Wl,-rpath,/usr/lib/$(DEB_HOST_MULTIARCH)/android" \
		--linkopt="-z muldefs" \
		--noenable_workspace \
		--registry=file://$(CURDIR)/debian/mock_repos \
		--check_direct_dependencies=off \
		--override_module=abseil-cpp=$(CURDIR)/debian/mock_repos/abseil-cpp \
		--override_module=apple_support=$(CURDIR)/debian/mock_repos/apple_support \
		--override_module=aspect_bazel_lib=$(CURDIR)/debian/mock_repos/aspect_bazel_lib \
		--override_module=aspect_rules_lint=$(CURDIR)/debian/mock_repos/aspect_rules_lint \
		--override_module=boringssl=$(CURDIR)/debian/mock_repos/boringssl \
		--override_module=brotli=$(CURDIR)/debian/mock_repos/brotli \
		--override_module=buildozer=$(CURDIR)/debian/mock_repos/buildozer \
		--override_module=bzip2=$(CURDIR)/debian/mock_repos/bzip2 \
		--override_module=c-ares=$(CURDIR)/debian/mock_repos/c-ares \
		--override_module=crc32c=$(CURDIR)/debian/mock_repos/crc32c \
		--override_module=curl=$(CURDIR)/debian/mock_repos/curl \
		--override_module=cxx.rs=$(CURDIR)/debian/mock_repos/cxx.rs \
		--override_module=fmt=$(CURDIR)/debian/mock_repos/fmt \
		--override_module=freetype=$(CURDIR)/debian/mock_repos/freetype \
		--override_module=gflags=$(CURDIR)/debian/mock_repos/gflags \
		--override_module=googleapis=$(CURDIR)/debian/mock_repos/googleapis \
		--override_module=googleapis-cc=$(CURDIR)/debian/mock_repos/googleapis-cc \
		--override_module=googletest=$(CURDIR)/debian/mock_repos/googletest \
		--override_module=grpc=$(CURDIR)/debian/mock_repos/grpc \
		--override_module=grpc-proto=$(CURDIR)/debian/mock_repos/grpc-proto \
		--override_module=hedron_compile_commands=$(CURDIR)/debian/mock_repos/hedron_compile_commands \
		--override_module=icu=$(CURDIR)/debian/mock_repos/icu \
		--override_module=jsoncpp=$(CURDIR)/debian/mock_repos/jsoncpp \
		--override_module=libarchive=$(CURDIR)/debian/mock_repos/libarchive \
		--override_module=libevent=$(CURDIR)/debian/mock_repos/libevent \
		--override_module=libjpeg_turbo=$(CURDIR)/debian/mock_repos/libjpeg_turbo \
		--override_module=libpng=$(CURDIR)/debian/mock_repos/libpng \
		--override_module=libuuid=$(CURDIR)/debian/mock_repos/libuuid \
		--override_module=libxml2=$(CURDIR)/debian/mock_repos/libxml2 \
		--override_module=libzip=$(CURDIR)/debian/mock_repos/libzip \
		--override_module=lz4=$(CURDIR)/debian/mock_repos/lz4 \
		--override_module=nasm=$(CURDIR)/debian/mock_repos/nasm \
		--override_module=pcre2=$(CURDIR)/debian/mock_repos/pcre2 \
		--override_module=protobuf=$(CURDIR)/debian/mock_repos/protobuf \
		--override_module=re2=$(CURDIR)/debian/mock_repos/re2 \
		--override_module=rootcanal=$(CURDIR)/debian/mock_repos/rootcanal \
		--override_module=rules_flex=$(CURDIR)/debian/mock_repos/rules_flex \
		--override_module=rules_foreign_cc=$(CURDIR)/debian/mock_repos/rules_foreign_cc \
		--override_module=rules_m4=$(CURDIR)/debian/mock_repos/rules_m4 \
		--override_module=rules_nodejs=$(CURDIR)/debian/mock_repos/rules_nodejs \
		--override_module=rules_proto_grpc_cpp=$(CURDIR)/debian/mock_repos/rules_proto_grpc_cpp \
		--override_module=rules_proto_grpc_go=$(CURDIR)/debian/mock_repos/rules_proto_grpc_go \
		--override_module=rules_rust=$(CURDIR)/debian/mock_repos/rules_rust \
		--override_module=rules_shell=/usr/share/bazel/rules/shell \
		--override_repository=_main~_repo_rules~android_system_core=$(CURDIR)/debian/mock_repos/android_system_core \
		--override_repository=android_system_core=$(CURDIR)/debian/mock_repos/android_system_core \
		--override_repository=_main~_repo_rules~android_system_extras=$(CURDIR)/debian/mock_repos/android_system_extras \
		--override_repository=android_system_extras=$(CURDIR)/debian/mock_repos/android_system_extras \
		--override_repository=_main~_repo_rules~android_tools_netsim=$(CURDIR)/debian/mock_repos/android_tools_netsim \
		--override_repository=android_tools_netsim=$(CURDIR)/debian/mock_repos/android_tools_netsim \
		--override_repository=_main~_repo_rules~arm_optimized_routines=$(CURDIR)/debian/mock_repos/arm_optimized_routines \
		--override_repository=arm_optimized_routines=$(CURDIR)/debian/mock_repos/arm_optimized_routines \
		--override_repository=_main~_repo_rules~avb=$(CURDIR)/debian/mock_repos/avb \
		--override_repository=avb=$(CURDIR)/debian/mock_repos/avb \
		--override_repository=_main~_repo_rules~casimir=$(CURDIR)/debian/mock_repos/casimir \
		--override_repository=casimir=$(CURDIR)/debian/mock_repos/casimir \
		--override_repository=_main~_repo_rules~crosvm=$(CURDIR)/debian/mock_repos/crosvm \
		--override_repository=crosvm=$(CURDIR)/debian/mock_repos/crosvm \
		--override_module=dosfstools=$(CURDIR)/debian/mock_repos/dosfstools \
		--override_module=e2fsprogs=$(CURDIR)/debian/mock_repos/e2fsprogs \
		--override_repository=_main~_repo_rules~egl_headers=$(CURDIR)/debian/mock_repos/egl_headers \
		--override_repository=egl_headers=$(CURDIR)/debian/mock_repos/egl_headers \
		--override_repository=_main~_repo_rules~expat=$(CURDIR)/debian/mock_repos/expat \
		--override_repository=expat=$(CURDIR)/debian/mock_repos/expat \
		--override_repository=_main~_repo_rules~f2fs_tools=$(CURDIR)/debian/mock_repos/f2fs_tools \
		--override_repository=f2fs_tools=$(CURDIR)/debian/mock_repos/f2fs_tools \
		--override_repository=_main~_repo_rules~fec_rs=$(CURDIR)/debian/mock_repos/fec_rs \
		--override_repository=fec_rs=$(CURDIR)/debian/mock_repos/fec_rs \
		--override_module=fruit=$(CURDIR)/debian/mock_repos/fruit \
		--override_repository=_main~_repo_rules~gfxstream=$(CURDIR)/debian/mock_repos/gfxstream \
		--override_repository=gfxstream=$(CURDIR)/debian/mock_repos/gfxstream \
		--override_module=libcbor=$(CURDIR)/debian/mock_repos/libcbor \
		--override_repository=_main~_repo_rules~libconfig=$(CURDIR)/debian/mock_repos/libconfig \
		--override_repository=libconfig=$(CURDIR)/debian/mock_repos/libconfig \
		--override_repository=_main~_repo_rules~libdrm=$(CURDIR)/debian/mock_repos/libdrm \
		--override_repository=libdrm=$(CURDIR)/debian/mock_repos/libdrm \
		--override_repository=_main~_repo_rules~libeigen=$(CURDIR)/debian/mock_repos/libeigen \
		--override_repository=libeigen=$(CURDIR)/debian/mock_repos/libeigen \
		--override_module=libffi=$(CURDIR)/debian/mock_repos/libffi \
		--override_repository=_main~_repo_rules~libnl=$(CURDIR)/debian/mock_repos/libnl \
		--override_repository=libnl=$(CURDIR)/debian/mock_repos/libnl \
		--override_repository=_main~_repo_rules~libopenscreen=$(CURDIR)/debian/mock_repos/libopenscreen \
		--override_repository=libopenscreen=$(CURDIR)/debian/mock_repos/libopenscreen \
		--override_repository=_main~_repo_rules~libpffft=$(CURDIR)/debian/mock_repos/libpffft \
		--override_repository=libpffft=$(CURDIR)/debian/mock_repos/libpffft \
		--override_module=libsrtp2=$(CURDIR)/debian/mock_repos/libsrtp2 \
		--override_repository=_main~_repo_rules~libusb=$(CURDIR)/debian/mock_repos/libusb \
		--override_repository=libusb=$(CURDIR)/debian/mock_repos/libusb \
		--override_repository=_main~_repo_rules~libvpx=$(CURDIR)/debian/mock_repos/libvpx \
		--override_repository=libvpx=$(CURDIR)/debian/mock_repos/libvpx \
		--override_repository=_main~_repo_rules~libwebm=$(CURDIR)/debian/mock_repos/libwebm \
		--override_repository=libwebm=$(CURDIR)/debian/mock_repos/libwebm \
		--override_repository=_main~_repo_rules~libwebrtc=$(CURDIR)/debian/mock_repos/libwebrtc \
		--override_repository=libwebrtc=$(CURDIR)/debian/mock_repos/libwebrtc \
		--override_module=libwebsockets=$(CURDIR)/debian/mock_repos/libwebsockets \
		--override_repository=_main~_repo_rules~libyuv=$(CURDIR)/debian/mock_repos/libyuv \
		--override_repository=libyuv=$(CURDIR)/debian/mock_repos/libyuv \
		--override_repository=_main~_repo_rules~mako=$(CURDIR)/debian/mock_repos/mako \
		--override_repository=mako=$(CURDIR)/debian/mock_repos/mako \
		--override_repository=_main~_repo_rules~markupsafe=$(CURDIR)/debian/mock_repos/markupsafe \
		--override_repository=markupsafe=$(CURDIR)/debian/mock_repos/markupsafe \
		--override_repository=_main~_repo_rules~mesa=$(CURDIR)/debian/mock_repos/mesa \
		--override_repository=mesa=$(CURDIR)/debian/mock_repos/mesa \
		--override_repository=_main~_repo_rules~mkbootimg=$(CURDIR)/debian/mock_repos/mkbootimg \
		--override_repository=mkbootimg=$(CURDIR)/debian/mock_repos/mkbootimg \
		--override_repository=_main~_repo_rules~ms-tpm-20-ref=$(CURDIR)/debian/mock_repos/ms-tpm-20-ref \
		--override_repository=ms-tpm-20-ref=$(CURDIR)/debian/mock_repos/ms-tpm-20-ref \
		--override_module=mtools=$(CURDIR)/debian/mock_repos/mtools \
		--override_repository=_main~_repo_rules~opengl_headers=$(CURDIR)/debian/mock_repos/opengl_headers \
		--override_repository=opengl_headers=$(CURDIR)/debian/mock_repos/opengl_headers \
		--override_repository=_main~_repo_rules~pyyaml=$(CURDIR)/debian/mock_repos/pyyaml \
		--override_repository=pyyaml=$(CURDIR)/debian/mock_repos/pyyaml \
		--override_repository=_main~_repo_rules~selinux=$(CURDIR)/debian/mock_repos/selinux \
		--override_repository=selinux=$(CURDIR)/debian/mock_repos/selinux \
		--override_repository=_main~_repo_rules~spirv_headers=$(CURDIR)/debian/mock_repos/spirv_headers \
		--override_repository=spirv_headers=$(CURDIR)/debian/mock_repos/spirv_headers \
		--override_repository=_main~_repo_rules~spirv_tools=$(CURDIR)/debian/mock_repos/spirv_tools \
		--override_repository=spirv_tools=$(CURDIR)/debian/mock_repos/spirv_tools \
		--override_repository=_main~_repo_rules~swiftshader=$(CURDIR)/debian/mock_repos/swiftshader \
		--override_repository=swiftshader=$(CURDIR)/debian/mock_repos/swiftshader \
		--override_repository=_main~_repo_rules~vulkan_headers=$(CURDIR)/debian/mock_repos/vulkan_headers \
		--override_repository=vulkan_headers=$(CURDIR)/debian/mock_repos/vulkan_headers \
		--override_module=wayland=$(CURDIR)/debian/mock_repos/wayland \
		--override_repository=_main~_repo_rules~wmediumd=$(CURDIR)/debian/mock_repos/wmediumd \
		--override_repository=wmediumd=$(CURDIR)/debian/mock_repos/wmediumd \
		--override_module=sandboxed_api=$(CURDIR)/debian/mock_repos/sandboxed_api \
		--override_module=tinyxml2=$(CURDIR)/debian/mock_repos/tinyxml2 \
		--override_module=toolchains_llvm=$(CURDIR)/debian/mock_repos/toolchains_llvm \
		--override_module=xz=$(CURDIR)/debian/mock_repos/xz \
		--override_module=zlib=$(CURDIR)/debian/mock_repos/zlib \
		cuttlefish/host/commands/cvd:cvd \
		cuttlefish/host/commands/cvdalloc:cvdalloc \
		cuttlefish/host/commands/refresh_groups:cvd_refresh_groups \
		cuttlefish/host/commands/defaults:cf_defaults \
		cuttlefish/host/commands/assemble_cvd:assemble_cvd \
		cuttlefish/host/commands/start:cvd_internal_start \
		cuttlefish/host/commands/run_cvd:run_cvd \
		cuttlefish/host/commands/stop:cvd_internal_stop \
		cuttlefish/host/commands/status:cvd_internal_status \
		cuttlefish/host/commands/display:cvd_internal_display \
		cuttlefish/host/commands/host_bugreport:cvd_internal_host_bugreport

	dh_auto_build
	rm -f $(CURDIR)/base/cvd/WORKSPACE

override_dh_auto_clean:
	dh_auto_clean
	rm -f $(CURDIR)/base/cvd/bazel-bin
	rm -f $(CURDIR)/base/cvd/bazel-cvd
	rm -f $(CURDIR)/base/cvd/bazel-out
	rm -f $(CURDIR)/base/cvd/bazel-testlogs
	rm -rf $(CURDIR)/debian/bazel_cache1
	rm -rf $(CURDIR)/debian/bazel_cache2
