3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
23 # Generated on Thu Oct 19 10:47:09 EDT 1995 [metaconfig 3.0 PL58]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on exotic machines. If yours does, try the Bourne shell instead.)
114 : Configure runs within the UU subdirectory
115 test -d UU || mkdir UU
567 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
570 : We must find out about Eunice early
572 if test -f /etc/unixtovms; then
573 eunicefix=/etc/unixtovms
575 if test -f /etc/unixtovms.exe; then
576 eunicefix=/etc/unixtovms.exe
579 : list of known cpp symbols, sorted alphabetically
580 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
581 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
582 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
583 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
584 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
585 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
586 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
587 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
588 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
589 al="$al VMS Xenix286"
590 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
591 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
592 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
593 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
594 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
595 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
596 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
597 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
598 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
599 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
600 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
601 al="$al __SVR4_2__ __UMAXV__"
602 al="$al ____386BSD____ __alpha __alpha__ __amiga"
603 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
604 al="$al __host_mips__"
605 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
606 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
607 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
608 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
609 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
610 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
611 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
612 al="$al __mc88100 __mc88100__ __mips __mips__"
613 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
614 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
615 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
616 al="$al _host_mips _mips _unix"
617 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
618 al="$al apollo ardent att386 att3b"
619 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
620 al="$al cadmus clipper concurrent convex cray ctix"
621 al="$al dmert encore gcos gcx gimpel gould"
622 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
623 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
624 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
625 al="$al i186 i286 i386 i486 i8086"
626 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
627 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
628 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
629 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
630 al="$al mc88000 mc88100 merlin mert mips mvs n16"
631 al="$al ncl_el ncl_mr"
632 al="$al news1500 news1700 news1800 news1900 news3700"
633 al="$al news700 news800 news900 ns16000 ns32000"
634 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
635 al="$al parisc pc532 pdp11 plexus posix pyr"
636 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
637 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
638 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
639 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
640 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
641 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
646 : default library list
648 : set useposix=false in your hint file to disable the POSIX extension.
650 : Possible local include directories to search.
651 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
652 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
654 : no include file wanted by default
657 : change the next line if compiling for Xenix/286 on Xenix/386
658 xlibpth='/usr/lib/386 /lib/386'
660 : Possible local library directories to search.
661 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
662 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
664 : general looking path for locating libraries
665 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
666 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
667 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
669 : Private path used by Configure to find libraries. Its value
670 : is prepended to libpth. This variable takes care of special
671 : machines, like the mips. Usually, it should be empty.
674 : full support for void wanted by default
677 : List of libraries we want.
678 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
679 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
680 libswanted="$libswanted ucb bsd BSD PW x"
681 : We probably want to search /usr/shlib before most other libraries.
682 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
683 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
684 glibpth="/usr/shlib $glibpth"
685 : Do not use vfork unless overridden by a hint file.
688 : script used to extract .SH files with variable substitutions
691 echo "Doing variable substitutions on .SH files..."
692 if test -f MANIFEST; then
693 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
694 : Pick up possible extension manifests.
695 for dir in ext/* ; do
696 if test -f $dir/MANIFEST; then
697 xxx=`awk '{print $1}' < $dir/MANIFEST |
698 sed -n "/\.SH$/ s@^@$dir/@p"`
699 shlist="$shlist $xxx"
704 echo "(Looking for .SH files under the current directory.)"
705 set x `find . -name "*.SH" -print`
709 0) set x *.SH; shift;;
711 if test ! -f $1; then
717 dir=`expr X$file : 'X\(.*\)/'`
718 file=`expr X$file : 'X.*/\(.*\)'`
719 (cd $dir && . ./$file)
726 if test -f config_h.SH; then
727 if test ! -f config.h; then
728 : oops, they left it out of MANIFEST, probably, so do it anyway.
734 : produce awk script to parse command line options
735 cat >options.awk <<'EOF'
737 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
739 len = length(optstr);
740 for (i = 1; i <= len; i++) {
741 c = substr(optstr, i, 1);
742 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
753 if (substr(str, 1, 1) != "-") {
754 printf("'%s'\n", str);
758 for (i = 2; i <= len; i++) {
759 c = substr(str, i, 1);
761 printf("-%s\n", substr(str, i));
767 printf("'%s'\n", substr(str, i + 1));
780 : process the command line options
781 set X `for arg in "$@"; do echo $arg; done | awk -f options.awk`
786 : set up default values
799 while test $# -gt 0; do
801 -d) shift; fastread=yes;;
802 -e) shift; alldone=cont;;
806 if test -r "$1"; then
809 echo "$me: cannot read config file $1." >&2
814 -h) shift; error=true;;
815 -r) shift; reuseval=true;;
816 -s) shift; silent=true;;
817 -E) shift; alldone=exit;;
818 -K) shift; knowitall=true;;
819 -O) shift; override=true;;
820 -S) shift; extractsh=true;;
825 echo "$me: use '-U symbol=', not '-D symbol='." >&2
826 echo "$me: ignoring -D $1" >&2
829 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
830 *) echo "$1='define'" >> optdef.sh;;
837 *=) echo "$1" >> optdef.sh;;
839 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
840 echo "$me: ignoring -U $1" >&2
842 *) echo "$1='undef'" >> optdef.sh;;
846 -V) echo "$me generated by metaconfig 3.0 PL58." >&2
849 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
857 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
858 [-U symbol] [-U symbol=]
859 -d : use defaults for all answers.
860 -e : go on without questioning past the production of config.sh.
861 -f : specify an alternate default configuration file.
862 -h : print this help message and exit (with an error status).
863 -r : reuse C symbols value if possible (skips costly nm extraction).
864 -s : silent mode, only echoes questions and essential information.
865 -D : define symbol to have some value:
866 -D symbol symbol gets the value 'define'
867 -D symbol=value symbol gets the value 'value'
868 -E : stop at the end of questions, after having produced config.sh.
869 -K : do not use unless you know what you are doing.
870 -O : let -D and -U override definitions from loaded configuration file.
871 -S : perform variable substitutions on all .SH files (can mix with -f)
872 -U : undefine symbol:
873 -U symbol symbol gets the value 'undef'
874 -U symbol= symbol gets completely empty
875 -V : print version number and exit (with a zero status).
883 true) exec 1>/dev/null;;
886 : run the defines and the undefines, if any, but leave the file out there...
893 '') config_sh='config.sh'; config='./config.sh';;
894 /*) config="$config_sh";;
895 *) config="./$config_sh";;
898 echo "Fetching answers from $config_sh..."
901 test "$override" && . ./optdef.sh
912 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
913 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
914 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
915 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
916 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
919 : Eunice requires " " instead of "", can you believe it
922 echo "Beginning of configuration questions for $package."
924 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
926 : Some greps do not return status, grrr.
927 echo "grimblepritz" >grimble
928 if grep blurfldyick grimble >/dev/null 2>&1 ; then
930 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
936 : the following should work in any shell
940 echo "AGH! Grep doesn't return a status. Attempting remedial action."
941 cat >contains <<'EOSS'
942 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
947 : first determine how to suppress newline on echo command
949 echo "Checking echo to see how to suppress newlines..."
950 (echo "hi there\c" ; echo " ") >.echotmp
951 if $contains c .echotmp >/dev/null 2>&1 ; then
962 echo $n "The star should be here-->$c"
966 : Now test for existence of everything in MANIFEST
968 if test -f ../MANIFEST; then
969 echo "First let's make sure your kit is complete. Checking..." >&4
970 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
972 for filelist in x??; do
973 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
975 if test -s missing; then
979 THIS PACKAGE SEEMS TO BE INCOMPLETE.
981 You have the option of continuing the configuration process, despite the
982 distinct possibility that your kit is damaged, by typing 'y'es. If you
983 do, don't blame me if something goes wrong. I advise you to type 'n'o
984 and contact the author (lwall@netlabs.com).
987 echo $n "Continue? [n] $c" >&4
991 echo "Continuing..." >&4
995 echo "ABORTING..." >&4
1000 echo "Looks good..." >&4
1003 echo "There is no MANIFEST file. I hope your kit is complete !"
1007 : compute the number of columns on the terminal for proper question formatting
1012 : set up the echo used in my read
1013 myecho="case \"\$xxxm\" in
1014 '') echo $n \"\$rp $c\" >&4;;
1016 '') echo $n \"[\$xxxm] $c\";;
1018 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1020 echo $n \"[\$xxxm] $c\" >&4
1022 echo $n \"\$rp [\$xxxm] $c\" >&4
1028 : now set up to do reads with possible shell escape and default assignment
1033 case "\$fastread" in
1034 yes) case "\$dflt" in
1037 case "\$silent-\$rp" in
1042 *) case "\$silent" in
1043 true) case "\$rp" in
1048 while expr "X\$ans" : "X!" >/dev/null; do
1052 aok=''; eval "ans=\"\$answ\"" && aok=y
1057 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1062 echo "(OK, I'll run with -d after this question.)"
1065 echo "*** Sorry, \$1 not supported yet."
1077 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1087 echo "*** Substitution done -- please confirm."
1089 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1094 echo "*** Error -- try again."
1101 case "\$ans\$xxxm\$nostick" in
1113 : create .config dir to save info across Configure sessions
1114 test -d ../.config || mkdir ../.config
1115 cat >../.config/README <<EOF
1116 This directory created by Configure to save information that should
1117 persist across sessions.
1119 You may safely delete it if you wish.
1122 : general instructions
1125 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1126 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1129 rp='Would you like to see the instructions?'
1140 This installation shell script will examine your system and ask you questions
1141 to determine how the perl5 package should be installed. If you get
1142 stuck on a question, you may use a ! shell escape to start a subshell or
1143 execute a command. Many of the questions will have default answers in square
1144 brackets; typing carriage return will give you the default.
1146 On some of the questions which ask for file or directory names you are allowed
1147 to use the ~name construct to specify the login directory belonging to "name",
1148 even if you don't have a shell which knows about that. Questions where this is
1149 allowed will be marked "(~name ok)".
1153 dflt='Type carriage return to continue'
1157 The prompter used in this script allows you to use shell variables and
1158 backticks in your answers. You may use $1, $2, etc... to refer to the words
1159 in the default answer, as if the default line was a set of arguments given to a
1160 script shell. This means you may also use $* to repeat the whole default line,
1161 so you do not have to re-type everything to add something to the default.
1163 Everytime there is a substitution, you will have to confirm. If there is an
1164 error (e.g. an unmatched backtick), the default answer will remain unchanged
1165 and you will be prompted again.
1167 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1168 the questions and use the computed defaults (or the previous answers if there
1169 was already a config.sh file). Type 'Configure -h' for a list of options.
1170 You may also start interactively and then answer '& -d' at any prompt to turn
1171 on the non-interactive behaviour for the remaining of the execution.
1177 Much effort has been expended to ensure that this shell script will run on any
1178 Unix system. If despite that it blows up on yours, your best bet is to edit
1179 Configure and run it again. If you can't run Configure for some reason,
1180 you'll have to generate a config.sh file by hand. Whatever problems you
1181 have, let me (lwall@netlabs.com) know how I blew it.
1183 This installation script affects things in two ways:
1185 1) it may do direct variable substitutions on some of the files included
1187 2) it builds a config.h file for inclusion in C programs. You may edit
1188 any of these files as the need arises after running this script.
1190 If you make a mistake on a question, there is no easy way to back up to it
1191 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1192 files. Configure will offer to let you do this before it runs the SH files.
1195 dflt='Type carriage return to continue'
1197 case "$firsttime" in
1198 true) echo $user >>../.config/instruct;;
1202 : see if sh knows # comments
1204 echo "Checking your sh to see if it knows about # comments..." >&4
1205 if `sh -c '#' >/dev/null 2>&1`; then
1206 echo "Your sh handles # comments correctly."
1210 echo "Okay, let's see if #! works on this system..."
1212 test -f $xcat || xcat=/usr/bin/cat
1217 if test -s today; then
1221 echo "#! $xcat" > try
1225 if test -s today; then
1229 echo "It's just a comment."
1234 echo "Your sh doesn't grok # comments--I will strip them later on."
1237 echo "exec grep -v '^[ ]*#'" >spitshell
1239 $eunicefix spitshell
1240 spitshell=`pwd`/spitshell
1242 echo "I presume that if # doesn't work, #! won't work either!"
1247 : figure out how to guarantee sh startup
1249 echo "Checking out how to guarantee sh startup..." >&4
1251 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1252 *) startsh=$sharpbang'/bin/sh';;
1254 echo "Let's see if '$startsh' works..."
1264 echo "Yup, it does."
1266 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1270 : find out where common programs are
1272 echo "Locating common programs..." >&4
1285 if test -d \$dir/\$thing; then
1291 for thisthing in \$dir/\$thing; do
1292 : just loop through to pick last item
1294 if test -f \$thisthing; then
1297 elif test -f \$dir/\$thing.exe; then
1298 : on Eunice apparently
1343 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1344 pth="$pth /lib /usr/lib"
1345 for file in $loclist; do
1346 xxx=`./loc $file $file $pth`
1351 echo $file is in $xxx.
1354 echo $file is in $xxx.
1357 echo "I don't know where $file is. I hope it's in everyone's PATH."
1362 echo "Don't worry if any of the following aren't found..."
1364 for file in $trylist; do
1365 xxx=`./loc $file $file $pth`
1370 echo $file is in $xxx.
1373 echo $file is in $xxx.
1376 echo "I don't see $file out there, $say."
1383 echo "Substituting grep for egrep."
1389 echo "Hopefully test is built into your sh."
1392 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1393 echo "Using the test built into your sh."
1401 echo "Hopefully echo is built into your sh."
1406 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1407 $echo $n "hi there$c" >foo1
1408 echo $n "hi there$c" >foo2
1409 if cmp foo1 foo2 >/dev/null 2>&1; then
1410 echo "They are compatible. In fact, they may be identical."
1417 They are not compatible! You are probably running ksh on a non-USG system.
1418 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1419 have echo built in and we may have to run some Bourne shell scripts. That
1420 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1423 $echo $n "The star should be here-->$c"
1430 : determine whether symbolic links are supported
1433 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1434 echo "Symbolic links are supported." >&4
1437 echo "Symbolic links are NOT supported." >&4
1442 : see whether [:lower:] and [:upper:] are supported character classes
1446 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1448 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1453 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1456 : set up the translation script tr, must be called with ./tr of course
1460 '[A-Z][a-z]') exec $tr '$up' '$low';;
1461 '[a-z][A-Z]') exec $tr '$low' '$up';;
1468 : Try to determine whether config.sh was made on this system
1469 case "$config_sh" in
1471 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1472 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1473 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1474 newmyuname="$myuname"
1476 case "$knowitall" in
1478 if test -f ../config.sh; then
1479 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1480 eval "`grep myuname= ../config.sh`"
1482 if test "X$myuname" = "X$newmyuname"; then
1490 : Get old answers from old config file if Configure was run on the
1491 : same system, otherwise use the hints.
1494 if test -f config.sh; then
1496 rp="I see a config.sh file. Shall I use it to set the defaults?"
1499 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1500 *) echo "Fetching default answers from your old config.sh file..." >&4
1511 if test ! -f config.sh; then
1514 First time through, eh? I have some defaults handy for the following systems:
1517 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1519 : Half the following guesses are probably wrong... If you have better
1520 : tests or hints, please send them to lwall@netlabs.com
1521 : The metaconfig authors would also appreciate a copy...
1522 $test -f /irix && osname=irix
1523 $test -f /xenix && osname=sco_xenix
1524 $test -f /dynix && osname=dynix
1525 $test -f /dnix && osname=dnix
1526 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1527 $test -f /bin/mips && /bin/mips && osname=mips
1528 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1529 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1530 $test -d /usr/apollo/bin && osname=apollo
1531 $test -f /etc/saf/_sactab && osname=svr4
1532 $test -d /usr/include/minix && osname=minix
1533 $test -d /MachTen && osname=machten && \
1534 osvers=`/usr/etc/version | $awk '{print $2}' | \
1535 $sed -e 's/[A-Za-z]$//'`
1536 if $test -f $uname; then
1544 umips) osname=umips ;;
1547 [23]100) osname=mips ;;
1548 next*) osname=next ;;
1549 news*) osname=news ;;
1551 if $test -f /etc/kconfig; then
1553 if test "$lns" = "ln -s"; then
1555 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1557 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1566 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1568 'not found') osvers="$4"."$3" ;;
1569 '<3240'|'<>3240') osvers=3.2.0 ;;
1570 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1571 '=3250'|'>3250') osvers=3.2.5 ;;
1578 domainos) osname=apollo
1584 freebsd) osname=freebsd
1586 genix) osname=genix ;;
1591 *.10.*) osvers=10 ;;
1608 netbsd*) osname=netbsd
1611 bsd386) osname=bsd386
1614 next*) osname=next ;;
1615 solaris) osname=solaris
1617 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1624 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1628 titanos) osname=titanos
1637 ultrix) osname=ultrix
1643 osvers=`echo "$3" | sed 's/^[vt]//'`
1645 hp*) osname=hp_osf1 ;;
1646 mips) osname=mips_osf1 ;;
1652 $2) case "$osname" in
1656 : svr4.x or possibly later
1666 if test -f /stand/boot ; then
1667 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1668 if test -n "$INITPROG" -a -f "$INITPROG"; then
1669 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1670 if test -n "$isesix"; then
1678 *) if test -f /etc/systemid; then
1680 set `echo $3 | $sed 's/\./ /g'` $4
1681 if $test -f sco_$1_$2_$3.sh; then
1683 elif $test -f sco_$1_$2.sh; then
1685 elif $test -f sco_$1.sh; then
1690 '') : Still unknown. Probably a generic Sys V.
1699 *) case "$osname" in
1700 '') : Still unknown. Probably a generic BSD.
1708 if test -f /vmunix -a -f news_os.sh; then
1709 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1710 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1713 $rm -f ../UU/kernel.what
1714 elif test -d c:/.; then
1721 : Now look for a hint file osname_osvers, unless one has been
1722 : specified already.
1725 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1726 : Also try without trailing minor version numbers.
1727 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1728 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1729 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1730 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1733 *) case "$osvers" in
1736 *) if $test -f $file.sh ; then
1738 elif $test -f $xfile.sh ; then
1740 elif $test -f $xxfile.sh ; then
1742 elif $test -f $xxxfile.sh ; then
1744 elif $test -f $xxxxfile.sh ; then
1746 elif $test -f "${osname}.sh" ; then
1757 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1763 You may give one or more space-separated answers, or "none" if appropriate.
1764 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1767 rp="Which of these apply, if any?"
1770 for file in $tans; do
1771 if $test -f $file.sh; then
1773 $cat $file.sh >> ../UU/config.sh
1774 elif $test X$tans = X -o X$tans = Xnone ; then
1777 : Give one chance to correct a possible typo.
1778 echo "$file.sh does not exist"
1780 rp="hint to use instead?"
1782 for file in $ans; do
1783 if $test -f "$file.sh"; then
1785 $cat $file.sh >> ../UU/config.sh
1786 elif $test X$ans = X -o X$ans = Xnone ; then
1789 echo "$file.sh does not exist -- ignored."
1796 : Remember our hint file for later.
1797 if $test -f "$file.sh" ; then
1809 echo "Fetching default answers from $config_sh..." >&4
1813 cp $config_sh config.sh 2>/dev/null
1822 test "$override" && . ./optdef.sh
1823 myuname="$newmyuname"
1825 : Restore computed paths
1826 for file in $loclist $trylist; do
1827 eval $file="\$_$file"
1832 Configure uses the operating system name and version to set some defaults.
1833 The default value is probably right if the name rings a bell. Otherwise,
1834 since spelling matters for me, either accept the default or answer "none"
1841 ''|' '|none) dflt=none ;;
1842 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1845 *) dflt="$osname" ;;
1847 rp="Operating system name?"
1851 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1853 : who configured the system
1854 cf_time=`$date 2>&1`
1855 (logname > .temp) >/dev/null 2>&1
1856 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1857 $test -s .temp || echo unknown > .temp
1861 : determine where manual pages are on this system
1865 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
1866 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
1867 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
1868 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
1869 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
1870 sysman=`./loc . /usr/man/man1 $syspath`
1873 if $test -d "$sysman"; then
1874 echo "System manual is in $sysman." >&4
1876 echo "Could not find manual pages in source form." >&4
1879 : see what memory models we can support
1882 $cat >pdp11.c <<'EOP'
1891 cc -o pdp11 pdp11.c >/dev/null 2>&1
1892 if ./pdp11 2>/dev/null; then
1893 dflt='unsplit split'
1895 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
1898 *) if $test -d /lib/small || $test -d /usr/lib/small; then
1903 if $test -d /lib/medium || $test -d /usr/lib/medium; then
1906 if $test -d /lib/large || $test -d /usr/lib/large; then
1909 if $test -d /lib/huge || $test -d /usr/lib/huge; then
1918 Some systems have different model sizes. On most systems they are called
1919 small, medium, large, and huge. On the PDP11 they are called unsplit and
1920 split. If your system doesn't support different memory models, say "none".
1921 If you wish to force everything to one memory model, say "none" here and
1922 put the appropriate flags later when it asks you for other cc and ld flags.
1923 Venix systems may wish to put "none" and let the compiler figure things out.
1924 (In the following question multiple model names should be space separated.)
1927 rp="Which memory models are supported?"
1942 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
1943 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
1950 rp="What flag indicates separate I and D space?"
1958 *large*|*small*|*medium*|*huge*)
1965 rp="What flag indicates large model?"
1975 *huge*) case "$huge" in
1979 rp="What flag indicates huge model?"
1989 *medium*) case "$medium" in
1993 rp="What flag indicates medium model?"
2000 *) medium="$large";;
2003 *small*) case "$small" in
2007 rp="What flag indicates small model?"
2018 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2022 : make some quick guesses about what we are up against
2024 $echo $n "Hmm... $c"
2033 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2034 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2036 echo "Looks kind of like an OSF/1 system, but we'll see..."
2038 elif test `echo abc | tr a-z A-Z` = Abc ; then
2039 xxx=`./loc addbib blurfl $pth`
2040 if $test -f $xxx; then
2041 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2045 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2046 echo "Looks kind of like an extended USG system, but we'll see..."
2048 echo "Looks kind of like a USG system, but we'll see..."
2052 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2053 echo "Looks kind of like a BSD system, but we'll see..."
2057 echo "Looks kind of like a Version 7 system, but we'll see..."
2060 case "$eunicefix" in
2063 There is, however, a strange, musty smell in the air that reminds me of
2064 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2068 : it so happens the Eunice I know will not run shell scripts in Unix format
2072 echo "Congratulations. You aren't running Eunice."
2076 if test -f /xenix; then
2077 echo "Actually, this looks more like a XENIX system..."
2082 echo "It's not Xenix..."
2087 if test -f /venix; then
2088 echo "Actually, this looks more like a VENIX system..."
2095 echo "Nor is it Venix..."
2098 chmod +x bsd usg v7 osf1 eunice xenix venix
2099 $eunicefix bsd usg v7 osf1 eunice xenix venix
2102 : see if we need a special compiler
2110 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2111 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2124 On some systems the default C compiler will not resolve multiple global
2125 references that happen to have the same name. On some such systems the "Mcc"
2126 command may be used to force these to be resolved. On other systems a "cc -M"
2127 command is required. (Note that the -M flag on other systems indicates a
2128 memory model to use!) If you have the Gnu C compiler, you might wish to use
2132 rp="What command will force resolution on this system?"
2140 rp="Use which C compiler?"
2145 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2146 $cat >gccvers.c <<EOM
2151 printf("%s\n", __VERSION__);
2153 printf("%s\n", "1");
2159 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
2160 gccversion=`./gccvers`
2161 case "$gccversion" in
2162 '') echo "You are not using GNU cc." ;;
2163 *) echo "You are using GNU cc $gccversion." ;;
2167 echo "*** WHOA THERE!!! ***" >&4
2168 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
2169 case "$knowitall" in
2171 echo " You'd better start hunting for one and let me know about it." >&4
2177 case "$gccversion" in
2178 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
2181 : decide how portable to be. Allow command line overrides.
2182 case "$d_portable" in
2184 *) d_portable="$define" ;;
2187 : set up shell script to do ~ expansion
2193 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2196 if $test -f /bin/csh; then
2197 /bin/csh -f -c "glob \$1"
2202 name=\`$expr x\$1 : '..\([^/]*\)'\`
2203 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2204 if $test ! -d "\$dir"; then
2206 echo "\$me: can't locate home directory for: \$name" >&2
2211 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2227 : now set up to get a file name
2228 cat <<'EOSC' >getfile
2241 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2242 fn=`echo $fn | sed 's/(.*)//'`
2248 loc_file=`expr $fn : '.*:\(.*\)'`
2249 fn=`expr $fn : '\(.*\):.*'`
2257 */*) fullpath=true;;
2266 *e*) exp_file=true;;
2269 *p*) nopath_ok=true;;
2274 *d*) type='Directory';;
2275 *l*) type='Locate';;
2280 Locate) what='File';;
2285 case "$d_portable" in
2293 while test "$type"; do
2298 true) rp="$rp (~name ok)";;
2301 if test -f UU/getfile.ok && \
2302 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2321 value=`UU/filexp $ans`
2324 if test "$ans" != "$value"; then
2325 echo "(That expands to $value on this system.)"
2339 /*) value="$ansexp" ;;
2344 echo "I shall only accept a full path name, as in /bin/ls." >&4
2345 echo "Use a ! shell escape if you wish to check pathnames." >&4
2348 echo "Please give a full path name, starting with slash." >&4
2351 echo "Note that using ~name is ok provided it expands well." >&4
2364 if test -f "$ansexp"; then
2366 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2368 echo "($value is not a plain file, but that's ok.)"
2373 if test -d "$ansexp"; then
2378 if test -d "$ansexp"; then
2379 echo "(Looking for $loc_file in directory $value.)"
2380 value="$value/$loc_file"
2381 ansexp="$ansexp/$loc_file"
2383 if test -f "$ansexp"; then
2386 case "$nopath_ok" in
2387 true) case "$value" in
2389 *) echo "Assuming $value will be in people's path."
2405 if test "$fastread" = yes; then
2410 rp="$what $value doesn't exist. Use that name anyway?"
2431 : What should the include directory be ?
2433 $echo $n "Hmm... $c"
2437 if $test -f /bin/mips && /bin/mips; then
2438 echo "Looks like a MIPS system..."
2439 $cat >usr.c <<'EOCP'
2440 #ifdef SYSTYPE_BSD43
2444 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
2445 dflt='/bsd43/usr/include'
2449 mips_type='System V'
2451 $rm -f usr.c usr.out
2452 echo "and you're compiling with the $mips_type compiler and libraries."
2456 echo "Doesn't look like a MIPS system."
2467 case "$xxx_prompt" in
2469 rp='Where are the include files you want to use?'
2477 : see how we invoke the C preprocessor
2479 echo "Now, how can we feed standard input to your C preprocessor..." >&4
2480 cat <<'EOT' >testcpp.c
2486 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
2488 wrapper=`pwd`/cppstdin
2492 if $test "X$cppstdin" != "X" && \
2493 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
2494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2496 echo "You used to use $cppstdin $cppminus so we'll use that again."
2498 '') echo "But let's see if we can live without a wrapper..." ;;
2500 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
2501 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2503 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
2506 echo "(However, $cpprun $cpplast does not work, let's see...)"
2514 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
2521 elif echo 'Maybe "'"$cc"' -E" will work...'; \
2522 $cc -E <testcpp.c >testcpp.out 2>&1; \
2523 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2524 echo "Yup, it does."
2527 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
2528 $cc -E - <testcpp.c >testcpp.out 2>&1; \
2529 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2530 echo "Yup, it does."
2533 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
2534 $cc -P <testcpp.c >testcpp.out 2>&1; \
2535 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2536 echo "Yipee, that works!"
2539 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
2540 $cc -P - <testcpp.c >testcpp.out 2>&1; \
2541 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2542 echo "At long last!"
2545 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
2546 $cpp <testcpp.c >testcpp.out 2>&1; \
2547 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2551 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
2552 $cpp - <testcpp.c >testcpp.out 2>&1; \
2553 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2554 echo "Hooray, it works! I was beginning to wonder."
2557 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
2558 $wrapper <testcpp.c >testcpp.out 2>&1; \
2559 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2565 rp="No dice. I can't find a C preprocessor. Name one:"
2569 $x_cpp <testcpp.c >testcpp.out 2>&1
2570 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2571 echo "OK, that will do." >&4
2573 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
2588 echo "Perhaps can we force $cc -E using a wrapper..."
2589 if $wrapper <testcpp.c >testcpp.out 2>&1; \
2590 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2596 echo "Nope, we'll have to live without it..."
2611 *) $rm -f $wrapper;;
2613 $rm -f testcpp.c testcpp.out
2615 : Set private lib path
2618 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
2623 '') dlist="$loclibpth $plibpth $glibpth";;
2624 *) dlist="$libpth";;
2627 : Now check and see which directories actually exist, avoiding duplicates
2631 if $test -d $xxx; then
2634 *) libpth="$libpth $xxx";;
2640 Some systems have incompatible or broken versions of libraries. Among
2641 the directories listed in the question below, please remove any you
2642 know not to be holding relevant libraries, and add any that are needed.
2643 Say "none" for none.
2654 rp="Directories to use for library searches?"
2661 : determine root of directory hierarchy where package will be installed.
2664 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2672 By default, $package will be installed in $dflt/bin, manual
2673 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2674 all installation directories. Typically set to /usr/local, but you
2675 may choose /usr if you wish to install $package among your system
2676 binaries. If you wish to have binaries under /bin but manual pages
2677 under /usr/local/man, that's ok: you will be prompted separately
2678 for each of the installation directories, the prefix being only used
2679 to set the defaults.
2683 rp='Installation prefix to use?'
2691 *) oldprefix="$prefix";;
2698 : set the prefixit variable, to compute a suitable default value
2699 prefixit='case "$3" in
2701 case "$oldprefix" in
2702 "") eval "$1=\"\$$2\"";;
2709 ""|" ") eval "$1=\"\$$2\"";;
2715 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2717 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2718 /*-$oldprefix/*|\~*-$oldprefix/*)
2719 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2720 *) eval "$1=\"\$$2\"";;
2726 if test -d /afs; then
2727 echo "AFS may be running... I'll be extra cautious then..." >&4
2730 echo "AFS does not seem to be running..." >&4
2734 : determine where public executables go
2739 rp='Pathname where the public executables will reside?'
2741 if $test "X$ansexp" != "X$binexp"; then
2749 Since you are running AFS, I need to distinguish the directory in which
2750 executables reside from the directory in which they are installed (and from
2751 which they are presumably copied to the former directory by occult means).
2754 case "$installbin" in
2755 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2756 *) dflt="$installbin";;
2759 rp='Where will public executables be installed?'
2763 installbin="$binexp"
2766 : set the prefixup variable, to restore leading tilda escape
2767 prefixup='case "$prefixexp" in
2769 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2772 : determine where public executable scripts go
2773 set scriptdir scriptdir
2775 case "$scriptdir" in
2778 : guess some guesses
2779 $test -d /usr/share/scripts && dflt=/usr/share/scripts
2780 $test -d /usr/share/bin && dflt=/usr/share/bin
2781 $test -d /usr/local/script && dflt=/usr/local/script
2782 $test -d $prefixexp/script && dflt=$prefixexp/script
2786 *) dflt="$scriptdir"
2791 Some installations have a separate directory just for executable scripts so
2792 that they can mount it across multiple architectures but keep the scripts in
2793 one spot. You might, for example, have a subdirectory of /usr/share for this.
2794 Or you might just lump your scripts in with all your other executables.
2798 rp='Where do you keep publicly executable scripts?'
2800 if $test "X$ansexp" != "X$scriptdirexp"; then
2804 scriptdirexp="$ansexp"
2808 Since you are running AFS, I need to distinguish the directory in which
2809 scripts reside from the directory in which they are installed (and from
2810 which they are presumably copied to the former directory by occult means).
2813 case "$installscript" in
2814 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
2815 *) dflt="$installscript";;
2818 rp='Where will public scripts be installed?'
2820 installscript="$ans"
2822 installscript="$scriptdirexp"
2825 : determine where private executables go
2826 set dflt privlib lib/$package
2830 There are some auxiliary files for $package that need to be put into a
2831 private library directory that is accessible by everyone.
2835 rp='Pathname where the private library files will reside?'
2837 if $test "X$privlibexp" != "X$ansexp"; then
2841 privlibexp="$ansexp"
2845 Since you are running AFS, I need to distinguish the directory in which
2846 private files reside from the directory in which they are installed (and from
2847 which they are presumably copied to the former directory by occult means).
2850 case "$installprivlib" in
2851 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2852 *) dflt="$installprivlib";;
2855 rp='Where will private files be installed?'
2857 installprivlib="$ans"
2859 installprivlib="$privlibexp"
2862 : determine the architecture name
2864 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2865 tarch=`arch`"-$osname"
2866 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2867 if uname -m > tmparch 2>&1 ; then
2868 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
2876 case "$myarchname" in
2879 echo "(Your architecture name used to be $myarchname.)"
2885 *) dflt="$archname";;
2887 rp='What is your architecture name'
2892 : determine where public architecture dependent libraries go
2899 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2903 *) dflt="$privlib/$archname";;
2906 *) dflt="$archlib";;
2910 $spackage contains architecture-dependent library files. If you are
2911 sharing libraries in a heterogeneous environment, you might store
2912 these files in a separate location. Otherwise, you can just include
2913 them with the rest of the public library files.
2917 rp='Where do you want to put the public architecture-dependent libraries?'
2920 archlibexp="$ansexp"
2925 Since you are running AFS, I need to distinguish the directory in which
2926 private files reside from the directory in which they are installed (and from
2927 which they are presumably copied to the former directory by occult means).
2930 case "$installarchlib" in
2931 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2932 *) dflt="$installarchlib";;
2935 rp='Where will architecture-dependent library files be installed?'
2937 installarchlib="$ans"
2939 installarchlib="$archlibexp"
2941 if $test X"$archlib" = X"$privlib"; then
2947 : determine whether the user wants to include a site-specific library
2948 : in addition to privlib.
2951 Some sites may wish to specify a local directory for $package
2952 to search by default in addition to $privlib.
2953 If you don't want to use such an additional directory, answer 'none'.
2958 *) dflt="$sitelib" ;;
2961 rp='Local directory for additional library files?'
2963 if $test "X$sitelibexp" != "X$ansexp"; then
2967 sitelibexp="$ansexp"
2970 '') installsitelib="$sitelibexp"
2974 Since you are running AFS, I need to distinguish the directory in which
2975 private files reside from the directory in which they are installed (and from
2976 which they are presumably copied to the former directory by occult means).
2979 case "$installsitelib" in
2980 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2981 *) dflt="$installsitelib";;
2984 rp='Where will additional local files be installed?'
2986 installsitelib="$ans"
2990 installsitelib="$sitelibexp"
2993 case "$sitelibexp" in
2994 '') d_sitelib=undef ;;
2995 *) d_sitelib=define ;;
2998 : determine where manual pages go
2999 set man1dir man1dir none
3003 $spackage has manual pages available in source form.
3007 echo "However, you don't have nroff, so they're probably useless to you."
3009 '') man1dir="none";;
3012 echo "If you don't want the manual sources installed, answer 'none'."
3015 lookpath="$prefixexp/man/man1 $prefixexp/man/u_man/man1"
3016 lookpath="$lookpath $prefixexp/man/l_man/man1"
3017 lookpath="$lookpath /usr/local/man/man1 /opt/man/man1 /usr/man/manl"
3018 lookpath="$lookpath /usr/man/local/man1 /usr/man/l_man/man1"
3019 lookpath="$lookpath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3020 lookpath="$lookpath /usr/man/man.L"
3021 man1dir=`./loc . $prefixexp/man/man1 $lookpath`
3022 if $test -d "$man1dir"; then
3036 rp="Where do the main $spackage manual pages (source) go?"
3038 if test "X$man1direxp" != "X$ansexp"; then
3042 man1direxp="$ansexp"
3050 Since you are running AFS, I need to distinguish the directory in which
3051 manual pages reside from the directory in which they are installed (and from
3052 which they are presumably copied to the former directory by occult means).
3055 case "$installman1dir" in
3056 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
3057 *) dflt="$installman1dir";;
3060 rp='Where will man pages be installed?'
3062 installman1dir="$ans"
3064 installman1dir="$man1direxp"
3067 : What suffix to use on installed man pages
3074 rp="What suffix should be used for the main $spackage man pages?"
3093 : set up the script used to warn in case of inconsistency
3097 echo "*** WHOA THERE!!! ***" >&4
3098 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3099 rp=" Keep the $hint value?"
3102 y) td=$was; tu=$was;;
3106 : function used to set $1 to $val
3107 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3109 $define$undef) . ./whoa; eval "$var=\$td";;
3110 $undef$define) . ./whoa; eval "$var=\$tu";;
3111 *) eval "$var=$val";;
3114 : see if we can have long filenames
3116 rmlist="$rmlist /tmp/cf$$"
3117 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
3118 first=123456789abcdef
3119 second=/tmp/cf$$/$first
3120 $rm -f $first $second
3121 if (echo hi >$first) 2>/dev/null; then
3122 if $test -f 123456789abcde; then
3123 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
3126 if (echo hi >$second) 2>/dev/null; then
3127 if $test -f /tmp/cf$$/123456789abcde; then
3129 That's peculiar... You can have filenames longer than 14 characters, but only
3130 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
3131 I shall consider your system cannot support long filenames at all.
3135 echo 'You can have filenames longer than 14 characters.' >&4
3140 How confusing! Some of your filesystems are sane enough to allow filenames
3141 longer than 14 characters but some others like /tmp can't even think about them.
3142 So, for now on, I shall assume your kernel does not allow them at all.
3149 You can't have filenames longer than 14 chars. You can't even think about them!
3155 $rm -rf /tmp/cf$$ 123456789abcde*
3157 : determine where library module manual pages go
3158 set man3dir man3dir none
3162 $spackage has manual pages for many of the library modules.
3168 However, you don't have nroff, so they're probably useless to you.
3169 You can use the supplied perldoc script instead.
3172 '') man3dir="none";;
3176 case "$d_flexfnam" in
3179 However, your system can't handle the long file names like File::Basename.3.
3180 You can use the supplied perldoc script instead.
3183 '') man3dir="none";;
3187 echo "If you don't want the manual sources installed, answer 'none'."
3189 '') dflt="$privlib/man/man3" ;;
3191 *) dflt="$man3dir" ;;
3196 rp="Where do the $spackage library man pages (source) go?"
3198 if test "X$man3direxp" != "X$ansexp"; then
3203 man3direxp="$ansexp"
3211 Since you are running AFS, I need to distinguish the directory in which
3212 manual pages reside from the directory in which they are installed (and from
3213 which they are presumably copied to the former directory by occult means).
3216 case "$installman3dir" in
3217 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
3218 *) dflt="$installman3dir";;
3221 rp='Where will man pages be installed?'
3223 installman3dir="$ans"
3225 installman3dir="$man3direxp"
3228 : What suffix to use on installed man pages
3235 rp="What suffix should be used for the $spackage library man pages?"
3254 : see if we have to deal with yellow pages, now NIS.
3255 if $test -d /usr/etc/yp || $test -d /etc/yp; then
3256 if $test -f /usr/etc/nibindd; then
3258 echo "I'm fairly confident you're on a NeXT."
3260 rp='Do you get the hosts file via NetInfo?'
3269 y*) hostcat='nidump hosts .';;
3270 *) case "$hostcat" in
3271 nidump*) hostcat='';;
3281 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
3289 rp='Are you getting the hosts file via yellow pages?'
3292 y*) hostcat='ypcat hosts';;
3293 *) hostcat='cat /etc/hosts';;
3299 : now get the host name
3301 echo "Figuring out host name..." >&4
3302 case "$myhostname" in
3304 echo 'Maybe "hostname" will work...'
3305 if tans=`sh -c hostname 2>&1` ; then
3313 if $test "$cont"; then
3315 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
3316 if tans=`cat /etc/systemid 2>&1` ; then
3318 phostname='cat /etc/systemid'
3319 echo "Whadyaknow. Xenix always was a bit strange..."
3322 elif $test -r /etc/systemid; then
3323 echo "(What is a non-Xenix system doing with /etc/systemid?)"
3326 if $test "$cont"; then
3327 echo 'No, maybe "uuname -l" will work...'
3328 if tans=`sh -c 'uuname -l' 2>&1` ; then
3330 phostname='uuname -l'
3332 echo 'Strange. Maybe "uname -n" will work...'
3333 if tans=`sh -c 'uname -n' 2>&1` ; then
3335 phostname='uname -n'
3337 echo 'Oh well, maybe I can mine it out of whoami.h...'
3338 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
3339 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
3340 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
3342 case "$myhostname" in
3343 '') echo "Does this machine have an identity crisis or something?"
3346 echo "Well, you said $myhostname before..."
3347 phostname='echo $myhostname';;
3353 : you do not want to know about this
3358 if $test "$myhostname" ; then
3360 rp='Your host name appears to be "'$myhostname'".'" Right?"
3368 : bad guess or no guess
3369 while $test "X$myhostname" = X ; do
3371 rp="Please type the (one word) name of your host:"
3376 : translate upper to lower if necessary
3377 case "$myhostname" in
3379 echo "(Normalizing case in your host name)"
3380 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
3384 case "$myhostname" in
3386 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
3387 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
3388 echo "(Trimming domain name from host name--host name is now $myhostname)"
3390 *) case "$mydomain" in
3393 dflt=.`$awk "/[0-9].*$myhostname/ {for(i=2; i<=NF;i++) print \\\$i}" \
3394 hosts | $sort | $uniq | \
3395 $sed -n -e "s/$myhostname\.\([a-zA-Z_.]\)/\1/p"`
3397 .) echo "(You do not have fully-qualified names in /etc/hosts)"
3398 tans=`./loc resolv.conf X /etc /usr/etc`
3399 if $test -f "$tans"; then
3400 echo "(Attempting domain name extraction from $tans)"
3401 dflt=.`egrep '^domain' $tans | $sed 's/domain[ ]*\(.*\)/\1/' \
3402 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
3407 .) echo "(No help from resolv.conf either -- attempting clever guess)"
3408 dflt=.`sh -c domainname 2>/dev/null`
3411 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
3416 .) echo "(Lost all hope -- silly guess then)"
3422 *) dflt="$mydomain";;
3426 rp="What is your domain name?"
3436 : translate upper to lower if necessary
3439 echo "(Normalizing case in your domain name)"
3440 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
3444 : a little sanity check here
3445 case "$phostname" in
3448 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
3449 $myhostname$mydomain|$myhostname) ;;
3451 case "$phostname" in
3453 echo "(That doesn't agree with your whoami.h file, by the way.)"
3456 echo "(That doesn't agree with your $phostname command, by the way.)"
3466 I need to get your e-mail address in Internet format if possible, i.e.
3467 something like user@host.domain. Please answer accurately since I have
3468 no easy means to double check it. The default value provided below
3469 is most probably close to the reality but may not be valid from outside
3470 your organization...
3474 while test "$cont"; do
3476 '') dflt="$cf_by@$myhostname$mydomain";;
3477 *) dflt="$cf_email";;
3479 rp='What is your e-mail address?'
3485 rp='Address does not look like an Internet one. Use it anyway?'
3501 If you or somebody else will be maintaining perl at your site, please
3502 fill in the correct e-mail address here so that they may be contacted
3503 if necessary. Currently, the "perlbug" program included with perl
3504 will send mail to this address in addition to perlbug@perl.com. You may
3505 enter "none" for no administrator.
3508 case "$perladmin" in
3509 '') dflt="$cf_email";;
3510 *) dflt="$perladmin";;
3512 rp='Perl administrator e-mail address'
3517 : determine optimize, if desired, or use for debug flag also
3521 *) dflt="$optimize";;
3525 Some C compilers have problems with their optimizers, by default, $package
3526 compiles with the -O flag to use the optimizer. Alternately, you might want
3527 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3528 systems). Either flag can be specified here. To use neither flag, specify
3532 rp="What optimizer/debugger flag should be used?"
3536 'none') optimize=" ";;
3542 case "$gccversion" in
3543 1*) dflt='-fpcc-struct-return' ;;
3546 *-g*) dflt="$dflt -DDEBUGGING";;
3548 case "$gccversion" in
3549 2*) if test -d /etc/conf/kconfig.d &&
3550 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3559 case "$mips_type" in
3560 *BSD*|'') inclwanted="$locincpth $usrinc";;
3561 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3563 for thisincl in $inclwanted; do
3564 if $test -d $thisincl; then
3565 if $test x$thisincl != x$usrinc; then
3568 *) dflt="$dflt -I$thisincl";;
3574 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3576 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3584 *) dflt="$dflt -D$2";;
3589 set signal.h __LANGUAGE_C__; eval $inctest
3591 set signal.h LANGUAGE_C; eval $inctest
3593 set signal.h NO_PROTOTYPE; eval $inctest
3594 set signal.h _NO_PROTO; eval $inctest
3601 *) dflt="$ccflags";;
3605 Your C compiler may want other flags. For this question you should include
3606 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3607 but you should NOT include libraries or ld flags like -lwhatever. If you
3608 want $package to honor its debug switch, you should include -DDEBUGGING here.
3609 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3610 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3612 To use no flags, specify the word "none".
3618 rp="Any additional cc flags?"
3625 : the following weeds options from ccflags that are of no interest to cpp
3627 case "$gccversion" in
3628 1*) cppflags="$cppflags -D__GNUC__"
3630 case "$mips_type" in
3632 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3638 echo "Let me guess what the preprocessor flags are..." >&4
3652 *) ftry="$previous $flag";;
3654 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3655 >cpp1.out 2>/dev/null && \
3656 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3657 >cpp2.out 2>/dev/null && \
3658 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3659 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3661 cppflags="$cppflags $ftry"
3671 *-*) echo "They appear to be: $cppflags";;
3673 $rm -f cpp.c cpp?.out
3677 : flags used in final linking phase
3680 '') if ./venix; then
3686 *-posix*) dflt="$dflt -posix" ;;
3689 *) dflt="$ldflags";;
3692 : Try to guess additional flags to pick up local libraries.
3693 for thislibdir in $libpth; do
3694 case " $loclibpth " in
3697 "-L$thislibdir ") ;;
3698 *) dflt="$dflt -L$thislibdir" ;;
3710 Your C linker may need flags. For this question you should
3711 include -L/whatever and any other flags used by the C linker, but you
3712 should NOT include libraries like -lwhatever.
3714 Make sure you include the appropriate -L/path flags if your C linker
3715 does not normally search all of the directories you specified above,
3718 To use no flags, specify the word "none".
3722 rp="Any additional ld flags (NOT including libraries)?"
3728 rmlist="$rmlist pdp11"
3732 echo "Checking your choice of C compiler and flags for coherency..." >&4
3733 set X $cc $optimize $ccflags $ldflags try.c -o try
3736 I've tried to compile and run a simple program with:
3741 and I got the following output:
3744 $cat > try.c <<'EOF'
3749 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3750 if sh -c './try' >>try.msg 2>&1; then
3753 echo "The program compiled OK, but exited with status $?." >>try.msg
3754 rp="You have a problem. Shall I abort Configure"
3758 echo "I can't compile the test program." >>try.msg
3759 rp="You have a BIG problem. Shall I abort Configure"
3765 case "$knowitall" in
3767 echo "(The supplied flags might be incorrect with this C compiler.)"
3775 *) echo "Ok. Stopping Configure." >&4
3780 n) echo "OK, that should do.";;
3782 $rm -f try try.* core
3784 : compute shared library extension
3787 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3797 On some systems, shared libraries may be available. Answer 'none' if
3798 you want to suppress searching of shared libraries for the remaining
3799 of this configuration.
3802 rp='What is the file extension used for shared libraries?'
3806 : Looking for optional libraries
3808 echo "Checking for optional libraries..." >&4
3813 case "$libswanted" in
3814 '') libswanted='c_s';;
3816 for thislib in $libswanted; do
3818 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3819 echo "Found -l$thislib (shared)."
3822 *) dflt="$dflt -l$thislib";;
3824 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3825 echo "Found -l$thislib (shared)."
3828 *) dflt="$dflt -l$thislib";;
3830 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
3831 echo "Found -l$thislib."
3834 *) dflt="$dflt -l$thislib";;
3836 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
3837 echo "Found -l$thislib."
3840 *) dflt="$dflt -l$thislib";;
3842 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
3843 echo "Found -l${thislib}_s."
3846 *) dflt="$dflt -l${thislib}_s";;
3848 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
3849 echo "Found -l$thislib."
3852 *) dflt="$dflt -l$thislib";;
3855 echo "No -l$thislib."
3866 ' '|'') dflt='none';;
3871 Some versions of Unix support shared libraries, which make executables smaller
3872 but make load time slightly longer.
3874 On some systems, mostly newer Unix System V's, the shared library is included
3875 by putting the option "-lc_s" as the last thing on the cc command line when
3876 linking. Other systems use shared libraries by default. There may be other
3877 libraries needed to compile $package on your machine as well. If your system
3878 needs the "-lc_s" option, include it here. Include any other special libraries
3879 here as well. Say "none" for none.
3883 rp="Any additional libraries?"
3890 : see if nm is to be used to determine whether a symbol is defined or not
3893 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3894 if $test $dflt -gt 20; then
3909 I can use 'nm' to extract the symbols from your C libraries. This is a time
3910 consuming task which may generate huge output on the disk (up to 3 megabytes)
3911 but that should make the symbols extraction faster. The alternative is to skip
3912 the 'nm' extraction part and to compile a small test program instead to
3913 determine whether each symbol is present. If you have a fast C compiler and/or
3914 if your 'nm' output cannot be parsed, this may be the best solution.
3917 rp='Shall I use nm to extract C symbols from the libraries?'
3929 : nm options which may be necessary
3931 '') if $test -f /mach_boot; then
3933 elif $test -d /usr/ccs/lib; then
3935 elif $test -f /dgux; then
3944 : get list of predefined functions in a handy place
3949 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3956 *) for thislib in $libs; do
3959 : Handle C library specially below.
3962 thislib=`echo $thislib | $sed -e 's/^-l//'`
3963 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3965 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3967 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3969 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3971 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3973 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3978 libnames="$libnames $try"
3980 *) libnames="$libnames $thislib" ;;
3988 set /usr/ccs/lib/libc.$so
3989 $test -r $1 || set /usr/lib/libc.$so
3990 $test -r $1 || set /usr/shlib/libc.$so
3992 set `echo blurfl; echo /usr/lib/libc.$so.[0-9]* | \
3993 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3995 s/[0-9][0-9]*/0000&/g
3996 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3999 sort | $sed -e 's/^.* //'`
4001 $test -r $1 || set /lib/libc.$so
4002 $test -r $1 || set /lib/libsys_s.a
4008 if $test -r "$1"; then
4009 echo "Your (shared) C library seems to be in $1."
4011 elif $test -r /lib/libc && $test -r /lib/clib; then
4012 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4014 libc='/lib/clib /lib/libc'
4015 if $test -r /lib/syslib; then
4016 echo "(Your math library is in /lib/syslib.)"
4017 libc="$libc /lib/syslib"
4019 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4020 echo "Your C library seems to be in $libc, as you said before."
4021 elif $test -r $incpath/usr/lib/libc.a; then
4022 libc=$incpath/usr/lib/libc.a;
4023 echo "Your C library seems to be in $libc. That's fine."
4024 elif $test -r /lib/libc.a; then
4026 echo "Your C library seems to be in $libc. You're normal."
4028 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
4030 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4031 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4032 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4034 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4036 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4039 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
4041 if $test -r "$tans"; then
4042 echo "Your C library seems to be in $tans, of all places."
4048 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4052 If the guess above is wrong (which it might be if you're using a strange
4053 compiler, or your machine supports multiple models), you can override it here.
4058 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4060 I can't seem to find your C library. I've looked in the following places:
4063 $sed 's/^/ /' libpath
4066 None of these seems to contain your C library. I need to get its name...
4071 rp='Where is your C library?'
4076 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4077 set X `cat libnames`
4080 case $# in 1) xxx=file; esac
4081 echo "Extracting names from the following $xxx for later perusal:" >&4
4083 $sed 's/^/ /' libnames >&4
4085 $echo $n "This may take a while...$c" >&4
4087 nm $nm_opt $* 2>/dev/null >libc.tmp
4089 $grep fprintf libc.tmp > libc.ptf
4090 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4091 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4093 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4095 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4097 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4099 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4101 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4103 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4105 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4107 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4109 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4111 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4113 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4115 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4117 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4118 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4120 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4122 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4124 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4126 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4128 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4130 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4132 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4134 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4136 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4139 nm -p $* 2>/dev/null >libc.tmp
4140 $grep fprintf libc.tmp > libc.ptf
4141 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4142 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4148 echo "nm didn't seem to work right. Trying ar instead..." >&4
4150 if ar t $libc > libc.tmp; then
4151 for thisname in $libnames; do
4152 ar t $thisname >>libc.tmp
4154 $sed -e 's/\.o$//' < libc.tmp > libc.list
4157 echo "ar didn't seem to work right." >&4
4158 echo "Maybe this is a Cray...trying bld instead..." >&4
4159 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4161 for thisname in $libnames; do
4163 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4164 ar t $thisname >>libc.tmp
4168 echo "That didn't work either. Giving up." >&4
4175 if $test -f /lib/syscalls.exp; then
4177 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4178 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4182 $rm -f libnames libpath
4184 : is a C symbol defined?
4187 -v) tf=libc.tmp; tc=""; tdc="";;
4188 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4189 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4192 case "$reuseval-$4" in
4194 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4200 if $contains $tlook $tf >/dev/null 2>&1;
4205 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4206 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4214 $define) tval=true;;
4220 : define an is-in-libc? function
4221 inlibc='echo " "; td=$define; tu=$undef;
4222 sym=$1; var=$2; eval "was=\$$2";
4224 case "$reuseval$was" in
4234 echo "$sym() found." >&4;
4235 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4237 echo "$sym() NOT found." >&4;
4238 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4242 $define) echo "$sym() found." >&4;;
4243 *) echo "$sym() NOT found." >&4;;
4247 : Check how to convert floats to strings.
4249 echo "Checking for an efficient way to convert floats to strings."
4252 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4255 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4258 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4262 Gconvert(1.0, 8, 0, buf);
4263 if (buf[0] != '1' || buf[1] != '\0')
4265 Gconvert(0.0, 8, 0, buf);
4266 if (buf[0] != '0' || buf[1] != '\0')
4268 Gconvert(-1.0, 8, 0, buf);
4269 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4274 case "$d_Gconvert" in
4275 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4276 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4277 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4278 *) xxx_list='gconvert gcvt sprintf' ;;
4281 for xxx_convert in $xxx_list; do
4282 echo "Trying $xxx_convert"
4284 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4285 try.c $libs > /dev/null 2>&1 ; then
4286 echo "$xxx_convert" found. >&4
4288 echo "Good, $xxx_convert drops a trailing decimal point."
4289 echo "I'll use $xxx_convert to convert floats into a string." >&4
4292 echo "But $xxx_convert keeps a trailing decimal point".
4295 echo "$xxx_convert NOT found." >&4
4299 case "$xxx_convert" in
4300 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4301 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4302 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4305 : Initialize h_fcntl
4308 : Initialize h_sysfile
4311 : determine filename position in cpp output
4313 echo "Computing filename position in cpp output for #include directives..." >&4
4314 echo '#include <stdio.h>' > foo.c
4317 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4318 $grep '^[ ]*#.*stdio\.h' | \
4319 while read cline; do
4322 while $test \$# -gt 0; do
4323 if $test -r \`echo \$1 | $tr -d '"'\`; then
4328 pos=\`expr \$pos + 1\`
4340 *) pos="${fieldn}th";;
4342 echo "Your cpp writes the filename in the $pos field of the line."
4344 : locate header file
4349 if test -f $usrinc/\$wanted; then
4350 echo "$usrinc/\$wanted"
4353 awkprg='{ print \$$fieldn }'
4354 echo "#include <\$wanted>" > foo\$\$.c
4355 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4356 $grep "^[ ]*#.*\$wanted" | \
4357 while read cline; do
4358 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4360 */\$wanted) echo "\$name"; exit 0;;
4371 : access call always available on UNIX
4375 : locate the flags for 'access()'
4379 $cat >access.c <<'EOCP'
4380 #include <sys/types.h>
4385 #include <sys/file.h>
4394 : check sys/file.h first, no particular reason here
4395 if $test `./findhdr sys/file.h` && \
4396 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4398 echo "<sys/file.h> defines the *_OK access constants." >&4
4399 elif $test `./findhdr fcntl.h` && \
4400 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4402 echo "<fcntl.h> defines the *_OK access constants." >&4
4403 elif $test `./findhdr unistd.h` && \
4404 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4405 echo "<unistd.h> defines the *_OK access constants." >&4
4407 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4413 : see if alarm exists
4417 : Look for GNU-cc style attribute checking
4419 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4420 $cat >attrib.c <<'EOCP'
4422 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4424 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4425 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4426 echo "Your C compiler doesn't fully support __attribute__."
4429 echo "Your C compiler supports __attribute__."
4433 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4440 : see if bcmp exists
4444 : see if bcopy exists
4448 : see if setpgrp exists
4449 set setpgrp d_setpgrp
4452 : see which flavor of setpgrp is in use
4453 case "$d_setpgrp" in
4459 if (getuid() == 0) {
4460 printf("(I see you are running Configure as super-user...)\n");
4463 if (-1 == setpgrp(1, 1))
4468 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4471 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4473 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4478 xxx="USG one, i.e. you use setpgrp()."
4481 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4484 echo "Assuming your setpgrp is a $xxx" >&4
4493 : see if bzero exists
4497 : check for length of integer
4501 echo "Checking to see how big your integers are..." >&4
4502 $cat >try.c <<'EOCP'
4506 printf("%d\n", sizeof(int));
4510 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4512 echo "Your integers are $intsize bytes long."
4515 echo "(I can't seem to compile the test program. Guessing...)"
4516 rp="What is the size of an integer (in bytes)?"
4524 : see if signal is declared as pointer to function returning int or void
4526 xxx=`./findhdr signal.h`
4527 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4528 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4529 echo "You have int (*signal())() instead of void." >&4
4531 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4532 echo "You have void (*signal())() instead of int." >&4
4534 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4535 echo "You have int (*signal())() instead of void." >&4
4538 case "$d_voidsig" in
4540 echo "I can't determine whether signal handler returns void or int..." >&4
4542 rp="What type does your signal handler return?"
4549 echo "As you already told me, signal handler returns void." >&4;;
4551 echo "As you already told me, signal handler returns int." >&4;;
4556 case "$d_voidsig" in
4557 "$define") signal_t="void";;
4562 : check for ability to cast large floats to 32-bit ints.
4564 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4565 if $test "$intsize" -eq 4; then
4571 #include <sys/types.h>
4573 $signal_t blech() { exit(3); }
4579 signal(SIGFPE, blech);
4581 f = (double) 0x7fffffff;
4585 if (i32 != ($xxx) f)
4590 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4594 echo "(I can't seem to compile the test program--assuming it can't)"
4602 echo "Nope, it can't."
4609 : check for ability to cast negative floats to unsigned
4611 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
4613 #include <sys/types.h>
4615 $signal_t blech() { exit(7); }
4616 $signal_t blech_in_list() { exit(4); }
4617 unsigned long dummy_long(p) unsigned long p; { return p; }
4618 unsigned int dummy_int(p) unsigned int p; { return p; }
4619 unsigned short dummy_short(p) unsigned short p; { return p; }
4623 unsigned long along;
4625 unsigned short ashort;
4628 signal(SIGFPE, blech);
4629 along = (unsigned long)f;
4630 aint = (unsigned int)f;
4631 ashort = (unsigned short)f;
4632 if (along != (unsigned long)-123)
4634 if (aint != (unsigned int)-123)
4636 if (ashort != (unsigned short)-123)
4638 f = (double)0x40000000;
4641 along = (unsigned long)f;
4642 if (along != 0x80000000)
4646 along = (unsigned long)f;
4647 if (along != 0x7fffffff)
4651 along = (unsigned long)f;
4652 if (along != 0x80000001)
4656 signal(SIGFPE, blech_in_list);
4658 along = dummy_long((unsigned long)f);
4659 aint = dummy_int((unsigned int)f);
4660 ashort = dummy_short((unsigned short)f);
4661 if (along != (unsigned long)123)
4663 if (aint != (unsigned int)123)
4665 if (ashort != (unsigned short)123)
4671 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4675 echo "(I can't seem to compile the test program--assuming it can't)"
4678 case "$castflags" in
4683 echo "Nope, it can't."
4690 : see if vprintf exists
4692 if set vprintf val -f d_vprintf; eval $csym; $val; then
4693 echo 'vprintf() found.' >&4
4695 $cat >vprintf.c <<'EOF'
4696 #include <varargs.h>
4698 main() { xxx("foo"); }
4707 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
4710 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
4711 echo "Your vsprintf() returns (int)." >&4
4714 echo "Your vsprintf() returns (char*)." >&4
4718 echo 'vprintf() NOT found.' >&4
4728 : see if chown exists
4732 : see if chroot exists
4736 : see if chsize exists
4740 : check for const keyword
4742 echo 'Checking to see if your C compiler knows about "const"...' >&4
4743 $cat >const.c <<'EOCP'
4744 typedef struct spug { int drokk; } spug;
4751 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
4753 echo "Yup, it does."
4756 echo "Nope, it doesn't."
4761 : see if crypt exists
4763 if set crypt val -f d_crypt; eval $csym; $val; then
4764 echo 'crypt() found.' >&4
4768 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
4769 if $test -z "$cryptlib"; then
4770 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
4774 if $test -z "$cryptlib"; then
4775 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
4779 if $test -z "$cryptlib"; then
4780 cryptlib=`./loc libcrypt.a "" $libpth`
4784 if $test -z "$cryptlib"; then
4785 echo 'crypt() NOT found.' >&4
4794 : get csh whereabouts
4796 'csh') val="$undef" ;;
4803 : see if cuserid exists
4804 set cuserid d_cuserid
4807 : define an alternate in-header-list? function
4808 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4809 cont=true; xxf="echo \"<\$1> found.\" >&4";
4810 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4811 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4813 case $# in 4) instead=instead;; *) instead="at last";; esac;
4814 while $test "$cont"; do
4816 var=$2; eval "was=\$$2";
4817 if $test "$xxx" && $test -r "$xxx";
4819 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4822 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4823 set $yyy; shift; shift; yyy=$@;
4824 case $# in 0) cont="";;
4825 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4826 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4827 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4828 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4832 do set $yyy; var=$2; eval "was=\$$2";
4833 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4834 set $yyy; shift; shift; yyy=$@;
4837 : see if this is a limits.h system
4838 set limits.h i_limits
4841 : see if this is a float.h system
4845 : See if number of significant digits in a double precision number is known
4847 $cat >dbl_dig.c <<EOM
4857 printf("Contains DBL_DIG");
4860 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4861 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4862 echo "DBL_DIG found." >&4
4865 echo "DBL_DIG NOT found." >&4
4872 : see if difftime exists
4873 set difftime d_difftime
4876 : see if this is a dirent system
4878 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4880 echo "<dirent.h> found." >&4
4883 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4884 echo "<sys/dir.h> found." >&4
4887 xinc=`./findhdr sys/ndir.h`
4889 echo "<dirent.h> NOT found." >&4
4894 : Look for type of directory structure.
4896 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4898 case "$direntrytype" in
4901 $define) guess1='struct dirent' ;;
4902 *) guess1='struct direct' ;;
4905 *) guess1="$direntrytype"
4910 'struct dirent') guess2='struct direct' ;;
4911 *) guess2='struct dirent' ;;
4914 if $contains "$guess1" try.c >/dev/null 2>&1; then
4915 direntrytype="$guess1"
4916 echo "Your directory entries are $direntrytype." >&4
4917 elif $contains "$guess2" try.c >/dev/null 2>&1; then
4918 direntrytype="$guess2"
4919 echo "Your directory entries seem to be $direntrytype." >&4
4921 echo "I don't recognize your system's directory entries." >&4
4922 rp="What type is used for directory entries on this system?"
4930 : see if the directory entry stores field length
4932 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4933 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
4934 echo "Good, your directory entry keeps length information in d_namlen." >&4
4937 echo "Your directory entry does not know about the d_namlen field." >&4
4944 : see if dlerror exists
4947 set dlerror d_dlerror
4951 : see if dld is available
4955 : see if dlopen exists
4962 : determine which dynamic loading, if any, to compile in
4964 dldir="ext/DynaLoader"
4977 $define) dflt='y' ;;
4980 $define) dflt='y' ;;
4982 : Does a dl_xxx.xs file exist for this operating system
4983 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4986 rp="Do you wish to use dynamic loading?"
4993 if $test -f ../$dldir/dl_${osname}.xs ; then
4994 dflt="$dldir/dl_${osname}.xs"
4995 elif $test "$d_dlopen" = "$define" ; then
4996 dflt="$dldir/dl_dlopen.xs"
4997 elif $test "$i_dld" = "$define" ; then
4998 dflt="$dldir/dl_dld.xs"
5003 *) dflt="$dldir/$dlsrc"
5006 echo "The following dynamic loading files are available:"
5007 : Can not go over to $dldir because getfile has path hard-coded in.
5008 cd ..; ls -C $dldir/dl*.xs; cd UU
5009 rp="Source file to use for dynamic loading"
5014 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5018 Some systems may require passing special flags to $cc -c to
5019 compile modules that will be used to create a shared library.
5020 To use no flags, say "none".
5023 case "$cccdlflags" in
5024 '') case "$gccversion" in
5025 '') case "$osname" in
5027 next) dflt='none' ;;
5028 solaris|svr4*|esix*) dflt='-Kpic' ;;
5029 sunos) dflt='-pic' ;;
5034 *) dflt="$cccdlflags" ;;
5036 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5039 none) cccdlflags=' ' ;;
5040 *) cccdlflags="$ans" ;;
5045 Some systems use ld to create libraries that can be dynamically loaded,
5046 while other systems (such as those using ELF) use $cc.
5050 '') $cat >try.c <<'EOM'
5051 /* Test for whether ELF binaries are produced */
5056 int i = open("a.out",O_RDONLY);
5059 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5060 exit(0); /* succeed (yes, it's ELF) */
5065 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5067 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5071 echo "I'll use ld to build dynamic libraries."
5080 rp="What command should be used to create dynamic libraries?"
5086 Some systems may require passing special flags to $ld to create a
5087 library that can be dynamically loaded. If your ld flags include
5088 -L/other/path options to locate libraries outside your loader's normal
5089 search path, you may need to specify those -L options here as well. To
5090 use no flags, say "none".
5093 case "$lddlflags" in
5094 '') case "$osname" in
5096 linux) dflt='-shared' ;;
5097 next) dflt='none' ;;
5098 solaris) dflt='-G' ;;
5099 sunos) dflt='-assert nodefinitions' ;;
5100 svr4*|esix*) dflt="-G $ldflags" ;;
5104 *) dflt="$lddlflags" ;;
5107 : Try to guess additional flags to pick up local libraries.
5108 for thisflag in $ldflags; do
5113 *) dflt="$dflt $thisflag" ;;
5123 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5126 none) lddlflags=' ' ;;
5127 *) lddlflags="$ans" ;;
5132 Some systems may require passing special flags to $cc to indicate that
5133 the resulting executable will use dynamic linking. To use no flags,
5137 case "$ccdlflags" in
5138 '') case "$osname" in
5139 hpux) dflt='-Wl,-E' ;;
5140 linux) dflt='-rdynamic' ;;
5141 next) dflt='none' ;;
5142 sunos) dflt='none' ;;
5145 *) dflt="$ccdlflags" ;;
5147 rp="Any special flags to pass to $cc to use dynamic loading?"
5150 none) ccdlflags=' ' ;;
5151 *) ccdlflags="$ans" ;;
5169 System V Release 4 systems can support dynamic loading
5170 only if libperl is created as a shared library.
5177 set d_shrplib; eval $setvar
5178 case "$d_shrplib" in
5182 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5183 environment variable before running make:
5184 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5186 setenv LD_LIBRARY_PATH `cd ..;pwd`
5191 case "$d_shrplib" in
5194 "") dflt="$archlib/CORE";;
5195 *) dflt="$shrpdir";;
5197 rp="What directory should we install the shared libperl into?"
5206 : see if dlfcn is available
5214 On a few systems, the dynamically loaded modules that perl generates and uses
5215 will need a different extension then shared libs. The default will probably
5223 rp='What is the extension of dynamically loaded modules'
5232 : Check if dlsym need a leading underscore
5238 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5239 $cat >dyna.c <<'EOM'
5248 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5250 #include <sys/types.h>
5264 int mode = RTLD_LAZY ;
5266 handle = dlopen("./dyna.$dlext", mode) ;
5267 if (handle == NULL) {
5271 symbol = dlsym(handle, "fred") ;
5272 if (symbol == NULL) {
5273 /* try putting a leading underscore */
5274 symbol = dlsym(handle, "_fred") ;
5275 if (symbol == NULL) {
5286 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5287 $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
5288 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5291 1) echo "Test program failed using dlopen." >&4
5292 echo "Perhaps you should not use dynamic loading." >&4;;
5293 2) echo "Test program failed using dlsym." >&4
5294 echo "Perhaps you should not use dynamic loading." >&4;;
5295 3) echo "dlsym needs a leading underscore" >&4
5297 4) echo "dlsym doesn't need a leading underscore." >&4;;
5300 echo "I can't compile and run the test program." >&4
5305 $rm -f fred fred.? dyna.$dlext dyna.?
5310 : see if setuid scripts can be secure
5313 Some kernels have a bug that prevents setuid #! scripts from being
5314 secure. Some sites have disabled setuid #! scripts because of this.
5316 First let's decide if your kernel supports secure setuid #! scripts.
5317 (If setuid #! scripts would be secure but have been disabled anyway,
5318 don't say that they are secure if asked.)
5323 if $test -d /dev/fd; then
5324 echo "#!$ls" >reflect
5325 chmod +x,u+s reflect
5326 ./reflect >flect 2>&1
5327 if $contains "/dev/fd" flect >/dev/null; then
5328 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5332 If you are not sure if they are secure, I can check but I'll need a
5333 username and password different from the one you are using right now.
5334 If you don't have such a username or don't want me to test, simply
5338 rp='Other username to test security of setuid scripts with?'
5343 case "$d_suidsafe" in
5344 '') echo "I'll assume setuid scripts are *not* secure." >&4
5347 echo "Well, the $hint value is *not* secure." >&4
5349 *) echo "Well, the $hint value *is* secure." >&4
5354 $rm -f reflect flect
5355 echo "#!$ls" >reflect
5356 chmod +x,u+s reflect
5359 echo '"su" will (probably) prompt you for '"$ans's password."
5360 su $ans -c './reflect >flect'
5361 if $contains "/dev/fd" flect >/dev/null; then
5362 echo "Okay, it looks like setuid scripts are secure." >&4
5365 echo "I don't think setuid scripts are secure." >&4
5370 rp='Does your kernel have *secure* setuid scripts?'
5373 [yY]*) val="$define";;
5378 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5384 $rm -f reflect flect
5386 : now see if they want to do setuid emulation
5389 case "$d_suidsafe" in
5392 echo "No need to emulate SUID scripts since they are secure here." >& 4
5396 Some systems have disabled setuid scripts, especially systems where
5397 setuid scripts cannot be secure. On systems where setuid scripts have
5398 been disabled, the setuid/setgid bits on scripts are currently
5399 useless. It is possible for $package to detect those bits and emulate
5400 setuid/setgid in a secure fashion. This emulation will only work if
5401 setuid scripts have been disabled in your kernel.
5405 "$define") dflt=y ;;
5408 rp="Do you want to do setuid/setgid emulation?"
5411 [yY]*) val="$define";;
5419 : see if dup2 exists
5423 : Locate the flags for 'open()'
5425 $cat >open3.c <<'EOCP'
5426 #include <sys/types.h>
5431 #include <sys/file.h>
5442 : check sys/file.h first to get FREAD on Sun
5443 if $test `./findhdr sys/file.h` && \
5444 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5446 echo "<sys/file.h> defines the O_* constants..." >&4
5448 echo "and you have the 3 argument form of open()." >&4
5451 echo "but not the 3 argument form of open(). Oh, well." >&4
5454 elif $test `./findhdr fcntl.h` && \
5455 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5457 echo "<fcntl.h> defines the O_* constants..." >&4
5459 echo "and you have the 3 argument form of open()." >&4
5462 echo "but not the 3 argument form of open(). Oh, well." >&4
5467 echo "I can't find the O_* constant definitions! You got problems." >&4
5473 : check for non-blocking I/O stuff
5474 case "$h_sysfile" in
5475 true) echo "#include <sys/file.h>" > head.c;;
5478 true) echo "#include <fcntl.h>" > head.c;;
5479 *) echo "#include <sys/fcntl.h>" > head.c;;
5484 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5485 case "$o_nonblock" in
5488 $cat >>try.c <<'EOCP'
5491 printf("O_NONBLOCK\n");
5495 printf("O_NDELAY\n");
5499 printf("FNDELAY\n");
5505 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5507 case "$o_nonblock" in
5508 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5509 *) echo "Seems like we can use $o_nonblock.";;
5512 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5515 *) echo "Using $hint value $o_nonblock.";;
5517 $rm -f try try.* .out core
5520 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5526 #include <sys/types.h>
5529 $signal_t blech(x) int x; { exit(3); }
5537 pipe(pd); /* Down: child -> parent */
5538 pipe(pu); /* Up: parent -> child */
5541 close(pd[1]); /* Parent reads from pd[0] */
5542 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5543 if (-1 == fcntl(pd[0], F_SETFL, $o_nonblock))
5545 signal(SIGALRM, blech);
5547 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5549 sprintf(string, "%d\n", ret);
5550 write(2, string, strlen(string));
5553 if (errno == EAGAIN) {
5559 if (errno == EWOULDBLOCK)
5560 printf("EWOULDBLOCK\n");
5563 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5564 sleep(2); /* Give it time to close our pipe */
5566 ret = read(pd[0], buf, 1); /* Should read EOF */
5568 sprintf(string, "%d\n", ret);
5569 write(3, string, strlen(string));
5573 close(pd[0]); /* We write to pd[1] */
5574 close(pu[1]); /* We read from pu[0] */
5575 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5576 close(pd[1]); /* Pipe pd is now fully closed! */
5577 exit(0); /* Bye bye, thank you for playing! */
5580 if $cc $ccflags $ldflags try.c -o try >/dev/null; 2>&1; then
5581 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >mtry
5583 ./mtry >/dev/null 2>&1
5585 0) eagain=`$cat try.out`;;
5586 1) echo "Could not perform non-blocking setting!";;
5587 2) echo "I did a successful read() for something that was not there!";;
5588 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5589 *) echo "Something terribly wrong happened during testing.";;
5591 rd_nodata=`$cat try.ret`
5592 echo "A read() system call with no data present returns $rd_nodata."
5593 case "$rd_nodata" in
5596 echo "(That's peculiar, fixing that to be -1.)"
5602 echo "Forcing errno EAGAIN on read() with no data available."
5606 echo "Your read() sets errno to $eagain when no data is available."
5609 status=`$cat try.err`
5611 0) echo "And it correctly returns 0 to signal EOF.";;
5612 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5613 *) echo "However, your read() returns '$status' on EOF??";;
5616 if test "$status" -eq "$rd_nodata"; then
5617 echo "WARNING: you can't distinguish between EOF and no data!"
5621 echo "I can't compile the test program--assuming errno EAGAIN will do."
5628 echo "Using $hint value $eagain."
5629 echo "Your read() returns $rd_nodata when no data is present."
5630 case "$d_eofnblk" in
5631 "$define") echo "And you can see EOF because read() returns 0.";;
5632 "$undef") echo "But you can't see EOF status from read() returned value.";;
5634 echo "(Assuming you can't see EOF status from read anyway.)"
5640 $rm -f try try.* .out core head.c mtry
5642 : see if fchmod exists
5646 : see if fchown exists
5650 : see if this is an fcntl system
5654 : see if fgetpos exists
5655 set fgetpos d_fgetpos
5658 : see if flock exists
5662 : see if fork exists
5666 : see if pathconf exists
5667 set pathconf d_pathconf
5670 : see if fpathconf exists
5671 set fpathconf d_fpathconf
5674 : see if fsetpos exists
5675 set fsetpos d_fsetpos
5678 : see if gethostent exists
5679 set gethostent d_gethent
5682 : see if getlogin exists
5683 set getlogin d_getlogin
5686 : see if getpgrp exists
5687 set getpgrp d_getpgrp
5690 : see if getpgrp2 exists
5691 set getpgrp2 d_getpgrp2
5694 : see if getppid exists
5695 set getppid d_getppid
5698 : see if getpriority exists
5699 set getpriority d_getprior
5702 : see if this is a netinet/in.h or sys/in.h system
5703 set netinet/in.h i_niin sys/in.h i_sysin
5706 : see if htonl --and friends-- exists
5711 : Maybe they are macros.
5716 #include <sys/types.h>
5717 #$i_niin I_NETINET_IN
5720 #include <netinet/in.h>
5726 printf("Defined as a macro.");
5729 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
5730 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
5732 echo "But it seems to be defined as a macro." >&4
5740 : see which of string.h or strings.h is needed
5742 strings=`./findhdr string.h`
5743 if $test "$strings" && $test -r "$strings"; then
5744 echo "Using <string.h> instead of <strings.h>." >&4
5748 strings=`./findhdr strings.h`
5749 if $test "$strings" && $test -r "$strings"; then
5750 echo "Using <strings.h> instead of <string.h>." >&4
5752 echo "No string header found -- You'll surely have problems." >&4
5758 "$undef") strings=`./findhdr strings.h`;;
5759 *) strings=`./findhdr string.h`;;
5764 if set index val -f; eval $csym; $val; then
5765 if set strchr val -f d_strchr; eval $csym; $val; then
5766 if $contains strchr "$strings" >/dev/null 2>&1 ; then
5769 echo "strchr() found." >&4
5773 echo "index() found." >&4
5778 echo "index() found." >&4
5781 if set strchr val -f d_strchr; eval $csym; $val; then
5784 echo "strchr() found." >&4
5786 echo "No index() or strchr() found!" >&4
5791 set d_strchr; eval $setvar
5793 set d_index; eval $setvar
5797 $cat >isascii.c <<'EOCP'
5808 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
5809 echo "isascii() found." >&4
5812 echo "isascii() NOT found." >&4
5819 : see if killpg exists
5823 : see if link exists
5827 : see if localeconv exists
5828 set localeconv d_locconv
5831 : see if lockf exists
5835 : see if lstat exists
5839 : see if mblen exists
5843 : see if mbstowcs exists
5844 set mbstowcs d_mbstowcs
5847 : see if mbtowc exists
5851 : see if memcmp exists
5855 : see if memcpy exists
5859 : see if memmove exists
5860 set memmove d_memmove
5863 : see if memset exists
5867 : see if mkdir exists
5871 : see if mkfifo exists
5875 : see if mktime exists
5879 : see if msgctl exists
5883 : see if msgget exists
5887 : see if msgsnd exists
5891 : see if msgrcv exists
5895 : see how much of the 'msg*(2)' library is present.
5898 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
5899 *"$undef"*) h_msg=false;;
5901 : we could also check for sys/ipc.h ...
5902 if $h_msg && $test `./findhdr sys/msg.h`; then
5903 echo "You have the full msg*(2) library." >&4
5906 echo "You don't have the full msg*(2) library." >&4
5912 : see if this is a malloc.h system
5913 set malloc.h i_malloc
5916 : see if stdlib is available
5917 set stdlib.h i_stdlib
5920 : determine which malloc to compile in
5922 case "$usemymalloc" in
5923 ''|y*|true) dflt='y' ;;
5924 n*|false) dflt='n' ;;
5925 *) dflt="$usemymalloc" ;;
5927 rp="Do you wish to attempt to use the malloc that comes with $package?"
5933 mallocsrc='malloc.c'
5934 mallocobj='malloc.o'
5935 d_mymalloc="$define"
5938 : Remove malloc from list of libraries to use
5939 echo "Removing unneeded -lmalloc from library list" >&4
5940 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5943 echo "libs = $libs" >&4
5955 : compute the return types of malloc and free
5957 $cat >malloc.c <<END
5961 #include <sys/types.h>
5975 case "$malloctype" in
5977 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5984 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5988 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5995 echo "Your system uses $freetype free(), it would seem." >&4
5997 : see if nice exists
6001 : see if pause exists
6005 : see if pipe exists
6009 : see if poll exists
6013 : see if this is a pwd.h system
6019 xxx=`./findhdr pwd.h`
6020 $cppstdin $cppflags $cppminus < $xxx >$$.h
6022 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6030 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6038 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6046 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6054 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6062 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6074 set d_pwquota; eval $setvar
6075 set d_pwage; eval $setvar
6076 set d_pwchange; eval $setvar
6077 set d_pwclass; eval $setvar
6078 set d_pwexpire; eval $setvar
6079 set d_pwcomment; eval $setvar
6083 : see if readdir and friends exist
6084 set readdir d_readdir
6086 set seekdir d_seekdir
6088 set telldir d_telldir
6090 set rewinddir d_rewinddir
6093 : see if readlink exists
6094 set readlink d_readlink
6097 : see if rename exists
6101 : see if rmdir exists
6105 : can bcopy handle overlapping blocks?
6110 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6111 $cat >foo.c <<'EOCP'
6114 char buf[128], abc[128];
6120 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6122 for (align = 7; align >= 0; align--) {
6123 for (len = 36; len; len--) {
6126 for (off = 1; off <= len; off++) {
6127 bcopy(b, b+off, len);
6128 bcopy(b+off, b, len);
6129 if (bcmp(b, abc, len))
6137 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6138 if ./safebcpy 2>/dev/null; then
6142 echo "It can't, sorry."
6145 echo "(I can't compile the test program, so we'll assume not...)"
6149 $rm -f foo.* safebcpy core
6153 : can memcpy handle overlapping blocks?
6158 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6159 $cat >foo.c <<'EOCP'
6162 char buf[128], abc[128];
6168 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6170 for (align = 7; align >= 0; align--) {
6171 for (len = 36; len; len--) {
6173 memcpy(b, abc, len);
6174 for (off = 1; off <= len; off++) {
6175 memcpy(b+off, b, len);
6176 memcpy(b, b+off, len);
6177 if (memcmp(b, abc, len))
6185 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6186 if ./safemcpy 2>/dev/null; then
6190 echo "It can't, sorry."
6193 echo "(I can't compile the test program, so we'll assume not...)"
6197 $rm -f foo.* safemcpy core
6201 : see if select exists
6205 : see if semctl exists
6209 : see if semget exists
6213 : see if semop exists
6217 : see how much of the 'sem*(2)' library is present.
6220 case "$d_semctl$d_semget$d_semop" in
6221 *"$undef"*) h_sem=false;;
6223 : we could also check for sys/ipc.h ...
6224 if $h_sem && $test `./findhdr sys/sem.h`; then
6225 echo "You have the full sem*(2) library." >&4
6228 echo "You don't have the full sem*(2) library." >&4
6234 : see if setegid exists
6235 set setegid d_setegid
6238 : see if seteuid exists
6239 set seteuid d_seteuid
6242 : see if setlinebuf exists
6243 set setlinebuf d_setlinebuf
6246 : see if setlocale exists
6247 set setlocale d_setlocale
6250 : see if setpgid exists
6251 set setpgid d_setpgid
6254 : see if setpgrp2 exists
6255 set setpgrp2 d_setpgrp2
6258 : see if setpriority exists
6259 set setpriority d_setprior
6262 : see if setregid exists
6263 set setregid d_setregid
6265 set setresgid d_setresgid
6268 : see if setreuid exists
6269 set setreuid d_setreuid
6271 set setresuid d_setresuid
6274 : see if setrgid exists
6275 set setrgid d_setrgid
6278 : see if setruid exists
6279 set setruid d_setruid
6282 : see if setsid exists
6286 : see if shmctl exists
6290 : see if shmget exists
6294 : see if shmat exists
6297 : see what shmat returns
6300 $cat >shmat.c <<'END'
6301 #include <sys/shm.h>
6304 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6309 echo "and it returns ($shmattype)." >&4
6310 : see if a prototype for shmat is available
6311 xxx=`./findhdr sys/shm.h`
6312 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6313 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6324 set d_shmatprototype
6327 : see if shmdt exists
6331 : see how much of the 'shm*(2)' library is present.
6334 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6335 *"$undef"*) h_shm=false;;
6337 : we could also check for sys/ipc.h ...
6338 if $h_shm && $test `./findhdr sys/shm.h`; then
6339 echo "You have the full shm*(2) library." >&4
6342 echo "You don't have the full shm*(2) library." >&4
6350 : see whether socket exists
6352 $echo $n "Hmm... $c" >&4
6353 if set socket val -f d_socket; eval $csym; $val; then
6354 echo "Looks like you have Berkeley networking support." >&4
6356 if set setsockopt val -f; eval $csym; $val; then
6359 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6363 if $contains socklib libc.list >/dev/null 2>&1; then
6364 echo "Looks like you have Berkeley networking support." >&4
6366 : we will have to assume that it supports the 4.2 BSD interface
6369 echo "You don't have Berkeley networking in libc.a..." >&4
6370 if test -f /usr/lib/libnet.a; then
6371 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6372 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6373 if $contains socket libc.list >/dev/null 2>&1; then
6374 echo "...but the Wollongong group seems to have hacked it in." >&4
6376 sockethdr="-I/usr/netinclude"
6378 if $contains setsockopt libc.list >/dev/null 2>&1; then
6381 echo "...using the old 4.1c interface, rather than 4.2" >&4
6385 echo "or even in libnet.a, which is peculiar." >&4
6390 echo "or anywhere else I see." >&4
6397 : see if socketpair exists
6398 set socketpair d_sockpair
6401 : see if stat knows about block sizes
6403 xxx=`./findhdr sys/stat.h`
6404 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6405 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6406 echo "Your stat() knows about block sizes." >&4
6409 echo "Your stat() doesn't know about block sizes." >&4
6413 echo "Your stat() doesn't know about block sizes." >&4
6419 : see if _ptr and _cnt from stdio act std
6421 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6422 echo "(Looks like you have stdio.h from Linux.)"
6423 case "$stdio_ptr" in
6424 '') stdio_ptr='((fp)->_IO_read_ptr)'
6427 *) ptr_lval=$d_stdio_ptr_lval;;
6429 case "$stdio_cnt" in
6430 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6433 *) cnt_lval=$d_stdio_cnt_lval;;
6435 case "$stdio_base" in
6436 '') stdio_base='((fp)->_IO_read_base)';;
6438 case "$stdio_bufsiz" in
6439 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6442 case "$stdio_ptr" in
6443 '') stdio_ptr='((fp)->_ptr)'
6446 *) ptr_lval=$d_stdio_ptr_lval;;
6448 case "$stdio_cnt" in
6449 '') stdio_cnt='((fp)->_cnt)'
6452 *) cnt_lval=$d_stdio_cnt_lval;;
6454 case "$stdio_base" in
6455 '') stdio_base='((fp)->_base)';;
6457 case "$stdio_bufsiz" in
6458 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6461 : test whether _ptr and _cnt really work
6462 echo "Checking how std your stdio is..." >&4
6465 #define FILE_ptr(fp) $stdio_ptr
6466 #define FILE_cnt(fp) $stdio_cnt
6468 FILE *fp = fopen("try.c", "r");
6471 18 <= FILE_cnt(fp) &&
6472 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6479 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6481 echo "Your stdio acts pretty std."
6484 echo "Your stdio isn't very std."
6487 echo "Your stdio doesn't appear very std."
6493 : Can _ptr be used as an lvalue?
6494 case "$d_stdstdio$ptr_lval" in
6495 $define$define) val=$define ;;
6498 set d_stdio_ptr_lval
6501 : Can _cnt be used as an lvalue?
6502 case "$d_stdstdio$cnt_lval" in
6503 $define$define) val=$define ;;
6506 set d_stdio_cnt_lval
6509 : see if _base is also standard
6511 case "$d_stdstdio" in
6515 #define FILE_base(fp) $stdio_base
6516 #define FILE_bufsiz(fp) $stdio_bufsiz
6518 FILE *fp = fopen("try.c", "r");
6521 19 <= FILE_bufsiz(fp) &&
6522 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6528 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6530 echo "Even its _base field acts std."
6533 echo "But its _base field isn't std."
6536 echo "However, it seems to be lacking the _base field."
6544 : see if strcoll exists
6545 set strcoll d_strcoll
6548 : check for structure copying
6550 echo "Checking to see if your C compiler can copy structs..." >&4
6551 $cat >try.c <<'EOCP'
6561 if $cc -c try.c >/dev/null 2>&1 ; then
6566 echo "Nope, it can't."
6572 : see if strerror and/or sys_errlist[] exist
6574 if set strerror val -f d_strerror; eval $csym; $val; then
6575 echo 'strerror() found.' >&4
6576 d_strerror="$define"
6577 d_strerrm='strerror(e)'
6578 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6579 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
6580 d_syserrlst="$define"
6582 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
6583 d_syserrlst="$undef"
6585 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
6586 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
6587 echo 'strerror() found in string header.' >&4
6588 d_strerror="$define"
6589 d_strerrm='strerror(e)'
6590 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6591 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
6592 d_syserrlst="$define"
6594 echo "(You don't appear to have any sys_errlist[], how can this be?)"
6595 d_syserrlst="$undef"
6597 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6598 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
6600 d_syserrlst="$define"
6601 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
6603 echo 'strerror() and sys_errlist[] NOT found.' >&4
6605 d_syserrlst="$undef"
6606 d_strerrm='"unknown"'
6609 : see if strxfrm exists
6610 set strxfrm d_strxfrm
6613 : see if symlink exists
6614 set symlink d_symlink
6617 : see if syscall exists
6618 set syscall d_syscall
6621 : see if sysconf exists
6622 set sysconf d_sysconf
6625 : see if system exists
6629 : see if tcgetpgrp exists
6630 set tcgetpgrp d_tcgetpgrp
6633 : see if tcsetpgrp exists
6634 set tcsetpgrp d_tcsetpgrp
6637 : define an is-a-typedef? function
6638 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
6640 "") inclist="sys/types.h";;
6642 eval "varval=\$$var";
6646 for inc in $inclist; do
6647 echo "#include <$inc>" >>temp.c;
6649 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
6650 if $contains $type temp.E >/dev/null 2>&1; then
6656 *) eval "$var=\$varval";;
6659 : see if this is a sys/times.h system
6660 set sys/times.h i_systimes
6663 : see if times exists
6665 if set times val -f d_times; eval $csym; $val; then
6666 echo 'times() found.' >&4
6669 case "$i_systimes" in
6670 "$define") inc='sys/times.h';;
6672 set clock_t clocktype long stdio.h sys/types.h $inc
6676 rp="What type is returned by times() on this system?"
6680 echo 'times() NOT found, hope that will do.' >&4
6685 : see if truncate exists
6686 set truncate d_truncate
6689 : see if tzname[] exists
6691 if set tzname val -a d_tzname; eval $csym; $val; then
6693 echo 'tzname[] found.' >&4
6696 echo 'tzname[] NOT found.' >&4
6701 : see if umask exists
6705 : see how we will look up host name
6708 : dummy stub to allow use of elif
6709 elif set uname val -f d_uname; eval $csym; $val; then
6712 uname() was found, but you're running xenix, and older versions of xenix
6713 have a broken uname(). If you don't really know whether your xenix is old
6714 enough to have a broken system call, use the default answer.
6721 rp='Is your uname() broken?'
6724 n*) d_uname="$define"; call=uname;;
6727 echo 'uname() found.' >&4
6732 case "$d_gethname" in
6733 '') d_gethname="$undef";;
6736 '') d_uname="$undef";;
6738 case "$d_phostname" in
6739 '') d_phostname="$undef";;
6742 : backward compatibility for d_hvfork
6743 if test X$d_hvfork != X; then
6747 : see if there is a vfork
6752 : Ok, but do we want to use it. vfork is reportedly unreliable in
6753 : perl on Solaris 2.x, and probably elsewhere.
6761 rp="Some systems have problems with vfork(). Do you want to use it?"
6766 echo "Ok, we won't use vfork()."
6775 $define) usevfork='true';;
6776 *) usevfork='false';;
6779 : see if this is an sysdir system
6780 set sys/dir.h i_sysdir
6783 : see if this is an sysndir system
6784 set sys/ndir.h i_sysndir
6787 : see if closedir exists
6788 set closedir d_closedir
6791 case "$d_closedir" in
6794 echo "Checking whether closedir() returns a status..." >&4
6795 cat > closedir.c <<EOM
6796 #$i_dirent I_DIRENT /**/
6797 #$i_sysdir I_SYS_DIR /**/
6798 #$i_sysndir I_SYS_NDIR /**/
6800 #if defined(I_DIRENT)
6802 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
6803 #include <sys/dir.h>
6807 #include <sys/ndir.h>
6811 #include <ndir.h> /* may be wrong in the future */
6813 #include <sys/dir.h>
6818 int main() { return closedir(opendir(".")); }
6820 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
6821 if ./closedir > /dev/null 2>&1 ; then
6822 echo "Yes, it does."
6825 echo "No, it doesn't."
6829 echo "(I can't seem to compile the test program--assuming it doesn't)"
6840 : check for volatile keyword
6842 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
6843 $cat >try.c <<'EOCP'
6846 typedef struct _goo_struct goo_struct;
6847 goo_struct * volatile goo = ((goo_struct *)0);
6848 struct _goo_struct {
6853 typedef unsigned short foo_t;
6856 volatile foo_t blech;
6860 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
6862 echo "Yup, it does."
6865 echo "Nope, it doesn't."
6871 : see if there is a wait4
6875 : see if waitpid exists
6876 set waitpid d_waitpid
6879 : see if wcstombs exists
6880 set wcstombs d_wcstombs
6883 : see if wctomb exists
6887 : preserve RCS keywords in files with variable substitution, grrr
6892 Revision='$Revision'
6894 : check for alignment requirements
6896 case "$alignbytes" in
6897 '') echo "Checking alignment constraints..." >&4
6898 $cat >try.c <<'EOCP'
6905 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
6908 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
6912 echo"(I can't seem to compile the test program...)"
6915 *) dflt="$alignbytes"
6918 rp="Doubles must be aligned on a how-many-byte boundary?"
6923 : check for ordering of bytes in a long
6924 case "$byteorder" in
6928 In the following, larger digits indicate more significance. A big-endian
6929 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
6930 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
6931 machines may have weird orders like 3412. A Cray will report 87654321. If
6932 the test program works the default is probably right.
6933 I'm now running the test program...
6935 $cat >try.c <<'EOCP'
6942 char c[sizeof(long)];
6945 if (sizeof(long) > 4)
6946 u.l = (0x08070605L << 32) | 0x04030201L;
6949 for (i = 0; i < sizeof(long); i++)
6950 printf("%c", u.c[i]+'0');
6956 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
6959 [1-4][1-4][1-4][1-4]|12345678|87654321)
6960 echo "(The test program ran ok.)"
6961 echo "byteorder=$dflt"
6964 ????|????????) echo "(The test program ran ok.)" ;;
6965 *) echo "(The test program didn't run right for some reason.)" ;;
6970 (I can't seem to compile the test program. Guessing big-endian...)
6973 case "$xxx_prompt" in
6975 rp="What is the order of bytes in a long?"
6986 : how do we catenate cpp tokens here?
6988 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
6989 $cat >cpp_stuff.c <<'EOCP'
6990 #define RCAT(a,b)a/**/b
6991 #define ACAT(a,b)a ## b
6995 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
6996 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
6997 echo "Oh! Smells like ANSI's been here."
6998 echo "We can catify or stringify, separately or together!"
7000 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7001 echo "Ah, yes! The good old days!"
7002 echo "However, in the good old days we don't know how to stringify and"
7003 echo "catify at the same time."
7007 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7008 to have to edit the values of CAT[2-5] in config.h...
7010 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7014 : see if this is a db.h system
7020 : Check the return type needed for hash
7022 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7028 #include <sys/types.h>
7030 u_int32_t hash_cb (ptr, size)
7038 info.hash = hash_cb;
7041 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7042 if $contains warning try.out >>/dev/null 2>&1 ; then
7045 db_hashtype='u_int32_t'
7048 echo "I can't seem to compile the test program." >&4
7052 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7060 : Check the return type needed for prefix
7062 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7068 #include <sys/types.h>
7070 size_t prefix_cb (key1, key2)
7078 info.prefix = prefix_cb;
7081 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7082 if $contains warning try.out >>/dev/null 2>&1 ; then
7085 db_prefixtype='size_t'
7088 echo "I can't seem to compile the test program." >&4
7092 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7094 *) db_prefixtype='int'
7098 : check for void type
7100 echo "Checking to see how well your C compiler groks the void type..." >&4
7103 Support flag bits are:
7104 1: basic void declarations.
7105 2: arrays of pointers to functions returning void.
7106 4: operations between pointers to and addresses of void functions.
7107 8: generic void pointers.
7110 case "$voidflags" in
7112 $cat >try.c <<'EOCP'
7118 extern void moo(); /* function returning void */
7119 void (*goo)(); /* ptr to func returning void */
7121 void *hue; /* generic ptr */
7135 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7136 voidflags=$defvoidused
7137 echo "It appears to support void to the level $package wants ($defvoidused)."
7138 if $contains warning .out >/dev/null 2>&1; then
7139 echo "However, you might get some warnings that look like this:"
7143 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7144 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
7145 echo "It supports 1..."
7146 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
7147 echo "It also supports 2..."
7148 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
7150 echo "And it supports 4 but not 8 definitely."
7152 echo "It doesn't support 4..."
7153 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
7155 echo "But it supports 8."
7158 echo "Neither does it support 8."
7162 echo "It does not support 2..."
7163 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
7165 echo "But it supports 4 and 8."
7167 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
7169 echo "And it supports 4 but has not heard about 8."
7171 echo "However it supports 8 but not 4."
7176 echo "There is no support at all for void."
7181 : Only prompt user if voidflags is not 15. If voidflags is 15, then
7182 : we presume all is well.
7183 case "$voidflags" in
7185 *) dflt="$voidflags";
7186 rp="Your void support flags add up to what?"
7193 : see if dbm.h is available
7194 : see if dbmclose exists
7195 set dbmclose d_dbmclose
7198 case "$d_dbmclose" in
7208 *) set rpcsvc/dbm.h i_rpcsvcdbm
7213 *) echo "We won't be including <dbm.h>"
7223 : see if ndbm.h is available
7228 : see if dbm_open exists
7229 set dbm_open d_dbm_open
7231 case "$d_dbm_open" in
7234 echo "We won't be including <ndbm.h>"
7243 : see if gdbm.h is available
7248 : see if gdbm_open exists
7249 set gdbm_open d_gdbm_open
7251 case "$d_gdbm_open" in
7254 echo "We won't be including <gdbm.h>"
7264 echo "Looking for extensions..." >&4
7266 : If we are using the old config.sh, known_extensions may contain
7267 : old or inaccurate or duplicate values.
7269 : We do not use find because it might not be available.
7270 : We do not just use MANIFEST because the user may have dropped
7271 : some additional extensions into the source tree and expect them
7274 if $test -f $xxx/$xxx.xs; then
7275 known_extensions="$known_extensions $xxx"
7277 if $test -d $xxx; then
7280 if $test -f $yyy/$yyy.xs; then
7281 known_extensions="$known_extensions $xxx/$yyy"
7288 set X $known_extensions
7290 known_extensions="$*"
7293 : Now see which are supported on this system.
7295 for xxx in $known_extensions ; do
7297 DB_File) case "$i_db" in
7298 $define) avail_ext="$avail_ext $xxx" ;;
7301 GDBM_File) case "$i_gdbm" in
7302 $define) avail_ext="$avail_ext $xxx" ;;
7305 NDBM_File) case "$i_ndbm" in
7306 $define) avail_ext="$avail_ext $xxx" ;;
7309 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
7310 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
7313 POSIX) case "$useposix" in
7314 true|define|y) avail_ext="$avail_ext $xxx" ;;
7317 Socket) case "$d_socket" in
7318 $define) avail_ext="$avail_ext $xxx" ;;
7321 *) avail_ext="$avail_ext $xxx"
7333 A number of extensions are supplied with $package. You may choose to
7334 compile these extensions for dynamic loading (the default), compile
7335 them into the $package executable (static loading), or not include
7336 them at all. Answer "none" to include no extensions.
7339 case "$dynamic_ext" in
7340 '') dflt="$avail_ext" ;;
7341 *) dflt="$dynamic_ext" ;;
7346 rp="What extensions do you wish to load dynamically?"
7349 none) dynamic_ext=' ' ;;
7350 *) dynamic_ext="$ans" ;;
7353 case "$static_ext" in
7355 : Exclude those already listed in dynamic linking
7357 for xxx in $avail_ext; do
7358 case " $dynamic_ext " in
7360 *) dflt="$dflt $xxx" ;;
7367 *) dflt="$static_ext"
7374 rp="What extensions do you wish to load statically?"
7377 none) static_ext=' ' ;;
7378 *) static_ext="$ans" ;;
7383 A number of extensions are supplied with $package. Answer "none"
7384 to include no extensions.
7387 case "$static_ext" in
7388 '') dflt="$avail_ext" ;;
7389 *) dflt="$static_ext" ;;
7395 rp="What extensions do you wish to include?"
7398 none) static_ext=' ' ;;
7399 *) static_ext="$ans" ;;
7404 set X $dynamic_ext $static_ext
7408 : see what type file positions are declared as in the library
7409 set fpos_t fpostype long stdio.h sys/types.h
7413 rp="What is the type for file position used by fsetpos()?"
7417 : Store the full pathname to the sed program for use in the C program
7420 : see what type gids are declared as in the kernel
7421 set gid_t gidtype xxx stdio.h sys/types.h
7425 xxx=`./findhdr sys/user.h`
7426 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7428 unsigned) dflt="$1 $2" ;;
7432 *) dflt="$gidtype";;
7435 rp="What is the type for group ids returned by getgid()?"
7439 : see if getgroups exists
7440 set getgroups d_getgrps
7443 : Find type of 2nd arg to getgroups
7445 case "$d_getgrps" in
7447 case "$groupstype" in
7448 '') dflt="$gidtype" ;;
7449 *) dflt="$groupstype" ;;
7452 What is the type of the second argument to getgroups()? Usually this
7453 is the same as group ids, $gidtype, but not always.
7456 rp='What type is the second argument to getgroups()?'
7460 *) groupstype="$gidtype";;
7463 : see what type lseek is declared as in the kernel
7464 set off_t lseektype long stdio.h sys/types.h
7468 rp="What type is lseek's offset on this system declared as?"
7472 : see what type is used for mode_t
7473 set mode_t modetype int stdio.h sys/types.h
7477 rp="What type is used for file modes?"
7481 : set the base revision
7484 : get the patchlevel
7486 echo "Getting the current patchlevel..." >&4
7487 if $test -r ../patchlevel.h;then
7488 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
7492 echo "(You have $package $baserev PL$patchlevel.)"
7494 : Cruising for prototypes
7496 echo "Checking out function prototypes..." >&4
7497 $cat >prototype.c <<'EOCP'
7498 main(int argc, char *argv[]) {
7501 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7502 echo "Your C compiler appears to support function prototypes."
7505 echo "Your C compiler doesn't seem to understand function prototypes."
7512 : check for size of random number generator
7516 echo "Checking to see how many bits your rand function produces..." >&4
7517 $cat >try.c <<'EOCP'
7522 register unsigned long tmp;
7523 register unsigned long max = 0L;
7525 for (i = 1000; i; i--) {
7526 tmp = (unsigned long)rand();
7527 if (tmp > max) max = tmp;
7529 for (i = 0; max; i++)
7534 if $cc try.c -o try >/dev/null 2>&1 ; then
7538 echo "(I can't seem to compile the test program...)"
7545 rp='How many bits does your rand() function produce?'
7550 : see if ar generates random libraries by itself
7552 echo "Checking how to generate random libraries on your machine..." >&4
7553 echo 'int bar1() { return bar2(); }' > bar1.c
7554 echo 'int bar2() { return 2; }' > bar2.c
7555 $cat > foo.c <<'EOP'
7556 main() { printf("%d\n", bar1()); exit(0); }
7558 $cc $ccflags -c bar1.c >/dev/null 2>&1
7559 $cc $ccflags -c bar2.c >/dev/null 2>&1
7560 $cc $ccflags -c foo.c >/dev/null 2>&1
7561 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7562 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7563 ./foobar >/dev/null 2>&1; then
7564 echo "ar appears to generate random libraries itself."
7567 elif ar ts bar.a >/dev/null 2>&1 &&
7568 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7569 ./foobar >/dev/null 2>&1; then
7570 echo "a table of contents needs to be added with 'ar ts'."
7577 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7578 $test -f $ranlib || ranlib=''
7581 if $test -n "$ranlib"; then
7582 echo "your system has '$ranlib'; we'll use that."
7585 echo "your system doesn't seem to support random libraries"
7586 echo "so we'll use lorder and tsort to order the libraries."
7593 : see if sys/select.h has to be included
7594 set sys/select.h i_sysselct
7597 : see if we should include time.h, sys/time.h, or both
7599 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7600 $echo $n "I'm now running the test program...$c"
7601 $cat >try.c <<'EOCP'
7602 #include <sys/types.h>
7607 #ifdef SYSTIMEKERNEL
7610 #include <sys/time.h>
7613 #include <sys/select.h>
7622 struct timezone tzp;
7624 if (foo.tm_sec == foo.tm_sec)
7627 if (bar.tv_sec == bar.tv_sec)
7636 for s_timeval in '-DS_TIMEVAL' ''; do
7637 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7638 for i_time in '' '-DI_TIME'; do
7639 for i_systime in '-DI_SYSTIME' ''; do
7643 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7644 try.c -o try >/dev/null 2>&1 ; then
7645 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7649 $echo $n "Succeeded with $flags$c"
7660 *SYSTIMEKERNEL*) i_systimek="$define"
7661 timeincl=`./findhdr sys/time.h`
7662 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7663 *) i_systimek="$undef";;
7666 *I_TIME*) i_time="$define"
7667 timeincl=`./findhdr time.h`" $timeincl"
7668 echo "We'll include <time.h>." >&4;;
7669 *) i_time="$undef";;
7672 *I_SYSTIME*) i_systime="$define"
7673 timeincl=`./findhdr sys/time.h`" $timeincl"
7674 echo "We'll include <sys/time.h>." >&4;;
7675 *) i_systime="$undef";;
7679 : check for fd_set items
7682 Checking to see how well your C compiler handles fd_set and friends ...
7684 $cat >fd_set.c <<EOCP
7685 #$i_systime I_SYS_TIME
7686 #$i_sysselct I_SYS_SELECT
7687 #$d_socket HAS_SOCKET
7688 #include <sys/types.h>
7690 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7693 #include <sys/time.h>
7696 #include <sys/select.h>
7706 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7713 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7714 d_fds_bits="$define"
7716 echo "Well, your system knows about the normal fd_set typedef..." >&4
7718 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7719 d_fd_macros="$define"
7722 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7724 d_fd_macros="$undef"
7728 Hmm, your compiler has some difficulty with fd_set. Checking further...
7730 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7733 echo "Well, your system has some sort of fd_set available..." >&4
7735 echo "and you have the normal fd_set macros." >&4
7736 d_fd_macros="$define"
7739 but not the normal fd_set macros! Gross! More work for me...
7741 d_fd_macros="$undef"
7744 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7747 d_fd_macros="$undef"
7753 : check for type of arguments to select. This will only really
7754 : work if the system supports prototypes and provides one for
7758 : Make initial guess
7759 case "$selecttype" in
7762 $define) xxx='fd_set *' ;;
7766 *) xxx="$selecttype"
7771 'fd_set *') yyy='int *' ;;
7772 'int *') yyy='fd_set *' ;;
7777 Checking to see what type of arguments are expected by select().
7780 #$i_systime I_SYS_TIME
7781 #$i_sysselct I_SYS_SELECT
7782 #$d_socket HAS_SOCKET
7783 #include <sys/types.h>
7785 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7788 #include <sys/time.h>
7791 #include <sys/select.h>
7797 Select_fd_set_t readfds;
7798 Select_fd_set_t writefds;
7799 Select_fd_set_t exceptfds;
7800 struct timeval timeout;
7801 select(width, readfds, writefds, exceptfds, &timeout);
7805 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7807 echo "Your system uses $xxx for the arguments to select." >&4
7808 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7810 echo "Your system uses $yyy for the arguments to select." >&4
7812 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7819 *) selecttype='int *'
7823 : Trace out the files included by signal.h, then look for SIGxxx names.
7824 : Remove SIGARRAYSIZE used by HPUX.
7825 xxx=`echo '#include <signal.h>' |
7826 $cppstdin $cppminus $cppflags 2>/dev/null |
7827 $grep '^[ ]*#.*include' |
7828 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
7829 : Check this list of files to be sure we have parsed the cpp output ok.
7830 : This will also avoid potentially non-existent files, such
7833 for xx in $xxx /dev/null ; do
7834 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
7836 : If we have found no files, at least try signal.h
7838 '') xxxfiles=`./findhdr signal.h` ;;
7841 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ {
7842 print substr($2, 4, 20)
7844 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ {
7845 print substr($3, 4, 20)
7847 : Append some common names just in case the awk scan failed.
7848 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
7849 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
7850 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
7851 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
7852 : generate a few handy files for later
7853 echo $xxx | $tr ' ' '\012' | $awk '
7855 printf "#include <signal.h>\n";
7856 printf "main() {\n";
7859 printf "#ifdef SIG"; printf $1; printf "\n"
7860 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
7861 printf $1; printf ");\n"
7868 $cat >signal.cmd <<EOS
7870 $test -s signal.lst && exit 0
7871 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
7872 ./signal | $sort -n +1 | $uniq >signal.lst
7874 echo "(I can't seem be able to compile the test program -- Guessing)"
7875 echo 'kill -l' >signal
7876 set X \`csh -f <signal\`
7880 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
7882 echo \$@ | $tr ' ' '\012' | \
7883 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
7885 $rm -f signal.c signal signal.o
7887 chmod a+x signal.cmd
7888 $eunicefix signal.cmd
7890 : generate list of signal names
7894 echo "Generating a list of signal names..." >&4
7896 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
7897 sig_name="ZERO $sig_name"
7900 echo "The following signals are available:"
7902 echo $sig_name | $awk \
7903 'BEGIN { linelen = 0 }
7905 for (i = 1; i <= NF; i++) {
7907 linelen = linelen + length(name)
7910 linelen = length(name)
7917 : generate list of signal numbers
7921 echo "Generating a list of signal numbers..." >&4
7923 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
7924 sig_num="0 $sig_num"
7928 '') sig_max=`$tail -1 signal.lst | $awk '{print $2}'` ;;
7930 echo "The maximum signal number defined is $sig_max."
7932 : see what type is used for size_t
7933 set size_t sizetype 'unsigned int' stdio.h sys/types.h
7937 rp="What type is used for the length parameter for string functions?"
7941 : see what type is used for signed size_t
7942 set ssize_t ssizetype int stdio.h sys/types.h
7945 $cat > ssize.c <<EOM
7947 #include <sys/types.h>
7948 #define Size_t $sizetype
7949 #define SSize_t $dflt
7952 if (sizeof(Size_t) == sizeof(SSize_t))
7954 else if (sizeof(Size_t) == sizeof(int))
7961 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
7963 echo "I'll be using $ssizetype for functions returning a byte count." >&4
7965 echo "(I can't compile the test program--please enlighten me!)"
7968 I need a type that is the same size as $sizetype, but is guaranteed to
7969 be signed. Common values are int and long.
7972 rp="What signed type is the same size as $sizetype?"
7976 $rm -f ssize ssize.[co]
7978 : see what type of char stdio uses.
7980 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7981 echo "Your stdio uses unsigned chars." >&4
7982 stdchar="unsigned char"
7984 echo "Your stdio uses signed chars." >&4
7988 : see if time exists
7990 if set time val -f d_time; eval $csym; $val; then
7991 echo 'time() found.' >&4
7993 set time_t timetype long stdio.h sys/types.h
7997 rp="What type is returned by time() on this system?"
8001 echo 'time() not found, hope that will do.' >&4
8008 : see what type uids are declared as in the kernel
8009 set uid_t uidtype xxx stdio.h sys/types.h
8013 xxx=`./findhdr sys/user.h`
8014 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
8016 unsigned) dflt="$1 $2" ;;
8020 *) dflt="$uidtype";;
8023 rp="What is the type for user ids returned by getuid()?"
8027 : see if this is a sys/file.h system
8032 : do we need to include sys/file.h ?
8038 echo "We'll be including <sys/file.h>." >&4
8041 echo "We won't be including <sys/file.h>." >&4
8051 : see if fcntl.h is there
8056 : see if we can include fcntl.h
8062 echo "We'll be including <fcntl.h>." >&4
8066 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8068 echo "We won't be including <fcntl.h>." >&4
8080 : see if this is an grp system
8084 : see if this is a math.h system
8088 : see if memory.h is available.
8093 : See if it conflicts with string.h
8099 $cppstdin $cppflags $cppminus < $strings > mem.h
8100 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8102 echo "We won't be including <memory.h>."
8112 : see if net/errno.h is available
8117 : Unfortunately, it causes problems on some systems. Arrgh.
8123 #include <net/errno.h>
8129 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8130 echo "We'll be including <net/errno.h>." >&4
8132 echo "We won't be including <net/errno.h>." >&4
8141 : get C preprocessor symbols handy
8143 $echo $n "Hmm... $c"
8144 echo $al | $tr ' ' '\012' >Cppsym.know
8156 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8158 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8161 unknown="\$unknown \$sym"
8171 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8173 exit 0; _ _ _ _\1\\ \1\\
8176 echo "exit 1; _ _ _" >>Cppsym\$\$
8177 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8179 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8185 $rm -f Cppsym\$\$ Cppsym2\$\$
8190 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8192 : now check the C compiler for additional symbols
8198 for i in \`$cc -v -c tmp.c 2>&1\`
8201 -D*) echo "\$i" | $sed 's/^-D//';;
8202 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8209 ./ccsym | $sort | $uniq >ccsym.raw
8210 $awk '/\=/ { print $0; next }
8211 { print $0"=1" }' ccsym.raw >ccsym.list
8212 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8213 $comm -13 ccsym.true ccsym.list >ccsym.own
8214 $comm -12 ccsym.true ccsym.list >ccsym.com
8215 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8218 if $test -z ccsym.raw; then
8219 echo "Your C compiler doesn't seem to define any symbol!" >&4
8221 echo "However, your C preprocessor defines the following ones:"
8224 if $test -s ccsym.com; then
8225 echo "Your C compiler and pre-processor define these symbols:"
8226 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8229 $test "$silent" || sleep 1
8231 if $test -s ccsym.cpp; then
8232 $test "$also" && echo " "
8233 echo "Your C pre-processor ${also}defines the following $symbols:"
8234 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8236 $test "$silent" || sleep 1
8238 if $test -s ccsym.own; then
8239 $test "$also" && echo " "
8240 echo "Your C compiler ${also}defines the following cpp variables:"
8241 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8242 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8243 $test "$silent" || sleep 1
8248 : see if this is a termio system
8252 if $test `./findhdr termios.h`; then
8253 set tcsetattr i_termios
8259 "$define") echo "You have POSIX termios.h... good!" >&4;;
8260 *) if ./Cppsym pyr; then
8261 case "`/bin/universe`" in
8262 ucb) if $test `./findhdr sgtty.h`; then
8264 echo "<sgtty.h> found." >&4
8266 echo "System is pyramid with BSD universe."
8267 echo "<sgtty.h> not found--you could have problems." >&4
8269 *) if $test `./findhdr termio.h`; then
8271 echo "<termio.h> found." >&4
8273 echo "System is pyramid with USG universe."
8274 echo "<termio.h> not found--you could have problems." >&4
8278 if $test `./findhdr termio.h`; then
8279 echo "<termio.h> found." >&4
8281 elif $test `./findhdr sgtty.h`; then
8282 echo "<sgtty.h> found." >&4
8285 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8288 if $test `./findhdr sgtty.h`; then
8289 echo "<sgtty.h> found." >&4
8291 elif $test `./findhdr termio.h`; then
8292 echo "<termio.h> found." >&4
8295 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8299 set i_termio; eval $setvar
8300 val=$val2; set i_sgtty; eval $setvar
8301 val=$val3; set i_termios; eval $setvar
8303 : see if stdarg is available
8305 if $test `./findhdr stdarg.h`; then
8306 echo "<stdarg.h> found." >&4
8309 echo "<stdarg.h> NOT found." >&4
8313 : see if varags is available
8315 if $test `./findhdr varargs.h`; then
8316 echo "<varargs.h> found." >&4
8318 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8321 : set up the varargs testing programs
8322 $cat > varargs.c <<EOP
8327 #include <varargs.h>
8345 p = va_arg(ap, char *);
8350 $cat > varargs <<EOP
8351 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8360 : now check which varargs header should be included
8365 if `./varargs I_STDARG`; then
8367 elif `./varargs I_VARARGS`; then
8372 if `./varargs I_VARARGS`; then
8379 echo "I could not find the definition for va_dcl... You have problems..." >&4
8380 val="$undef"; set i_stdarg; eval $setvar
8381 val="$undef"; set i_varargs; eval $setvar
8388 val="$define"; set i_stdarg; eval $setvar
8389 val="$undef"; set i_varargs; eval $setvar
8392 val="$undef"; set i_stdarg; eval $setvar
8393 val="$define"; set i_varargs; eval $setvar
8396 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8400 : see if stddef is available
8401 set stddef.h i_stddef
8404 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8405 set sys/filio.h i_sysfilio
8408 if $test `./findhdr sys/ioctl.h`; then
8410 echo '<sys/ioctl.h> found.' >&4
8413 if $test $i_sysfilio = "$define"; then
8414 echo '<sys/ioctl.h> NOT found.' >&4
8416 $test $i_sgtty = "$define" && xxx="sgtty.h"
8417 $test $i_termio = "$define" && xxx="termio.h"
8418 $test $i_termios = "$define" && xxx="termios.h"
8419 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8425 : see if this is a sys/param system
8426 set sys/param.h i_sysparam
8429 : see if sys/stat.h is available
8430 set sys/stat.h i_sysstat
8433 : see if sys/types.h has to be included
8434 set sys/types.h i_systypes
8437 : see if this is a unistd.h system
8438 set unistd.h i_unistd
8441 : see if this is an utime system
8445 : see if this is a vfork system
8456 : Remove build directory name from cppstdin so it can be used from
8457 : either the present location or the final installed location.
8459 : Get out of the UU directory to get correct path name.
8463 echo "Stripping down cppstdin path name"
8469 : end of configuration questions
8471 echo "End of configuration questions."
8474 : back to where it started
8475 if test -d ../UU; then
8479 : configuration may be patched via a 'config.over' file
8480 if $test -f config.over; then
8483 rp='I see a config.over file. Do you wish to load it?'
8486 n*) echo "OK, I'll ignore it.";;
8488 echo "Configuration override changes have been loaded."
8493 : in case they want portability, strip down executable paths
8494 case "$d_portable" in
8497 echo "Stripping down executable paths..." >&4
8498 for file in $loclist $trylist; do
8504 : create config.sh file
8506 echo "Creating config.sh..." >&4
8507 $spitshell <<EOT >config.sh
8510 # This file was produced by running the Configure script. It holds all the
8511 # definitions figured out by Configure. Should you modify one of these values,
8512 # do not forget to propagate your changes by running "Configure -der". You may
8513 # instead choose to run each of the .SH files by yourself, or "Configure -S".
8516 # Configuration time: $cf_time
8517 # Configured by: $cf_by
8518 # Target system: $myuname
8528 Revision='$Revision'
8532 alignbytes='$alignbytes'
8533 aphostname='$aphostname'
8535 archlibexp='$archlibexp'
8536 archname='$archname'
8544 byteorder='$byteorder'
8546 castflags='$castflags'
8549 cccdlflags='$cccdlflags'
8550 ccdlflags='$ccdlflags'
8553 cf_email='$cf_email'
8558 clocktype='$clocktype'
8560 compress='$compress'
8561 contains='$contains'
8565 cpp_stuff='$cpp_stuff'
8566 cppflags='$cppflags'
8568 cppminus='$cppminus'
8570 cppstdin='$cppstdin'
8571 cryptlib='$cryptlib'
8573 d_Gconvert='$d_Gconvert'
8574 d_access='$d_access'
8576 d_archlib='$d_archlib'
8577 d_attribut='$d_attribut'
8581 d_bsdpgrp='$d_bsdpgrp'
8583 d_casti32='$d_casti32'
8584 d_castneg='$d_castneg'
8585 d_charvspr='$d_charvspr'
8587 d_chroot='$d_chroot'
8588 d_chsize='$d_chsize'
8589 d_closedir='$d_closedir'
8593 d_cuserid='$d_cuserid'
8594 d_dbl_dig='$d_dbl_dig'
8595 d_difftime='$d_difftime'
8596 d_dirnamlen='$d_dirnamlen'
8597 d_dlerror='$d_dlerror'
8598 d_dlopen='$d_dlopen'
8599 d_dlsymun='$d_dlsymun'
8600 d_dosuid='$d_dosuid'
8602 d_eofnblk='$d_eofnblk'
8603 d_eunice='$d_eunice'
8604 d_fchmod='$d_fchmod'
8605 d_fchown='$d_fchown'
8607 d_fd_macros='$d_fd_macros'
8608 d_fd_set='$d_fd_set'
8609 d_fds_bits='$d_fds_bits'
8610 d_fgetpos='$d_fgetpos'
8611 d_flexfnam='$d_flexfnam'
8614 d_fpathconf='$d_fpathconf'
8615 d_fsetpos='$d_fsetpos'
8616 d_getgrps='$d_getgrps'
8617 d_gethent='$d_gethent'
8618 d_gethname='$d_gethname'
8619 d_getlogin='$d_getlogin'
8620 d_getpgrp2='$d_getpgrp2'
8621 d_getpgrp='$d_getpgrp'
8622 d_getppid='$d_getppid'
8623 d_getprior='$d_getprior'
8626 d_isascii='$d_isascii'
8627 d_killpg='$d_killpg'
8629 d_locconv='$d_locconv'
8633 d_mbstowcs='$d_mbstowcs'
8634 d_mbtowc='$d_mbtowc'
8635 d_memcmp='$d_memcmp'
8636 d_memcpy='$d_memcpy'
8637 d_memmove='$d_memmove'
8638 d_memset='$d_memset'
8640 d_mkfifo='$d_mkfifo'
8641 d_mktime='$d_mktime'
8643 d_msgctl='$d_msgctl'
8644 d_msgget='$d_msgget'
8645 d_msgrcv='$d_msgrcv'
8646 d_msgsnd='$d_msgsnd'
8647 d_mymalloc='$d_mymalloc'
8649 d_oldsock='$d_oldsock'
8651 d_pathconf='$d_pathconf'
8653 d_phostname='$d_phostname'
8656 d_portable='$d_portable'
8658 d_pwchange='$d_pwchange'
8659 d_pwclass='$d_pwclass'
8660 d_pwcomment='$d_pwcomment'
8661 d_pwexpire='$d_pwexpire'
8662 d_pwquota='$d_pwquota'
8663 d_readdir='$d_readdir'
8664 d_readlink='$d_readlink'
8665 d_rename='$d_rename'
8666 d_rewinddir='$d_rewinddir'
8668 d_safebcpy='$d_safebcpy'
8669 d_safemcpy='$d_safemcpy'
8670 d_seekdir='$d_seekdir'
8671 d_select='$d_select'
8673 d_semctl='$d_semctl'
8674 d_semget='$d_semget'
8676 d_setegid='$d_setegid'
8677 d_seteuid='$d_seteuid'
8678 d_setlinebuf='$d_setlinebuf'
8679 d_setlocale='$d_setlocale'
8680 d_setpgid='$d_setpgid'
8681 d_setpgrp2='$d_setpgrp2'
8682 d_setpgrp='$d_setpgrp'
8683 d_setprior='$d_setprior'
8684 d_setregid='$d_setregid'
8685 d_setresgid='$d_setresgid'
8686 d_setresuid='$d_setresuid'
8687 d_setreuid='$d_setreuid'
8688 d_setrgid='$d_setrgid'
8689 d_setruid='$d_setruid'
8690 d_setsid='$d_setsid'
8693 d_shmatprototype='$d_shmatprototype'
8694 d_shmctl='$d_shmctl'
8696 d_shmget='$d_shmget'
8697 d_shrplib='$d_shrplib'
8698 d_sitelib='$d_sitelib'
8699 d_socket='$d_socket'
8700 d_sockpair='$d_sockpair'
8701 d_statblks='$d_statblks'
8702 d_stdio_cnt_lval='$d_stdio_cnt_lval'
8703 d_stdio_ptr_lval='$d_stdio_ptr_lval'
8704 d_stdiobase='$d_stdiobase'
8705 d_stdstdio='$d_stdstdio'
8706 d_strchr='$d_strchr'
8707 d_strcoll='$d_strcoll'
8708 d_strctcpy='$d_strctcpy'
8709 d_strerrm='$d_strerrm'
8710 d_strerror='$d_strerror'
8711 d_strxfrm='$d_strxfrm'
8712 d_suidsafe='$d_suidsafe'
8713 d_symlink='$d_symlink'
8714 d_syscall='$d_syscall'
8715 d_sysconf='$d_sysconf'
8716 d_sysernlst='$d_sysernlst'
8717 d_syserrlst='$d_syserrlst'
8718 d_system='$d_system'
8719 d_tcgetpgrp='$d_tcgetpgrp'
8720 d_tcsetpgrp='$d_tcsetpgrp'
8721 d_telldir='$d_telldir'
8724 d_truncate='$d_truncate'
8725 d_tzname='$d_tzname'
8729 d_void_closedir='$d_void_closedir'
8730 d_voidsig='$d_voidsig'
8731 d_voidtty='$d_voidtty'
8732 d_volatile='$d_volatile'
8733 d_vprintf='$d_vprintf'
8735 d_waitpid='$d_waitpid'
8736 d_wcstombs='$d_wcstombs'
8737 d_wctomb='$d_wctomb'
8740 db_hashtype='$db_hashtype'
8741 db_prefixtype='$db_prefixtype'
8742 defvoidused='$defvoidused'
8743 direntrytype='$direntrytype'
8746 dynamic_ext='$dynamic_ext'
8751 eunicefix='$eunicefix'
8753 extensions='$extensions'
8756 fpostype='$fpostype'
8757 freetype='$freetype'
8758 full_csh='$full_csh'
8759 full_sed='$full_sed'
8761 gccversion='$gccversion'
8765 groupcat='$groupcat'
8766 groupstype='$groupstype'
8768 h_sysfile='$h_sysfile'
8772 i_bsdioctl='$i_bsdioctl'
8775 i_dirent='$i_dirent'
8782 i_limits='$i_limits'
8783 i_malloc='$i_malloc'
8785 i_memory='$i_memory'
8787 i_neterrno='$i_neterrno'
8790 i_rpcsvcdbm='$i_rpcsvcdbm'
8792 i_stdarg='$i_stdarg'
8793 i_stddef='$i_stddef'
8794 i_stdlib='$i_stdlib'
8795 i_string='$i_string'
8796 i_sysdir='$i_sysdir'
8797 i_sysfile='$i_sysfile'
8798 i_sysfilio='$i_sysfilio'
8800 i_sysioctl='$i_sysioctl'
8801 i_sysndir='$i_sysndir'
8802 i_sysparam='$i_sysparam'
8803 i_sysselct='$i_sysselct'
8804 i_syssockio='$i_syssockio'
8805 i_sysstat='$i_sysstat'
8806 i_systime='$i_systime'
8807 i_systimek='$i_systimek'
8808 i_systimes='$i_systimes'
8809 i_systypes='$i_systypes'
8810 i_termio='$i_termio'
8811 i_termios='$i_termios'
8813 i_unistd='$i_unistd'
8815 i_varargs='$i_varargs'
8816 i_varhdr='$i_varhdr'
8820 installarchlib='$installarchlib'
8821 installbin='$installbin'
8822 installman1dir='$installman1dir'
8823 installman3dir='$installman3dir'
8824 installprivlib='$installprivlib'
8825 installscript='$installscript'
8826 installsitelib='$installsitelib'
8828 known_extensions='$known_extensions'
8832 lddlflags='$lddlflags'
8838 libswanted='$libswanted'
8844 locincpth='$locincpth'
8845 loclibpth='$loclibpth'
8849 lseektype='$lseektype'
8853 mallocobj='$mallocobj'
8854 mallocsrc='$mallocsrc'
8855 malloctype='$malloctype'
8857 man1direxp='$man1direxp'
8860 man3direxp='$man3direxp'
8864 mips_type='$mips_type'
8867 modetype='$modetype'
8870 myarchname='$myarchname'
8871 mydomain='$mydomain'
8872 myhostname='$myhostname'
8877 o_nonblock='$o_nonblock'
8878 optimize='$optimize'
8879 orderlib='$orderlib'
8884 patchlevel='$patchlevel'
8886 perladmin='$perladmin'
8888 phostname='$phostname'
8893 prefixexp='$prefixexp'
8895 privlibexp='$privlibexp'
8896 prototype='$prototype'
8897 randbits='$randbits'
8899 rd_nodata='$rd_nodata'
8903 scriptdir='$scriptdir'
8904 scriptdirexp='$scriptdirexp'
8906 selecttype='$selecttype'
8907 sendmail='$sendmail'
8910 sharpbang='$sharpbang'
8911 shmattype='$shmattype'
8915 sig_name='$sig_name'
8917 signal_t='$signal_t'
8919 sitelibexp='$sitelibexp'
8920 sizetype='$sizetype'
8925 sockethdr='$sockethdr'
8926 socketlib='$socketlib'
8928 spackage='$spackage'
8929 spitshell='$spitshell'
8931 ssizetype='$ssizetype'
8933 static_ext='$static_ext'
8935 stdio_base='$stdio_base'
8936 stdio_bufsiz='$stdio_bufsiz'
8937 stdio_cnt='$stdio_cnt'
8938 stdio_ptr='$stdio_ptr'
8946 timeincl='$timeincl'
8947 timetype='$timetype'
8955 usemymalloc='$usemymalloc'
8957 useposix='$useposix'
8958 usevfork='$usevfork'
8962 voidflags='$voidflags'
8967 : add special variables
8968 $test -f patchlevel.h && \
8969 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
8970 echo "CONFIG=true" >>config.sh
8972 : propagate old symbols
8973 if $test -f UU/config.sh; then
8974 <UU/config.sh sort | uniq >UU/oldconfig.sh
8975 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
8976 sort | uniq -u >UU/oldsyms
8977 set X `cat UU/oldsyms`
8983 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
8985 echo "# Variables propagated from previous config.sh file." >>config.sh
8986 for sym in `cat UU/oldsyms`; do
8987 echo " Propagating $hint variable "'$'"$sym..."
8988 eval 'tmp="$'"${sym}"'"'
8990 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
8996 : Finish up by extracting the .SH files
9010 If you'd like to make any changes to the config.sh file before I begin
9011 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9014 rp="Press return or use a shell escape to edit config.sh:"
9019 *) : in case they cannot read
9025 : if this fails, just run all the .SH files by hand
9032 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9039 Now you need to generate make dependencies by running "make depend".
9040 You might prefer to run it in background: "make depend > makedepend.out &"
9041 It can take a while, so you might not want to run it right now.
9046 rp="Run make depend now?"
9050 make depend && echo "Now you must run a make."
9053 echo "You must run 'make depend' then 'make'."
9056 elif test -f [Mm]akefile; then
9058 echo "Now you must run a make."
9063 $rm -f kit*isdone ark*isdone