#!/usr/bin/make -f

export DEB_BUILD_MAINT_OPTIONS=hardening=+all

PREFIX  ?= /opt/symas
ETCFIX  ?= $(PREFIX)/etc
LIBFIX  ?= $(PREFIX)/lib
VARFIX  ?= /var/symas

# Ensure rpath is set correctly
export DEB_LDFLAGS_MAINT_APPEND=-L$(LIBFIX) -Wl,-rpath,$(LIBFIX)
export DEB_CPPFLAGS_MAINT_APPEND=-I$(PREFIX)/include
# For debug builds only, disables hardening
#export DEB_BUILD_OPTIONS=noopt

export XCFLAGS := $(shell dpkg-buildflags --get CFLAGS)

export AUTOMAKE = true

MAKEVARS        := STRIP_OPTS= DEFINES="-DSLAP_SCHEMA_EXPOSE"
CONTRIB_MAKEVARS := prefix=$(PREFIX) libexecdir=$(PREFIX)/lib \
						HEIMDAL_INC='-I$(PREFIX)/include' HEIMDAL_LIB='-L$(LIBFIX) -lkrb5 -lkadm5srv' \
						SSL_INC='-I$(PREFIX)/include' SSL_LIB='-L$(LIBFIX) -lcrypto' \
						etcdir=$(ETCFIX) OPT=-fPIC
CONTRIB_MODULES = allowed autogroup dsaschema datamorph lastbind noopsrch passwd passwd/pbkdf2 ppm rbac smbk5pwd variant authzid alias
installdir      := $(CURDIR)/debian/tmp

%:
	dh $@  --with-systemd

override_dh_auto_configure:
	autoreconf
	./configure --prefix=$(PREFIX) \
	--with-cyrus-sasl \
	--with-tls=openssl \
	--libexecdir=$(LIBFIX) \
	--datadir=$(VARFIX) \
	--sysconfdir=$(ETCFIX) \
	--sharedstatedir=$(ETCFIX) \
	--localstatedir=$(VARFIX) \
	--enable-dynamic \
	--enable-slapd \
	--enable-modules \
	--enable-dynacl \
	--enable-balancer=mod \
	--enable-backends=mod \
		--disable-sql \
		--disable-perl \
		--disable-wt \
	--enable-overlays=mod \
		--disable-seqmod \
	--enable-argon2 \
	--enable-debug \
	--enable-spasswd \
	--enable-crypt \
	--enable-rlookups
	
override_dh_auto_build:
	dh_auto_build -- $(MAKEVARS)
	for overlay in $(CONTRIB_MODULES); do \
		dh_auto_build -Dcontrib/slapd-modules/$$overlay -Bcontrib/slapd-modules/$$overlay -- $(MAKEVARS) $(CONTRIB_MAKEVARS) || exit $$?; \
	done
	dh_auto_build -Dcontrib/slapd-modules/passwd/sha2 -Bcontrib/slapd-modules/passwd/sha2 -- $(MAKEVARS) prefix=$(PREFIX) libexecdir=$(PREFIX)/lib OPT=-fno-strict-aliasing
	dh_auto_build -Dlibraries/liblmdb -Blibraries/liblmdb -- $(MAKEVARS) prefix=$(PREFIX)

override_dh_makeshlibs:
	dh_makeshlibs --no-scripts

override_dh_auto_install:
	dh_installtmpfiles
	dh_auto_install -- $(MAKEVARS)
	for overlay in $(CONTRIB_MODULES); do \
		dh_auto_install -Dcontrib/slapd-modules/$$overlay -Bcontrib/slapd-modules/$$overlay -- $(MAKEVARS) $(CONTRIB_MAKEVARS) || exit $$?; \
	done
	dh_auto_install -Dcontrib/slapd-modules/passwd/sha2 -Bcontrib/slapd-modules/passwd/sha2 -- $(MAKEVARS) prefix=$(PREFIX) libexecdir=$(PREFIX)/lib OPT=-fno-strict-aliasing
	dh_auto_install -Dlibraries/liblmdb -Blibraries/liblmdb -- $(MAKEVARS) prefix=$(PREFIX)
	rm -f $(installdir)$(PREFIX)/include/lmdb.h
	rm -f $(installdir)$(LIBFIX)/liblmdb.a
	rm -f $(installdir)$(LIBFIX)/liblmdb.so
	rm -f $(installdir)$(LIBFIX)/openldap/*.a
	mkdir -p $$(pwd)/debian/tmp$(PREFIX)/bin/moddev
	cp libtool $$(pwd)/debian/tmp$(PREFIX)/bin/moddev/
	cp build/shtool $$(pwd)/debian/tmp$(PREFIX)/bin/moddev/
	mkdir -p $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac
	mkdir -p $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ucdata
	mkdir -p $$(pwd)/debian/tmp$(PREFIX)/include/moddev/back-monitor
	cp include/lber_pvt.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_avl.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_cdefs.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_config.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_defaults.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_features.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_int_thread.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_log.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_pvt.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_pvt_thread.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_pvt_uc.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_queue.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/lutil.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/lutil_lockf.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/portable.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/ldap_rq.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp include/rewrite.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp servers/slapd/proto-slap.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp servers/slapd/slap.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp servers/slapd/slap-config.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/
	cp servers/slapd/back-monitor/back-monitor.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/back-monitor/
	cp servers/slapd/back-monitor/proto-back-monitor.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/back-monitor/
	cp include/ac/assert.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/bytes.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/fdset.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/localize.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/param.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/regex.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/signal.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/socket.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/stdlib.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/string.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/syslog.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/time.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/unistd.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/alloca.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/crypt.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/ctype.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/dirent.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/errno.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/stdarg.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/sysexits.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/termios.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp include/ac/wait.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ac/
	cp libraries/liblunicode/ucdata/ucdata.h $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ucdata/
	sed -i "s|\.\./libraries/liblunicode/||" $$(pwd)/debian/tmp$(PREFIX)/include/moddev/ldap_pvt_uc.h
	# Empty the dependency_libs file in the .la files.
	for F in $(installdir)$(LIBFIX)/*.la; do \
		sed -i "s/^dependency_libs=.*/dependency_libs=''/" $$F; \
	done
	for F in $(installdir)$(LIBFIX)/openldap/*.la; do \
		sed -i "s/^dependency_libs=.*/dependency_libs=''/" $$F; \
	done
	mkdir -p $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap
	cp ANNOUNCEMENT $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/
	cp CHANGES $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/
	cp COPYRIGHT $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/
	cp INSTALL $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/
	cp LICENSE $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/
	cp README $$(pwd)/debian/tmp/$(PREFIX)/share/doc/openldap/

override_dh_installinit:
	dh_systemd_enable -psymas-openldap-server --name=symas-openldap-server symas-openldap-server.service
	dh_installinit -psymas-openldap-server --no-start --noscripts
	dh_systemd_start -psymas-openldap-server --no-restart-on-upgrade

override_dh_fixperms:
	dh_fixperms
	chmod 711 debian/symas-openldap-server/var/symas/openldap-data

override_dh_auto_clean:
	dh_auto_clean
	for overlay in $(CONTRIB_MODULES); do \
		dh_auto_clean -Dcontrib/slapd-modules/$$overlay -Bcontrib/slapd-modules/$$overlay -- $(CONTRIB_MAKEVARS) || exit $$?; \
	done
	dh_auto_clean -Dcontrib/slapd-modules/passwd/sha2 -Bcontrib/slapd-modules/passwd/sha2 -- prefix=$(PREFIX) libexecdir=$(PREFIX)/lib OPT=-fno-strict-aliasing
	dh_auto_clean -Dlibraries/liblmdb -Blibraries/liblmdb
