BUILDDIR      = apache_1.2.5
DISTTAR       = $(BUILDDIR).tar
DISTTARGZ     = $(BUILDDIR).tar.gz

PATCHES       =
PATCH         = /usr/local/bin/patch

PKGNAME       = AGapache
NAME          = apache
ARCH:sh       = uname -p
VERSION       = echo ${BUILDDIR} | sed 's/.*[-_]//'
CATEGORY      = application
VENDOR        = Apache Group
EMAIL         = dj@gregor.com
PSTAMP        = 
BASEDIR       = /opt/AGapache
CLASSES       = none

SBINDIR       = $(BASEDIR)/sbin
MANDIR        = $(BASEDIR)/man
ICONDIR       = $(BASEDIR)/icons
HTDOCSDIR     = $(BASEDIR)/htdocs
ETCDIR        = $(BASEDIR)/etc
DOCSDIR       = $(BASEDIR)/docs

LOGDIR        = $(BASEDIR)/logs
PIDFILE       = $(BASEDIR)/logs/httpd.pid

ERRORLOG      = $(LOGDIR)/error_log
TRANSFERLOG   = $(LOGDIR)/access_log
SCOREBOARDFILE= $(LOGDIR)/apache_status

LOGFILES      = $(DESTDIR)$(ERRORLOG) \
		$(DESTDIR)$(TRANSFERLOG) \
		$(DESTDIR)$(SCOREBOARDFILE) \
		$(DESTDIR)$(PIDFILE)

TOPDIR:sh     = pwd

DESTDIR       = $(TOPDIR)/pkg

SUPPORTBINS   = httpd_monitor log_server_status logresolve rotatelogs htdigest \
		htpasswd
CONFFILES     = $(DESTDIR)$(ETCDIR)/httpd.conf-dist \
		$(DESTDIR)$(ETCDIR)/access.conf-dist \
		$(DESTDIR)$(ETCDIR)/mime.types-dist \
		$(DESTDIR)$(ETCDIR)/srm.conf-dist

MAN1          = htpasswd.1
MAN8          = httpd.8

PKGPROTO      = /usr/bin/pkgproto
PKGMK         = /usr/bin/pkgmk
PKGTRANS      = /usr/bin/pkgtrans

INSTUSER      = root
INSTGROUP     = root


all: build

build: build-httpd build-support

build-httpd: $(BUILDDIR)/src/httpd

$(BUILDDIR)/src/httpd: $(BUILDDIR).configured
	cd $(BUILDDIR)/src ; make

build-support: $(BUILDDIR)/support/Makefile
	cd $(BUILDDIR)/support ; make

$(BUILDDIR).configured: $(BUILDDIR).patched
	cd $(BUILDDIR)/src ; ./Configure
	test -f $(BUILDDIR)/src/httpd.h.sav || \
		cp $(BUILDDIR)/src/httpd.h $(BUILDDIR)/src/httpd.h.sav
	sed -e "s|^\(#define[ 	][ 	]*HTTPD_ROOT\).*|\1 \"$(BASEDIR)\"|" \
	    -e "s|^\(#define[ 	][ 	]*DOCUMENT_LOCATION\).*|\1 \"$(HTDOCSDIR)\"|" \
	    -e "s|^\(#define[ 	][ 	]*SUEXEC_BIN\).*|\1 \"$(SBINDIR)/suexec\"|" \
	    -e "s|conf/|etc/|" \
		< $(BUILDDIR)/src/httpd.h > $(BUILDDIR)/src/httpd.h.new
	mv $(BUILDDIR)/src/httpd.h.new $(BUILDDIR)/src/httpd.h 
	touch $(BUILDDIR).configured

$(BUILDDIR).patched: $(BUILDDIR).untarred
	if [ "x$(PATCHES)" != "x" ]; then \
		$(MAKE) patch ; \
	fi
	touch $(BUILDDIR).patched

patch:
	for PATCHFILE in $(PATCHES) ; do \
		( cd $(BUILDDIR) ; $(PATCH) ) < $$PATCHFILE ; \
	done ; \

$(BUILDDIR).untarred:
	make untar
	touch $(BUILDDIR).untarred

untar: $(DISTTAR)
	tar xf $(DISTTAR)

$(DISTTAR):
	test -f $(DISTTARGZ) && gzip -d $(DISTTARGZ)

veryclean:
	rm -rf $(BUILDDIR) $(DESTDIR) /var/spool/pkg/$(PKGNAME) \
		$(BUILDDIR).untarred $(BUILDDIR).patched $(BUILDDIR).configured

$(DESTDIR)$(SBINDIR):
	mkdir -p $(DESTDIR)$(SBINDIR)

$(DESTDIR)$(MANDIR)/man1:
	mkdir -p $(DESTDIR)$(MANDIR)/man1

$(DESTDIR)$(MANDIR)/man8:
	mkdir -p $(DESTDIR)$(MANDIR)/man8

$(DESTDIR)$(ICONDIR):
	mkdir -p $(DESTDIR)$(ICONDIR)

$(DESTDIR)$(HTDOCSDIR):
	mkdir -p $(DESTDIR)$(HTDOCSDIR)

$(DESTDIR)$(ETCDIR):
	mkdir -p $(DESTDIR)$(ETCDIR)

install-httpd: $(BUILDDIR)/src/httpd $(DESTDIR)$(SBINDIR)
	cd $(BUILDDIR)/src ; cp httpd $(DESTDIR)$(SBINDIR)

install-support: build-support $(DESTDIR)$(SBINDIR)
	cd $(BUILDDIR)/support ; cp $(SUPPORTBINS) $(DESTDIR)$(SBINDIR)/

install-man: $(DESTDIR)$(MANDIR)/man1 $(DESTDIR)$(MANDIR)/man8
	cd $(BUILDDIR)/support ; cp $(MAN1) $(DESTDIR)$(MANDIR)/man1/
	cd $(BUILDDIR)/support ; cp $(MAN8) $(DESTDIR)$(MANDIR)/man8/

install-icons: $(DESTDIR)$(ICONDIR)
	cd $(BUILDDIR)/icons ; find . -depth -print | cpio -updm \
		$(DESTDIR)$(ICONDIR)

install-htdocs: $(DESTDIR)$(HTDOCSDIR)
	cd $(BUILDDIR)/htdocs ; find . -depth -print | cpio -updm \
		$(DESTDIR)$(HTDOCSDIR)

install-docs: $(DESTDIR)$(DOCSDIR)
	cd $(BUILDDIR) ; cp [A-Z]* $(DESTDIR)$(DOCSDIR)
	chmod 644 $(DESTDIR)$(DOCSDIR)/*

$(DESTDIR)/copyright: $(TOPDIR)/pkg
	cp $(BUILDDIR)/LICENSE $(TOPDIR)/pkg/copyright

install-conf: $(DESTDIR)$(ETCDIR) $(CONFFILES)

install-logs: $(DESTDIR)$(LOGDIR)
	touch $(LOGFILES)

$(DESTDIR)$(LOGDIR):
	mkdir -p $(DESTDIR)$(LOGDIR)

$(DESTDIR)$(DOCSDIR):
	mkdir -p $(DESTDIR)$(DOCSDIR)

$(DESTDIR)$(ETCDIR)/httpd.conf-dist: $(BUILDDIR)/conf/httpd.conf-dist
	@sed -e "`echo '/^ServerRoot/{ s|^ServerRoot.*|ServerRoot $(BASEDIR)|\na\\\\\nTypesConfig $(ETCDIR)/mime.types\\\\\nAccessFileName $(ETCDIR)/access.conf\\\\\nResourceConfig $(ETCDIR)/srm.conf\n}'`" \
		-e 's|^Group.*|Group nobody|' \
		-e 's|^ErrorLog.*|ErrorLog $(ERRORLOG)|' \
		-e 's|^TransferLog.*|TransferLog $(TRANSFERLOG)|' \
		-e 's|^PidFile.*|PidFile $(PIDFILE)|' \
		-e 's|^ScoreBoardFile.*|ScoreBoardFile $(SCOREBOARDFILE)|' \
		> $(DESTDIR)$(ETCDIR)/httpd.conf-dist \
		< $(BUILDDIR)/conf/httpd.conf-dist

$(DESTDIR)$(ETCDIR)/access.conf-dist: $(BUILDDIR)/conf/access.conf-dist
	sed -e 's|^<Directory.*htdocs.*|<Directory $(HTDOCSDIR)>|' \
		-e 's|^<Directory.*cgi-bin.*|<Directory $(HTDOCSDIR)/cgi-bin>|'\
		> $(DESTDIR)$(ETCDIR)/access.conf-dist \
		< $(BUILDDIR)/conf/access.conf-dist

$(DESTDIR)$(ETCDIR)/srm.conf-dist: $(BUILDDIR)/conf/srm.conf-dist
	sed -e 's|^DocumentRoot.*|DocumentRoot $(HTDOCSDIR)|' \
		-e 's|^#Alias /icons/.*|Alias /icons/ $(ICONSDIR)/|' \
		-e 's|^#ScriptAlias /icons/.*|#ScriptAlias /cgi-bin/ $(HTDOCSDIR)/cgi-bin/|' \
		> $(DESTDIR)$(ETCDIR)/srm.conf-dist \
		< $(BUILDDIR)/conf/srm.conf-dist
	
$(DESTDIR)$(ETCDIR)/mime.types-dist: $(BUILDDIR)/conf/mime.types
	cat \
		> $(DESTDIR)$(ETCDIR)/mime.types-dist \
		< $(BUILDDIR)/conf/mime.types
	
install: install-httpd install-support install-man install-icons \
	install-htdocs install-conf install-logs install-docs install-README

pkg:	$(BUILDDIR).pkg

clean-pkg: clean.$(DESTDIR)

clean.$(DESTDIR):
	rm -rf $(DESTDIR)

$(BUILDDIR).pkg:  $(DESTDIR)/prototype
	( cd $(DESTDIR) ; $(PKGMK) -or $(DESTDIR)$(BASEDIR) )
	$(PKGTRANS) /var/spool/pkg $(TOPDIR)/$(BUILDDIR).pkg $(PKGNAME)

$(DESTDIR)/prototype: $(DESTDIR)/pkginfo $(DESTDIR)$(ETCDIR)/init-script \
		$(DESTDIR)/etc/init.d/apache $(DESTDIR)/etc/rc3.d/S95apache \
		$(DESTDIR)/etc/rc2.d/K10apache $(DESTDIR)/etc/rc1.d/K10apache \
		$(DESTDIR)/etc/rc0.d/K10apache $(DESTDIR)/copyright
	( cd $(DESTDIR) ; echo "i pkginfo" ; \
	 echo "i copyright"; \
	 find . -print | egrep -v './(prototype|pkginfo|copyright)' | \
	 $(PKGPROTO) | \
	 sed -e 's/ \([0-9][0-9]*\) [^ ][^ ]* [^ ][^ ]*$$/ \1 '"$(INSTUSER) $(INSTGROUP)/" \
	 	-e 's/^f none install\/\([^ ][^ ]*\) .*$$/i \1=install\/\1/' \
	 	-e '/^d none install/d' \
	 	-e 's/none /none \//' \
	 	-e 's|^f \(none $(ERRORLOG) .*\)|v \1|' \
	 	-e 's|^f \(none $(TRANSFERLOG) .*\)|v \1|' \
	 	-e 's|^f \(none $(SCOREBOARDFILE) .*\)|v \1|' \
	 	-e 's|^f \(none $(PIDFILE) .*\)|v \1|' \
	 	-e 's|^f \(none $(ETCDIR)/httpd.conf .*\)|v \1|' \
	 	-e 's|^f \(none $(ETCDIR)/access.conf .*\)|v \1|' \
	 	-e 's|^f \(none $(ETCDIR)/mime.types .*\)|v \1|' \
	 	-e 's|^f \(none $(ETCDIR)/srm.conf .*\)|v \1|' \
		-e '/ \/etc /d' \
		-e '/ \/etc\/init.d /d' \
		-e '/ \/etc\/rc0.d /d' \
		-e '/ \/etc\/rc1.d /d' \
		-e '/ \/etc\/rc2.d /d' \
		-e '/ \/etc\/rc3.d /d' \
		-e '/ \/opt /d' \
		-e '/ \/opt\/AGapache /d' \
		-e 's/ \/opt\/AGapache\// /' \
	 ) > $(DESTDIR)/prototype

${DESTDIR}/pkginfo:	install
	rm -f ${DESTDIR}/pkginfo
	@echo "PKG=\"$(PKGNAME)\"" >> $(DESTDIR)/pkginfo
	@echo "NAME=\"$(NAME)\"" >> $(DESTDIR)/pkginfo
	@echo "ARCH=\"$(ARCH)\"" >> $(DESTDIR)/pkginfo
	@echo "VERSION=\"$(VERSION:sh)\"" >> $(DESTDIR)/pkginfo
	@echo "CATEGORY=\"$(CATEGORY)\"" >> $(DESTDIR)/pkginfo
	@echo "VENDOR=\"$(VENDOR)\"" >> $(DESTDIR)/pkginfo
	@echo "EMAIL=\"$(EMAIL)\"" >> $(DESTDIR)/pkginfo
	@echo "PSTAMP=\"$(PSTAMP)\"" >> $(DESTDIR)/pkginfo
	@echo "BASEDIR=\"$(BASEDIR)\"" >> $(DESTDIR)/pkginfo
	@echo "CLASSES=\"$(CLASSES)\"" >> $(DESTDIR)/pkginfo

$(DESTDIR)$(ETCDIR)/init-script: $(DESTDIR)$(ETCDIR)
	rm -f $@

	@echo "#!/bin/sh" >> $@
	@echo "" >> $@
	@echo "PATH=/sbin:/usr/bin:/usr/sbin" >> $@
	@echo "export PATH" >> $@
	@echo "" >> $@
	@echo "APACHE=$(SBINDIR)/httpd" >> $@
	@echo "HTTPDCONF=$(ETCDIR)/httpd.conf" >> $@
	@echo "PIDFILE=$(PIDFILE)" >> $@
	@echo "" >> $@
	@echo 'case "$$1" in' >> $@
	@echo "	'start')" >> $@
	@echo "		# Start apache" >> $@
	@echo '		if [ -r $${HTTPDCONF} ]; then' >> $@
	@echo "			echo \"Starting Apache HTTP Server\"" >> $@
	@echo '			$${APACHE} -f $${HTTPDCONF}' >> $@
	@echo "		else" >> $@
	@echo '			echo "Not Starting Apache HTTP Server--$${HTTPDCONF} file does not exist"' >> $@
	@echo "		fi" >> $@
	@echo '		if [ $$? -ne 0 ]; then' >> $@
	@echo "			echo \"error starting apache\" >&2" >> $@
	@echo "			exit 1" >> $@
	@echo "		fi" >> $@
	@echo "       	;; " >> $@
	@echo "" >> $@
	@echo "	'stop')" >> $@
	@echo "	       	# Stop apache" >> $@
	@echo "		echo \"Stopping Apache HTTP Server\"" >> $@
	@echo '		kill `cat $$PIDFILE`' >> $@
	@echo "       	;; " >> $@
	@echo "" >> $@
	@echo "" >> $@
	@echo "	*)	# usage" >> $@
	@echo '		echo "usage: $$0 start|stop" >&2' >> $@
	@echo "		exit 1" >> $@
	@echo "	;;" >> $@
	@echo "" >> $@
	@echo "esac  " >> $@
	chmod 755 $@

$(DESTDIR)/install:
	mkdir -p $@

install-README: $(DESTDIR)$(BASEDIR)/README

$(DESTDIR)$(BASEDIR)/README: $(DESTDIR)$(BASEDIR)
	rm -f $@
	@echo "This Solaris package of Apache package was built by Daniel J. Gregor, Jr. on" >> $@
	@echo "`date`" >> $@
	@echo "" >> $@
	@echo "Please see the docs/LICENSE file for copyright and licensing information." >> $@
	@echo "" >> $@
	@echo "A few notes:" >> $@
	@echo "	1) Basic information about the Apache server is in the docs directory." >> $@
	@echo "	   More detailed information is in HTML format in htdocs/manual" >> $@
	@echo "	2) This package was built with no special options or modules" >> $@
	@echo "	3) If you have any problems, please E-mail me, <dj@gregor.com>." >> $@


$(DESTDIR)/etc/init.d/apache: $(DESTDIR)/etc/init.d \
				$(DESTDIR)$(ETCDIR)/init-script
	rm -f $@
	ln -s $(ETCDIR)/init-script $@

$(DESTDIR)/etc/rc3.d/S95apache: $(DESTDIR)/etc/rc3.d \
				$(DESTDIR)/etc/init.d/apache
	rm -f $@
	ln -s /etc/init.d/apache $@

$(DESTDIR)/etc/rc2.d/K10apache: $(DESTDIR)/etc/rc2.d \
				$(DESTDIR)/etc/init.d/apache
	rm -f $@
	ln -s /etc/init.d/apache $@

$(DESTDIR)/etc/rc1.d/K10apache: $(DESTDIR)/etc/rc1.d \
				$(DESTDIR)/etc/init.d/apache
	rm -f $@
	ln -s /etc/init.d/apache $@

$(DESTDIR)/etc/rc0.d/K10apache: $(DESTDIR)/etc/rc0.d \
				$(DESTDIR)/etc/init.d/apache
	rm -f $@
	ln -s /etc/init.d/apache $@

$(DESTDIR)/etc/init.d:
	mkdir -p $@

$(DESTDIR)/etc/rc3.d:
	mkdir -p $@

$(DESTDIR)/etc/rc2.d:
	mkdir -p $@

$(DESTDIR)/etc/rc1.d:
	mkdir -p $@

$(DESTDIR)/etc/rc0.d:
	mkdir -p $@

