nt-kit revision ec5347e2c775f027573ce5648b910361aa926c01
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#! /bin/sh -ex
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC")
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (C) 1999-2001 Internet Software Consortium.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Permission to use, copy, modify, and/or distribute this software for any
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# purpose with or without fee is hereby granted, provided that the above
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# copyright notice and this permission notice appear in all copies.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# PERFORMANCE OF THIS SOFTWARE.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# $Id: nt-kit,v 1.8 2007/06/18 23:47:57 tbox Exp $
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# XXX no command line options at all. especially useful would be a way
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# to specify the target directory on the NT machine, since it is needed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# in the Makefiles and otherwise config.status.win32 needs to be edited.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# XXX long term something different clearly needs to be done, so someone
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# without any Unix boxes at all could download the source kit and compile.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# it'll happen; it has been a higher priority just to try to work
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# on the code issues.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncZIP=bind9-nt.zip
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDOZIP=false
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccase "$1" in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync-nozip) DOZIP=false; shift ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync-zip) DOZIP=true ; shift ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncesac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccase $# in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dstdir=../bind9-nt
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rmtdir=g:/proj/bind9-nt
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync1)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dstdir=../bind9-nt
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rmtdir="$1"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync2)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dstdir="$2"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync rmtdir="$1"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync*)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "usage: $0 rmtdir [dstdir]" >&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 99
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncesac
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctest -f version || {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$0: must be run in bind9 top level directory" >&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncset -- `ls -i version`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthis_version=$1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncif test -e "$dstdir/version"; then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set -- `ls -i "$dstdir/version" 2>&1`
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncelse
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set -- 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfi
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthat_version=$1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Try to make an effort to not wipe out current directory or non-bind directory
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctest "0$this_version" -eq "0$that_version" && {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$0: dstdir must not be current directory" >&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctest ! -d $dstdir -o "$that_version" -ne 0 || {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo "$0: existing dstdir must be a bind9 source directory" >&2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync exit 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncrm -rf $dstdir
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncmkdir $dstdir
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctar cf - . | (cd $dstdir; tar xfp -)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccd $dstdir
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# XXX Tale BSD/OS special
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsyncrm -f stdio.h
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync# Start with a clean slate. This is not done in the source tree before
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync# the copy so as not to disturb things there.
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync./configure
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsyncmake clean
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync# XXX header files that (currently) need to be built on Unix
f840b44c54b2bf0b29cf6da94c22fd48fcf253b9vboxsync##cd lib/isc
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##make
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##cd ../dns
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync##cd ../..
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# XXX Need a better way
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# XXX grrr.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncset +x
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncecho doing Makefile substitutions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhile read file type dates; do
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case $file in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync */Makefile.in|./make/includes.in|./version)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo $file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync perl -pi -e 'tr%{}/%()\\%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%(-I.*)unix%$1win32%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%(-I.*)pthreads.*?(\\?)$%$2%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%-I ?%/I %g;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%-D%/D %g;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%\$\(PTHREADOBJS\)%%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%rm -f%-del /q /f%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%rm -rf%-rd /q /s%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%touch%copy NUL:%' $file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ;;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ./make/rules.in)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync echo frobbing conditionals in $file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # /K is specified in MAKEDEFS *YUCK* because nmake
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # for some BRAINDAMAGED REASON does not put K
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # in MAKEFLAGS (confirm with "nmake /PKN foo";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # only P and N are in Makeflags.) However ... doing
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # things this way ends up putting /K when you might not
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # want it. Thanks, Microsoft.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync perl -pi -e \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if $. == 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync tr%{}/%()\\%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%-I%/I %g;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%-D%/D %g;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%-c%/c %g;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s/\.c\.o:/.c.obj:/;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%rm -f%-del /q /f%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s%rm -rf%-rd /q /s%;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync s/for\ i\ in\ \$\(ALL_SUBDIRS\).*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /for %i in (\$(ALL_SUBDIRS)) do \\/x;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
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