#!/usr/bin/make -f

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

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

VER :=  $(shell dpkg-parsechangelog | sed -n 's/^Version: *\(.*\)-.*$$/\1/ p' | sed -e 's/~.*//')

DEB_BUILD_ARCH = $(shell dpkg-architecture -q DEB_BUILD_ARCH)
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(DEB_BUILD_ARCH)
PKI_JAVA_HOME=debian/tmp/usr/share/pki/java-home
CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
export CFLAGS += -I/usr/include/nss $(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS)
export CXXFLAGS += -I/usr/include/nss -I/usr/include/apr-1.0 $(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS)
export LDFLAGS += $(shell dpkg-buildflags --get LDFLAGS)
DEB_BUILD_DIR ?= $(CURDIR)/build

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	MAKE_FLAGS += -j$(NUMJOBS)
endif

CONFIGS = core

STAMP_DIR = debian/stamp
STAMP = $(STAMP_DIR)/$(DEB_BUILD_GNU_TYPE)
BUILD_STAMPS = $(addprefix $(STAMP)-build-, $(CONFIGS))

confflags = 

confflags-core = \
	-DJAVA_HOME=$(JAVA_HOME) \
	-DVERSION=$(VER) \
	-DSYSTEMD_LIB_INSTALL_DIR=/lib/systemd/system \
	-DVAR_INSTALL_DIR:PATH=/var \
	-DRESTEASY_LIB=/usr/share/java/ \
	-DPKI_CERTSRV_JAR=$(DEB_BUILD_DIR)/core/dist/pki-certsrv.jar \
	-DPKI_CMS_JAR=$(DEB_BUILD_DIR)/core/dist/pki-cms.jar \
	-DPKI_CMSBUNDLE_JAR=$(DEB_BUILD_DIR)/core/dist/pki-cmsbundle.jar \
	-DPKI_CMSCORE_JAR=$(DEB_BUILD_DIR)/core/dist/pki-cmscore.jar \
	-DPKI_CMSUTIL_JAR=$(DEB_BUILD_DIR)/core/dist/pki-cmsutil.jar \
	-DPKI_NSS_DB_TYPE=sql \
	-DPKI_NSUTIL_JAR=$(DEB_BUILD_DIR)/core/dist/pki-nsutil.jar \
	-DBUILD_PKI_CORE:BOOL=ON \
	-DAPP_SERVER=tomcat-8.5 \
	-DBUILD_PKI_CONSOLE:BOOL=ON \
	-DBUILD_DOGTAG_PKI_THEME:BOOL=ON \

%:
	dh $@ --parallel --with javahelper,python2,python3,systemd,apache2 --builddirectory=build/

override_dh_auto_clean:
	rm -rf $(CURDIR)/build
	rm -f $(CURDIR)/base/common/python/pki/*.pyc

override_dh_auto_configure:

build-stamp: $(BUILD_STAMPS)
	>$@

$(STAMP)-build-%:
	mkdir -p $(DEB_BUILD_DIR)/$*
	cd $(DEB_BUILD_DIR)/$* && \
	cmake -DCMAKE_INSTALL_PREFIX=/usr \
		-DSYSCONF_INSTALL_DIR:PATH=/etc \
		-DVAR_INSTALL_DIR:PATH=/var \
		-DJAVA_LIB_INSTALL_DIR=/usr/share/java \
		$(confflags-$*) \
		../../
	cd $(DEB_BUILD_DIR)/$* && make VERBOSE=1 $(MAKE_FLAGS)

override_dh_auto_build: build-stamp

override_dh_auto_install:
	set -e; for config in $(CONFIGS); do \
		make -C $(DEB_BUILD_DIR)/$$config DESTDIR=$(CURDIR)/debian/tmp install; \
	done

	find $(CURDIR)/debian/tmp/usr/share/pki -name '*.cgi' -exec chmod 755 '{}' ';'
	find $(CURDIR)/debian/tmp/usr/share/pki -name '*.pl' -exec chmod 755 '{}' ';'
	find $(CURDIR)/debian/tmp/lib/systemd -exec chmod 644 '{}' ';'

override_dh_installinit:
	dh_installinit -ppki-server --name=pki-tomcatd --error-handler=invoke_failure

override_dh_systemd_enable:
	dh_systemd_enable -ppki-server --no-enable pki-tomcatd@.service
	dh_systemd_enable -ppki-server --no-enable pki-tomcatd-nuxwdog@.service

override_dh_install:
	# we don't use these
	rm -rf $(CURDIR)/debian/tmp/etc/rc.d

	# tpsclient hasn't been ported to java yet
	rm -rf $(CURDIR)/debian/tmp/lib/systemd/system/pki-tpsd* \
		$(CURDIR)/debian/tmp/usr/lib/httpd/modules/mod_tps.so \
		$(CURDIR)/debian/tmp/usr/lib/httpd/modules/mod_tokendb.so \
		$(CURDIR)/debian/tmp/usr/lib/tps/libldapauth.so \
		$(CURDIR)/debian/tmp/usr/share/pki/tps/cgi-bin \
		$(CURDIR)/debian/tmp/usr/share/pki/tps/docroot \
		$(CURDIR)/debian/tmp/usr/share/pki/tps/lib \
		$(CURDIR)/debian/tmp/usr/share/pki/tps/scripts \
		$(CURDIR)/debian/tmp/usr/share/pki/tps/samples

	# not needed since we don't ship any binary applets
	rm -rf $(CURDIR)/debian/tmp/usr/share/pki/tps/applets

	ln -sf /usr/share/java/jboss-logging.jar $(CURDIR)/debian/tmp/usr/share/pki/lib/jboss-logging.jar
	ln -sf /usr/share/java/jboss-logging.jar $(CURDIR)/debian/tmp/usr/share/pki/server/common/lib/jboss-logging.jar

	# use our own symlink to the arch-dependent java dir
	ln -sf $(JAVA_HOME) $(PKI_JAVA_HOME)
	sed -i 's/lib\/jvm\/java-8-openjdk.*/share\/pki\/java-home/' \
		debian/tmp/usr/share/pki/etc/pki.conf

	rm -f $(CURDIR)/debian/tmp/usr/share/pki/lib/resteasy-jaxrs-jandex.jar

	dh_install

override_dh_missing:
	dh_missing --fail-missing

get-orig-source: SOURCE=dogtag-pki
get-orig-source: UV=$(shell dpkg-parsechangelog|awk '/^Version:/ {print $$2}'|sed 's/-.*$$//')
get-orig-source:
	tar --transform 's,^,$(SOURCE)-$(UV)/,' \
		--exclude 'debian' --exclude-vcs \
		-cJf ../$(SOURCE)_$(UV).orig.tar.xz .
