nt-kit revision 247bf378605811d695e968dbe930a7fc45c0038e
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#! /bin/sh -ex
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User#
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews * Copyright (C) 2004, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Copyright (C) 1999-2001 Internet Software Consortium.
4a14ce5ba00ab7bc55c99ffdcf59c7a4ab902721Automatic Updater *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Permission to use, copy, modify, and/or distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * 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 ISC DISCLAIMS ALL WARRANTIES WITH
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * PERFORMANCE OF THIS SOFTWARE.
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# $Id$
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
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews# 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
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinZIP=bind9-nt.zip
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinDOZIP=false
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincase "$1" in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein-nozip) DOZIP=false; shift ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein-zip) DOZIP=true ; shift ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinesac
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeincase $# in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein0)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dstdir=../bind9-nt
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein rmtdir=g:/proj/bind9-nt
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein1)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dstdir=../bind9-nt
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews rmtdir="$1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein2)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein dstdir="$2"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein rmtdir="$1"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein*)
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User echo "usage: $0 rmtdir [dstdir]" >&2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exit 99
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinesac
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintest -f version || {
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein echo "$0: must be run in bind9 top level directory" >&2
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User exit 1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein}
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox Userset -- `ls -i version`
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox Userthis_version=$1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinif test -e "$dstdir/version"; then
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User set -- `ls -i "$dstdir/version" 2>&1`
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox Userelse
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User set -- 0
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox Userfi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinthat_version=$1
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User# Try to make an effort to not wipe out current directory or non-bind directory
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox Usertest "0$this_version" -eq "0$that_version" && {
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User echo "$0: dstdir must not be current directory" >&2
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein exit 1
990d0e893f5b70e735cdf990af66e9ec6e91fa78Tinderbox User}
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeintest ! -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}
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updater
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox Userrm -rf $dstdir
a1ad6695ed6f988406cf155aa26376f84f73bcb9Automatic Updatermkdir $dstdir
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updatertar cf - . | (cd $dstdir; tar xfp -)
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox Usercd $dstdir
2895f101b5585a19015ac2c2c1e1812ac467fa12Automatic Updater
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User# XXX Tale BSD/OS special
44d0f0256fbdce130a18655023c3b06bacacbd61Automatic Updaterrm -f stdio.h
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Start with a clean slate. This is not done in the source tree before
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User# the copy so as not to disturb things there.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein./configure
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmake clean
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# XXX header files that (currently) need to be built on Unix
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User##cd lib/isc
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein##make
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein##cd ../dns
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein##cd ../..
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox User# XXX Need a better way
65f32cd8bf0924a9d7b7fde03d1a45407dc6f422Tinderbox Userperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
7208386cd37a2092c70eddf80cf29519b16c4c80Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# XXX grrr.
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updaterperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
507151045be68c671ffd4e2f37e17cdfa0376fc4Automatic Updater
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinset +x
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinecho doing Makefile substitutions
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewswhile read file type dates; do
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews case $file in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein */Makefile.in|./make/includes.in|./version)
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews echo $file
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews perl -pi -e 'tr%{}/%()\\%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%(-I.*)unix%$1win32%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%(-I.*)pthreads.*?(\\?)$%$2%;
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews s%-I ?%/I %g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%-D%/D %g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%;
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%\$\(PTHREADOBJS\)%%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%rm -f%-del /q /f%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%rm -rf%-rd /q /s%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%touch%copy NUL:%' $file
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ./make/rules.in)
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews echo frobbing conditionals in $file
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # /K is specified in MAKEDEFS *YUCK* because nmake
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # for some BRAINDAMAGED REASON does not put K
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # in MAKEFLAGS (confirm with "nmake /PKN foo";
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # only P and N are in Makeflags.) However ... doing
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # things this way ends up putting /K when you might not
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # want it. Thanks, Microsoft.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein perl -pi -e \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein if $. == 1;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein tr%{}/%()\\%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%-I%/I %g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%-D%/D %g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%-c%/c %g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/\.c\.o:/.c.obj:/;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%rm -f%-del /q /f%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s%rm -rf%-rd /q /s%;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/for\ i\ in\ \$\(ALL_SUBDIRS\).*
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /for %i in (\$(ALL_SUBDIRS)) do \\/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/if\ \[\ (\S+)\ !=\ "nulldir".*
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /\@if NOT $1=="nulldir" \\/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/^.*echo "making .* in .*\n//;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/\(cd\ (\S+);\ (.*)\);\ \\
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein /pushd $1 && cd && $2 && popd || popd/x;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/\$\$i/%i/g;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein s/^\t+(fi|done).*\n//' $file
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein ;;
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein esac
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsdone < util/copyrights
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsset -x
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Make Makefiles
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews./config.status.win32 $rmtdir
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# Copy win32 special files
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewscp config.h.win32 config.h
b05bdb520d83f7ecaad708fe305268c3420be01dMark Andrews
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrewsif $DOZIP; then
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews dir="`basename $dstdir`"
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews cd ..
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews rm -f $ZIP
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews # q = quiet
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews # r = recurse
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews # l = LF -> CRLF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein # 9 = highest compression
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein zip -qrl9 $ZIP $dir
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinfi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinexit 0
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein