#! /bin/sh -ex # # Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") # Copyright (C) 1999-2001 Internet Software Consortium. # # Permission to use, copy, modify, and 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. # $Id: nt-kit,v 1.6.206.1 2004/03/06 13:16:24 marka Exp $ # XXX no command line options at all. especially useful would be a way # to specify the target directory on the NT machine, since it is needed # in the Makefiles and otherwise config.status.win32 needs to be edited. # XXX long term something different clearly needs to be done, so someone # without any Unix boxes at all could download the source kit and compile. # it'll happen; it has been a higher priority just to try to work # on the code issues. ZIP=bind9-nt.zip DOZIP=false case "$1" in -nozip) DOZIP=false; shift ;; -zip) DOZIP=true ; shift ;; esac case $# in 0) dstdir=../bind9-nt rmtdir=g:/proj/bind9-nt ;; 1) dstdir=../bind9-nt rmtdir="$1" ;; 2) dstdir="$2" rmtdir="$1" ;; *) echo "usage: $0 rmtdir [dstdir]" >&2 exit 99 ;; esac test -f version || { echo "$0: must be run in bind9 top level directory" >&2 exit 1 } set -- `ls -i version` this_version=$1 if test -e "$dstdir/version"; then set -- `ls -i "$dstdir/version" 2>&1` else set -- 0 fi that_version=$1 # Try to make an effort to not wipe out current directory or non-bind directory test "0$this_version" -eq "0$that_version" && { echo "$0: dstdir must not be current directory" >&2 exit 1 } test ! -d $dstdir -o "$that_version" -ne 0 || { echo "$0: existing dstdir must be a bind9 source directory" >&2 exit 1 } rm -rf $dstdir mkdir $dstdir tar cf - . | (cd $dstdir; tar xfp -) cd $dstdir # XXX Tale BSD/OS special rm -f stdio.h # Start with a clean slate. This is not done in the source tree before # the copy so as not to disturb things there. ./configure make clean # XXX header files that (currently) need to be built on Unix ##cd lib/isc ##make ##cd ../dns ##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h ##cd ../.. # XXX Need a better way perl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c # XXX grrr. perl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in # Adjust Makefiles to have NT paths and nmake-compatible variable expansion. set +x echo doing Makefile substitutions while read file type dates; do case $file in */Makefile.in|./make/includes.in|./version) echo $file perl -pi -e 'tr%{}/%()\\%; s%(-I.*)unix%$1win32%; s%(-I.*)pthreads.*?(\\?)$%$2%; s%-I ?%/I %g; s%-D%/D %g; s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%; s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%; s%\$\(PTHREADOBJS\)%%; s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%; s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%; s%rm -f%-del /q /f%; s%rm -rf%-rd /q /s%; s%touch%copy NUL:%' $file ;; ./make/rules.in) echo frobbing conditionals in $file # /K is specified in MAKEDEFS *YUCK* because nmake # for some BRAINDAMAGED REASON does not put K # in MAKEFLAGS (confirm with "nmake /PKN foo"; # only P and N are in Makeflags.) However ... doing # things this way ends up putting /K when you might not # want it. Thanks, Microsoft. perl -pi -e \ 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n" if $. == 1; tr%{}/%()\\%; s%-I%/I %g; s%-D%/D %g; s%-c%/c %g; s/\.c\.o:/.c.obj:/; s%rm -f%-del /q /f%; s%rm -rf%-rd /q /s%; s/for\ i\ in\ \$\(ALL_SUBDIRS\).* /for %i in (\$(ALL_SUBDIRS)) do \\/x; s/if\ \[\ (\S+)\ !=\ "nulldir".* /\@if NOT $1=="nulldir" \\/x; s/^.*echo "making .* in .*\n//; s/\(cd\ (\S+);\ (.*)\);\ \\ /pushd $1 && cd && $2 && popd || popd/x; s/\$\$i/%i/g; s/^\t+(fi|done).*\n//' $file ;; esac done < util/copyrights set -x # Make Makefiles ./config.status.win32 $rmtdir # Copy win32 special files cp config.h.win32 config.h if $DOZIP; then dir="`basename $dstdir`" cd .. rm -f $ZIP # q = quiet # r = recurse # l = LF -> CRLF # 9 = highest compression zip -qrl9 $ZIP $dir fi exit 0