nt-kit revision ea94d370123a5892f6c47a97f21d1b28d44bb168
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#! /bin/sh -ex
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Copyright (C) 1999-2001 Internet Software Consortium.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Permission to use, copy, modify, and/or distribute this software for any
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# purpose with or without fee is hereby granted, provided that the above
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# copyright notice and this permission notice appear in all copies.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync#
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# PERFORMANCE OF THIS SOFTWARE.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# $Id$
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX no command line options at all. especially useful would be a way
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# to specify the target directory on the NT machine, since it is needed
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# in the Makefiles and otherwise config.status.win32 needs to be edited.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX long term something different clearly needs to be done, so someone
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# without any Unix boxes at all could download the source kit and compile.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# it'll happen; it has been a higher priority just to try to work
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# on the code issues.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncZIP=bind9-nt.zip
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncDOZIP=false
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynccase "$1" in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync-nozip) DOZIP=false; shift ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync-zip) DOZIP=true ; shift ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncesac
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynccase $# in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync0)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync dstdir=../bind9-nt
f0ab104f070bc7f569404826fea1828ed985638cvboxsync rmtdir=g:/proj/bind9-nt
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync1)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync dstdir=../bind9-nt
f0ab104f070bc7f569404826fea1828ed985638cvboxsync rmtdir="$1"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync2)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync dstdir="$2"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync rmtdir="$1"
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsync*)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync echo "usage: $0 rmtdir [dstdir]" >&2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync exit 99
f0ab104f070bc7f569404826fea1828ed985638cvboxsync ;;
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncesac
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctest -f version || {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync echo "$0: must be run in bind9 top level directory" >&2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync exit 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncset -- `ls -i version`
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncthis_version=$1
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncif test -e "$dstdir/version"; then
f0ab104f070bc7f569404826fea1828ed985638cvboxsync set -- `ls -i "$dstdir/version" 2>&1`
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncelse
f0ab104f070bc7f569404826fea1828ed985638cvboxsync set -- 0
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncfi
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncthat_version=$1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Try to make an effort to not wipe out current directory or non-bind directory
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctest "0$this_version" -eq "0$that_version" && {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync echo "$0: dstdir must not be current directory" >&2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync exit 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctest ! -d $dstdir -o "$that_version" -ne 0 || {
f0ab104f070bc7f569404826fea1828ed985638cvboxsync echo "$0: existing dstdir must be a bind9 source directory" >&2
f0ab104f070bc7f569404826fea1828ed985638cvboxsync exit 1
f0ab104f070bc7f569404826fea1828ed985638cvboxsync}
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncrm -rf $dstdir
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncmkdir $dstdir
f0ab104f070bc7f569404826fea1828ed985638cvboxsynctar cf - . | (cd $dstdir; tar xfp -)
f0ab104f070bc7f569404826fea1828ed985638cvboxsynccd $dstdir
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX Tale BSD/OS special
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncrm -f stdio.h
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Start with a clean slate. This is not done in the source tree before
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# the copy so as not to disturb things there.
f0ab104f070bc7f569404826fea1828ed985638cvboxsync./configure
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncmake clean
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX header files that (currently) need to be built on Unix
f0ab104f070bc7f569404826fea1828ed985638cvboxsync##cd lib/isc
f0ab104f070bc7f569404826fea1828ed985638cvboxsync##make
f0ab104f070bc7f569404826fea1828ed985638cvboxsync##cd ../dns
f0ab104f070bc7f569404826fea1828ed985638cvboxsync##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
f0ab104f070bc7f569404826fea1828ed985638cvboxsync##cd ../..
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX Need a better way
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# XXX grrr.
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync
f0ab104f070bc7f569404826fea1828ed985638cvboxsync# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncset +x
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncecho doing Makefile substitutions
f0ab104f070bc7f569404826fea1828ed985638cvboxsyncwhile read file type dates; do
f0ab104f070bc7f569404826fea1828ed985638cvboxsync case $file in
f0ab104f070bc7f569404826fea1828ed985638cvboxsync */Makefile.in|./make/includes.in|./version)
f0ab104f070bc7f569404826fea1828ed985638cvboxsync 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