BUILDDIR    = src

DESTDIR     = ${TOPDIR}/pkg 

BASEDIR     = /opt/ISCbind
BASEDIREXISTS=/opt /etc/opt /var/opt

CONFOPTS    = 

PKGNAME     = ISCbind
NAME        = bind
DESC        = a DNS server
ARCH:sh     = uname -p
VERSIONSH   = cat src/Version
VERSION     = ${VERSIONSH:sh}
# This line creates a .revision file at 0 if one does not exist, and then
# stores the revision number in the REV macro.
REV:sh      = test -f .revision || echo 0 > .revision ; cat .revision
# This line increments the number in the .revision file, and then stores
# the revision number in the REV macro.
REV:sh = REVSH=`cat .revision` ;\
	REVSH=`expr $REVSH + 1`; echo $REVSH > .revision ; echo $REVSH
CATEGORY    = application
MAXINST     = 1000
VENDOR      = Internet Software Consortium
EMAIL       = dj@gregor.com
CLASSES     = none

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

INSTUSER    = root
INSTGROUP   = root

TOPDIR:sh   = pwd

SPOOLDIR    = /var/spool/pkg

OTHERFILES  = 
OTHERDIRS   = ${DESTDIR}${DESTBIN} \
		${DESTDIR}${DESTSBIN} \
		${DESTDIR}${DESTLIB} \
		${DESTDIR}${DESTHELP} \
		${DESTDIR}${DESTINC} \
		${DESTDIR}${DESTETC} \
		${DESTDIR}${DESTVAR}
INSTALLFILES= pkginfo

DESTBIN     = ${BASEDIR}/bin
DESTSBIN    = ${BASEDIR}/sbin
DESTEXEC    = ${BASEDIR}/sbin
DESTMAN     = ${BASEDIR}/man
DESTHELP    = ${BASEDIR}/lib
DESTINC     = ${BASEDIR}/include
DESTLIB     = ${BASEDIR}/lib
DESTETC     = /etc${BASEDIR}
DESTVAR     = /var${BASEDIR}
PIDDIR      = /etc${BASEDIR}
PIDFILE     = ${PIDDIR}/named.pid

DESTDOC     = ${BASEDIR}/doc
DESTCONTRIB = ${BASEDIR}/contrib
DOCDIR      = ${TOPDIR}/doc
CONTRIBDIR  = ${TOPDIR}/contrib

PATH_CONF   = ${DESTETC}/named.conf
PATH_DUMPFILE= ${DESTVAR}/named_dump.db
PATH_XFER   = ${DESTSBIN}/named-xfer
PATH_PIDFILE= ${PIDFILE}
PATH_NAMED  = ${DESTSBIN}/named

OTHERCONFIGTARGETS = .port_after-updated.${BUILDDIR}

DOTSETTINGS = DESTDIR=${DESTDIR} \
		DESTBIN=${DESTBIN} \
		DESTSBIN=${DESTSBIN} \
		DESTEXEC=${DESTEXEC} \
		DESTMAN=${DESTMAN} \
		DESTHELP=${DESTHELP} \
		DESTINC=${DESTINC} \
		DESTLIB=${DESTLIB} \
		PIDDIR=${PIDDIR} \
		PIDFILE=${PIDFILE}


all: pkg

pkg: ${BUILDDIR}.pkg

${BUILDDIR}.pkg:  ${DESTDIR}/prototype
#	-( cd ${DESTDIR}${DESTBIN} ; strip * )
#	-( cd ${DESTDIR}${DESTSBIN} ; strip * )
	( cd ${DESTDIR} ; ${PKGMK} -d ${SPOOLDIR} -or . )
	( cd ${SPOOLDIR}/${PKGNAME}/reloc ; find . -depth -print | \
		grep -v '^\.$$' | cpio -odm | compress > ../reloc.cpio.Z )
	rm -rf ${SPOOLDIR}/reloc
	$(PKGTRANS) ${SPOOLDIR} ${TOPDIR}/${BUILDDIR}.pkg ${PKGNAME}

${DESTDIR}/prototype: ${DESTDIR}/pkginfo
	@( cd ${DESTDIR} ; \
	 find . -print | \
		$(PKGPROTO) | nawk -v instuser="${INSTUSER}" \
		-v instgroup="${INSTGROUP}" -v basedirexists="${BASEDIREXISTS}"\
		-v installfiles="${INSTALLFILES}" \
		'BEGIN { \
			n = split(installfiles, setupinstallfiles); \
			for ( i = 1; i <= n; i++ ) { \
				print "i", setupinstallfiles[i]; \
			} \
		} \
		{ \
			if ( match($$3, "^prototype$$") ) { \
				next; \
 			} \
			n = split(basedirexists, basedir); \
			for ( i = 1; i <= n; i++ ) { \
				checkbasedir = basedir[i]; \
				sub("^/", "", checkbasedir); \
				while ( checkbasedir != "" ) { \
					if ( match($$3, "^"checkbasedir"$$") ) { \
						sub("[^/]*$$", "", checkbasedir); \
						sub("/$$", "", checkbasedir); \
						next; \
	 				} \
					sub("[^/]*$$", "", checkbasedir); \
					sub("/$$", "", checkbasedir); \
				} \
			} \
			n = split(installfiles, checkinstallfiles); \
			for ( i = 1; i <= n; i++ ) { \
				if (match($$3, "^"checkinstallfiles[i]"$$")) { \
					next; \
 				} \
			} \
			\
			print $$1, $$2, $$3, $$4, instuser, instgroup; \
		}' \
	 ) > ${DESTDIR}/prototype

${DESTDIR}/pkginfo: .package-installed.${BUILDDIR}
	rm -f ${DESTDIR}/pkginfo
	@echo "PKG=\"${PKGNAME}\"" >> ${DESTDIR}/pkginfo
	@echo "NAME=\"${NAME}\"" >> ${DESTDIR}/pkginfo
	@echo "DESC=\"${DESC}\"" >> ${DESTDIR}/pkginfo
	@echo "ARCH=\"${ARCH}\"" >> ${DESTDIR}/pkginfo
	@echo "MAXINST=\"${MAXINST}\"" >> ${DESTDIR}/pkginfo
	@echo "VERSION=\"${VERSION},REV=${REV}\"" >> ${DESTDIR}/pkginfo
	@echo "CATEGORY=\"${CATEGORY}\"" >> ${DESTDIR}/pkginfo
	@echo "VENDOR=\"${VENDOR}\"" >> ${DESTDIR}/pkginfo
	@echo "EMAIL=\"${EMAIL}\"" >> ${DESTDIR}/pkginfo
	@echo "BASEDIR=\"/\"" >> ${DESTDIR}/pkginfo
	@echo "CLASSES=\"${CLASSES}\"" >> ${DESTDIR}/pkginfo

.package-installed.${BUILDDIR}: build clean.${DESTDIR} ${DESTDIR}${BASEDIR} \
		${OTHERFILES} ${OTHERDIRS}
	cd ${BUILDDIR} ; ${MAKE} install

	# won't worry if we can't find this little file
	-cp ${BUILDDIR}/bin/named/named-bootconf.pl ${DESTDIR}${DESTBIN}

	if [ -d ${DOCDIR} ]; \
	then \
		mkdir -p ${DESTDIR}${DESTDOC} ; \
		( cd ${DOCDIR} ; \
			find . -depth -print | cpio -pdmu \
				${DESTDIR}${DESTDOC} ) ; \
	fi

	if [ -d ${CONTRIBDIR} ]; \
	then \
		mkdir -p ${DESTDIR}${DESTCONTRIB} ; \
		( cd ${CONTRIBDIR} ; \
			find . -depth -print | cpio -pdmu \
				${DESTDIR}${DESTCONTRIB} ) ; \
	fi

	touch $@

clean.${DESTDIR}:
	rm -rf ${DESTDIR}

${DESTDIR}${BASEDIR} ${OTHERDIRS}:
	mkdir -p $@


build: .configured.${BUILDDIR}
	cd ${BUILDDIR} ; ${MAKE} all

clean:
	rm -rf ${BUILDDIR} ${DESTDIR} .configured.${BUILDDIR} \
		.untarred.${BUILDDIR} .package-installed.${BUILDDIR} \
		.depended.${BUILDDIR} .port_after-updated.${BUILDDIR} \
		.settings-updated.${BUILDDIR} \
		${SPOOLDIR}/${PKGNAME} ${BUILDDIR}.pkg

.untarred.${BUILDDIR}: bind-${BUILDDIR}.tar.gz 
	rm -rf ${BUILDDIR}
	gzip -cd $? | tar xvf -
	touch $@

.configured.${BUILDDIR}: .untarred.${BUILDDIR} .depended.${BUILDDIR} \
		.settings-updated.${BUILDDIR} ${OTHERCONFIGTARGETS}
	touch $@

.depended.${BUILDDIR}: .untarred.${BUILDDIR}
	cd ${BUILDDIR} ; make SUBDIRS="include port" ${CONFOPTS} all
	touch $@

.settings-updated.${BUILDDIR}: .depended.${BUILDDIR}
	cp ${BUILDDIR}/.settings ${BUILDDIR}/.settings.old
	nawk -v replacements="${DOTSETTINGS}" \
		"{ \
			n = split(replacements, repl, \"[ 	]+\"); \
			for (i = 1; i <= n; i++) { \
				split(repl[i], replparts, \"=\"); \
				gsub(\"'\" replparts[1] \"=[^']*'\", \"\", \
					\$$0); \
				\$$0 = \$$0 \" '\" repl[i] \"'\"; \
			} \
			print $0; \
		}" <  ${BUILDDIR}/.settings.old > ${BUILDDIR}/.settings.new
	mv ${BUILDDIR}/.settings.new ${BUILDDIR}/.settings
	touch $@
	
.port_after-updated.${BUILDDIR}: .depended.${BUILDDIR} \
		${BUILDDIR}/port/solaris/include/solaris-pkg-paths.h
	cp ${BUILDDIR}/port/solaris/include/port_after.h \
	   ${BUILDDIR}/port/solaris/include/port_after.h.old
	@echo "g/#include <solaris-pkg-paths.h>/d\n" \
		"\$$a\n#include <solaris-pkg-paths.h>\n.\nw\nq" | ed \
		${BUILDDIR}/port/solaris/include/port_after.h

	touch $@

veryclean: clean
	rm -rf .revision

${BUILDDIR}/port/solaris/include/solaris-pkg-paths.h:
	rm -f $@
	echo "#undef _PATH_CONF" >> $@
	echo "#define _PATH_CONF \"${PATH_CONF}\"" >> $@
	echo "#undef _PATH_DUMPFILE" >> $@
	echo "#define _PATH_DUMPFILE \"${PATH_DUMPFILE}\"" >> $@
	echo "#undef _PATH_XFER" >> $@
	echo "#define _PATH_XFER \"${PATH_XFER}\"" >> $@
	echo "#undef _PATH_NAMED" >> $@
	echo "#define _PATH_NAMED \"${PATH_NAMED}\"" >> $@
	echo "#undef _PATH_PIDFILE" >> $@
	echo "#define _PATH_PIDFILE \"${PATH_PIDFILE}\"" >> $@

normalinstall:
	${MAKE} BASEDIR=/ BASEDIREXISTS="/ /etc /var /usr/share/lib /usr/lib \
		/usr/bin /usr/sbin" \
		DESTBIN=/usr/bin \
		DESTSBIN=/usr/sbin DESTEXEC=/usr/sbin \
		DESTMAN=/usr/share/man DESTHELP=/usr/lib \
		DESTINC=/usr/local/include DESTLIB=/usr/local/lib \
		DESTETC=/etc DESTVAR=/var/named PIDDIR=/etc \
		DESTDOC=/usr/share/lib/named \
		DESTCONTRIB=/usr/share/lib/named \
		DOTSETTINGS="DESTDIR=${DESTDIR}" \
		OTHERCONFIGTARGETS=""

