summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Eichin <eichin@mit.edu>1994-09-30 00:00:42 +0000
committerMark Eichin <eichin@mit.edu>1994-09-30 00:00:42 +0000
commitcbdf83ddcd6c8dd7f37bc200190aa4fa249c41d6 (patch)
treec9d10b93df2388777c147d939d23ca3387f2e448
parentdd432091321ff0c68102127e01b91dd40448a782 (diff)
downloadkrb5-cbdf83ddcd6c8dd7f37bc200190aa4fa249c41d6.tar.gz
krb5-cbdf83ddcd6c8dd7f37bc200190aa4fa249c41d6.tar.xz
krb5-cbdf83ddcd6c8dd7f37bc200190aa4fa249c41d6.zip
* util/kbuild: complete rewrite.
* util/kfrags: fragments of input to kbuild. See top of util/kbuild for instructions. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4390 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r--src/util/ChangeLog5
-rw-r--r--src/util/kbuild107
2 files changed, 98 insertions, 14 deletions
diff --git a/src/util/ChangeLog b/src/util/ChangeLog
new file mode 100644
index 0000000000..9f07edf064
--- /dev/null
+++ b/src/util/ChangeLog
@@ -0,0 +1,5 @@
+Thu Sep 29 19:54:38 1994 Mark Eichin (eichin@cygnus.com)
+
+ * util/kbuild: complete rewrite.
+ * util/kfrags: fragments of input to kbuild.
+
diff --git a/src/util/kbuild b/src/util/kbuild
index 7a32dab881..621c1e1b1c 100644
--- a/src/util/kbuild
+++ b/src/util/kbuild
@@ -4,25 +4,69 @@
# configuration file to control which support programs are used to
# compile it, which options are given to configure, etc.
#
+# usage: kbuild { [ frag ] [ var=value ] [ config-lib-path ] }
+# where frag is something like base, or gcc, or cns, where it finds
+# base.conf in the config lib path
+# var=value sets var to value in the script processing (useful to override
+# SRCDIR or KRB4)
+# config-lib-path adds itself to the search path for frags.
+#
+#
+# frags themselves are files named frag.conf which have variable settings
+# and filenames. # is a comment marker. If the line is an assignment, it's
+# read; if it begins with /, it's an explicit member of the path; if it
+# doesn't, it's searched for in the path set in the last fragment.
+#
+# for example, at mit, one might say
+#
+# /mit/krb5/sandbox/util/kbuild base suncc athena
+#
+# or at cygnus, one might say
+#
+# /6h/eichin/mit-v5/build/base/util/kbuild base gcc cns
+#
+# You get the idea.
+#
+# -- Mark Eichin <eichin@cygnus.com> This file is in the Public Domain.
+#
+
+progname=$0
+pts="`echo ${progname} | sed 's=[^/]*$=='`"
-CONFIG=$1
+conflib=". $pts/kfrags"
+
+THISCONF=./kbuild.temp
+rm -f $THISCONF
BUILD_PATH=./build-path
+rm -rf $BUILD_PATH
+
-if [ ${CONFIG}x = x ]; then
- echo "You must specify an build configuration file!"
- exit 1
-fi
+for arg
+do
+ case "$arg" in
+ /*) conflib="$arg $conflib" ;;
+ ..*) conflib="$arg $conflib" ;;
+ *=*) echo $arg >> $THISCONF ;;
+ *)
+ for p in $conflib
+ do
+ frag=$p/$arg.conf
+ if test -r $frag ; then
+ break
+ fi
+ done
+ echo "# $frag" >> $THISCONF
+ awk '/^#/ { next; } /^[ \t]*$/ {next; }/^[a-zA-Z0-9_]+=.*$/ { print; next; } /^\// { print "ABS_PROGS=\"${ABS_PROGS} "$0"\""; next; } { print "CMD_PROGS=\"${CMD_PROGS} "$0"\""; next; }' < $frag | sed -e 's/^PATH=/XPATH=/' >> $THISCONF
+ ;;
+ esac
+done
-SRCDIR=`sed -e '/^SRCDIR:/!d' -e 's/SRCDIR: *//' $CONFIG`
-CONFIG_OPTS=`sed -e '/^CONFIG_OPTS:/!d' -e 's/CONFIG_OPTS: *//' $CONFIG`
-CC=`sed -e '/^CC:/!d' -e 's/CC: *//' $CONFIG`
-CC_OPTS=`sed -e '/^CC_OPTS:/!d' -e 's/CC_OPTS: *//' $CONFIG`
-KRB4=`sed -e '/^KRB4:/!d' -e 's/KRB4: *//' $CONFIG`
+# echo ==== THISCONF: =====
+# cat $THISCONF
+# echo --------------------
+. $THISCONF
-CMD_PROGS=`cat $CONFIG | sed -e '1,/BEGIN CMD_LIST/d' \
- -e '/END CMD_LIST/,$d' \
- -e '/^$/d' -e '/^\#/d'`
if test ${CC}x != "x"
then
@@ -45,7 +89,41 @@ cd $BUILD_PATH
for i in $CMD_PROGS
do
- ln -s $i
+missed=true
+# echo "trying cmdprog $i"
+ for p in `echo $XPATH | sed 's/:/ /g'`
+ do
+# echo "trying cmdprog $i in path element $p"
+ if test -x $p/$i ; then
+ if test -x $i ; then
+# echo "nuking $i"
+ rm $i
+ fi
+# echo "linking $p/$i"
+ ln -s $p/$i
+ missed=false
+ break
+ fi
+ done
+if $missed ; then
+ echo "COULDN'T FIND $i in $XPATH"
+fi
+done
+
+for i in $ABS_PROGS
+do
+ if test -x $i ; then
+# echo "trying absprog $i"
+ base=`echo $i | sed 's-^.*/\([^/]*\)$-\1-p'`
+ if test -x $base ; then
+ rm $base
+# echo "nuking $base"
+ fi
+# echo "linking $i"
+ ln -s $i
+ else
+ echo "COULDN'T FIND $i"
+ fi
done
cd ..
@@ -54,6 +132,7 @@ PATH=`pwd`/$BUILD_PATH
export PATH
echo "Build path is $PATH"
+echo "configuring with: $SRCDIR/configure $CONFIG_OPTS"
$SRCDIR/configure $CONFIG_OPTS
echo "Configuration done. Building using the command:"