487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence#! /bin/sh -ex
7d32c065c7bb56f281651ae3dd2888f32ce4f1d9Bob Halley#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# Copyright (C) 1999-2001, 2004, 2007, 2012, 2016 Internet Systems Consortium, Inc. ("ISC")
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark Andrews#
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# file, You can obtain one at http://mozilla.org/MPL/2.0/.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
ea94d370123a5892f6c47a97f21d1b28d44bb168Tinderbox User# $Id$
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX no command line options at all. especially useful would be a way
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# to specify the target directory on the NT machine, since it is needed
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# in the Makefiles and otherwise config.status.win32 needs to be edited.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX long term something different clearly needs to be done, so someone
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# without any Unix boxes at all could download the source kit and compile.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# it'll happen; it has been a higher priority just to try to work
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# on the code issues.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid LawrenceZIP=bind9-nt.zip
487e6abc16c1b2958d371b0d4e808953646b520aDavid LawrenceDOZIP=false
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencecase "$1" in
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence-nozip) DOZIP=false; shift ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence-zip) DOZIP=true ; shift ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceesac
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencecase $# in
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence0)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence dstdir=../bind9-nt
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence rmtdir=g:/proj/bind9-nt
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence1)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence dstdir=../bind9-nt
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence rmtdir="$1"
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence2)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence dstdir="$2"
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence rmtdir="$1"
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence*)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo "usage: $0 rmtdir [dstdir]" >&2
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence exit 99
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceesac
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencetest -f version || {
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo "$0: must be run in bind9 top level directory" >&2
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence exit 1
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence}
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceset -- `ls -i version`
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencethis_version=$1
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceif test -e "$dstdir/version"; then
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence set -- `ls -i "$dstdir/version" 2>&1`
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceelse
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence set -- 0
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencefi
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencethat_version=$1
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# Try to make an effort to not wipe out current directory or non-bind directory
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencetest "0$this_version" -eq "0$that_version" && {
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo "$0: dstdir must not be current directory" >&2
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence exit 1
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence}
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencetest ! -d $dstdir -o "$that_version" -ne 0 || {
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo "$0: existing dstdir must be a bind9 source directory" >&2
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence exit 1
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence}
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencerm -rf $dstdir
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencemkdir $dstdir
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencetar cf - . | (cd $dstdir; tar xfp -)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencecd $dstdir
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX Tale BSD/OS special
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencerm -f stdio.h
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# Start with a clean slate. This is not done in the source tree before
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# the copy so as not to disturb things there.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence./configure
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencemake clean
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX header files that (currently) need to be built on Unix
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence##cd lib/isc
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence##make
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence##cd ../dns
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence##make code.h include/dns/enumtype.h include/dns/enumclass.h include/dns/rdatastruct.h
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence##cd ../..
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX Need a better way
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceperl -pi -e '$_ = "" if /chmod\(.*\)/' lib/dns/sec/dst/dst_parse.c
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# XXX grrr.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceperl -pi -e 'last if /^##confparser\.c/' lib/dns/config/Makefile.in
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# Adjust Makefiles to have NT paths and nmake-compatible variable expansion.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceset +x
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceecho doing Makefile substitutions
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencewhile read file type dates; do
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence case $file in
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence */Makefile.in|./make/includes.in|./version)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo $file
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence perl -pi -e 'tr%{}/%()\\%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%(-I.*)unix%$1win32%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%(-I.*)pthreads.*?(\\?)$%$2%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%-I ?%/I %g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%-D%/D %g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%(\$\(ARFLAGS\)) \$@%$1 /out:\$@%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%\$\(UNIXOBJS\)%\$(WIN32OBJS)%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%\$\(PTHREADOBJS\)%%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%^(SUBDIRS.*)(pthreads)(.*)%$1$3%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%^(SUBDIRS.*)(unix)(.*)%$1win32$3%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%rm -f%-del /q /f%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%rm -rf%-rd /q /s%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%touch%copy NUL:%' $file
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ./make/rules.in)
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence echo frobbing conditionals in $file
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # /K is specified in MAKEDEFS *YUCK* because nmake
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # for some BRAINDAMAGED REASON does not put K
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # in MAKEFLAGS (confirm with "nmake /PKN foo";
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # only P and N are in Makeflags.) However ... doing
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # things this way ends up putting /K when you might not
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # want it. Thanks, Microsoft.
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence perl -pi -e \
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence 'print "MAKEDEFS = /nologo /K\$(MAKEFLAGS)\n"
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence if $. == 1;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence tr%{}/%()\\%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%-I%/I %g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%-D%/D %g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%-c%/c %g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/\.c\.o:/.c.obj:/;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%rm -f%-del /q /f%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s%rm -rf%-rd /q /s%;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/for\ i\ in\ \$\(ALL_SUBDIRS\).*
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence /for %i in (\$(ALL_SUBDIRS)) do \\/x;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/if\ \[\ (\S+)\ !=\ "nulldir".*
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence /\@if NOT $1=="nulldir" \\/x;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/^.*echo "making .* in .*\n//;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/\(cd\ (\S+);\ (.*)\);\ \\
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence /pushd $1 && cd && $2 && popd || popd/x;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/\$\$i/%i/g;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence s/^\t+(fi|done).*\n//' $file
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence ;;
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence esac
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencedone < util/copyrights
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceset -x
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# Make Makefiles
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence./config.status.win32 $rmtdir
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence# Copy win32 special files
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencecp config.h.win32 config.h
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceif $DOZIP; then
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence dir="`basename $dstdir`"
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence cd ..
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence rm -f $ZIP
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # q = quiet
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # r = recurse
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # l = LF -> CRLF
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence # 9 = highest compression
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence zip -qrl9 $ZIP $dir
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrencefi
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrence
487e6abc16c1b2958d371b0d4e808953646b520aDavid Lawrenceexit 0