# $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
#
-# Generated on Tue Dec 17 14:33:33 EST 1996 [metaconfig 3.0 PL60]
+# Generated on Sat Feb 1 00:26:40 EST 1997 [metaconfig 3.0 PL60]
cat >/tmp/c1$$ <<EOF
ARGGGHHHH!!!!!
exit 1
fi
-: On HP-UX, large Configure scripts may exercise a bug in /bin/sh
-if test -f /hp-ux -a -f /bin/ksh; then
- if (PATH=.; alias -x) >/dev/null 2>&1; then
- : already under /bin/ksh
- else
+: Test and see if we are running under ksh, either blatantly or in disguise.
+if (PATH=.; alias -x) >/dev/null 2>&1; then
+ : running under ksh. Is this a good thing?
+ if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
+ if test X`/usr/bin/uname -v` = X4 ; then
+ : on AIX 4, /bin/sh is really ksh, and it causes us problems.
+ : Avoid it
cat <<'EOM'
-(Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
+(Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
EOM
unset ENV
- exec /bin/ksh $0 "$@"
+ exec /usr/bin/bsh $0 "$@"
fi
-else
+ else
+ if test ! -f /hp-ux ; then
: Warn them if they use ksh on other systems
- (PATH=.; alias -x) >/dev/null 2>&1 && \
cat <<EOM
(I see you are using the Korn shell. Some ksh's blow up on $me,
especially on older exotic systems. If yours does, try the Bourne
shell instead.)
EOM
+ fi
+ fi
+else
+ : Not running under ksh. Maybe we should be?
+ : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
+ if test -f /hp-ux -a -f /bin/ksh; then
+ cat <<'EOM'
+(Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
+EOM
+ unset ENV
+ exec /bin/ksh $0 "$@"
+ fi
fi
: Configure runs within the UU subdirectory
stdio_base=''
stdio_bufsiz=''
stdio_cnt=''
-stdio_filbuf=''
stdio_ptr=''
d_index=''
d_strchr=''
i_varhdr=''
i_vfork=''
intsize=''
+longsize=''
+shortsize=''
libc=''
libperl=''
shrpenv=''
extractsh=''
override=''
knowitall=''
+
rm -f optdef.sh
+cat >optdef.sh <<EOS
+$startsh
+EOS
: option parsing
while test $# -gt 0; do
: now set up to do reads with possible shell escape and default assignment
cat <<EOSC >myread
+$startsh
xxxm=\$dflt
$myecho
ans='!'
read answ
set x \$xxxm
shift
- aok=''; eval "ans=\"\$answ\"" && aok=y
+ aok=''; eval ans="\\"\$answ\\"" && aok=y
case "\$answ" in
"\$ans")
case "\$ans" in
$test -f /dnix && osname=dnix
$test -f /lynx.os && osname=lynxos
$test -f /unicos && osname=unicos && osvers=`$uname -r`
+ $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
$test -f /bin/mips && /bin/mips && osname=mips
$test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
$sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
*) osvers=$tmp;;
esac
;;
+ *dc.osx) osname=dcosx
+ osvers="$3"
+ ;;
dnix) osname=dnix
osvers="$3"
;;
ultrix) osname=ultrix
osvers="$3"
;;
- osf1) case "$5" in
+ osf1|mls+) case "$5" in
alpha)
osname=dec_osf
osvers=`echo "$3" | sed 's/^[vt]//'`
$eunicefix filexp
: now set up to get a file name
-cat <<'EOSC' >getfile
+cat <<EOS >getfile
+$startsh
+EOS
+cat <<'EOSC' >>getfile
tilde=''
fullpath=''
already=''
fi
: set the base revision
-baserev=5
+baserev=5.0
: get the patchlevel
echo " "
eval $prefixit
case "$archlib" in
'')
- case "$privlib" in
- '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
- set dflt
- eval $prefixup
- ;;
- *) if test 0 -eq "$subversion"; then
- version=`echo $baserev $patchlevel | \
- $awk '{ printf "%d.%03d\n",$1,$2 }'`
- else
- version=`echo $baserev $patchlevel $subversion | \
- $awk '{ printf "%d.%03d%02d\n",$1,$2,$3 }'`
- fi
- dflt="$privlib/$archname/$version"
- ;;
- esac
+ case "$privlib" in
+ '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
+ set dflt
+ eval $prefixup
;;
-*) dflt="$archlib";;
+ *) if test 0 -eq "$subversion"; then
+ version=`LC_ALL=C; export LC_ALL; \
+ echo $baserev $patchlevel | \
+ $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
+ else
+ version=`LC_ALL=C; export LC_ALL; \
+ echo $baserev $patchlevel $subversion | \
+ $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
+ fi
+ dflt="$privlib/$archname/$version"
+ ;;
+ esac
+ ;;
+*)
+ dflt="$archlib"
+ ;;
esac
cat <<EOM
fi
: set up the script used to warn in case of inconsistency
-cat <<'EOSC' >whoa
+cat <<EOS >whoa
+$startsh
+EOS
+cat <<'EOSC' >>whoa
dflt=y
echo " "
echo "*** WHOA THERE!!! ***" >&4
else
set signal.h LANGUAGE_C; eval $inctest
fi
-set signal.h _NO_PROTO; eval $inctest
case "$hint" in
none|recommended) dflt="$ccflags $dflt" ;;
:
elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
:
+ elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
+ :
elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
:
elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
eval $xscan;\
$contains '^fprintf$' libc.list >/dev/null 2>&1; then
eval $xrun
+elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
+ eval $xscan;\
+ $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+ eval $xrun
else
nm -p $* 2>/dev/null >libc.tmp
$grep fprintf libc.tmp > libc.ptf
solaris|netbsd)
xxx="-R $shrpdir"
;;
- linux|irix*)
+ freebsd)
+ xxx="-Wl,-R$shrpdir"
+ ;;
+ linux|irix*|dec_osf)
xxx="-Wl,-rpath,$shrpdir"
;;
*)
esac
case "$xxx" in
'') ;;
- *) ccdlflags="$ccdlflags $xxx"
- cat <<EOM >&4
+ *)
+ # Only add $xxx if it isn't already in ccdlflags.
+ case " $ccdlflags " in
+ *" $xxx "*) ;;
+ *) ccdlflags="$ccdlflags $xxx"
+ cat <<EOM >&4
Adding $xxx to the flags
passed to $ld so that the perl executable will find the
installed shared $libperl.
EOM
+ ;;
+ esac
;;
esac
fi
echo "(Attempting domain name extraction from $tans)"
: Why was there an Egrep here, when Sed works?
: Look for either a search or a domain directive.
- dflt=.`$sed -n -e 's/^search[ ]*\(.*\)/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ dflt=.`$sed -n -e 's/ / /g' \
+ -e 's/^search *\([^ ]*\).*/\1/p' $tans \
+ | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
case "$dflt" in
- .) dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
- ;;
+ .) dflt=.`$sed -n -e 's/ / /g' \
+ -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
+ | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ ;;
esac
fi
;;
set bzero d_bzero
eval $inlibc
-: check for length of integer
+: check for lengths of integral types
echo " "
case "$intsize" in
'')
echo "Checking to see how big your integers are..." >&4
- $cat >try.c <<'EOCP'
+ $cat >intsize.c <<'EOCP'
#include <stdio.h>
main()
{
- printf("%d\n", sizeof(int));
+ printf("intsize=%d;\n", sizeof(int));
+ printf("longsize=%d;\n", sizeof(long));
+ printf("shortsize=%d;\n", sizeof(short));
+ fflush(stdout);
exit(0);
}
EOCP
- if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
- intsize=`./try`
+# If $libs contains -lsfio, and sfio is mis-configured, then it
+# sometimes (apparently) runs and exits with a 0 status, but with no
+# output!. Thus we check with test -s whether we actually got any
+# output. I think it has to do with sfio's use of _exit vs. exit,
+# but I don't know for sure. --Andy Dougherty 1/27/97.
+ if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
+ ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
+ eval `$cat intsize.out`
echo "Your integers are $intsize bytes long."
+ echo "Your long integers are $longsize bytes long."
+ echo "Your short integers are $shortsize bytes long."
else
- dflt='4'
- echo "(I can't seem to compile the test program. Guessing...)"
+ $cat >&4 <<EOM
+
+Help! I can't compile and run the intsize test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it. Still, I'll try anyway.)
+
+EOM
+ dflt=4
rp="What is the size of an integer (in bytes)?"
. ./myread
intsize="$ans"
+ dflt=$intsize
+ rp="What is the size of a long integer (in bytes)?"
+ . ./myread
+ longsize="$ans"
+ dflt=2
+ rp="What is the size of a short integer (in bytes)?"
+ . ./myread
+ shortsize="$ans"
fi
;;
esac
-$rm -f try.c try
+$rm -f intsize intsize.[co] intsize.out
: see if signal is declared as pointer to function returning int or void
echo " "
*) echo "However, your read() returns '$status' on EOF??";;
esac
val="$define"
- if test "$status" -eq "$rd_nodata"; then
+ if test "$status" = "$rd_nodata"; then
echo "WARNING: you can't distinguish between EOF and no data!"
val="$undef"
fi
exit(0);
}
EOCP
- if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
+ if $cc $optimize $ccflags $ldflags foo.c \
+ -o safebcpy $libs >/dev/null 2>&1; then
if ./safebcpy 2>/dev/null; then
echo "Yes, it can."
val="$define"
exit(0);
}
EOCP
- if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
+ if $cc $optimize $ccflags $ldflags foo.c \
+ -o safemcpy $libs >/dev/null 2>&1; then
if ./safemcpy 2>/dev/null; then
echo "Yes, it can."
val="$define"
exit(0);
}
EOCP
- if $cc $ccflags $ldflags foo.c -o sanemcmp $libs >/dev/null 2>&1; then
+ if $cc $optimize $ccflags $ldflags foo.c \
+ -o sanemcmp $libs >/dev/null 2>&1; then
if ./sanemcmp 2>/dev/null; then
echo "Yes, it can."
val="$define"
y|Y) ;;
*) echo "Ok, avoiding sfio this time. I'll use stdio instead."
val="$undef"
+ : Remove sfio from list of libraries to use
+ set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
+ shift
+ libs="$*"
+ echo "libs = $libs" >&4
;;
esac
;;
set d_stdio_cnt_lval
eval $setvar
-: How to access the stdio _filbuf or __filbuf function.
-: If this fails, check how the getc macro in stdio.h works.
-case "${d_stdio_ptr_lval}${d_stdio_cnt_lval}" in
-${define}${define})
- : Try $hint value, if any, then _filbuf, __filbuf, _fill, then punt.
- : _fill is for os/2.
- xxx='notok'
- for filbuf in $stdio_filbuf '_filbuf(fp)' '__filbuf(fp) ' '_fill(fp)' ; do
- $cat >try.c <<EOP
-#include <stdio.h>
-#define FILE_ptr(fp) $stdio_ptr
-#define FILE_cnt(fp) $stdio_cnt
-#define FILE_filbuf(fp) $filbuf
-main() {
- FILE *fp = fopen("try.c", "r");
- int c;
- c = getc(fp);
- c = FILE_filbuf(fp); /* Just looking for linker errors.*/
- exit(0);
-}
-EOP
- if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 && ./try; then
- echo "Your stdio appears to use $filbuf"
- stdio_filbuf="$filbuf"
- xxx='ok'
- break
- else
- echo "Hmm. $filbuf doesn't seem to work."
- fi
- $rm -f try.c try
- done
- case "$xxx" in
- notok) echo "I can't figure out how to access _filbuf"
- echo "I'll just have to work around it."
- d_stdio_ptr_lval="$undef"
- d_stdio_cnt_lval="$undef"
- ;;
- esac
- ;;
-esac
-
: see if _base is also standard
val="$undef"
printf("%d\n",i);
}
EOCP
- if $cc try.c -o try >/dev/null 2>&1 ; then
+ if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
dflt=`try`
else
dflt='?'
rp='How many bits does your rand() function produce?'
. ./myread
randbits="$ans"
-$rm -f try.c try
+$rm -f try.c try.o try
: see if ar generates random libraries by itself
echo " "
printf("int\n");
else
printf("long\n");
+ fflush(stdout);
exit(0);
}
EOM
echo " "
-if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
- ./ssize > /dev/null 2>&1 ; then
- ssizetype=`./ssize`
+# If $libs contains -lsfio, and sfio is mis-configured, then it
+# sometimes (apparently) runs and exits with a 0 status, but with no
+# output!. Thus we check with test -s whether we actually got any
+# output. I think it has to do with sfio's use of _exit vs. exit,
+# but I don't know for sure. --Andy Dougherty 1/27/97.
+if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
+ ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
+ ssizetype=`$cat ssize.out`
echo "I'll be using $ssizetype for functions returning a byte count." >&4
else
- echo "(I can't compile and run the test program--please enlighten me!)"
- $cat <<EOM
+ $cat >&4 <<EOM
+
+Help! I can't compile and run the ssize_t test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it. Still, I'll try anyway.)
I need a type that is the same size as $sizetype, but is guaranteed to
-be signed. Common values are int and long.
+be signed. Common values are ssize_t, int and long.
EOM
rp="What signed type is the same size as $sizetype?"
. ./myread
ssizetype="$ans"
fi
-$rm -f ssize ssize.[co]
+$rm -f ssize ssize.[co] ssize.out
: see what type of char stdio uses.
echo " "
lns='$lns'
locincpth='$locincpth'
loclibpth='$loclibpth'
+longsize='$longsize'
lp='$lp'
lpr='$lpr'
ls='$ls'
shar='$shar'
sharpbang='$sharpbang'
shmattype='$shmattype'
+shortsize='$shortsize'
shrpenv='$shrpenv'
shsharp='$shsharp'
sig_name='$sig_name'
stdio_base='$stdio_base'
stdio_bufsiz='$stdio_bufsiz'
stdio_cnt='$stdio_cnt'
-stdio_filbuf='$stdio_filbuf'
stdio_ptr='$stdio_ptr'
strings='$strings'
submit='$submit'