#!/usr/bin/make -f
# adapted from sample debian/rules that uses debhelper,
# GNU copyright 1997 to 1999 by Joey Hess.
# Copyright 2002-2016 by Stefan Hornburg (Racke) <racke@linuxia.de>
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

cfgflags=--sysconfdir=/etc/pure-ftpd CFLAGS="-O2 -DMAX_USER_LENGTH=128U -g"
optflags=--with-everything --with-largefile --with-pam --with-privsep --with-tls --with-rfc2640
bin=pure-pw pure-statsdecode pure-pwconvert
sbin=pure-authd pure-ftpwho pure-uploadscript pure-quotacheck pure-ftpd pure-mrtginfo

FLAVOURS=pure-ftpd pure-ftpd-ldap pure-ftpd-mysql pure-ftpd-postgresql

src/vanilla/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags)
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/ldap/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-ldap
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/mysql/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-mysql
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/postgresql/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-pgsql
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/vanilla-virtualchroot/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-virtualchroot
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/ldap-virtualchroot/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-virtualchroot --with-ldap
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/mysql-virtualchroot/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-virtualchroot --with-mysql
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

src/postgresql-virtualchroot/pure-ftpd:
	dh_testdir
	[ ! -f Makefile ] || $(MAKE) distclean
	dh_auto_configure -- $(cfgflags) $(optflags) --with-virtualchroot --with-pgsql
	$(MAKE)
	mkdir $(@D)
	mv $(addprefix src/, $(bin) $(sbin)) $(@D)

build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp

build-stamp: src/vanilla/pure-ftpd src/ldap/pure-ftpd src/mysql/pure-ftpd src/postgresql/pure-ftpd src/vanilla-virtualchroot/pure-ftpd src/ldap-virtualchroot/pure-ftpd src/mysql-virtualchroot/pure-ftpd src/postgresql-virtualchroot/pure-ftpd
	dh_testdir
# create duplicates of the init script with unique provides
	for suffix in -ldap -mysql -postgresql; do \
		install -m 0644 -p debian/pure-ftpd.init.d debian/pure-ftpd$$suffix.init.d; \
		sed -i -e "/Provides:/s/pure-ftpd/pure-ftpd$$suffix/" \
               debian/pure-ftpd$$suffix.init.d; \
	done

	touch build-stamp

clean:
	dh_testdir
	dh_testroot
	debconf-updatepo
	[ ! -f Makefile ] || $(MAKE) distclean
	rm -f build-stamp configure-stamp config.status
	rm -rf src/.deps puredb/src/.deps src/vanilla src/ldap src/mysql src/postgresql src/vanilla-virtualchroot src/ldap-virtualchroot src/mysql-virtualchroot src/postgresql-virtualchroot
	dh_clean

install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs -ppure-ftpd-common etc/pam.d
	dh_installdirs -A -Npure-ftpd-common usr/bin usr/sbin

# install docs and changelogs
	dh_installdocs -ppure-ftpd-common --exclude=Windows --exclude=MacOS AUTHORS HISTORY THANKS README* pureftpd.schema
	dh_installdocs -Npure-ftpd-common --exclude=Windows --exclude=MacOS
	dh_installchangelogs -p pure-ftpd-common ChangeLog

# pam and init
	install -p -m644 debian/pam debian/pure-ftpd-common/etc/pam.d/pure-ftpd
	dh_installinit

# logrotate
	dh_installlogrotate

# install into debian/pure-ftpd-common
# include binaries to make "make install" happy
	cp src/vanilla/* src
	$(MAKE) install DESTDIR=$(CURDIR)/debian/pure-ftpd-common #prefix=$(CURDIR)/debian/pure-ftpd-common/usr
# now remove binaries from package
	rm -r $(CURDIR)/debian/pure-ftpd-common/usr/bin
	rm $(CURDIR)/debian/pure-ftpd-common/usr/sbin/*
	install -m 0644 debian/ftpallow $(CURDIR)/debian/pure-ftpd-common/etc/
	for package in $(FLAVOURS); do \
		install -m 0644 debian/ftpusers $(CURDIR)/debian/$$package/etc; \
	done
	install -m 0755 $(addprefix src/vanilla/, $(bin)) \
		$(CURDIR)/debian/pure-ftpd/usr/bin
	install -m 0755 $(addprefix src/vanilla/, $(sbin)) \
		$(CURDIR)/debian/pure-ftpd/usr/sbin
	install -m 0755 $(addprefix src/ldap/, $(bin)) \
		$(CURDIR)/debian/pure-ftpd-ldap/usr/bin
	install -m 0755 $(addprefix src/ldap/, $(sbin)) \
		$(CURDIR)/debian/pure-ftpd-ldap/usr/sbin
	install -m 0755 $(addprefix src/mysql/, $(bin)) \
		$(CURDIR)/debian/pure-ftpd-mysql/usr/bin
	install -m 0755 $(addprefix src/mysql/, $(sbin)) \
		$(CURDIR)/debian/pure-ftpd-mysql/usr/sbin
	install -m 0755 $(addprefix src/postgresql/, $(bin)) \
		$(CURDIR)/debian/pure-ftpd-postgresql/usr/bin
	install -m 0755 $(addprefix src/postgresql/, $(sbin)) \
		$(CURDIR)/debian/pure-ftpd-postgresql/usr/sbin
	(cd $(CURDIR)/debian/pure-ftpd-mysql/usr/sbin/; mv pure-ftpd pure-ftpd-mysql)
	(cd $(CURDIR)/debian/pure-ftpd-postgresql/usr/sbin/; mv pure-ftpd pure-ftpd-postgresql)
	(cd $(CURDIR)/debian/pure-ftpd-ldap/usr/sbin/; mv pure-ftpd pure-ftpd-ldap)
	install -m 0755 $(CURDIR)/src/vanilla-virtualchroot/pure-ftpd $(CURDIR)/debian/pure-ftpd/usr/sbin/pure-ftpd-virtualchroot
	install -m 0755 $(CURDIR)/src/ldap-virtualchroot/pure-ftpd $(CURDIR)/debian/pure-ftpd-ldap/usr/sbin/pure-ftpd-ldap-virtualchroot
	install -m 0755 $(CURDIR)/src/mysql-virtualchroot/pure-ftpd $(CURDIR)/debian/pure-ftpd-mysql/usr/sbin/pure-ftpd-mysql-virtualchroot
	install -m 0755 $(CURDIR)/src/postgresql-virtualchroot/pure-ftpd $(CURDIR)/debian/pure-ftpd-postgresql/usr/sbin/pure-ftpd-postgresql-virtualchroot

# install config files
	install -d $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd/conf
	install -d $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd/db
	install -m 0644 debian/pureftpd-dir-aliases $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd
	for f in debian/etc/*; do if [ -f $$f ]; then install -m 0644 $$f $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd/conf; fi; done
	install -d $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/conf
	install -m 0644 debian/etc/ldap/* $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/conf
	install -d $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/conf
	install -d $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/db
	install -m 0644 debian/etc/mysql/* $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/conf
	install -d $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/conf
	install -d $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/db
	install -m 0644 debian/etc/postgresql/* $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/conf
# links for authentication configuration
	install -d $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd/auth
	(cd $(CURDIR)/debian/pure-ftpd-common/etc/pure-ftpd/auth && ln -s ../conf/PAMAuthentication 70pam && ln -s ../conf/UnixAuthentication 65unix)
	install -d $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/auth
	(cd $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/auth && ln -s ../conf/MySQLConfigFile 30mysql)
	install -d $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/auth
	(cd $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/auth && ln -s ../conf/PGSQLConfigFile 30pgsql)
	install -d $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/auth
	(cd $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/auth && ln -s ../conf/LDAPConfigFile 30ldap)
# database configuration files
	install -d $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/db
	perl -pe 's%^MYSQLSocket.*%MYSQLSocket      /var/run/mysqld/mysqld.sock%' pureftpd-mysql.conf > $(CURDIR)/debian/pure-ftpd-mysql/etc/pure-ftpd/db/mysql.conf

	install -d $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/db
	perl -pe 's%^#\s*PGSQLServer\s+/tmp.*%# PGSQLServer /var/run/postgresql%' pureftpd-pgsql.conf >  $(CURDIR)/debian/pure-ftpd-postgresql/etc/pure-ftpd/db/postgresql.conf

	install -d $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/db
	install -m 0600 pureftpd-ldap.conf $(CURDIR)/debian/pure-ftpd-ldap/etc/pure-ftpd/db/ldap.conf
# install the wrapper, control script and corresponding manual pages
	install -m 0755 debian/pure-ftpd-wrapper $(CURDIR)/debian/pure-ftpd-common/usr/sbin
	pod2man --center='Debian GNU/Linux Documentation' --release='Debian GNU/Linux '`cat /etc/debian_version` --section=8 debian/pure-ftpd-wrapper > $(CURDIR)/debian/pure-ftpd-common/usr/share/man/man8/pure-ftpd-wrapper.8
	install -m 0755 debian/pure-ftpd-control $(CURDIR)/debian/pure-ftpd-common/usr/sbin
	pod2man --center='Debian GNU/Linux Documentation' --release='Debian GNU/Linux '`cat /etc/debian_version` --section=8 debian/pure-ftpd-control > $(CURDIR)/debian/pure-ftpd-common/usr/share/man/man8/pure-ftpd-control.8
# fix path in pure-pw manual pages
	perl -i -pe 's%/etc/pureftpd\.%/etc/pure-ftpd/pureftpd.%' $(CURDIR)/debian/pure-ftpd-common/usr/share/man/man8/pure-pw.8
# install log and runtime directory
	install -m 0700 -d $(CURDIR)/debian/pure-ftpd-common/var/log/pure-ftpd
# shared maintainer scripts
	for package in $(FLAVOURS); do\
		for script in postinst prerm ; do \
		 	install -p debian/flavour.$$script debian/$$package.$$script; \
		done; \
	done

# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
	dh_testdir
	dh_testroot
	dh_installchangelogs -i
	dh_installdocs -i
	dh_installexamples -i
	dh_installdebconf -i
	dh_link -i
	dh_strip -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_shlibdeps -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
binary-arch: build install
	dh_testdir
	dh_testroot
	dh_installchangelogs -a
	dh_link -a
	dh_strip -a
	dh_compress -a
	dh_fixperms -a
	dh_installdeb -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 configure
