#
# Copyright (C) 2009-2012, 2015  Internet Systems Consortium, Inc. ("ISC")
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
# AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
# PERFORMANCE OF THIS SOFTWARE.

# Configure and build the bind libraries for use by DHCP

include ./version.tmp
version=${MAJORVER}.${MINORVER}.${PATCHVER}${RELEASETYPE}${RELEASEVER}

# bindvar.tmp is constructed by configure, it has the paths for bind
# if GMAKE is blank the shell script couldn't find a gmake to use.
# binddir=
# GMAKE=
include ./bindvar.tmp

bindsrcdir=bind-${version}

bindconfig = --disable-kqueue --disable-epoll --disable-devpoll \
	--without-openssl --without-libxml2 --enable-exportlib \
	--with-gssapi=no --enable-threads=no --without-lmdb @BINDCONFIG@ \
	--with-export-includedir=${binddir}/include \
	--with-export-libdir=${binddir}/lib

@BIND_ATF_FALSE@cleandirs = ./lib ./include
@BIND_ATF_TRUE@cleandirs = ./lib ./include ./atf
cleanfiles = ./configure.log ./build.log ./install.log

@BIND_ATF_FALSE@all: bind1 bind2
@BIND_ATF_TRUE@all: bind1 atf bind2

bind1:
# Extract the source from the tarball, if it hasn't been already.
	@if test -d ${bindsrcdir} ; then                    \
		echo ${bindsrcdir} already unpacked... ;    \
	else                                                \
		gunzip -c bind.tar.gz | tar xf - ;          \
	fi

	@if test -z "${GMAKE}"; then                        \
		echo "unable to find gmake" 1>&2 ;          \
		exit 1;                                     \
	fi

# Configure the export libraries
# Currently disable the epoll, devpoll and kqueue options as they
# don't interact well with the DHCP code.
# If the top-level Bind Makefile exists we skip the configuration step
# as we assume it's done and won't change.  Doing a make clean will
# reset things if necessary.
	@if test -f ${bindsrcdir}/Makefile ; then                       \
		echo Bind export libraries already configured ;         \
	else                                                            \
		echo Configuring BIND Export libraries for DHCP. ;      \
		rm -rf ${cleandirs} ${cleanfiles} ;                     \
               (cd ${bindsrcdir} && export CC=${CROSS_CC} &&           \
                ./configure  --disable-atomic --disable-kqueue         \
                --disable-epoll --disable-devpoll --without-openssl    \
                --without-libxml2 --enable-exportlib                   \
                --enable-threads=no                                    \
                --with-export-includedir=${binddir}/include            \
                --with-export-libdir=${binddir}/lib --with-gssapi=no   \
               --without-randomdev > ${binddir}/configure.log);       \
	fi

atf:
# Build and copy the ATF support if not yet installed.
	@if test -d ./atf ; then				      \
		echo ATF support already installed ;		      \
	else							      \
		echo Building ATF support ;			      \
		(cd ${bindsrcdir}/unit;				      \
		 MAKE=${GMAKE} ${GMAKE} atf > ${binddir}/build.log ;  \
		 cp -rp atf ${binddir}) ;			      \
	fi

@CROSS_COMPILING_FALSE@bind2: bind2-noguest
@CROSS_COMPILING_TRUE@bind2: bind2-hostgen

bind2-noguest:
# Build and install the export libraries
# No need to do anything if we already have something installed.
	@if test -d ${binddir}/lib ; then                                    \
		echo Bind export libraries already installed ;               \
	else                                                                 \
		echo Building BIND Export libraries - this takes some time. ;\
		(cd ${bindsrcdir}/lib/export/dns ;			     \
		  echo building gen using ${BUILD_CC} in `pwd` ;             \
		  $(MAKE) CC=${BUILD_CC} CFLAGS="-O2" LIBS="" gen) ;         \
                                                                             \
		echo Installing BIND Export libraries to ${binddir}. ;       \
		(cd ${bindsrcdir}/lib/export ;                               \
		  $(MAKE) DESTDIR="" install > ${binddir}/build.log) ;       \
	fi

bind2-hostgen:
# Build and install the export libraries
# No need to do anything if we already have something installed.
	@if test -d ${binddir}/lib ; then                                    \
		echo Bind export libraries already installed ;               \
	else                                                                 \
		echo Building BIND Export libraries - this takes some time. ;\
		(cd ${bindsrcdir}/lib/export/dns ; \
		 echo building gen using ${BUILD_CC} in `pwd` ; \
		 MAKE=${GMAKE} ${GMAKE} CC=${BUILD_CC} CFLAGS=${BUILD_CFLAGS} CPPFLAGS=${BUILD_CPPFLAGS} LDFLAGS=${BUILD_LDFLAGS} LIBS=${BUILD_LIBS} gen >> ${binddir}/build.log) ; \
		(cd ${bindsrcdir}/lib/export ;                               \
		  echo building in `pwd` ;                                   \
		  MAKE=${GMAKE} ${GMAKE} >> ${binddir}/build.log) ;          \
                                                                             \
		echo Installing BIND Export libraries to ${binddir}. ;       \
		(cd ${bindsrcdir}/lib/export ;                               \
		  MAKE=${GMAKE} ${GMAKE} install > ${binddir}/install.log) ; \
	fi

clean:
	@echo Cleaning BIND export library.
	rm -rf ${bindsrcdir} ${cleandirs} ${cleanfiles}

# Include the following so that this Makefile is happy when the parent
# tries to use them.
install-exec:

check distdir distclean dvi install installcheck uninstall:

