#!/usr/bin/make -f
# Sample debian/rules that uses debhelper. 
# GNU copyright 1997 by Joey Hess.
#
# This version is for a hypothetical package that builds an
# architecture-dependant package, as well as an architecture-independent
# package.

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

# This is the debhelper compatibility version to use.
export DH_COMPAT=3

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

export PERL_MM_OPT=INSTALLDIRS=vendor

ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -g
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
	INSTALL_PROGRAM += -s
endif

config.status: configure
	dh_testdir
	# Add here commands to configure the package.
	make -f Makefile.devel force-auto-files
	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info \
		--prefix=/usr \
		--enable-ocspd \
		--with-etc-prefix=/etc/openca \
		--with-lib-prefix=/usr/share/openca \
		--with-var-prefix=/var/lib/openca \
		--with-httpd-fs-prefix=/usr/share/openca \
		--with-httpd-user=www-data \
		--with-httpd-group=www-data \
		--enable-package-build \
		--disable-external-modules \
		--with-web-host=www.example.com
	touch config.status

build-arch:  config.status build-arch-stamp
build-arch-stamp:
	dh_testdir

	$(MAKE)

	touch build-arch-stamp

build-indep: config.status  build-indep-stamp
build-indep-stamp:
	dh_testdir

	## $(MAKE) without doc works too
	$(MAKE) doc

	touch build-indep-stamp

build: build-arch build-indep

clean:
	dh_testdir
	dh_testroot
	rm -f build-stamp  build-arch-stamp build-indep-stamp

	# Add here commands to clean up after the build process.
	#-$(MAKE) clean
	rm -f config.status src/modules/openca-sv/config.status
	#-test -r /usr/share/misc/config.sub && \
	#  cp -f /usr/share/misc/config.sub config.sub
	#-test -r /usr/share/misc/config.guess && \
	#  cp -f /usr/share/misc/config.guess config.guess

	dh_clean

install: DH_OPTIONS=
install: build
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	# Add here commands to install the package into debian/openca-*.
	$(MAKE) install-common DESTDIR=$(CURDIR)/debian/openca-common
	$(MAKE) -C src/modules install DESTDIR=$(CURDIR)/debian/openca-common
	$(MAKE) -C src/openca-sv install DESTDIR=$(CURDIR)/debian/openca-common
	$(MAKE) -C src/ocspd install DESTDIR=$(CURDIR)/debian/openca-common sysconfdir=$(CURDIR)/debian/openca-common/etc/
	# remove this since the init scripts will be installed by the deb package
	rm $(CURDIR)/debian/openca-common/etc/init.d/rcd.ocspd
	# these files should not be overwritten, but created on initial install
	rm debian/openca-common/var/lib/openca/crypto/index.txt
	rm debian/openca-common/var/lib/openca/crypto/serial
	$(MAKE) install-ldap DESTDIR=$(CURDIR)/debian/openca-ldap 
	$(MAKE) install-pub DESTDIR=$(CURDIR)/debian/openca-pub
	$(MAKE) install-doc DESTDIR=$(CURDIR)/debian/openca-doc
	$(MAKE) install-ca DESTDIR=$(CURDIR)/debian/openca-ca
	$(MAKE) install-node DESTDIR=$(CURDIR)/debian/openca-node
	$(MAKE) install-ra DESTDIR=$(CURDIR)/debian/openca-ra

notdoneanymore:
	########################################
	# Replace config files with *.in files #
	########################################
	mkdir -p debian/tmp/etc/openca/openssl/extfiles.in
	mkdir -p debian/tmp/etc/openca/openssl/openssl.in

	# /etc/openca/openssl/extfiles/*
	find debian/tmp/etc/openca/openssl/extfiles -type f -maxdepth 1 | xargs rm -f
	install -m644 src/conf/openssl/extfiles/*.in debian/tmp/etc/openca/openssl/extfiles.in

	# /etc/openca/openssl/openssl/*
	find debian/tmp/etc/openca/openssl/openssl -type f -maxdepth 1 | xargs rm -f
	install -m644 src/conf/openssl/openssl/*.in debian/tmp/etc/openca/openssl/openssl.in
	
	# /etc/openca/openssl/*
	find debian/tmp/etc/openca/openssl -type f -maxdepth 1 | xargs rm -f
	install -m644 src/conf/openssl/*.in debian/tmp/etc/openca/openssl
	install -m644 src/conf/openssl/ca-openssl.cnf.in debian/tmp/etc/openca/openssl/openssl.cnf.in

	# /etc/openca/servers/*
	find debian/tmp/etc/openca/servers -type f -maxdepth 1 | xargs rm -f
	install -m644 src/cgi-bin/cgi-ca/conf/*.in debian/tmp/etc/openca/servers
	install -m644 src/cgi-bin/cgi-raserver/conf/raserver.conf.in debian/tmp/etc/openca/servers/ra.conf.in
	install -m644 src/cgi-bin/cgi-public/conf/public.conf.in debian/tmp/etc/openca/servers/pub.conf.in
	install -m644 src/cgi-bin/cgi-ldap/conf/ldap.conf.in debian/tmp/etc/openca/servers/ldap.conf.in
	install -m644 src/cgi-bin/cgi-online/conf/online.conf.in debian/tmp/etc/openca/servers/online.conf.in
	
	# /etc/openca/rbac
	mv debian/tmp/etc/openca/rbac debian/tmp/etc/openca/rbac.in

	# /usr/share/openca/servers/ra/certsMail.txt
	rm -f debian/tmp/usr/share/openca/servers/ra/certsMail.txt
	install -m644 src/cgi-bin/txt/certsMail.txt.in debian/tmp/usr/share/openca/servers/ra/certsMail.txt

	# actual configuration
	install -m644 debian/config debian/tmp/etc/openca/config
	install -m755 debian/install_config debian/tmp/etc/openca/install_config

	############################
	# move files into packages #
	############################
	dh_movefiles
	#find debian/openca-common -type d -empty | xargs rmdir -p --ignore-fail-on-non-empty

	###########################
	# add missing directories #
	###########################
	mkdir -p debian/openca-common/etc/openca/openssl/openssl
	mkdir -p debian/openca-common/etc/openca/openssl/extfiles
	mkdir -p debian/openca-common/var/lib/openca/db
	mkdir -p debian/openca-common/var/lib/openca/tmp
	mkdir -p debian/openca-common/var/lib/openca/crypto/keys
	mkdir -p debian/openca-common/var/lib/openca/crypto/cacerts
	mkdir -p debian/openca-common/var/lib/openca/crypto/certs
	mkdir -p debian/openca-common/var/lib/openca/crypto/reqs
	mkdir -p debian/openca-common/var/lib/openca/crypto/crls

# Build architecture-independent files here.
# Pass -i to all debhelper commands in this target to reduce clutter.
binary-indep: build install
	dh_testdir -i
	dh_testroot -i
#	dh_installdebconf -i
	dh_installdocs -i
	dh_installexamples -i
	dh_installmenu -i
#	dh_installlogrotate -i
#	dh_installemacsen -i
#	dh_installpam -i
#	dh_installmime -i
	dh_installinit -i
	dh_installcron -i
#	dh_installman -i
	dh_installinfo -i
#	dh_undocumented -i
	dh_installchangelogs -i
	dh_link -i
	dh_compress -i
#	find debian -ls > /tmp/list
	dh_fixperms -i
	find debian/openca-*/var/lib/openca -type d | xargs chown www-data:www-data
	find debian/openca-*/var/lib/openca -type d | xargs chmod 750
	dh_installdeb -i
	dh_perl -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir -a
	dh_testroot -a
#	dh_installdebconf -a
	dh_installdocs -a
	dh_installexamples -a
	dh_installmenu -a
#	dh_installlogrotate -a
#	dh_installemacsen -a
#	dh_installpam -a
#	dh_installmime -a
	dh_installinit -a
	dh_installcron -a
#	dh_installman -a
	dh_installinfo -a
#	dh_undocumented -a
	dh_installchangelogs -a
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a
	chown www-data:www-data debian/openca-common/etc/openca/rbac/cmds/*
	chown www-data:www-data debian/openca-common/etc/openca/rbac/*
	chown www-data:www-data debian/openca-common/etc/openca/rbac
	find debian/openca-common/var/lib/openca -type d | xargs chown www-data:www-data
	find debian/openca-common/var/lib/openca -type d | xargs chmod 750
	find debian/openca-common/var/lib/openca -type f | xargs chown www-data:www-data
	find debian/openca-common/var/lib/openca -type f | xargs chmod 640
#	dh_makeshlibs -a
	dh_installdeb -a
	dh_perl -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install 
