#!/usr/bin/make -f

PACKAGE=proftpd-basic
PACKAGE_DEV=proftpd-dev
NAME=proftpd
VERSION=$(shell grep PROFTPD_VERSION_TEXT $(CURDIR)/include/version.h|cut -d\" -f2)

#
# HAVE_OPENSSL is required by mod_sql.c. 
# See #233031 for details. 
# 
PROFTPD_FLAGS := -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_OPENSSL -DUSE_LDAP_TLS
CFLAGS := $(PROFTPD_FLAGS) 
CC := gcc

# Some special build options
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
  DEVELOPT=--enable-devel=yes
endif
ifneq (,$(findstring verbose,$(DEB_BUILD_OPTIONS)))
DH_VERBOSE=1
export DH_VERBOSE
endif
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
  INSTALL_STRIP=-s
endif

#
# dpkg-arch rules
# 
ifeq (,$(DEB_BUILD_GNU_TYPE))
  include debian/scripts/dpkg-arch.mk
endif

# Note: use --localstatedir=/var/run/proftpd for > 1.3.2
DSOMODS1 = mod_unique_id:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_sql_sqlite:mod_sql_odbc:mod_dynmasq:
DSOMODS2 = mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:
DSOMODS3 = mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_copy:mod_deflate:mod_ifversion:mod_tls_memcache:
DSOMODS4 = mod_geoip:mod_exec:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_shaper:mod_sql_passwd:mod_ifsession
CONF_ARGS := --prefix=/usr \
	     --with-includes=$(shell pg_config --includedir):$(shell mysql_config --include|sed -e 's/-I//') \
	     --mandir=/usr/share/man --sysconfdir=/etc/$(NAME) --localstatedir=/var/run --libexecdir=/usr/lib/$(NAME) \
	     --enable-sendfile --enable-facl --enable-dso --enable-autoshadow --enable-ctrls --with-modules=mod_readme \
	     --enable-ipv6 --enable-nls --enable-memcache --with-lastlog=/var/log/lastlog --enable-pcre $(DEVELOPT)

ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
  CONF_ARGS += --build $(DEB_HOST_GNU_TYPE)
else
  CONF_ARGS += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
endif

debian/control: debian/control.in
	sed -e 's/@VERSION@/$(VERSION)/' $< >$@

debian/proftpd-substvars: debian/proftpd-substvars.in
	sed -e 's/@VERSION@/$(VERSION)/' $< >$@

build: debian/proftpd-substvars configure-stamp build-stamp
build-stamp: 
	dh_testdir
	
	$(MAKE) CC="$(CC)" all
	
	touch $@

install: build
	dh_testdir
	dh_prep
	
	$(MAKE) DESTDIR=$(CURDIR)/debian/tmp INSTALL_STRIP="$(INSTALL_STRIP)" install
	find $(CURDIR)/debian/tmp -type f \( -executable -o -name \*.so\* \) -exec hardening-check {} + || true

configure: configure-stamp
configure-stamp: 
	dh_testdir
	
	# Use current autotools helpers
	-test -r /usr/share/misc/config.sub && \
		mv ./config.sub ./config.sub.original && \
		cp -f /usr/share/misc/config.sub ./config.sub
	-test -r /usr/share/misc/config.guess && \
		mv ./config.guess ./config.guess.original && \
		cp -f /usr/share/misc/config.guess ./config.guess
	
	./configure $(shell dpkg-buildflags --export=configure) $(CONF_ARGS) --with-shared=$(DSOMODS1)$(DSOMODS2)$(DSOMODS3)$(DSOMODS4)
	
	touch $@

clean: debian/control debian/proftpd-substvars myclean 
myclean:
	dh_testdir
	dh_clean
	
	[ ! -f $(CURDIR)/Makefile ] || $(MAKE) distclean 
	
	# Reset upstream autotools helpers
	[ ! -f config.sub.original ] || mv -f ./config.sub.original ./config.sub 
	[ ! -f config.guess.original ] || mv -f ./config.guess.original ./config.guess
	
	rm -f debian/files.saved debian/files
	rm -f $$(find . -type l) $$(find . -name "*~" -o -name "*.o")
	rm -f $(NAME) config.cache config.log lib/*.a ftpshut Make.rules
	rm -rf debian/$(PACKAGE) debian/$(NAME)-doc
	rm -rf debian/files* debian/*.gz core
	rm -f $$(find * -name "*.orig") modules/mod_ratio.c
	rm -rf $$(find $(CURDIR) -name .libs)
	rm -f $$(find $(CURDIR) -name config.log )
	rm -f $$(find $(CURDIR) -name config.status )
	rm -f contrib/mod_wrap2/mod_wrap2.h \
	      contrib/mod_wrap2/Makefile \
	      contrib/mod_load/mod_load.h \
	      contrib/mod_load/Makefile 
	# clean up libtool files still around
	find contrib -name "*.la" -exec rm -f {} \;

binary-indep: checkroot build
	dh_installdirs -i
	dh_install -i
	dh_installdocs -i 
	dh_installchangelogs -i ChangeLog
	dh_installexamples -i
	dh_lintian -i
	
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i 
	dh_md5sums -i
	dh_fixperms -i
	dh_builddeb -i

binary-arch: checkroot build install
	dh_installdirs -a
	dh_install -a 
	dh_installdocs -a
	dh_installchangelogs -a ChangeLog
	dh_installman -a
	dh_installlogrotate -a
	dh_installpam -a --name=$(NAME)
	dh_lintian -a
	# removes ftpasswd.1 installed by upstream see #671063
	rm -f debian/$(PACKAGE)/usr/share/man/man1/ftpasswd.1*
	# removes proftpd.conf installed by upstream
	rm -f debian/$(PACKAGE)/etc/$(NAME)/$(NAME).conf
	
	install -m 644 debian/templates/*.conf debian/$(PACKAGE)/usr/share/$(NAME)/templates
	install -m 644 debian/templates/welcome.msg debian/$(PACKAGE)/usr/share/$(NAME)/templates/welcome.msg 
	install -m 644 debian/templates/ftpusers debian/$(PACKAGE)/etc 
	install -m 755 debian/$(PACKAGE).init debian/$(PACKAGE)/etc/init.d/$(NAME) 
	install -m 644 debian/templates/default debian/$(PACKAGE)/etc/default/$(NAME) 
	install contrib/xferstats.holger-preiss debian/$(PACKAGE)/usr/sbin/ftpstats
	install -m 755 contrib/ftpasswd debian/$(PACKAGE)/usr/sbin/ftpasswd
	install -m 755 contrib/ftpquota debian/$(PACKAGE)/usr/sbin/ftpquota
	install -m 755 debian/proftpd-gencert debian/$(PACKAGE)/usr/sbin/proftpd-gencert
	install -m 644 debian/proftpd-substvars debian/$(PACKAGE_DEV)/usr/share/$(NAME)/proftpd-substvars
	
	dh_installdebconf -a
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -a
	dh_shlibdeps -a -l$(CURDIR)/debian/tmp/usr/lib/$(NAME)
	dh_installdeb -a
	dh_perl -a
	dh_gencontrol -a 
	dh_strip -a
	dh_md5sums -a
	dh_fixperms -a
	dh_builddeb -a

binary:	binary-arch binary-indep

checkroot:
	dh_testdir
	dh_testroot

.PHONY: binary binary-arch binary-indep clean checkroot myclean install configure debian/proftpd-substvars debian/control

