#!/usr/bin/make -f
# -*- makefile -*-

# Uncomment this to turn on verbose mode.
# export DH_VERBOSE=1

export LC_ALL=en_US.UTF-8

# This has to be exported to make some magic below work.
export DH_OPTIONS

# enable dpkg build flags
# disable full hardening for now
# export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk

export LD_LIBRARY_PATH  := $(CURDIR)/cpp/lib/$(DEB_HOST_MULTIARCH):$(LD_LIBRARY_PATH)
export JAVA_HOME=/usr/lib/jvm/default-java
export GRADLE		= gradle
export GRADLEOPTS	= --gradle-user-home $(CURDIR)/.gradle \
			  --info \
			  --console plain \
			  --offline \
			  --stacktrace \
			  --no-daemon \
			  --refresh-dependencies \
			  -PicegridguiProguard=false \
			  -PjgoodiesLooksVersion=debian \
			  -PjgoodiesFormsVersion=debian \
			  -PiceBuilderVersion=debian

#
# These files are not installed with any debian package.
#
INSTALL_EXCLUDE		= usr/lib/$(DEB_HOST_MULTIARCH)/libIceStormService.so

export PYTHONDIR := $(shell python3 -c "import sys;print('python{0}.{1}'.format(sys.version_info.major, sys.version_info.minor))")

PHP_VERSIONS := $(shell /usr/sbin/phpquery -V)

export VERSION   := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's,^\([.0-9]*\).*,\1,')

ifeq ($(DEB_HOST_ARCH_CPU),i386)
export ICEBOX := icebox32
else
export ICEBOX := icebox
endif

ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	OPTIMIZE=yes
endif

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKEFLAGS += -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
else
	PROCESSORS := $(shell cat /proc/cpuinfo | grep processor | wc -l)
	ifneq ($(PROCESSORS),0)
	    MAKEFLAGS += -j$(PROCESSORS)
	endif
endif

DHARGS	= --parallel --with maven_repo_helper --with systemd --with php --with python3 --with javahelper

DESTDIR = $(CURDIR)/debian/tmp
MAKEOPTS = DESTDIR=$(DESTDIR) prefix=/usr OPTIMIZE=$(OPTIMIZE)

ifneq ($(filter notest nocheck,$(DEB_BUILD_OPTIONS)),)
MAKEOPTS += NOTEST=yes
endif

%:
	dh $@ $(DHARGS)

override_dh_auto_build-arch:
	$(MAKE) $(MAKEOPTS) -C cpp
	for v in $(PHP_VERSIONS); do \
	  cp -a php php-$${v}; \
	  PHP_CONFIG=php-config$${v} $(MAKE) $(MAKEOPTS) -C php-$${v}; \
	done
	PYTHON=python3 $(MAKE) $(MAKEOPTS) -C python

override_dh_auto_build-indep:
	$(MAKE) $(MAKEOPTS) -C cpp
ifeq ($(filter notest nocheck,$(DEB_BUILD_OPTIONS)),)
	$(MAKE) $(MAKEOPTS) -C java
else
	$(MAKE) $(MAKEOPTS) -C java dist
endif

override_dh_auto_install-arch:
	$(MAKE) $(MAKEOPTS) -C cpp install
	for v in $(PHP_VERSIONS); do \
	  PHP_CONFIG=php-config$${v} $(MAKE) $(MAKEOPTS) -C php-$${v} install; \
	done
	PYTHON=python3 $(MAKE) $(MAKEOPTS) -C python install
	rm -rf $(addprefix $(DESTDIR)/,$(INSTALL_EXCLUDE))

override_dh_auto_install-indep:
	$(MAKE) $(MAKEOPTS) -C cpp install
	$(MAKE) $(MAKEOPTS) -C java install
	rm -rf $(DESTDIR)/usr/share/java/*-sources.jar
	rm -rf $(addprefix $(DESTDIR)/,$(INSTALL_EXCLUDE))

override_dh_auto_clean-arch:
	$(MAKE) $(MAKEOPTS) -C cpp clean
	for v in $(PHP_VERSIONS); do \
	  rm -rf php-$${v}; \
	done
	PYTHON=python3 $(MAKE) $(MAKEOPTS) -C python clean

override_dh_auto_clean-indep:
	$(MAKE) $(MAKEOPTS) -C cpp clean
        # Don't fail if gradle is not installed
	-$(MAKE) $(MAKEOPTS) -C java clean
	rm -rf java/.gradle
	rm -rf $(CURDIR)/.gradle

override_dh_auto_test-arch:
ifeq ($(filter nocheck notest,$(DEB_BUILD_OPTIONS)),)
	-$(MAKE) $(MAKEOPTS) -C cpp test
endif

override_dh_auto_test-indep:
ifeq ($(filter nocheck notest,$(DEB_BUILD_OPTIONS)),)
	-$(MAKE) $(MAKEOPTS) -C java test
endif

override_dh_clean:
	find . -iname "*.pyc" -exec rm -rf {} \;
	dh_clean

override_dh_systemd_start:
	dh_systemd_start --no-start

override_dh_systemd_enable:
	dh_systemd_enable --name icegridregistry
	dh_systemd_enable --name icegridnode
	dh_systemd_enable --name glacier2router

override_dh_install:
	install -d -m 0755 $(DESTDIR)/usr/bin
	install -m 0755 debian/zeroc-icegridgui.icegridgui $(DESTDIR)/usr/bin/icegridgui
	install -m 0644 debian/zeroc-icegridgui.icegridgui.1 $(DESTDIR)/usr/share/man/man1/icegridgui.1
	install -d -m 0755 $(DESTDIR)/etc/

	install -m 0644 debian/zeroc-glacier2.glacier2router.conf $(DESTDIR)/etc/glacier2router.conf
	install -m 0644 debian/zeroc-icegrid.icegridnode.conf $(DESTDIR)/etc/icegridnode.conf
	install -m 0644 debian/zeroc-icegrid.icegridregistry.conf $(DESTDIR)/etc/icegridregistry.conf

	for slice in $(DESTDIR)/usr/share/Ice-$(VERSION)/icegrid-slice.*.ice.gz; do \
	  gzip -d $${slice}; \
	  gzip -9 -n $${slice%.gz}; \
	done

	dh_install --list-missing -X.pom -XICE_LICENSE -XLICENSE

override_dh_installdocs:
	dh_installdocs -A debian/README

override_mh_install-arch:

override_mh_install-indep:
	mh_install

get-orig-source:
	uscan --download-current-version --rename --force-download
