#! /usr/bin/make -f 

# Code for httpd 2.1, based on apache2 and others.
# Copyright (C) Canonical Ltd, 2005

export DEB_BUILD_OPTIONS
export DH_OPTIONS

SHELL := sh -e

#enable dpatch
include /usr/share/dpatch/dpatch.make

# 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)

CONFFLAGS += ac_cv_prog_AWK=mawk ac_cv_prog_LYNX_PATH=www-browser

AP2_COMMON_CONFARGS = --enable-layout=Debian --enable-so \
                      --with-program-name=apache2  \
		      --with-ldap=yes --with-ldap-include=/usr/include \
		      --with-ldap-lib=/usr/lib \
		      --with-suexec-caller=www-data \
		      --with-suexec-bin=/usr/lib/apache2/suexec \
	  	      --with-suexec-docroot=/var/www \
		      --with-suexec-userdir=public_html \
		      --with-suexec-logfile=/var/log/apache2/suexec.log \
		      --enable-suexec=shared --enable-authn-alias=shared \
		      --enable-authnz-ldap=shared  \
		      --enable-disk-cache=shared --enable-cache=shared \
		      --enable-mem-cache=shared --enable-file-cache=shared \
		      --enable-cern-meta=shared --enable-dumpio=shared --enable-ext-filter=shared \
		      --enable-charset-lite=shared --enable-cgi=shared \
		      --enable-dav-lock=shared --enable-log-forensic=shared \
		      --enable-log-config --enable-logio \
		      --enable-ldap=shared --enable-proxy=shared \
		      --enable-proxy-connect=shared --enable-proxy-ftp=shared \
		      --enable-proxy-http=shared --enable-proxy-ajp=shared \
		      --enable-proxy-balancer=shared --enable-ssl=shared \
		      --enable-authn-dbm=shared --enable-authn-anon=shared \
		      --enable-authn-dbd=shared --enable-authn-file=shared \
		      --enable-authn-default=shared --enable-authz-host=shared \
		      --enable-authz-groupfile=shared --enable-authz-user=shared \
		      --enable-authz-dbm=shared --enable-authz-owner=shared \
		      --enable-authnz-ldap=shared --enable-authz-default=shared \
		      --enable-auth-basic=shared --enable-auth-digest=shared \
		      --enable-dbd=shared --enable-deflate=shared \
		      --enable-include=shared --enable-filter=shared \
		      --enable-env=shared --enable-mime-magic=shared \
		      --enable-expires=shared --enable-headers=shared \
		      --enable-ident=shared --enable-usertrack=shared \
		      --enable-unique-id=shared --enable-setenvif=shared \
		      --enable-version=shared --enable-status=shared \
		      --enable-autoindex=shared --enable-asis=shared \
		      --enable-info=shared --enable-cgid=shared \
		      --enable-dav=shared --enable-dav-fs=shared \
		      --enable-vhost-alias=shared --enable-negotiation=shared \
		      --enable-dir=shared --enable-imagemap=shared \
		      --enable-actions=shared --enable-speling=shared \
		      --enable-userdir=shared --enable-alias=shared \
		      --enable-rewrite=shared --enable-mime=shared \
		      --with-apr=/usr/bin/apr-1-config \
		      --with-apr-util=/usr/bin/apu-1-config \
		      --with-pcre=yes
#
#		      This is insufficiently flexible.
#		      --enable-mods-shared=all --enable-modules=all 

AP2_CONFLAGS = $(CFLAGS) -pipe -I/usr/include/xmltok -I/usr/include/openssl -Wall
#AP2_LDFLAGS = -ldl -lexpat -lcrypt -ldb-4.3

#support debug building
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
AP2_CONFLAGS += -g -O0
else
AP2_CONFLAGS += -O2
endif

BUILD=debian/build-tree
REALCURDIR=$(CURDIR)
INSTALL=/usr/bin/install

clean: unpatch
	dh_testdir
	dh_clean
	rm -rf $(BUILD) mpm-worker mpm-prefork mpm-event install 
	rm -f debian/apache2-mpm-worker.postinst debian/apache2-mpm-worker.preinst debian/apache2-mpm-worker.prerm
	rm -f debian/apache2-mpm-event.postinst debian/apache2-mpm-event.preinst debian/apache2-mpm-event.prerm

build: patch-stamp build-mpms 
build-mpms: mpm-worker mpm-prefork mpm-event

mpm-%:
	dh_testdir
	mkdir -p $(BUILD)/$*
	cd $(BUILD)/$* ;\
	CFLAGS="$(AP2_CONFLAGS)" $(CONFFLAGS) $(REALCURDIR)/configure --srcdir=$(REALCURDIR) $(AP2_COMMON_CONFARGS) $(AP2_CONFARGS) --with-mpm=$*  ;\
	$(MAKE)
	touch $@

install-%:
	dh_testdir
	dh_testroot
	dh_installdirs
	cd $(BUILD)/$* ;\
	$(MAKE) DESTDIR=$(REALCURDIR)/debian/apache2-mpm-$* install

install-common:
	dh_testdir
	dh_testroot
	dh_installdirs
	cd $(BUILD)/worker ;\
	$(MAKE) DESTDIR=$(REALCURDIR)/debian/tmp install

install-dev: 
	dh_testdir
	dh_testroot
	dh_installdirs

	for i in worker prefork; do \
		if [ "$$i" = "prefork" ]; then \
			TARGET=prefork ;\
		else \
			TARGET=threaded ;\
		fi ;\
		cp debian/apache2-mpm-$$i/usr/include/apache2/* debian/apache2-$$TARGET-dev/usr/include/apache2/ ;\
		cp debian/apache2-mpm-$$i/usr/share/apache2/build/* debian/apache2-$$TARGET-dev/usr/share/apache2/build/ ;\
		cp $(BUILD)/$$i/support/apxs debian/apache2-$$TARGET-dev/usr/bin/apxs2 ;\
	done
# Clean up config_vars.mk
	set -x ; for i in threaded prefork; do \
		( cd debian/apache2-$$i-dev/usr/share/apache2/build/ ; \
		grep -v -E '(^|_)(CPP|C)FLAGS' config_vars.mk > tmp_config_vars.mk ; \
		printf "CPPFLAGS = %s\n" "`grep -E '(^|_)(CPPFLAGS|INCLUDES)' config_vars.mk | cut -d= -f 2- | tr ' ' '\n' | grep -E '^-([DI]|pthread)' | sort | uniq | tr '\n' ' '`" >> tmp_config_vars.mk ; \
		printf "CFLAGS = %s\n" "`grep -E '(^|_)(CPPFLAGS|CFLAGS|INCLUDES)' config_vars.mk | cut -d= -f 2- | tr ' ' '\n' | grep -E '^-(D|I/|pthread)'  | sort | uniq | tr '\n' ' '`" >> tmp_config_vars.mk ; \
		printf "NOTEST_CPPFLAGS = \n" >> tmp_config_vars.mk ; \
		printf "EXTRA_CPPFLAGS = \n" >> tmp_config_vars.mk ; \
		printf "EXTRA_CFLAGS = \n" >> tmp_config_vars.mk ; \
		mv tmp_config_vars.mk config_vars.mk ) ; \
	done

install-src:
	dh_testdir
	dh_testroot
	dh_installdirs
	tar czf debian/apache2-src/usr/src/apache2.tar.gz `find -mindepth 1 -maxdepth 1 -not -name debian`

install: build install-worker install-prefork install-common install-dev install-src
	dh_testroot
	dh_testdir

	#cleanup of death
	rm -rf debian/tmp/usr/include
	rm -rf debian/tmp/usr/share/apache2/build
	rm -f debian/tmp/usr/share/man/man8/httpd.8 # We install our own
	rm -f debian/tmp/usr/sbin/apxs debian/tmp/usr/sbin/apache2

	# DO NOT FALL FOR THE TEMPTATION TO MV INTO PACKAGES OR DOOM
	# WILL FIND YOU.  Use dh_install, this is just because dh_install
	# can't rename files

	mv debian/tmp/usr/share/man/man8/apxs.8 debian/tmp/usr/share/man/man8/apxs2.8
	mv debian/tmp/usr/sbin/apachectl debian/tmp/usr/sbin/apache2ctl
	mv debian/tmp/usr/share/man/man8/apachectl.8 debian/tmp/usr/share/man/man8/apache2ctl.8
	mv debian/tmp/usr/share/man/man8/suexec.8 debian/tmp/usr/share/man/man8/suexec2.8

	dh_install --list-missing --sourcedir=debian/tmp
# --sourcedir=$(REALCURDIR)/debian/apache2.2-common

	cp debian/bash_completion debian/apache2.2-common/etc/bash_completion.d/apache2.2-common

	#apache2-utils extras
	cp support/check_forensic debian/apache2-utils/usr/sbin/check_forensic
	cp debian/check_forensic.8 debian/apache2-utils/usr/share/man/man8/check_forensic.8
	cp debian/checkgid.8 debian/apache2-utils/usr/share/man/man8/checkgid.8
	cp $(BUILD)/worker/support/split-logfile debian/apache2-utils/usr/sbin/split-logfile
	chmod 755 debian/apache2-utils/usr/sbin/split-logfile

	cp -a debian/config-dir/* debian/apache2.2-common/etc/apache2
	if [ "`lsb_release -i -s`" = "Ubuntu" ]; then \
		sed -i -e 's/RedirectMatch/#RedirectMatch/' \
		debian/apache2.2-common/etc/apache2/sites-available/default; \
	fi
	mkdir -p debian/apache2.2-common/etc/logrotate.d
	cp debian/logrotate debian/apache2.2-common/etc/logrotate.d/apache2
	chmod 4755 debian/apache2.2-common/usr/lib/apache2/suexec 
	for i in `find debian/a2-scripts -name .svn -prune -o -name .arch-ids -prune -o -type f -print`; \
                do install -m755 $$i debian/apache2.2-common/usr/sbin; \
		rm -f debian/apache2.2-common/usr/sbin/update-apache2-modules debian/apache2.2-common/usr/sbin/modhandler.py; \
        done 
	for i in worker event; do \
		install -m755 debian/mpm-postinst-threaded debian/apache2-mpm-$$i.postinst ;\
		install -m755 debian/mpm-preinst-threaded debian/apache2-mpm-$$i.preinst;\
		install -m755 debian/mpms.prerm debian/apache2-mpm-$$i.prerm ;\
	done
	install -m755 debian/mpms.prerm debian/apache2-mpm-prefork.prerm

	for i in worker prefork event; do \
		rm -rf debian/apache2-mpm-$$i/ ;\
		mkdir -p debian/apache2-mpm-$$i/usr/sbin ;\
		install -m 755 $(BUILD)/$$i/apache2 debian/apache2-mpm-$$i/usr/sbin/apache2 ;\
	done

	for pkg in `awk '/^Package:/ { print $$2 }' debian/control`; do \
		find debian/$$pkg/ -name .svn -exec rm -rf {} + ; \
	done

	touch $@

binary-indep: install
	dh_testdir -i
	dh_testroot -i 
	dh_installdirs -i
	dh_installdocs -i
	dh_installchangelogs -i CHANGES -Napache2
	dh_installchangelogs -papache2
	dh_compress -i
	dh_fixperms -i -Xsuexec
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

binary-arch: install
	dh_testdir -a
	dh_testroot -a 
	dh_installdirs -a
	dh_installdocs -a
	dh_installman -a
	dh_installchangelogs -a CHANGES
	dh_installinit -a -r --init-script=apache2 debian/apache2.2-common.init.d -- start 91 09
	dh_strip -a
	dh_link -a
	dh_compress -a
	dh_fixperms -a -Xsuexec
	chown -R www-data:www-data debian/apache2.2-common/var/cache/apache2
	dh_makeshlibs -a -V
	dh_installdeb -a
	dh_shlibdeps -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a

binary: binary-arch binary-indep
