#!/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/~.*//')

JAVA_HOME=/usr/lib/jvm/default-java
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 \
	  console \
	  dogtag-pki-theme

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

confflags = 

confflags-common = $(confflags) \
	-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_NSUTIL_JAR=$(DEB_BUILD_DIR)/core/dist/pki-nsutil.jar \
	-DHTTPCLIENT_JAR=/usr/share/java/httpclient.jar \
	-DHTTPCORE_JAR=/usr/share/java/httpcore.jar \
	-DTOMCAT_CATALINA_JAR=/usr/share/java/tomcat-catalina.jar \
	-DTOMCAT_UTIL_JAR=/usr/share/java/tomcat-util.jar \

confflags-core = \
	-DBUILD_PKI_CORE:BOOL=ON \
	-DAPACHE_COMMONS_CLI_JAR=/usr/share/java/commons-cli.jar \
	-DAPACHE_COMMONS_LANG_JAR=/usr/share/java/commons-lang.jar \
	-DSERVLET_JAR=/usr/share/java/servlet-api-3.0.jar \
	-DXERCES_JAR=/usr/share/java/xercesImpl.jar \
	-DXALAN_JAR=/usr/share/java/xalan2.jar \
	-DWITH_TOMCAT8:BOOL=OFF \
	$(confflags-common)

confflags-console = \
	-DBUILD_PKI_CONSOLE:BOOL=ON \
	$(confflags-common)

confflags-dogtag-pki-theme = \
	-DBUILD_DOGTAG_PKI_THEME:BOOL=ON \
	$(confflags-common)

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

override_dh_auto_clean:
	rm -rf $(CURDIR)/build

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 '{}' ';'

	# Create symlinks for subsystem libraries
	for subsys in ca kra ocsp tks tps; do \
		mkdir -p $(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-nsutil.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-cmsutil.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-certsrv.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-cms.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-cmscore.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-cmsbundle.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
		ln -s /usr/share/java/pki/pki-$$subsys.jar \
			$(CURDIR)/debian/tmp/usr/share/pki/$$subsys/webapps/$$subsys/WEB-INF/lib ;\
	done

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

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

	dh_install --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 .
