nt-kit revision 40f53fa8d9c6a4fc38c0014495e7a42b08f52481
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#! /bin/sh -ex
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Copyright (C) 1999, 2000 Internet Software Consortium.
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User#
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# Permission to use, copy, modify, and distribute this software for any
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User# purpose with or without fee is hereby granted, provided that the above
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# $Id: nt-kit,v 1.5 2000/08/01 01:33:34 tale Exp $
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# XXX no command line options at all. especially useful would be a way
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# to specify the target directory on the NT machine, since it is needed
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# in the Makefiles and otherwise config.status.win32 needs to be edited.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# XXX long term something different clearly needs to be done, so someone
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# without any Unix boxes at all could download the source kit and compile.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# it'll happen; it has been a higher priority just to try to work
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# on the code issues.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox UserZIP=bind9-nt.zip
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDOZIP=false
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincase "$1" in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User-nozip) DOZIP=false; shift ;;
1700442a7751c2bbdafe2d039cebbd8316496957Tinderbox User-zip) DOZIP=true ; shift ;;
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox Useresac
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincase $# in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein0)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dstdir=../bind9-nt
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein rmtdir=g:/proj/bind9-nt
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein1)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dstdir=../bind9-nt
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User rmtdir="$1"
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User ;;
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User2)
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User dstdir="$2"
010a51c427bfb6ab658fc0056955a1a5b69810beTinderbox User rmtdir="$1"
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User ;;
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User*)
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User echo "usage: $0 rmtdir [dstdir]" >&2
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User exit 99
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User ;;
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Useresac
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintest -f version || {
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews echo "$0: must be run in bind9 top level directory" >&2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exit 1
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User}
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userset -- `ls -i version`
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userthis_version=$1
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userif test -e "$dstdir/version"; then
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein set -- `ls -i "$dstdir/version" 2>&1`
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinelse
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein set -- 0
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntfi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthat_version=$1
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User# Try to make an effort to not wipe out current directory or non-bind directory
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintest "0$this_version" -eq "0$that_version" && {
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User echo "$0: dstdir must not be current directory" >&2
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User exit 1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein}
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Usertest ! -d $dstdir -o "$that_version" -ne 0 || {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein echo "$0: existing dstdir must be a bind9 source directory" >&2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exit 1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein}
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntrm -rf $dstdir
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntmkdir $dstdir
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunttar cf - . | (cd $dstdir; tar xfp -)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntcd $dstdir
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User# XXX Tale BSD/OS special
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntrm -f stdio.h
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User# Start with a clean slate. This is not done in the source tree before
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User# the copy so as not to disturb things there.
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User./configure
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox Usermake clean
2b4d1b54f6ca406b8233d9e6fea9593df6dad035Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# XXX header files that (currently) need to be built on Unix
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User##cd lib/isc
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User##make
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt##cd ../dns
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User##cd ../..
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User# XXX Need a better way
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updaterperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater# XXX grrr.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userset +x
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userecho doing Makefile substitutions
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox Userwhile read file type dates; do
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User case $file in
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User */Makefile.in|./make/includes.in|./version)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User echo $file
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User perl -pi -e 'tr%{}/%()\\%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%(-I.*)unix%$1win32%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%(-I.*)pthreads.*?(\\?)$%$2%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%-I ?%/I %g;
6f64d4ab8e68f9b2333bcbfc755396d29a4a9d7cAutomatic Updater s%-D%/D %g;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%;
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%\$\(PTHREADOBJS\)%%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%;
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt s%rm -f%-del /q /f%;
bbbf2e27d3a981163dab139497d6b2dc85449db0Tinderbox User s%rm -rf%-rd /q /s%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User s%touch%copy NUL:%' $file
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ;;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User ./make/rules.in)
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User echo frobbing conditionals in $file
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # /K is specified in MAKEDEFS *YUCK* because nmake
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # for some BRAINDAMAGED REASON does not put K
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater # in MAKEFLAGS (confirm with "nmake /PKN foo";
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt # only P and N are in Makeflags.) However ... doing
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updater # things this way ends up putting /K when you might not
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User # want it. Thanks, Microsoft.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User perl -pi -e \
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n"
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if $. == 1;
bcf15a19ae0efa72a22cdfb50666a3c6ce39eb9fTinderbox User
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User tr%{}/%()\\%;
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User s%-I%/I %g;
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User s%-D%/D %g;
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User s%-c%/c %g;
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User s/\.c\.o:/.c.obj:/;
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User s%rm -f%-del /q /f%;
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User s%rm -rf%-rd /q /s%;
983df82baf1d7d0b668c98cf45928a19f175c6e7Tinderbox User
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User s/for\ i\ in\ \$\(ALL_SUBDIRS\).*
260e8e04b0dc24cb884c789b5d9eb046457f264eTinderbox User /for %i in (\$(ALL_SUBDIRS)) do \\/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/if\ \[\ (\S+)\ !=\ "nulldir".*
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews /\@if NOT $1=="nulldir" \\/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User s/^.*echo "making .* in .*\n//;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/\(cd\ (\S+);\ (.*)\);\ \\
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews /pushd $1 && cd && $2 && popd || popd/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt s/\$\$i/%i/g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt s/^\t+(fi|done).*\n//' $file
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein esac
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntdone < util/copyrights
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset -x
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# Make Makefiles
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein./config.status.win32 $rmtdir
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt# Copy win32 special files
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincp config.h.win32 config.h
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userif $DOZIP; then
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User dir="`basename $dstdir`"
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User cd ..
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User rm -f $ZIP
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User # q = quiet
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User # r = recurse
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User # l = LF -> CRLF
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User # 9 = highest compression
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User zip -qrl9 $ZIP $dir
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfi
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntexit 0
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein