nt-kit revision 7d32c065c7bb56f281651ae3dd2888f32ce4f1d9
5cd4555ad444fd391002ae32450572054369fd42Rob Austein#! /bin/sh -ex
5cd4555ad444fd391002ae32450572054369fd42Rob Austein#
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# Copyright (C) 1999, 2000 Internet Software Consortium.
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson#
1124950b35ae05a12e804e670607fe5ba775cb4aTinderbox User# Permission to use, copy, modify, and distribute this software for any
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# purpose with or without fee is hereby granted, provided that the above
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# copyright notice and this permission notice appear in all copies.
ec5347e2c775f027573ce5648b910361aa926c01Automatic Updater#
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# SOFTWARE.
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews# XXX no command line options at all. especially useful would be a way
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# to specify the target directory on the NT machine, since it is needed
f5d30e2864e048a42c4dc1134993ae7efdb5d6c3Mark Andrews# in the Makefiles and otherwise config.status.win32 needs to be edited.
2de07361f3d1019d6d3b7433755fe7d55578b7dcJeremy Reed
b5ad6dfea4cc3e7d1d322ac99f1e5a31096837c4Mark Andrews# XXX long term something different clearly needs to be done, so someone
f202f2587b9ba4753afba49b796f599cc12b4d0fAndreas Gustafsson# without any Unix boxes at all could download the source kit and compile.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# it'll happen; it has been a higher priority just to try to work
8012d70ea4906ba739036cc9903cb0ac0fc72e9fJeremy C. Reed# on the code issues.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob AusteinZIP=bind9-nt.zip
268a4475065fe6a8cd7cc707820982cf5e98f430Rob AusteinDOZIP=false
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeincase "$1" in
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein-nozip) DOZIP=false; shift ;;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein-zip) DOZIP=true ; shift ;;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinesac
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeincase $# in
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein0)
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein dstdir=../bind9-nt
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein rmtdir=g:/proj/bind9-nt
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ;;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein1)
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein dstdir=../bind9-nt
f5d30e2864e048a42c4dc1134993ae7efdb5d6c3Mark Andrews rmtdir="$1"
26e2a07a0b6a3b1eccef82ba31270d0c54ad4f06Mark Andrews ;;
c1a883f2e04d94e99c433b1f6cfd0c0338f4ed85Mark Andrews2)
7b8b5e34b6daf793373580dfb095f56af5e918ceAutomatic Updater dstdir="$2"
d60212e03fbef1d3dd7f7eb05c0545cc373cb9fcAutomatic Updater rmtdir="$1"
4d42b714be10e6f163d23507e4e3a396a8ac0364Automatic Updater ;;
0e27506ce3135f9bd49e12564ad0e15256135118Automatic Updater*)
5c6b95ba1b2e35f8dd6b0a7f25aacba91fff3aa2Tinderbox User echo "usage: $0 rmtdir [dstdir]" >&2
1124950b35ae05a12e804e670607fe5ba775cb4aTinderbox User exit 99
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ;;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinesac
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeintest -f version || {
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein echo "$0: must be run in bind9 top level directory" >&2
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein exit 1
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein}
f5d30e2864e048a42c4dc1134993ae7efdb5d6c3Mark Andrews
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinset -- `ls -i version`
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinthis_version=$1
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinif test -e "$dstdir/version"; then
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein set -- `ls -i "$dstdir/version" 2>&1`
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinelse
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein set -- 0
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinfi
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinthat_version=$1
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# Try to make an effort to not wipe out current directory or non-bind directory
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeintest "0$this_version" -eq "0$that_version" && {
0db6bf459f7afa1f9dc0690a521df19955c89dbfJeremy Reed echo "$0: dstdir must not be current directory" >&2
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein exit 1
a268fec7f54a89a0772a91da0511c8eae09e6157Mark Andrews}
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeintest ! -d $dstdir -o "$that_version" -ne 0 || {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews echo "$0: existing dstdir must be a bind9 source directory" >&2
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein exit 1
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein}
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinrm -rf $dstdir
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinmkdir $dstdir
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeintar cf - . | (cd $dstdir; tar xfp -)
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeincd $dstdir
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# XXX Tale BSD/OS special
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinrm -f stdio.h
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# Start with a clean slate. This is not done in the source tree before
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# the copy so as not to disturb things there.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein./configure
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinmake clean
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# XXX header files that (currently) need to be built on Unix
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein##cd lib/isc
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein##make
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein##cd ../dns
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein##cd ../..
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# XXX Need a better way
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# XXX grrr.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinset +x
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinecho doing Makefile substitutions
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinwhile read file type dates; do
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein case $file in
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein */Makefile.in|./make/includes.in|./version)
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein echo $file
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein perl -pi -e 'tr%{}/%()\\%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%(-I.*)unix%$1win32%;
561a29af8c54a216e7d30b5b4f6e0d21661654ecMark Andrews s%(-I.*)pthreads.*?(\\?)$%$2%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%-I ?%/I %g;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%-D%/D %g;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%\$\(PTHREADOBJS\)%%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%;
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt s%rm -f%-del /q /f%;
8012d70ea4906ba739036cc9903cb0ac0fc72e9fJeremy C. Reed s%rm -rf%-rd /q /s%;
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt s%touch%copy NUL:%' $file
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt ;;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein ./make/rules.in)
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein echo frobbing conditionals in $file
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
d4f032db535ad5194d442fec535123f269422055Jeremy Reed # /K is specified in MAKEDEFS *YUCK* because nmake
d4f032db535ad5194d442fec535123f269422055Jeremy Reed # for some BRAINDAMAGED REASON does not put K
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein # in MAKEFLAGS (confirm with "nmake /PKN foo";
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein # only P and N are in Makeflags.) However ... doing
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein # things this way ends up putting /K when you might not
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein # want it. Thanks, Microsoft.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein perl -pi -e \
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n"
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein if $. == 1;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein tr%{}/%()\\%;
065c66d9bf1c349600027bb50e3759a3736f73abMark Andrews
065c66d9bf1c349600027bb50e3759a3736f73abMark Andrews s%-I%/I %g;
79a1c7502d0d1c5e654d9892c948d0123c3b3e2fEvan Hunt s%-D%/D %g;
d4f032db535ad5194d442fec535123f269422055Jeremy Reed s%-c%/c %g;
d4f032db535ad5194d442fec535123f269422055Jeremy Reed
065c66d9bf1c349600027bb50e3759a3736f73abMark Andrews s/\.c\.o:/.c.obj:/;
065c66d9bf1c349600027bb50e3759a3736f73abMark Andrews
065c66d9bf1c349600027bb50e3759a3736f73abMark Andrews s%rm -f%-del /q /f%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s%rm -rf%-rd /q /s%;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/for\ i\ in\ \$\(ALL_SUBDIRS\).*
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein /for %i in (\$(ALL_SUBDIRS)) do \\/x;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/if\ \[\ (\S+)\ !=\ "nulldir".*
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein /\@if NOT $1=="nulldir" \\/x;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/^.*echo "making .* in .*\n//;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/\(cd\ (\S+);\ (.*)\);\ \\
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein /pushd $1 && cd && $2 && popd || popd/x;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/\$\$i/%i/g;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein s/^\t+(fi|done).*\n//' $file
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt ;;
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt esac
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeindone < util/copyrights
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Huntset -x
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt# Make Makefiles
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt./config.status.win32 $rmtdir
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt# Copy win32 special files
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Huntcp config.h.win32 config.h
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Huntif $DOZIP; then
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt dir="`basename $dstdir`"
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt cd ..
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt rm -f $ZIP
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt # q = quiet
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt # r = recurse
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt # l = LF -> CRLF
3b9d9ad58b2d85a10960819f5c7a4606b33e9ab2Evan Hunt # 9 = highest compression
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein zip -qrl9 $ZIP $dir
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinfi
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austeinexit 0
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein