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 Sat Feb 1 00:26:40 EST 1997 [metaconfig 3.0 PL60]
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 :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
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 ;;
88 : This should not matter in scripts, but apparently it does, sometimes
96 echo "Say 'sh $me', not 'sh <$me'"
100 : Test and see if we are running under ksh, either blatantly or in disguise.
101 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 : running under ksh. Is this a good thing?
103 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then
104 if test X`/usr/bin/uname -v` = X4 ; then
105 : on AIX 4, /bin/sh is really ksh, and it causes us problems.
108 (Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.)
111 exec /usr/bin/bsh $0 "$@"
114 if test ! -f /hp-ux ; then
115 : Warn them if they use ksh on other systems
117 (I see you are using the Korn shell. Some ksh's blow up on $me,
118 especially on older exotic systems. If yours does, try the Bourne
125 : Not running under ksh. Maybe we should be?
126 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
127 if test -f /hp-ux -a -f /bin/ksh; then
129 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
132 exec /bin/ksh $0 "$@"
136 : Configure runs within the UU subdirectory
137 test -d UU || mkdir UU
318 gethbadd_addr_type=''
319 gethbadd_alen_type=''
644 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
647 : We must find out about Eunice early
649 if test -f /etc/unixtovms; then
650 eunicefix=/etc/unixtovms
652 if test -f /etc/unixtovms.exe; then
653 eunicefix=/etc/unixtovms.exe
656 : list of known cpp symbols, sorted alphabetically
657 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
658 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
659 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
660 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
661 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
662 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
663 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
664 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
665 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
666 al="$al VMS Xenix286"
667 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
668 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
669 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
670 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
671 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
672 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
673 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
674 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
675 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
676 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
677 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
678 al="$al __SVR4_2__ __UMAXV__"
679 al="$al ____386BSD____ __alpha __alpha__ __amiga"
680 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
681 al="$al __host_mips__"
682 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
683 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
684 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
685 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
686 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
687 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
688 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
689 al="$al __mc88100 __mc88100__ __mips __mips__"
690 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
691 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
692 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
693 al="$al _host_mips _mips _unix"
694 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
695 al="$al apollo ardent att386 att3b"
696 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
697 al="$al cadmus clipper concurrent convex cray ctix"
698 al="$al dmert encore gcos gcx gimpel gould"
699 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
700 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
701 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
702 al="$al i186 i286 i386 i486 i8086"
703 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
704 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
705 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
706 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
707 al="$al mc88000 mc88100 merlin mert mips mvs n16"
708 al="$al ncl_el ncl_mr"
709 al="$al news1500 news1700 news1800 news1900 news3700"
710 al="$al news700 news800 news900 ns16000 ns32000"
711 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
712 al="$al parisc pc532 pdp11 plexus posix pyr"
713 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
714 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
715 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
716 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
717 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
718 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
723 : default library list
725 : set useposix=false in your hint file to disable the POSIX extension.
727 : set useopcode=false in your hint file to disable the Opcode extension.
729 : Define several unixisms. These can be used in hint files.
731 : Extra object files, if any, needed on this platform.
733 : Possible local include directories to search.
734 : Set locincpth to "" in a hint file to defeat local include searches.
735 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
736 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
738 : no include file wanted by default
741 : change the next line if compiling for Xenix/286 on Xenix/386
742 xlibpth='/usr/lib/386 /lib/386'
744 : Possible local library directories to search.
745 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
746 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
748 : general looking path for locating libraries
749 glibpth="/shlib /usr/shlib /usr/lib/pa1.1 /usr/lib/large"
750 glibpth="$glibpth /lib /usr/lib $xlibpth"
751 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
752 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
754 : Private path used by Configure to find libraries. Its value
755 : is prepended to libpth. This variable takes care of special
756 : machines, like the mips. Usually, it should be empty.
759 : full support for void wanted by default
762 : List of libraries we want.
763 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
764 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
765 libswanted="$libswanted ucb bsd BSD PW x"
766 : We probably want to search /usr/shlib before most other libraries.
767 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
768 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
769 glibpth="/usr/shlib $glibpth"
770 : Do not use vfork unless overridden by a hint file.
773 : Find the basic shell for Bourne shell scripts
776 : SYSTYPE is for some older MIPS systems.
777 : I do not know if it is still needed.
779 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
782 if test -f "$xxx"; then
785 : Build up a list and do a single loop so we can 'break' out.
786 pth=`echo $PATH | sed -e "s/$p_/ /g"`
787 for xxx in sh bash ksh pdksh ash; do
789 try="$try ${p}/${xxx}"
793 if test -f "$xxx"; then
795 echo "Your Bourne shell appears to be in $sh."
797 elif test -f "$xxx.exe"; then
799 echo "Hmm. Your Bourne shell appears to be in $sh."
809 $me: Fatal Error: I can't find a Bourne Shell anywhere.
810 Usually it's in /bin/sh. How did you even get this far?
811 Please contact me (Chip Salzenberg) at chip@perl.com and
812 we'll try to straigten this all out.
818 : see if sh knows # comments
819 if `$sh -c '#' >/dev/null 2>&1`; then
824 test -f $xcat || xcat=/usr/bin/cat
829 if test -s today; then
832 echo "#! $xcat" > try
836 if test -s today; then
839 echo "Okay, let's see if #! works on this system..."
840 echo "It's just a comment."
845 echo "Your $sh doesn't grok # comments--I will strip them later on."
848 echo "exec grep -v '^[ ]*#'" >spitshell
851 spitshell=`pwd`/spitshell
853 echo "I presume that if # doesn't work, #! won't work either!"
858 : figure out how to guarantee sh startup
860 '') startsh=${sharpbang}${sh} ;;
872 : echo "Yup, it does."
874 echo "Hmm. '$startsh' didn't work."
875 echo "You may have to fix up the shell scripts to make sure sh runs them."
879 : script used to extract .SH files with variable substitutions
883 cat >>extract <<'EOS'
885 echo "Doing variable substitutions on .SH files..."
886 if test -f MANIFEST; then
887 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
888 : Pick up possible extension manifests.
889 for dir in ext/* ; do
890 if test -f $dir/MANIFEST; then
891 xxx=`awk '{print $1}' < $dir/MANIFEST |
892 sed -n "/\.SH$/ s@^@$dir/@p"`
893 shlist="$shlist $xxx"
898 echo "(Looking for .SH files under the current directory.)"
899 set x `find . -name "*.SH" -print`
903 0) set x *.SH; shift;;
905 if test ! -f $1; then
911 dir=`expr X$file : 'X\(.*\)/'`
912 file=`expr X$file : 'X.*/\(.*\)'`
913 (cd $dir && . ./$file)
920 if test -f config_h.SH; then
921 if test ! -f config.h; then
922 : oops, they left it out of MANIFEST, probably, so do it anyway.
928 : produce awk script to parse command line options
929 cat >options.awk <<'EOF'
931 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
933 len = length(optstr);
934 for (i = 1; i <= len; i++) {
935 c = substr(optstr, i, 1);
936 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
947 if (substr(str, 1, 1) != "-") {
948 printf("'%s'\n", str);
952 for (i = 2; i <= len; i++) {
953 c = substr(str, i, 1);
955 printf("-%s\n", substr(str, i));
961 printf("'%s'\n", substr(str, i + 1));
974 : process the command line options
975 set X `for arg in "$@"; do echo "X$arg"; done |
976 sed -e s/X// | awk -f options.awk`
981 : set up default values
998 while test $# -gt 0; do
1000 -d) shift; fastread=yes;;
1001 -e) shift; alldone=cont;;
1005 if test -r "$1"; then
1008 echo "$me: cannot read config file $1." >&2
1013 -h) shift; error=true;;
1014 -r) shift; reuseval=true;;
1015 -s) shift; silent=true;;
1016 -E) shift; alldone=exit;;
1017 -K) shift; knowitall=true;;
1018 -O) shift; override=true;;
1019 -S) shift; extractsh=true;;
1024 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1025 echo "$me: ignoring -D $1" >&2
1028 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1029 *) echo "$1='define'" >> optdef.sh;;
1036 *=) echo "$1" >> optdef.sh;;
1038 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1039 echo "$me: ignoring -U $1" >&2
1041 *) echo "$1='undef'" >> optdef.sh;;
1045 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1048 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1056 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1057 [-U symbol] [-U symbol=]
1058 -d : use defaults for all answers.
1059 -e : go on without questioning past the production of config.sh.
1060 -f : specify an alternate default configuration file.
1061 -h : print this help message and exit (with an error status).
1062 -r : reuse C symbols value if possible (skips costly nm extraction).
1063 -s : silent mode, only echoes questions and essential information.
1064 -D : define symbol to have some value:
1065 -D symbol symbol gets the value 'define'
1066 -D symbol=value symbol gets the value 'value'
1067 -E : stop at the end of questions, after having produced config.sh.
1068 -K : do not use unless you know what you are doing.
1069 -O : let -D and -U override definitions from loaded configuration file.
1070 -S : perform variable substitutions on all .SH files (can mix with -f)
1071 -U : undefine symbol:
1072 -U symbol symbol gets the value 'undef'
1073 -U symbol= symbol gets completely empty
1074 -V : print version number and exit (with a zero status).
1082 true) exec 1>/dev/null;;
1085 : run the defines and the undefines, if any, but leave the file out there...
1089 case "$extractsh" in
1091 case "$config_sh" in
1092 '') config_sh='config.sh'; config='./config.sh';;
1093 /*) config="$config_sh";;
1094 *) config="./$config_sh";;
1097 echo "Fetching answers from $config_sh..."
1100 test "$override" && . ./optdef.sh
1111 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1112 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1113 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1114 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1115 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1118 : Eunice requires " " instead of "", can you believe it
1121 echo "Beginning of configuration questions for $package."
1123 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1125 : Some greps do not return status, grrr.
1126 echo "grimblepritz" >grimble
1127 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1129 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1135 : the following should work in any shell
1139 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1140 cat >contains <<'EOSS'
1141 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1146 : first determine how to suppress newline on echo command
1148 echo "Checking echo to see how to suppress newlines..."
1149 (echo "hi there\c" ; echo " ") >.echotmp
1150 if $contains c .echotmp >/dev/null 2>&1 ; then
1161 echo $n "The star should be here-->$c"
1165 : Now test for existence of everything in MANIFEST
1167 if test -f ../MANIFEST; then
1168 echo "First let's make sure your kit is complete. Checking..." >&4
1169 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1171 for filelist in x??; do
1172 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1174 if test -s missing; then
1178 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1180 You have the option of continuing the configuration process, despite the
1181 distinct possibility that your kit is damaged, by typing 'y'es. If you
1182 do, don't blame me if something goes wrong. I advise you to type 'n'o
1183 and contact the author (chip@perl.com).
1186 echo $n "Continue? [n] $c" >&4
1190 echo "Continuing..." >&4
1194 echo "ABORTING..." >&4
1199 echo "Looks good..." >&4
1202 echo "There is no MANIFEST file. I hope your kit is complete !"
1206 : compute the number of columns on the terminal for proper question formatting
1211 : set up the echo used in my read
1212 myecho="case \"\$xxxm\" in
1213 '') echo $n \"\$rp $c\" >&4;;
1215 '') echo $n \"[\$xxxm] $c\";;
1217 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1219 echo $n \"[\$xxxm] $c\" >&4
1221 echo $n \"\$rp [\$xxxm] $c\" >&4
1227 : now set up to do reads with possible shell escape and default assignment
1233 case "\$fastread" in
1234 yes) case "\$dflt" in
1237 case "\$silent-\$rp" in
1242 *) case "\$silent" in
1243 true) case "\$rp" in
1248 while expr "X\$ans" : "X!" >/dev/null; do
1252 aok=''; eval ans="\\"\$answ\\"" && aok=y
1257 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1262 echo "(OK, I'll run with -d after this question.)" >&4
1265 echo "*** Sorry, \$1 not supported yet." >&4
1277 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1287 echo "*** Substitution done -- please confirm."
1289 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1294 echo "*** Error -- try again."
1301 case "\$ans\$xxxm\$nostick" in
1313 : create .config dir to save info across Configure sessions
1314 test -d ../.config || mkdir ../.config
1315 cat >../.config/README <<EOF
1316 This directory created by Configure to save information that should
1317 persist across sessions.
1319 You may safely delete it if you wish.
1322 : general instructions
1325 user=`(logname) 2>/dev/null`
1327 user=`whoami 2>&1` ;;
1329 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1332 rp='Would you like to see the instructions?'
1343 This installation shell script will examine your system and ask you questions
1344 to determine how the perl5 package should be installed. If you get
1345 stuck on a question, you may use a ! shell escape to start a subshell or
1346 execute a command. Many of the questions will have default answers in square
1347 brackets; typing carriage return will give you the default.
1349 On some of the questions which ask for file or directory names you are allowed
1350 to use the ~name construct to specify the login directory belonging to "name",
1351 even if you don't have a shell which knows about that. Questions where this is
1352 allowed will be marked "(~name ok)".
1356 dflt='Type carriage return to continue'
1360 The prompter used in this script allows you to use shell variables and
1361 backticks in your answers. You may use $1, $2, etc... to refer to the words
1362 in the default answer, as if the default line was a set of arguments given to a
1363 script shell. This means you may also use $* to repeat the whole default line,
1364 so you do not have to re-type everything to add something to the default.
1366 Everytime there is a substitution, you will have to confirm. If there is an
1367 error (e.g. an unmatched backtick), the default answer will remain unchanged
1368 and you will be prompted again.
1370 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1371 the questions and use the computed defaults (or the previous answers if there
1372 was already a config.sh file). Type 'Configure -h' for a list of options.
1373 You may also start interactively and then answer '& -d' at any prompt to turn
1374 on the non-interactive behavior for the remainder of the execution.
1380 Much effort has been expended to ensure that this shell script will run on any
1381 Unix system. If despite that it blows up on yours, your best bet is to edit
1382 Configure and run it again. If you can't run Configure for some reason,
1383 you'll have to generate a config.sh file by hand. Whatever problems you
1384 have, let me (chip@perl.com) know how I blew it.
1386 This installation script affects things in two ways:
1388 1) it may do direct variable substitutions on some of the files included
1390 2) it builds a config.h file for inclusion in C programs. You may edit
1391 any of these files as the need arises after running this script.
1393 If you make a mistake on a question, there is no easy way to back up to it
1394 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1395 files. Configure will offer to let you do this before it runs the SH files.
1398 dflt='Type carriage return to continue'
1400 case "$firsttime" in
1401 true) echo $user >>../.config/instruct;;
1405 : find out where common programs are
1407 echo "Locating common programs..." >&4
1420 if test -d \$dir/\$thing; then
1426 for thisthing in \$dir/\$thing; do
1427 : just loop through to pick last item
1429 if test -f \$thisthing; then
1432 elif test -f \$dir/\$thing.exe; then
1433 : on Eunice apparently
1483 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1484 pth="$pth /lib /usr/lib"
1485 for file in $loclist; do
1486 xxx=`./loc $file $file $pth`
1491 echo $file is in $xxx.
1494 echo $file is in $xxx.
1497 echo "I don't know where '$file' is, and my life depends on it." >&4
1498 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1504 echo "Don't worry if any of the following aren't found..."
1506 for file in $trylist; do
1507 xxx=`./loc $file $file $pth`
1512 echo $file is in $xxx.
1515 echo $file is in $xxx.
1518 echo "I don't see $file out there, $say."
1525 echo "Substituting grep for egrep."
1531 echo "Substituting cp for ln."
1537 echo "Hopefully test is built into your sh."
1540 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1541 echo "Using the test built into your sh."
1549 echo "Hopefully echo is built into your sh."
1554 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1555 $echo $n "hi there$c" >foo1
1556 echo $n "hi there$c" >foo2
1557 if cmp foo1 foo2 >/dev/null 2>&1; then
1558 echo "They are compatible. In fact, they may be identical."
1565 They are not compatible! You are probably running ksh on a non-USG system.
1566 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1567 have echo built in and we may have to run some Bourne shell scripts. That
1568 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1571 $echo $n "The star should be here-->$c"
1578 : determine whether symbolic links are supported
1581 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1582 echo "Symbolic links are supported." >&4
1585 echo "Symbolic links are NOT supported." >&4
1590 : see whether [:lower:] and [:upper:] are supported character classes
1594 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1596 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1601 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1604 : set up the translation script tr, must be called with ./tr of course
1608 '[A-Z][a-z]') exec $tr '$up' '$low';;
1609 '[a-z][A-Z]') exec $tr '$low' '$up';;
1616 : Try to determine whether config.sh was made on this system
1617 case "$config_sh" in
1619 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1620 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1621 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1622 newmyuname="$myuname"
1624 case "$knowitall" in
1626 if test -f ../config.sh; then
1627 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1628 eval "`grep myuname= ../config.sh`"
1630 if test "X$myuname" = "X$newmyuname"; then
1638 : Get old answers from old config file if Configure was run on the
1639 : same system, otherwise use the hints.
1642 if test -f config.sh; then
1644 rp="I see a config.sh file. Shall I use it to set the defaults?"
1647 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1648 *) echo "Fetching default answers from your old config.sh file..." >&4
1656 : Older versions did not always set $sh. Catch re-use of such
1665 if test ! -f config.sh; then
1668 First time through, eh? I have some defaults handy for the following systems:
1671 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1673 : Half the following guesses are probably wrong... If you have better
1674 : tests or hints, please send them to chip@perl.com
1675 : The metaconfig authors would also appreciate a copy...
1676 $test -f /irix && osname=irix
1677 $test -f /xenix && osname=sco_xenix
1678 $test -f /dynix && osname=dynix
1679 $test -f /dnix && osname=dnix
1680 $test -f /lynx.os && osname=lynxos
1681 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1682 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1683 $test -f /bin/mips && /bin/mips && osname=mips
1684 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1685 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1686 $test -d /usr/apollo/bin && osname=apollo
1687 $test -f /etc/saf/_sactab && osname=svr4
1688 $test -d /usr/include/minix && osname=minix
1689 if $test -d /MachTen; then
1691 if $test -x /sbin/version; then
1692 osvers=`/sbin/version | $awk '{print $2}' |
1693 $sed -e 's/[A-Za-z]$//'`
1694 elif $test -x /usr/etc/version; then
1695 osvers=`/usr/etc/version | $awk '{print $2}' |
1696 $sed -e 's/[A-Za-z]$//'`
1701 if $test -f $uname; then
1709 umips) osname=umips ;;
1712 [23]100) osname=mips ;;
1713 next*) osname=next ;;
1715 if $test -f /etc/kconfig; then
1717 if test "$lns" = "ln -s"; then
1719 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1721 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1730 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1732 'not found') osvers="$4"."$3" ;;
1733 '<3240'|'<>3240') osvers=3.2.0 ;;
1734 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1735 '=3250'|'>3250') osvers=3.2.5 ;;
1739 *dc.osx) osname=dcosx
1745 domainos) osname=apollo
1751 dynixptx*) osname=dynixptx
1754 freebsd) osname=freebsd
1756 genix) osname=genix ;;
1761 *.10.*) osvers=10 ;;
1777 netbsd*) osname=netbsd
1780 news-os) osvers="$3"
1782 4*) osname=newsos4 ;;
1786 bsd386) osname=bsd386
1789 powerux | power_ux | powermax_os | powermaxos | \
1790 powerunix | power_unix) osname=powerux
1793 next*) osname=next ;;
1794 solaris) osname=solaris
1796 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1803 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1807 titanos) osname=titanos
1816 ultrix) osname=ultrix
1819 osf1|mls+) case "$5" in
1822 osvers=`echo "$3" | sed 's/^[vt]//'`
1824 hp*) osname=hp_osf1 ;;
1825 mips) osname=mips_osf1 ;;
1834 $2) case "$osname" in
1838 : svr4.x or possibly later
1848 if test -f /stand/boot ; then
1849 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1850 if test -n "$INITPROG" -a -f "$INITPROG"; then
1851 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1852 if test -n "$isesix"; then
1860 *) if test -f /etc/systemid; then
1862 set `echo $3 | $sed 's/\./ /g'` $4
1863 if $test -f sco_$1_$2_$3.sh; then
1865 elif $test -f sco_$1_$2.sh; then
1867 elif $test -f sco_$1.sh; then
1872 '') : Still unknown. Probably a generic Sys V.
1881 *) case "$osname" in
1882 '') : Still unknown. Probably a generic BSD.
1890 if test -f /vmunix -a -f newsos4.sh; then
1891 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1892 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1895 $rm -f ../UU/kernel.what
1896 elif test -d c:/.; then
1903 : Now look for a hint file osname_osvers, unless one has been
1904 : specified already.
1907 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1908 : Also try without trailing minor version numbers.
1909 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1910 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1911 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1912 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1915 *) case "$osvers" in
1918 *) if $test -f $file.sh ; then
1920 elif $test -f $xfile.sh ; then
1922 elif $test -f $xxfile.sh ; then
1924 elif $test -f $xxxfile.sh ; then
1926 elif $test -f $xxxxfile.sh ; then
1928 elif $test -f "${osname}.sh" ; then
1939 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1945 You may give one or more space-separated answers, or "none" if appropriate.
1946 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1949 rp="Which of these apply, if any?"
1952 for file in $tans; do
1953 if $test -f $file.sh; then
1955 $cat $file.sh >> ../UU/config.sh
1956 elif $test X$tans = X -o X$tans = Xnone ; then
1959 : Give one chance to correct a possible typo.
1960 echo "$file.sh does not exist"
1962 rp="hint to use instead?"
1964 for file in $ans; do
1965 if $test -f "$file.sh"; then
1967 $cat $file.sh >> ../UU/config.sh
1968 elif $test X$ans = X -o X$ans = Xnone ; then
1971 echo "$file.sh does not exist -- ignored."
1978 : Remember our hint file for later.
1979 if $test -f "$file.sh" ; then
1991 echo "Fetching default answers from $config_sh..." >&4
1995 cp $config_sh config.sh 2>/dev/null
2005 test "$override" && . ./optdef.sh
2006 myuname="$newmyuname"
2008 : Restore computed paths
2009 for file in $loclist $trylist; do
2010 eval $file="\$_$file"
2015 Configure uses the operating system name and version to set some defaults.
2016 The default value is probably right if the name rings a bell. Otherwise,
2017 since spelling matters for me, either accept the default or answer "none"
2024 ''|' '|none) dflt=none ;;
2025 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2028 *) dflt="$osname" ;;
2030 rp="Operating system name?"
2034 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2040 ''|' '|none) dflt=none ;;
2041 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2042 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2044 ''|' ') dflt=none ;;
2049 *) dflt="$osvers" ;;
2051 rp="Operating system version?"
2060 : who configured the system
2061 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2062 cf_by=`(logname) 2>/dev/null`
2063 case "$cf_by" in "")
2064 cf_by=`(whoami) 2>/dev/null`
2065 case "$cf_by" in "")
2070 : determine the architecture name
2072 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2073 tarch=`arch`"-$osname"
2074 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2075 if uname -m > tmparch 2>&1 ; then
2076 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2077 -e 's/$/'"-$osname/" tmparch`
2085 case "$myarchname" in
2088 echo "(Your architecture name used to be $myarchname.)"
2094 *) dflt="$archname";;
2096 rp='What is your architecture name'
2098 case "$usethreads" in
2099 $define) archname="$ans-thread"
2100 echo "usethreads selected... architecture name is now $archname." >&4
2102 *) archname="$ans" ;;
2109 $define|true) afs=true ;;
2110 $undef|false) afs=false ;;
2111 *) if test -d /afs; then
2119 echo "AFS may be running... I'll be extra cautious then..." >&4
2121 echo "AFS does not seem to be running..." >&4
2124 : decide how portable to be. Allow command line overrides.
2125 case "$d_portable" in
2127 *) d_portable="$define" ;;
2130 : set up shell script to do ~ expansion
2136 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2139 if $test -f /bin/csh; then
2140 /bin/csh -f -c "glob \$1"
2145 name=\`$expr x\$1 : '..\([^/]*\)'\`
2146 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2147 if $test ! -d "\$dir"; then
2149 echo "\$me: can't locate home directory for: \$name" >&2
2154 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2170 : now set up to get a file name
2174 cat <<'EOSC' >>getfile
2187 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2188 fn=`echo $fn | sed 's/(.*)//'`
2194 loc_file=`expr $fn : '.*:\(.*\)'`
2195 fn=`expr $fn : '\(.*\):.*'`
2203 */*) fullpath=true;;
2212 *e*) exp_file=true;;
2215 *p*) nopath_ok=true;;
2220 *d*) type='Directory';;
2221 *l*) type='Locate';;
2226 Locate) what='File';;
2231 case "$d_portable" in
2239 while test "$type"; do
2244 true) rp="$rp (~name ok)";;
2247 if test -f UU/getfile.ok && \
2248 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2267 value=`UU/filexp $ans`
2270 if test "$ans" != "$value"; then
2271 echo "(That expands to $value on this system.)"
2285 /*) value="$ansexp" ;;
2290 echo "I shall only accept a full path name, as in /bin/ls." >&4
2291 echo "Use a ! shell escape if you wish to check pathnames." >&4
2294 echo "Please give a full path name, starting with slash." >&4
2297 echo "Note that using ~name is ok provided it expands well." >&4
2310 if test -f "$ansexp"; then
2312 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2314 echo "($value is not a plain file, but that's ok.)"
2319 if test -d "$ansexp"; then
2324 if test -d "$ansexp"; then
2325 echo "(Looking for $loc_file in directory $value.)"
2326 value="$value/$loc_file"
2327 ansexp="$ansexp/$loc_file"
2329 if test -f "$ansexp"; then
2332 case "$nopath_ok" in
2333 true) case "$value" in
2335 *) echo "Assuming $value will be in people's path."
2351 if test "$fastread" = yes; then
2356 rp="$what $value doesn't exist. Use that name anyway?"
2377 : determine root of directory hierarchy where package will be installed.
2380 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2388 By default, $package will be installed in $dflt/bin, manual
2389 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2390 all installation directories. Typically set to /usr/local, but you
2391 may choose /usr if you wish to install $package among your system
2392 binaries. If you wish to have binaries under /bin but manual pages
2393 under /usr/local/man, that's ok: you will be prompted separately
2394 for each of the installation directories, the prefix being only used
2395 to set the defaults.
2399 rp='Installation prefix to use?'
2407 *) oldprefix="$prefix";;
2414 : set the prefixit variable, to compute a suitable default value
2415 prefixit='case "$3" in
2417 case "$oldprefix" in
2418 "") eval "$1=\"\$$2\"";;
2425 ""|" ") eval "$1=\"\$$2\"";;
2431 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2433 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2434 /*-$oldprefix/*|\~*-$oldprefix/*)
2435 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2436 *) eval "$1=\"\$$2\"";;
2440 : determine where private library files go
2441 : Usual default is /usr/local/lib/perl5. Also allow things like
2442 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2444 *perl*) set dflt privlib lib ;;
2445 *) set dflt privlib lib/$package ;;
2450 There are some auxiliary files for $package that need to be put into a
2451 private library directory that is accessible by everyone.
2455 rp='Pathname where the private library files will reside?'
2457 if $test "X$privlibexp" != "X$ansexp"; then
2461 privlibexp="$ansexp"
2465 Since you are running AFS, I need to distinguish the directory in which
2466 private files reside from the directory in which they are installed (and from
2467 which they are presumably copied to the former directory by occult means).
2470 case "$installprivlib" in
2471 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2472 *) dflt="$installprivlib";;
2475 rp='Where will private files be installed?'
2477 installprivlib="$ans"
2479 installprivlib="$privlibexp"
2482 : set the base revision
2485 : get the patchlevel
2487 echo "Getting the current patchlevel..." >&4
2488 if $test -r ../patchlevel.h;then
2489 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2490 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2495 $echo $n "(You have $package" $c
2498 *) $echo $n " $baserev" $c ;;
2500 $echo $n " patchlevel $patchlevel" $c
2501 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2504 : set the prefixup variable, to restore leading tilda escape
2505 prefixup='case "$prefixexp" in
2507 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2510 : determine where public architecture dependent libraries go
2516 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2520 *) if test 0 -eq "$subversion"; then
2521 version=`LC_ALL=C; export LC_ALL; \
2522 echo $baserev $patchlevel | \
2523 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2525 version=`LC_ALL=C; export LC_ALL; \
2526 echo $baserev $patchlevel $subversion | \
2527 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2529 dflt="$privlib/$archname/$version"
2539 $spackage contains architecture-dependent library files. If you are
2540 sharing libraries in a heterogeneous environment, you might store
2541 these files in a separate location. Otherwise, you can just include
2542 them with the rest of the public library files.
2546 rp='Where do you want to put the public architecture-dependent libraries?'
2549 archlibexp="$ansexp"
2554 Since you are running AFS, I need to distinguish the directory in
2555 which architecture-dependent library files reside from the directory
2556 in which they are installed (and from which they are presumably copied
2557 to the former directory by occult means).
2560 case "$installarchlib" in
2561 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2562 *) dflt="$installarchlib";;
2565 rp='Where will architecture-dependent library files be installed?'
2567 installarchlib="$ans"
2569 installarchlib="$archlibexp"
2571 if $test X"$archlib" = X"$privlib"; then
2577 : set up the script used to warn in case of inconsistency
2584 echo "*** WHOA THERE!!! ***" >&4
2585 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2586 rp=" Keep the $hint value?"
2589 y) td=$was; tu=$was;;
2593 : function used to set $1 to $val
2594 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2596 $define$undef) . ./whoa; eval "$var=\$td";;
2597 $undef$define) . ./whoa; eval "$var=\$tu";;
2598 *) eval "$var=$val";;
2601 : bincompat3 is no more even possible starting with 5.005
2604 : make some quick guesses about what we are up against
2606 $echo $n "Hmm... $c"
2616 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2617 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2619 echo "Looks kind of like an OSF/1 system, but we'll see..."
2621 elif test `echo abc | tr a-z A-Z` = Abc ; then
2622 xxx=`./loc addbib blurfl $pth`
2623 if $test -f $xxx; then
2624 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2628 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2629 echo "Looks kind of like an extended USG system, but we'll see..."
2631 echo "Looks kind of like a USG system, but we'll see..."
2635 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2636 echo "Looks kind of like a BSD system, but we'll see..."
2640 echo "Looks kind of like a Version 7 system, but we'll see..."
2643 case "$eunicefix" in
2646 There is, however, a strange, musty smell in the air that reminds me of
2647 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2651 : it so happens the Eunice I know will not run shell scripts in Unix format
2655 echo "Congratulations. You aren't running Eunice."
2659 : Detect OS2. The p_ variable is set above in the Head.U unit.
2664 I have the feeling something is not exactly right, however...don't tell me...
2665 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2670 if test -f /xenix; then
2671 echo "Actually, this looks more like a XENIX system..."
2676 echo "It's not Xenix..."
2681 if test -f /venix; then
2682 echo "Actually, this looks more like a VENIX system..."
2689 echo "Nor is it Venix..."
2692 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2693 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2696 : see if setuid scripts can be secure
2699 Some kernels have a bug that prevents setuid #! scripts from being
2700 secure. Some sites have disabled setuid #! scripts because of this.
2702 First let's decide if your kernel supports secure setuid #! scripts.
2703 (If setuid #! scripts would be secure but have been disabled anyway,
2704 don't say that they are secure if asked.)
2709 if $test -d /dev/fd; then
2710 echo "#!$ls" >reflect
2711 chmod +x,u+s reflect
2712 ./reflect >flect 2>&1
2713 if $contains "/dev/fd" flect >/dev/null; then
2714 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2718 If you are not sure if they are secure, I can check but I'll need a
2719 username and password different from the one you are using right now.
2720 If you don't have such a username or don't want me to test, simply
2724 rp='Other username to test security of setuid scripts with?'
2729 case "$d_suidsafe" in
2730 '') echo "I'll assume setuid scripts are *not* secure." >&4
2733 echo "Well, the $hint value is *not* secure." >&4
2735 *) echo "Well, the $hint value *is* secure." >&4
2740 $rm -f reflect flect
2741 echo "#!$ls" >reflect
2742 chmod +x,u+s reflect
2745 echo '"su" will (probably) prompt you for '"$ans's password."
2746 su $ans -c './reflect >flect'
2747 if $contains "/dev/fd" flect >/dev/null; then
2748 echo "Okay, it looks like setuid scripts are secure." >&4
2751 echo "I don't think setuid scripts are secure." >&4
2756 rp='Does your kernel have *secure* setuid scripts?'
2759 [yY]*) val="$define";;
2764 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2765 echo "(That's for file descriptors, not floppy disks.)"
2771 $rm -f reflect flect
2773 : now see if they want to do setuid emulation
2776 case "$d_suidsafe" in
2779 echo "No need to emulate SUID scripts since they are secure here." >& 4
2783 Some systems have disabled setuid scripts, especially systems where
2784 setuid scripts cannot be secure. On systems where setuid scripts have
2785 been disabled, the setuid/setgid bits on scripts are currently
2786 useless. It is possible for $package to detect those bits and emulate
2787 setuid/setgid in a secure fashion. This emulation will only work if
2788 setuid scripts have been disabled in your kernel.
2792 "$define") dflt=y ;;
2795 rp="Do you want to do setuid/setgid emulation?"
2798 [yY]*) val="$define";;
2806 : determine where site specific libraries go.
2810 '') dflt="$privlib/site_perl" ;;
2811 *) dflt="$sitelib" ;;
2815 The installation process will also create a directory for
2816 site-specific extensions and modules. Some users find it convenient
2817 to place all local files in this directory rather than in the main
2818 distribution directory.
2822 rp='Pathname for the site-specific library files?'
2824 if $test "X$sitelibexp" != "X$ansexp"; then
2828 sitelibexp="$ansexp"
2832 Since you are running AFS, I need to distinguish the directory in
2833 which site-specific files reside from the directory in which they are
2834 installed (and from which they are presumably copied to the former
2835 directory by occult means).
2838 case "$installsitelib" in
2839 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2840 *) dflt="$installsitelib";;
2843 rp='Where will site-specific files be installed?'
2845 installsitelib="$ans"
2847 installsitelib="$sitelibexp"
2850 : determine where site specific architecture-dependent libraries go.
2851 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2852 : xxx is usuually lib/site_perl/archname.
2853 set sitearch sitearch none
2856 '') dflt="$sitelib/$archname" ;;
2857 *) dflt="$sitearch" ;;
2861 The installation process will also create a directory for
2862 architecture-dependent site-specific extensions and modules.
2866 rp='Pathname for the site-specific architecture-dependent library files?'
2868 if $test "X$sitearchexp" != "X$ansexp"; then
2872 sitearchexp="$ansexp"
2876 Since you are running AFS, I need to distinguish the directory in
2877 which site-specific architecture-dependent library files reside from
2878 the directory in which they are installed (and from which they are
2879 presumably copied to the former directory by occult means).
2882 case "$installsitearch" in
2883 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2884 *) dflt="$installsitearch";;
2887 rp='Where will site-specific architecture-dependent files be installed?'
2889 installsitearch="$ans"
2891 installsitearch="$sitearchexp"
2894 : determine where old public architecture dependent libraries might be
2895 case "$oldarchlib" in
2896 '') case "$privlib" in
2898 *) dflt="$privlib/$archname"
2902 *) dflt="$oldarchlib"
2905 if $test ! -d "$dflt/auto"; then
2910 In 5.001, Perl stored architecture-dependent library files in a directory
2911 with a name such as $privlib/$archname,
2912 and this directory contained files from the standard extensions and
2913 files from any additional extensions you might have added. Starting
2914 with version 5.002, all the architecture-dependent standard extensions
2915 will go into a version-specific directory such as
2917 while locally-added extensions will go into
2920 If you wish Perl to continue to search the old architecture-dependent
2921 library for your local extensions, give the path to that directory.
2922 If you do not wish to use your old architecture-dependent library
2923 files, answer 'none'.
2927 rp='Directory for your old 5.001 architecture-dependent libraries?'
2930 oldarchlibexp="$ansexp"
2931 case "$oldarchlib" in
2932 ''|' ') val="$undef" ;;
2938 : determine where public executables go
2943 rp='Pathname where the public executables will reside?'
2945 if $test "X$ansexp" != "X$binexp"; then
2953 Since you are running AFS, I need to distinguish the directory in which
2954 executables reside from the directory in which they are installed (and from
2955 which they are presumably copied to the former directory by occult means).
2958 case "$installbin" in
2959 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2960 *) dflt="$installbin";;
2963 rp='Where will public executables be installed?'
2967 installbin="$binexp"
2970 : determine where manual pages are on this system
2974 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2975 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2976 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2977 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2978 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2979 sysman=`./loc . /usr/man/man1 $syspath`
2982 if $test -d "$sysman"; then
2983 echo "System manual is in $sysman." >&4
2985 echo "Could not find manual pages in source form." >&4
2988 : see what memory models we can support
2991 $cat >pdp11.c <<'EOP'
3000 (cc -o pdp11 pdp11.c) >/dev/null 2>&1
3001 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3002 dflt='unsplit split'
3004 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3007 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3012 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3015 if $test -d /lib/large || $test -d /usr/lib/large; then
3018 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3027 Some systems have different model sizes. On most systems they are called
3028 small, medium, large, and huge. On the PDP11 they are called unsplit and
3029 split. If your system doesn't support different memory models, say "none".
3030 If you wish to force everything to one memory model, say "none" here and
3031 put the appropriate flags later when it asks you for other cc and ld flags.
3032 Venix systems may wish to put "none" and let the compiler figure things out.
3033 (In the following question multiple model names should be space separated.)
3036 rp="Which memory models are supported?"
3051 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3052 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3059 rp="What flag indicates separate I and D space?"
3067 *large*|*small*|*medium*|*huge*)
3074 rp="What flag indicates large model?"
3084 *huge*) case "$huge" in
3088 rp="What flag indicates huge model?"
3098 *medium*) case "$medium" in
3102 rp="What flag indicates medium model?"
3109 *) medium="$large";;
3112 *small*) case "$small" in
3116 rp="What flag indicates small model?"
3127 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3131 : see if we need a special compiler
3139 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3140 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3153 On some systems the default C compiler will not resolve multiple global
3154 references that happen to have the same name. On some such systems the "Mcc"
3155 command may be used to force these to be resolved. On other systems a "cc -M"
3156 command is required. (Note that the -M flag on other systems indicates a
3157 memory model to use!) If you have the Gnu C compiler, you might wish to use
3161 rp="What command will force resolution on this system?"
3169 rp="Use which C compiler?"
3174 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3175 $cat >gccvers.c <<EOM
3180 printf("%s\n", __VERSION__);
3182 printf("%s\n", "1");
3188 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3189 gccversion=`./gccvers`
3190 case "$gccversion" in
3191 '') echo "You are not using GNU cc." ;;
3192 *) echo "You are using GNU cc $gccversion." ;;
3196 echo "*** WHOA THERE!!! ***" >&4
3197 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3198 case "$knowitall" in
3200 echo " You'd better start hunting for one and let me know about it." >&4
3206 case "$gccversion" in
3207 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3210 : What should the include directory be ?
3212 $echo $n "Hmm... $c"
3216 if $test -f /bin/mips && /bin/mips; then
3217 echo "Looks like a MIPS system..."
3218 $cat >usr.c <<'EOCP'
3219 #ifdef SYSTYPE_BSD43
3223 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3224 dflt='/bsd43/usr/include'
3228 mips_type='System V'
3230 $rm -f usr.c usr.out
3231 echo "and you're compiling with the $mips_type compiler and libraries."
3235 echo "Doesn't look like a MIPS system."
3246 case "$xxx_prompt" in
3248 rp='Where are the include files you want to use?'
3256 : Set private lib path
3259 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3264 '') dlist="$loclibpth $plibpth $glibpth";;
3265 *) dlist="$libpth";;
3268 : Now check and see which directories actually exist, avoiding duplicates
3272 if $test -d $xxx; then
3275 *) libpth="$libpth $xxx";;
3281 Some systems have incompatible or broken versions of libraries. Among
3282 the directories listed in the question below, please remove any you
3283 know not to be holding relevant libraries, and add any that are needed.
3284 Say "none" for none.
3295 rp="Directories to use for library searches?"
3302 : Define several unixisms. Hints files or command line options
3303 : can be used to override them.
3316 : Which makefile gets called first. This is used by make depend.
3317 case "$firstmakefile" in
3318 '') firstmakefile='makefile';;
3321 : compute shared library extension
3324 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3334 On some systems, shared libraries may be available. Answer 'none' if
3335 you want to suppress searching of shared libraries for the remaining
3336 of this configuration.
3339 rp='What is the file extension used for shared libraries?'
3343 : Looking for optional libraries
3345 echo "Checking for optional libraries..." >&4
3350 case "$libswanted" in
3351 '') libswanted='c_s';;
3353 for thislib in $libswanted; do
3355 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3356 echo "Found -l$thislib (shared)."
3359 *) dflt="$dflt -l$thislib";;
3361 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3362 echo "Found -l$thislib (shared)."
3365 *) dflt="$dflt -l$thislib";;
3367 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3368 echo "Found -l$thislib."
3371 *) dflt="$dflt -l$thislib";;
3373 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3374 echo "Found -l$thislib."
3377 *) dflt="$dflt -l$thislib";;
3379 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3380 echo "Found -l${thislib}_s."
3383 *) dflt="$dflt -l${thislib}_s";;
3385 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3386 echo "Found -l$thislib."
3389 *) dflt="$dflt -l$thislib";;
3392 echo "No -l$thislib."
3403 ' '|'') dflt='none';;
3408 Some versions of Unix support shared libraries, which make executables smaller
3409 but make load time slightly longer.
3411 On some systems, mostly System V Release 3's, the shared library is included
3412 by putting the option "-lc_s" as the last thing on the cc command line when
3413 linking. Other systems use shared libraries by default. There may be other
3414 libraries needed to compile $package on your machine as well. If your system
3415 needs the "-lc_s" option, include it here. Include any other special libraries
3416 here as well. Say "none" for none.
3420 rp="Any additional libraries?"
3427 : see how we invoke the C preprocessor
3429 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3430 cat <<'EOT' >testcpp.c
3436 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3438 wrapper=`pwd`/cppstdin
3442 if $test "X$cppstdin" != "X" && \
3443 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3446 echo "You used to use $cppstdin $cppminus so we'll use that again."
3448 '') echo "But let's see if we can live without a wrapper..." ;;
3450 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3453 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3456 echo "(However, $cpprun $cpplast does not work, let's see...)"
3464 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472 $cc -E <testcpp.c >testcpp.out 2>&1; \
3473 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 echo "Yup, it does."
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "Yup, it does."
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484 $cc -P <testcpp.c >testcpp.out 2>&1; \
3485 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486 echo "Yipee, that works!"
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492 echo "At long last!"
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496 $cpp <testcpp.c >testcpp.out 2>&1; \
3497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502 $cpp - <testcpp.c >testcpp.out 2>&1; \
3503 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504 echo "Hooray, it works! I was beginning to wonder."
3507 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3508 $wrapper <testcpp.c >testcpp.out 2>&1; \
3509 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3515 rp="No dice. I can't find a C preprocessor. Name one:"
3519 $x_cpp <testcpp.c >testcpp.out 2>&1
3520 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521 echo "OK, that will do." >&4
3523 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3538 echo "Perhaps can we force $cc -E using a wrapper..."
3539 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3546 echo "Nope, we'll have to live without it..."
3561 *) $rm -f $wrapper;;
3563 $rm -f testcpp.c testcpp.out
3565 : determine optimize, if desired, or use for debug flag also
3567 ' '|$undef) dflt='none';;
3569 *) dflt="$optimize";;
3573 Some C compilers have problems with their optimizers. By default, $package
3574 compiles with the -O flag to use the optimizer. Alternately, you might want
3575 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3576 systems). Either flag can be specified here. To use neither flag, specify
3580 rp="What optimizer/debugger flag should be used?"
3584 'none') optimize=" ";;
3588 : We will not override a previous value, but we might want to
3589 : augment a hint file
3592 case "$gccversion" in
3593 1*) dflt='-fpcc-struct-return' ;;
3596 *-g*) dflt="$dflt -DDEBUGGING";;
3598 case "$gccversion" in
3599 2*) if test -d /etc/conf/kconfig.d &&
3600 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3609 case "$mips_type" in
3610 *BSD*|'') inclwanted="$locincpth $usrinc";;
3611 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3613 for thisincl in $inclwanted; do
3614 if $test -d $thisincl; then
3615 if $test x$thisincl != x$usrinc; then
3618 *) dflt="$dflt -I$thisincl";;
3624 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3626 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3634 *) dflt="$dflt -D$2";;
3639 set signal.h __LANGUAGE_C__; eval $inctest
3641 set signal.h LANGUAGE_C; eval $inctest
3645 none|recommended) dflt="$ccflags $dflt" ;;
3646 *) dflt="$ccflags";;
3654 Your C compiler may want other flags. For this question you should include
3655 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3656 but you should NOT include libraries or ld flags like -lwhatever. If you
3657 want $package to honor its debug switch, you should include -DDEBUGGING here.
3658 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3659 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3661 To use no flags, specify the word "none".
3667 rp="Any additional cc flags?"
3674 : the following weeds options from ccflags that are of no interest to cpp
3676 case "$gccversion" in
3677 1*) cppflags="$cppflags -D__GNUC__"
3679 case "$mips_type" in
3681 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3687 echo "Let me guess what the preprocessor flags are..." >&4
3701 *) ftry="$previous $flag";;
3703 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3704 >cpp1.out 2>/dev/null && \
3705 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3706 >cpp2.out 2>/dev/null && \
3707 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3708 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3710 cppflags="$cppflags $ftry"
3720 *-*) echo "They appear to be: $cppflags";;
3722 $rm -f cpp.c cpp?.out
3726 : flags used in final linking phase
3729 '') if ./venix; then
3735 *-posix*) dflt="$dflt -posix" ;;
3738 *) dflt="$ldflags";;
3741 : Try to guess additional flags to pick up local libraries.
3742 for thislibdir in $libpth; do
3743 case " $loclibpth " in
3746 *"-L$thislibdir "*) ;;
3747 *) dflt="$dflt -L$thislibdir" ;;
3759 Your C linker may need flags. For this question you should
3760 include -L/whatever and any other flags used by the C linker, but you
3761 should NOT include libraries like -lwhatever.
3763 Make sure you include the appropriate -L/path flags if your C linker
3764 does not normally search all of the directories you specified above,
3767 To use no flags, specify the word "none".
3771 rp="Any additional ld flags (NOT including libraries)?"
3777 rmlist="$rmlist pdp11"
3781 echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3782 set X $cc $optimize $ccflags $ldflags -o try try.c $libs
3785 I've tried to compile and run a simple program with:
3790 and I got the following output:
3793 $cat > try.c <<'EOF'
3798 if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
3799 if sh -c './try' >>try.msg 2>&1; then
3802 echo "The program compiled OK, but exited with status $?." >>try.msg
3803 rp="You have a problem. Shall I abort Configure (and explain the problem)"
3807 echo "I can't compile the test program." >>try.msg
3808 rp="You have a BIG problem. Shall I abort Configure (and explain the problem)"
3814 case "$knowitall" in
3816 echo "(The supplied flags might be incorrect with this C compiler.)"
3824 *) echo "Ok. Stopping Configure." >&4
3829 n) echo "OK, that should do.";;
3831 $rm -f try try.* core
3834 echo "Checking for GNU C Library..." >&4
3835 cat >gnulibc.c <<EOM
3839 return __libc_main();
3842 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3843 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3845 echo "You are using the GNU C Library"
3848 echo "You are not using the GNU C Library"
3854 : see if nm is to be used to determine whether a symbol is defined or not
3857 case "$d_gnulibc" in
3862 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3863 if $test $dflt -gt 20; then
3880 I can use 'nm' to extract the symbols from your C libraries. This is a time
3881 consuming task which may generate huge output on the disk (up to 3 megabytes)
3882 but that should make the symbols extraction faster. The alternative is to skip
3883 the 'nm' extraction part and to compile a small test program instead to
3884 determine whether each symbol is present. If you have a fast C compiler and/or
3885 if your 'nm' output cannot be parsed, this may be the best solution.
3886 You shouldn't let me use 'nm' if you have the GNU C Library.
3889 rp='Shall I use nm to extract C symbols from the libraries?'
3901 : nm options which may be necessary
3903 '') if $test -f /mach_boot; then
3905 elif $test -d /usr/ccs/lib; then
3906 nm_opt='-p' # Solaris (and SunOS?)
3907 elif $test -f /dgux; then
3909 elif $test -f /lib64/rld; then
3910 nm_opt='-p' # 64-bit Irix
3916 : nm options which may be necessary for shared libraries but illegal
3917 : for archive libraries. Thank you, Linux.
3918 case "$nm_so_opt" in
3919 '') case "$myuname" in
3921 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3922 nm_so_opt='--dynamic'
3931 : get list of predefined functions in a handy place
3936 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3943 *) for thislib in $libs; do
3946 : Handle C library specially below.
3949 thislib=`echo $thislib | $sed -e 's/^-l//'`
3950 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3952 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3954 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3956 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3958 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3960 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3962 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3967 libnames="$libnames $try"
3969 *) libnames="$libnames $thislib" ;;
3978 for xxx in $libpth; do
3979 $test -r $1 || set $xxx/libc.$so
3980 : The messy sed command sorts on library version numbers.
3982 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3983 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3985 s/[0-9][0-9]*/0000&/g
3986 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3989 sort | $sed -e 's/^.* //'`
3992 $test -r $1 || set /usr/ccs/lib/libc.$so
3993 $test -r $1 || set /lib/libsys_s$lib_ext
3999 if $test -r "$1"; then
4000 echo "Your (shared) C library seems to be in $1."
4002 elif $test -r /lib/libc && $test -r /lib/clib; then
4003 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4005 libc='/lib/clib /lib/libc'
4006 if $test -r /lib/syslib; then
4007 echo "(Your math library is in /lib/syslib.)"
4008 libc="$libc /lib/syslib"
4010 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4011 echo "Your C library seems to be in $libc, as you said before."
4012 elif $test -r $incpath/usr/lib/libc$lib_ext; then
4013 libc=$incpath/usr/lib/libc$lib_ext;
4014 echo "Your C library seems to be in $libc. That's fine."
4015 elif $test -r /lib/libc$lib_ext; then
4016 libc=/lib/libc$lib_ext;
4017 echo "Your C library seems to be in $libc. You're normal."
4019 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
4021 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4022 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4023 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4025 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4027 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4030 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4032 if $test -r "$tans"; then
4033 echo "Your C library seems to be in $tans, of all places."
4039 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4043 If the guess above is wrong (which it might be if you're using a strange
4044 compiler, or your machine supports multiple models), you can override it here.
4049 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4051 I can't seem to find your C library. I've looked in the following places:
4054 $sed 's/^/ /' libpath
4057 None of these seems to contain your C library. I need to get its name...
4062 rp='Where is your C library?'
4067 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4068 set X `cat libnames`
4071 case $# in 1) xxx=file; esac
4072 echo "Extracting names from the following $xxx for later perusal:" >&4
4074 $sed 's/^/ /' libnames >&4
4076 $echo $n "This may take a while...$c" >&4
4078 : Linux may need the special Dynamic option to nm for shared libraries.
4079 : In general, this is stored in the nm_so_opt variable.
4080 : Unfortunately, that option may be fatal on non-shared libraries.
4081 for nm_libs_ext in $*; do
4082 case $nm_libs_ext in
4083 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4084 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
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 's/^.*|Proc .*|Text *| *//p'";\
4132 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4134 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4136 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4138 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4140 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4142 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4144 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4147 nm -p $* 2>/dev/null >libc.tmp
4148 $grep fprintf libc.tmp > libc.ptf
4149 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4150 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4156 echo "nm didn't seem to work right. Trying ar instead..." >&4
4158 if ar t $libc > libc.tmp; then
4159 for thisname in $libnames; do
4160 ar t $thisname >>libc.tmp
4162 $sed -e 's/\.o$//' < libc.tmp > libc.list
4165 echo "ar didn't seem to work right." >&4
4166 echo "Maybe this is a Cray...trying bld instead..." >&4
4167 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4169 for thisname in $libnames; do
4171 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4172 ar t $thisname >>libc.tmp
4176 echo "That didn't work either. Giving up." >&4
4183 if $test -f /lib/syscalls.exp; then
4185 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4186 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4190 $rm -f libnames libpath
4192 : determine filename position in cpp output
4194 echo "Computing filename position in cpp output for #include directives..." >&4
4195 echo '#include <stdio.h>' > foo.c
4198 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4199 $grep '^[ ]*#.*stdio\.h' | \
4200 while read cline; do
4203 while $test \$# -gt 0; do
4204 if $test -r \`echo \$1 | $tr -d '"'\`; then
4209 pos=\`expr \$pos + 1\`
4221 *) pos="${fieldn}th";;
4223 echo "Your cpp writes the filename in the $pos field of the line."
4225 : locate header file
4230 if test -f $usrinc/\$wanted; then
4231 echo "$usrinc/\$wanted"
4234 awkprg='{ print \$$fieldn }'
4235 echo "#include <\$wanted>" > foo\$\$.c
4236 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4237 $grep "^[ ]*#.*\$wanted" | \
4238 while read cline; do
4239 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4241 */\$wanted) echo "\$name"; exit 0;;
4252 : define an alternate in-header-list? function
4253 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4254 cont=true; xxf="echo \"<\$1> found.\" >&4";
4255 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4256 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4258 case $# in 4) instead=instead;; *) instead="at last";; esac;
4259 while $test "$cont"; do
4261 var=$2; eval "was=\$$2";
4262 if $test "$xxx" && $test -r "$xxx";
4264 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4267 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4268 set $yyy; shift; shift; yyy=$@;
4269 case $# in 0) cont="";;
4270 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4271 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4272 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4273 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4277 do set $yyy; var=$2; eval "was=\$$2";
4278 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4279 set $yyy; shift; shift; yyy=$@;
4282 : see if dld is available
4286 : is a C symbol defined?
4289 -v) tf=libc.tmp; tc=""; tdc="";;
4290 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4291 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4294 case "$reuseval-$4" in
4296 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4302 if $contains $tlook $tf >/dev/null 2>&1;
4307 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4308 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4316 $define) tval=true;;
4322 : define an is-in-libc? function
4323 inlibc='echo " "; td=$define; tu=$undef;
4324 sym=$1; var=$2; eval "was=\$$2";
4326 case "$reuseval$was" in
4336 echo "$sym() found." >&4;
4337 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4339 echo "$sym() NOT found." >&4;
4340 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4344 $define) echo "$sym() found." >&4;;
4345 *) echo "$sym() NOT found." >&4;;
4349 : see if dlopen exists
4356 : determine which dynamic loading, if any, to compile in
4358 dldir="ext/DynaLoader"
4371 $define) dflt='y' ;;
4374 $define) dflt='y' ;;
4376 : Does a dl_xxx.xs file exist for this operating system
4377 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4380 rp="Do you wish to use dynamic loading?"
4387 if $test -f ../$dldir/dl_${osname}.xs ; then
4388 dflt="$dldir/dl_${osname}.xs"
4389 elif $test "$d_dlopen" = "$define" ; then
4390 dflt="$dldir/dl_dlopen.xs"
4391 elif $test "$i_dld" = "$define" ; then
4392 dflt="$dldir/dl_dld.xs"
4397 *) dflt="$dldir/$dlsrc"
4400 echo "The following dynamic loading files are available:"
4401 : Can not go over to $dldir because getfile has path hard-coded in.
4402 cd ..; ls -C $dldir/dl*.xs; cd UU
4403 rp="Source file to use for dynamic loading"
4408 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4412 Some systems may require passing special flags to $cc -c to
4413 compile modules that will be used to create a shared library.
4414 To use no flags, say "none".
4417 case "$cccdlflags" in
4418 '') case "$gccversion" in
4419 '') case "$osname" in
4421 next) dflt='none' ;;
4422 svr4*|esix*) dflt='-Kpic' ;;
4423 irix*) dflt='-KPIC' ;;
4424 solaris) case "$ccflags" in
4425 *-DDEBUGGING*) dflt='-KPIC' ;;
4428 sunos) dflt='-pic' ;;
4431 *) case "$osname/$ccflags" in
4432 solaris/*-DDEBUGGING*) dflt='-fPIC' ;;
4436 *) dflt="$cccdlflags" ;;
4438 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4441 none) cccdlflags=' ' ;;
4442 *) cccdlflags="$ans" ;;
4447 Some systems use ld to create libraries that can be dynamically loaded,
4448 while other systems (such as those using ELF) use $cc.
4452 '') $cat >try.c <<'EOM'
4453 /* Test for whether ELF binaries are produced */
4458 int i = open("a.out",O_RDONLY);
4461 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4462 exit(0); /* succeed (yes, it's ELF) */
4467 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4469 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4473 echo "I'll use ld to build dynamic libraries."
4482 rp="What command should be used to create dynamic libraries?"
4488 Some systems may require passing special flags to $ld to create a
4489 library that can be dynamically loaded. If your ld flags include
4490 -L/other/path options to locate libraries outside your loader's normal
4491 search path, you may need to specify those -L options here as well. To
4492 use no flags, say "none".
4495 case "$lddlflags" in
4496 '') case "$osname" in
4498 linux|irix*) dflt='-shared' ;;
4499 next) dflt='none' ;;
4500 solaris) dflt='-G' ;;
4501 sunos) dflt='-assert nodefinitions' ;;
4502 svr4*|esix*) dflt="-G $ldflags" ;;
4506 *) dflt="$lddlflags" ;;
4509 : Try to guess additional flags to pick up local libraries.
4510 for thisflag in $ldflags; do
4515 *) dflt="$dflt $thisflag" ;;
4525 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4528 none) lddlflags=' ' ;;
4529 *) lddlflags="$ans" ;;
4534 Some systems may require passing special flags to $cc to indicate that
4535 the resulting executable will use dynamic linking. To use no flags,
4539 case "$ccdlflags" in
4540 '') case "$osname" in
4541 hpux) dflt='-Wl,-E' ;;
4542 linux) dflt='-rdynamic' ;;
4543 next) dflt='none' ;;
4544 sunos) dflt='none' ;;
4547 *) dflt="$ccdlflags" ;;
4549 rp="Any special flags to pass to $cc to use dynamic loading?"
4552 none) ccdlflags=' ' ;;
4553 *) ccdlflags="$ans" ;;
4567 # No dynamic loading being used, so don't bother even to prompt.
4570 *) case "$useshrplib" in
4571 '') case "$osname" in
4572 svr4*|dgux|dynixptx|esix|powerux)
4574 also='Building a shared libperl is required for dynamic loading to work on your system.'
4579 also='Building a shared libperl is needed for MAB support.'
4587 also='Building a shared libperl will definitely not work on SunOS 4.'
4601 The perl executable is normally obtained by linking perlmain.c with
4602 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4603 any other libraries needed on this system (such as -lm, etc.). Since
4604 your system supports dynamic loading, it is probably possible to build
4605 a shared libperl.$so. If you will have more than one executable linked
4606 to libperl.$so, this will significantly reduce the size of each
4607 executable, but it may have a noticeable affect on performance. The
4608 default is probably sensible for your system.
4612 rp="Build a shared libperl.$so (y/n)"
4617 # Why does next4 have to be so different?
4618 case "${osname}${osvers}" in
4619 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4620 *) xxx='LD_LIBRARY_PATH' ;;
4624 To build perl, you must add the current working directory to your
4625 $xxx environtment variable before running make. You can do
4627 $xxx=\`pwd\`; export $xxx
4628 for Bourne-style shells, or
4630 for Csh-style shells. You *MUST* do this before running make.
4634 *) useshrplib='false' ;;
4639 case "$useshrplib" in
4643 # Figure out a good name for libperl.so. Since it gets stored in
4644 # a version-specific architecture-dependent library, the version
4645 # number isn't really that important, except for making cc/ld happy.
4647 # A name such as libperl.so.3.1
4648 majmin="libperl.$so.$patchlevel.$subversion"
4649 # A name such as libperl.so.301
4650 majonly=`echo $patchlevel $subversion |
4651 $awk '{printf "%d%02d", $1, $2}'`
4652 majonly=libperl.$so.$majonly
4653 # I'd prefer to keep the os-specific stuff here to a minimum, and
4654 # rely on figuring it out from the naming of libc.
4655 case "${osname}${osvers}" in
4658 # XXX How handle the --version stuff for MAB?
4660 linux*) # ld won't link with a bare -lperl otherwise.
4663 *) # Try to guess based on whether libc has major.minor.
4665 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4666 *libc.$so.[0-9]*) dflt=$majonly ;;
4667 *) dflt=libperl.$so ;;
4677 I need to select a good name for the shared libperl. If your system uses
4678 library names with major and minor numbers, then you might want something
4679 like $majmin. Alternatively, if your system uses a single version
4680 number for shared libraries, then you might want to use $majonly.
4681 Or, your system might be quite happy with a simple libperl.$so.
4683 Since the shared libperl will get installed into a version-specific
4684 architecture-dependent directory, the version number of the shared perl
4685 library probably isn't important, so the default should be o.k.
4688 rp='What name do you want to give to the shared libperl?'
4691 echo "Ok, I'll use $libperl"
4694 libperl="libperl${lib_ext}"
4698 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4702 WARNING: Use of the shrpdir variable for the installation location of
4703 the shared $libperl is not supported. It was never documented and
4704 will not work in this version. Let me (chip@perl.com) know of any
4705 problems this may cause.
4711 But your current setting of $shrpdir is
4712 the default anyway, so it's harmless.
4717 Further, your current attempted setting of $shrpdir
4718 conflicts with the value of $archlibexp/CORE
4719 that installperl will use.
4726 # How will the perl executable find the installed shared $libperl?
4727 # Add $xxx to ccdlflags.
4728 # If we can't figure out a command-line option, use $shrpenv to
4729 # set env LD_RUN_PATH. The main perl makefile uses this.
4730 shrpdir=$archlibexp/CORE
4733 if "$useshrplib"; then
4736 # We'll set it in Makefile.SH...
4742 xxx="-Wl,-R$shrpdir"
4744 linux|irix*|dec_osf)
4745 xxx="-Wl,-rpath,$shrpdir"
4748 # next doesn't like the default...
4751 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4757 # Only add $xxx if it isn't already in ccdlflags.
4758 case " $ccdlflags " in
4760 *) ccdlflags="$ccdlflags $xxx"
4763 Adding $xxx to the flags
4764 passed to $ld so that the perl executable will find the
4765 installed shared $libperl.
4773 # Respect a hint or command-line value.
4775 '') shrpenv="$tmp_shrpenv" ;;
4778 : determine where manual pages go
4779 set man1dir man1dir none
4783 $spackage has manual pages available in source form.
4787 echo "However, you don't have nroff, so they're probably useless to you."
4789 '') man1dir="none";;
4792 echo "If you don't want the manual sources installed, answer 'none'."
4797 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4798 lookpath="$lookpath $prefixexp/man/p_man/man1"
4799 lookpath="$lookpath $prefixexp/man/u_man/man1"
4800 lookpath="$lookpath $prefixexp/man/man.1"
4801 : If prefix contains 'perl' then we want to keep the man pages
4802 : under the prefix directory. Otherwise, look in a variety of
4803 : other possible places. This is debatable, but probably a
4804 : good compromise. Well, apparently not.
4805 : Experience has shown people expect man1dir to be under prefix,
4806 : so we now always put it there. Users who want other behavior
4807 : can answer interactively or use a command line option.
4808 : Does user have System V-style man paths.
4810 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4811 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4821 rp="Where do the main $spackage manual pages (source) go?"
4823 if $test "X$man1direxp" != "X$ansexp"; then
4827 man1direxp="$ansexp"
4835 Since you are running AFS, I need to distinguish the directory in which
4836 manual pages reside from the directory in which they are installed (and from
4837 which they are presumably copied to the former directory by occult means).
4840 case "$installman1dir" in
4841 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4842 *) dflt="$installman1dir";;
4845 rp='Where will man pages be installed?'
4847 installman1dir="$ans"
4849 installman1dir="$man1direxp"
4852 : What suffix to use on installed man pages
4859 rp="What suffix should be used for the main $spackage man pages?"
4861 '') case "$man1dir" in
4875 *) dflt="$man1ext";;
4882 : see if we can have long filenames
4884 rmlist="$rmlist /tmp/cf$$"
4885 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4886 first=123456789abcdef
4887 second=/tmp/cf$$/$first
4888 $rm -f $first $second
4889 if (echo hi >$first) 2>/dev/null; then
4890 if $test -f 123456789abcde; then
4891 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4894 if (echo hi >$second) 2>/dev/null; then
4895 if $test -f /tmp/cf$$/123456789abcde; then
4897 That's peculiar... You can have filenames longer than 14 characters, but only
4898 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4899 I shall consider your system cannot support long filenames at all.
4903 echo 'You can have filenames longer than 14 characters.' >&4
4908 How confusing! Some of your filesystems are sane enough to allow filenames
4909 longer than 14 characters but some others like /tmp can't even think about them.
4910 So, for now on, I shall assume your kernel does not allow them at all.
4917 You can't have filenames longer than 14 chars. You can't even think about them!
4923 $rm -rf /tmp/cf$$ 123456789abcde*
4925 : determine where library module manual pages go
4926 set man3dir man3dir none
4930 $spackage has manual pages for many of the library modules.
4936 However, you don't have nroff, so they're probably useless to you.
4937 You can use the supplied perldoc script instead.
4940 '') man3dir="none";;
4944 case "$d_flexfnam" in
4947 However, your system can't handle the long file names like File::Basename.3.
4948 You can use the supplied perldoc script instead.
4951 '') man3dir="none";;
4955 echo "If you don't want the manual sources installed, answer 'none'."
4956 : We dont use /usr/local/man/man3 because some man programs will
4957 : only show the /usr/local/man/man3 contents, and not the system ones,
4958 : thus man less will show the perl module less.pm, but not the system
4959 : less command. We might also conflict with TCL man pages.
4960 : However, something like /opt/perl/man/man3 is fine.
4962 '') case "$prefix" in
4963 *perl*) dflt=`echo $man1dir |
4964 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4965 *) dflt="$privlib/man/man3" ;;
4969 *) dflt="$man3dir" ;;
4974 rp="Where do the $spackage library man pages (source) go?"
4976 if test "X$man3direxp" != "X$ansexp"; then
4981 man3direxp="$ansexp"
4989 Since you are running AFS, I need to distinguish the directory in which
4990 manual pages reside from the directory in which they are installed (and from
4991 which they are presumably copied to the former directory by occult means).
4994 case "$installman3dir" in
4995 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4996 *) dflt="$installman3dir";;
4999 rp='Where will man pages be installed?'
5001 installman3dir="$ans"
5003 installman3dir="$man3direxp"
5006 : What suffix to use on installed man pages
5013 rp="What suffix should be used for the $spackage library man pages?"
5015 '') case "$man3dir" in
5029 *) dflt="$man3ext";;
5036 : see if we have to deal with yellow pages, now NIS.
5037 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5038 if $test -f /usr/etc/nibindd; then
5040 echo "I'm fairly confident you're on a NeXT."
5042 rp='Do you get the hosts file via NetInfo?'
5051 y*) hostcat='nidump hosts .';;
5052 *) case "$hostcat" in
5053 nidump*) hostcat='';;
5063 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5071 rp='Are you getting the hosts file via yellow pages?'
5074 y*) hostcat='ypcat hosts';;
5075 *) hostcat='cat /etc/hosts';;
5081 : now get the host name
5083 echo "Figuring out host name..." >&4
5084 case "$myhostname" in
5086 echo 'Maybe "hostname" will work...'
5087 if tans=`sh -c hostname 2>&1` ; then
5095 if $test "$cont"; then
5097 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5098 if tans=`cat /etc/systemid 2>&1` ; then
5100 phostname='cat /etc/systemid'
5101 echo "Whadyaknow. Xenix always was a bit strange..."
5104 elif $test -r /etc/systemid; then
5105 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5108 if $test "$cont"; then
5109 echo 'No, maybe "uuname -l" will work...'
5110 if tans=`sh -c 'uuname -l' 2>&1` ; then
5112 phostname='uuname -l'
5114 echo 'Strange. Maybe "uname -n" will work...'
5115 if tans=`sh -c 'uname -n' 2>&1` ; then
5117 phostname='uname -n'
5119 echo 'Oh well, maybe I can mine it out of whoami.h...'
5120 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5121 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5122 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5124 case "$myhostname" in
5125 '') echo "Does this machine have an identity crisis or something?"
5128 echo "Well, you said $myhostname before..."
5129 phostname='echo $myhostname';;
5135 : you do not want to know about this
5140 if $test "$myhostname" ; then
5142 rp='Your host name appears to be "'$myhostname'".'" Right?"
5150 : bad guess or no guess
5151 while $test "X$myhostname" = X ; do
5153 rp="Please type the (one word) name of your host:"
5158 : translate upper to lower if necessary
5159 case "$myhostname" in
5161 echo "(Normalizing case in your host name)"
5162 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5166 case "$myhostname" in
5168 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5169 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5170 echo "(Trimming domain name from host name--host name is now $myhostname)"
5172 *) case "$mydomain" in
5175 : If we use NIS, try ypmatch.
5176 : Is there some reason why this was not done before?
5177 test "X$hostcat" = "Xypcat hosts" &&
5178 ypmatch "$myhostname" hosts 2>/dev/null |\
5179 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5182 : Extract only the relevant hosts, reducing file size,
5183 : remove comments, insert trailing space for later use.
5184 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5185 /[ ]$myhostname[ . ]/p" > hosts
5188 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5189 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5190 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5191 hosts | $sort | $uniq | \
5192 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5193 case `$echo X$dflt` in
5194 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5197 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5202 tans=`./loc resolv.conf X /etc /usr/etc`
5203 if $test -f "$tans"; then
5204 echo "(Attempting domain name extraction from $tans)"
5205 : Why was there an Egrep here, when Sed works?
5206 : Look for either a search or a domain directive.
5207 dflt=.`$sed -n -e 's/ / /g' \
5208 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5209 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5211 .) dflt=.`$sed -n -e 's/ / /g' \
5212 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5213 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5220 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5221 dflt=.`sh -c domainname 2>/dev/null`
5224 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5229 .) echo "(Lost all hope -- silly guess then)"
5235 *) dflt="$mydomain";;
5239 rp="What is your domain name?"
5249 : translate upper to lower if necessary
5252 echo "(Normalizing case in your domain name)"
5253 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5257 : a little sanity check here
5258 case "$phostname" in
5261 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5262 $myhostname$mydomain|$myhostname) ;;
5264 case "$phostname" in
5266 echo "(That doesn't agree with your whoami.h file, by the way.)"
5269 echo "(That doesn't agree with your $phostname command, by the way.)"
5279 I need to get your e-mail address in Internet format if possible, i.e.
5280 something like user@host.domain. Please answer accurately since I have
5281 no easy means to double check it. The default value provided below
5282 is most probably close to the reality but may not be valid from outside
5283 your organization...
5287 while test "$cont"; do
5289 '') dflt="$cf_by@$myhostname$mydomain";;
5290 *) dflt="$cf_email";;
5292 rp='What is your e-mail address?'
5298 rp='Address does not look like an Internet one. Use it anyway?'
5314 If you or somebody else will be maintaining perl at your site, please
5315 fill in the correct e-mail address here so that they may be contacted
5316 if necessary. Currently, the "perlbug" program included with perl
5317 will send mail to this address in addition to perlbug@perl.com. You may
5318 enter "none" for no administrator.
5321 case "$perladmin" in
5322 '') dflt="$cf_email";;
5323 *) dflt="$perladmin";;
5325 rp='Perl administrator e-mail address'
5329 : figure out how to guarantee perl startup
5330 case "$startperl" in
5332 case "$sharpbang" in
5336 I can use the #! construct to start perl on your system. This will
5337 make startup of perl scripts faster, but may cause problems if you
5338 want to share those scripts and perl is not in a standard place
5339 ($binexp/perl) on all your platforms. The alternative is to force
5340 a shell by starting the script with a single ':' character.
5344 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5347 none) startperl=": # use perl";;
5348 *) startperl="#!$ans"
5349 if $test 30 -lt `echo "$ans" | wc -c`; then
5352 WARNING: Some systems limit the #! command to 32 characters.
5353 If you experience difficulty running Perl scripts with #!, try
5354 installing Perl in a directory with a shorter pathname.
5360 *) startperl=": # use perl"
5365 echo "I'll use $startperl to start perl scripts."
5367 : figure best path for perl in scripts
5370 perlpath="$binexp/perl"
5371 case "$startperl" in
5376 I will use the "eval 'exec'" idiom to start Perl on your system.
5377 I can use the full path of your Perl binary for this purpose, but
5378 doing so may cause problems if you want to share those scripts and
5379 Perl is not always in a standard place ($binexp/perl).
5383 rp="What path shall I use in \"eval 'exec'\"?"
5390 case "$startperl" in
5392 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5395 : determine where public executable scripts go
5396 set scriptdir scriptdir
5398 case "$scriptdir" in
5401 : guess some guesses
5402 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5403 $test -d /usr/share/bin && dflt=/usr/share/bin
5404 $test -d /usr/local/script && dflt=/usr/local/script
5405 $test -d $prefixexp/script && dflt=$prefixexp/script
5409 *) dflt="$scriptdir"
5414 Some installations have a separate directory just for executable scripts so
5415 that they can mount it across multiple architectures but keep the scripts in
5416 one spot. You might, for example, have a subdirectory of /usr/share for this.
5417 Or you might just lump your scripts in with all your other executables.
5421 rp='Where do you keep publicly executable scripts?'
5423 if $test "X$ansexp" != "X$scriptdirexp"; then
5427 scriptdirexp="$ansexp"
5431 Since you are running AFS, I need to distinguish the directory in which
5432 scripts reside from the directory in which they are installed (and from
5433 which they are presumably copied to the former directory by occult means).
5436 case "$installscript" in
5437 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5438 *) dflt="$installscript";;
5441 rp='Where will public scripts be installed?'
5443 installscript="$ans"
5445 installscript="$scriptdirexp"
5450 Previous version of $package used the standard IO mechanisms as defined in
5451 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5452 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5453 the default and is the only supported mechanism. This abstraction
5454 layer can use AT&T's sfio (if you already have sfio installed) or
5455 fall back on standard IO. This PerlIO abstraction layer is
5456 experimental and may cause problems with some extension modules.
5458 If this doesn't make any sense to you, just accept the default 'n'.
5460 case "$useperlio" in
5461 $define|true|[yY]*) dflt='y';;
5464 rp='Use the experimental PerlIO abstraction layer?'
5471 echo "Ok, doing things the stdio way"
5478 : Check how to convert floats to strings.
5480 echo "Checking for an efficient way to convert floats to strings."
5483 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5484 char *myname = "gconvert";
5487 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5488 char *myname = "gcvt";
5491 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5492 char *myname = "sprintf";
5498 checkit(expect, got)
5502 if (strcmp(expect, got)) {
5503 printf("%s oddity: Expected %s, got %s\n",
5504 myname, expect, got);
5515 /* This must be 1st test on (which?) platform */
5516 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5517 Gconvert(0.1, 8, 0, buf);
5518 checkit("0.1", buf);
5520 Gconvert(1.0, 8, 0, buf);
5523 Gconvert(0.0, 8, 0, buf);
5526 Gconvert(-1.0, 8, 0, buf);
5529 /* Some Linux gcvt's give 1.e+5 here. */
5530 Gconvert(100000.0, 8, 0, buf);
5531 checkit("100000", buf);
5533 /* Some Linux gcvt's give -1.e+5 here. */
5534 Gconvert(-100000.0, 8, 0, buf);
5535 checkit("-100000", buf);
5540 case "$d_Gconvert" in
5541 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5542 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5543 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5544 *) xxx_list='gconvert gcvt sprintf' ;;
5547 for xxx_convert in $xxx_list; do
5548 echo "Trying $xxx_convert"
5550 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5551 try.c $libs > /dev/null 2>&1 ; then
5552 echo "$xxx_convert" found. >&4
5554 echo "I'll use $xxx_convert to convert floats into a string." >&4
5557 echo "...But $xxx_convert didn't work as I expected."
5560 echo "$xxx_convert NOT found." >&4
5564 case "$xxx_convert" in
5565 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5566 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5567 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5570 : Initialize h_fcntl
5573 : Initialize h_sysfile
5576 : access call always available on UNIX
5580 : locate the flags for 'access()'
5584 $cat >access.c <<'EOCP'
5585 #include <sys/types.h>
5590 #include <sys/file.h>
5599 : check sys/file.h first, no particular reason here
5600 if $test `./findhdr sys/file.h` && \
5601 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5603 echo "<sys/file.h> defines the *_OK access constants." >&4
5604 elif $test `./findhdr fcntl.h` && \
5605 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5607 echo "<fcntl.h> defines the *_OK access constants." >&4
5608 elif $test `./findhdr unistd.h` && \
5609 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5610 echo "<unistd.h> defines the *_OK access constants." >&4
5612 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5618 : see if alarm exists
5622 : Look for GNU-cc style attribute checking
5624 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5625 $cat >attrib.c <<'EOCP'
5627 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5629 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5630 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5631 echo "Your C compiler doesn't fully support __attribute__."
5634 echo "Your C compiler supports __attribute__."
5638 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5645 : see if bcmp exists
5649 : see if bcopy exists
5653 : see if this is a unistd.h system
5654 set unistd.h i_unistd
5657 : see if getpgrp exists
5658 set getpgrp d_getpgrp
5661 echo "Checking to see which flavor of getpgrp is in use . . . "
5662 case "$d_getpgrp" in
5667 #include <sys/types.h>
5669 # include <unistd.h>
5673 if (getuid() == 0) {
5674 printf("(I see you are running Configure as super-user...)\n");
5678 if (getpgrp(1) == 0)
5687 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5688 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5690 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5691 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5694 echo "I can't seem to compile and run the test program."
5696 xxx="a USG one, i.e. you use getpgrp()."
5698 # SVR4 systems can appear rather BSD-ish.
5701 xxx="a BSD one, i.e. you use getpgrp(pid)."
5705 xxx="probably a USG one, i.e. you use getpgrp()."
5710 echo "Assuming your getpgrp is $xxx" >&4
5719 : see if setpgrp exists
5720 set setpgrp d_setpgrp
5723 echo "Checking to see which flavor of setpgrp is in use . . . "
5724 case "$d_setpgrp" in
5729 #include <sys/types.h>
5731 # include <unistd.h>
5735 if (getuid() == 0) {
5736 printf("(I see you are running Configure as super-user...)\n");
5740 if (-1 == setpgrp(1, 1))
5743 if (setpgrp() != -1)
5749 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5750 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5752 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5753 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5756 echo "I can't seem to compile and run the test program."
5758 xxx="a USG one, i.e. you use setpgrp()."
5760 # SVR4 systems can appear rather BSD-ish.
5763 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5767 xxx="probably a USG one, i.e. you use setpgrp()."
5772 echo "Assuming your setpgrp is $xxx" >&4
5779 d_bsdpgrp=$d_bsdsetpgrp
5781 : see if bzero exists
5785 : check for lengths of integral types
5789 echo "Checking to see how big your integers are..." >&4
5790 $cat >intsize.c <<'EOCP'
5794 printf("intsize=%d;\n", sizeof(int));
5795 printf("longsize=%d;\n", sizeof(long));
5796 printf("shortsize=%d;\n", sizeof(short));
5801 # If $libs contains -lsfio, and sfio is mis-configured, then it
5802 # sometimes (apparently) runs and exits with a 0 status, but with no
5803 # output!. Thus we check with test -s whether we actually got any
5804 # output. I think it has to do with sfio's use of _exit vs. exit,
5805 # but I don't know for sure. --Andy Dougherty 1/27/97.
5806 if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
5807 ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
5808 eval `$cat intsize.out`
5809 echo "Your integers are $intsize bytes long."
5810 echo "Your long integers are $longsize bytes long."
5811 echo "Your short integers are $shortsize bytes long."
5815 Help! I can't compile and run the intsize test program: please enlighten me!
5816 (This is probably a misconfiguration in your system or libraries, and
5817 you really ought to fix it. Still, I'll try anyway.)
5821 rp="What is the size of an integer (in bytes)?"
5825 rp="What is the size of a long integer (in bytes)?"
5829 rp="What is the size of a short integer (in bytes)?"
5835 $rm -f intsize intsize.[co] intsize.out
5837 : see if signal is declared as pointer to function returning int or void
5839 xxx=`./findhdr signal.h`
5840 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5841 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5842 echo "You have int (*signal())() instead of void." >&4
5844 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5845 echo "You have void (*signal())() instead of int." >&4
5847 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5848 echo "You have int (*signal())() instead of void." >&4
5851 case "$d_voidsig" in
5853 echo "I can't determine whether signal handler returns void or int..." >&4
5855 rp="What type does your signal handler return?"
5862 echo "As you already told me, signal handler returns void." >&4;;
5864 echo "As you already told me, signal handler returns int." >&4;;
5869 case "$d_voidsig" in
5870 "$define") signal_t="void";;
5875 : check for ability to cast large floats to 32-bit ints.
5877 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5878 if $test "$intsize" -eq 4; then
5884 #include <sys/types.h>
5886 $signal_t blech() { exit(3); }
5892 signal(SIGFPE, blech);
5894 f = (double) 0x7fffffff;
5898 if (i32 != ($xxx) f)
5903 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5907 echo "(I can't seem to compile the test program--assuming it can't)"
5915 echo "Nope, it can't."
5922 : check for ability to cast negative floats to unsigned
5924 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5926 #include <sys/types.h>
5928 $signal_t blech() { exit(7); }
5929 $signal_t blech_in_list() { exit(4); }
5930 unsigned long dummy_long(p) unsigned long p; { return p; }
5931 unsigned int dummy_int(p) unsigned int p; { return p; }
5932 unsigned short dummy_short(p) unsigned short p; { return p; }
5936 unsigned long along;
5938 unsigned short ashort;
5941 signal(SIGFPE, blech);
5942 along = (unsigned long)f;
5943 aint = (unsigned int)f;
5944 ashort = (unsigned short)f;
5945 if (along != (unsigned long)-123)
5947 if (aint != (unsigned int)-123)
5949 if (ashort != (unsigned short)-123)
5951 f = (double)0x40000000;
5954 along = (unsigned long)f;
5955 if (along != 0x80000000)
5959 along = (unsigned long)f;
5960 if (along != 0x7fffffff)
5964 along = (unsigned long)f;
5965 if (along != 0x80000001)
5969 signal(SIGFPE, blech_in_list);
5971 along = dummy_long((unsigned long)f);
5972 aint = dummy_int((unsigned int)f);
5973 ashort = dummy_short((unsigned short)f);
5974 if (along != (unsigned long)123)
5976 if (aint != (unsigned int)123)
5978 if (ashort != (unsigned short)123)
5984 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5988 echo "(I can't seem to compile the test program--assuming it can't)"
5991 case "$castflags" in
5996 echo "Nope, it can't."
6003 : see if vprintf exists
6005 if set vprintf val -f d_vprintf; eval $csym; $val; then
6006 echo 'vprintf() found.' >&4
6008 $cat >vprintf.c <<'EOF'
6009 #include <varargs.h>
6011 main() { xxx("foo"); }
6020 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6023 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
6024 echo "Your vsprintf() returns (int)." >&4
6027 echo "Your vsprintf() returns (char*)." >&4
6031 echo 'vprintf() NOT found.' >&4
6041 : see if chown exists
6045 : see if chroot exists
6049 : see if chsize exists
6053 : check for const keyword
6055 echo 'Checking to see if your C compiler knows about "const"...' >&4
6056 $cat >const.c <<'EOCP'
6057 typedef struct spug { int drokk; } spug;
6064 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6066 echo "Yup, it does."
6069 echo "Nope, it doesn't."
6074 : see if crypt exists
6076 if set crypt val -f d_crypt; eval $csym; $val; then
6077 echo 'crypt() found.' >&4
6081 cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
6082 if $test -z "$cryptlib"; then
6083 cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
6087 if $test -z "$cryptlib"; then
6088 cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
6092 if $test -z "$cryptlib"; then
6093 cryptlib=`./loc libcrypt$lib_ext "" $libpth`
6097 if $test -z "$cryptlib"; then
6098 echo 'crypt() NOT found.' >&4
6107 : get csh whereabouts
6109 'csh') val="$undef" ;;
6114 : Respect a hint or command line value for full_csh.
6116 '') full_csh=$csh ;;
6119 : see if cuserid exists
6120 set cuserid d_cuserid
6123 : see if this is a limits.h system
6124 set limits.h i_limits
6127 : see if this is a float.h system
6131 : See if number of significant digits in a double precision number is known
6133 $cat >dbl_dig.c <<EOM
6143 printf("Contains DBL_DIG");
6146 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6147 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6148 echo "DBL_DIG found." >&4
6151 echo "DBL_DIG NOT found." >&4
6158 : see if difftime exists
6159 set difftime d_difftime
6162 : see if this is a dirent system
6164 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
6166 echo "<dirent.h> found." >&4
6169 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
6170 echo "<sys/dir.h> found." >&4
6173 xinc=`./findhdr sys/ndir.h`
6175 echo "<dirent.h> NOT found." >&4
6180 : Look for type of directory structure.
6182 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6184 case "$direntrytype" in
6187 $define) guess1='struct dirent' ;;
6188 *) guess1='struct direct' ;;
6191 *) guess1="$direntrytype"
6196 'struct dirent') guess2='struct direct' ;;
6197 *) guess2='struct dirent' ;;
6200 if $contains "$guess1" try.c >/dev/null 2>&1; then
6201 direntrytype="$guess1"
6202 echo "Your directory entries are $direntrytype." >&4
6203 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6204 direntrytype="$guess2"
6205 echo "Your directory entries seem to be $direntrytype." >&4
6207 echo "I don't recognize your system's directory entries." >&4
6208 rp="What type is used for directory entries on this system?"
6216 : see if the directory entry stores field length
6218 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6219 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6220 echo "Good, your directory entry keeps length information in d_namlen." >&4
6223 echo "Your directory entry does not know about the d_namlen field." >&4
6230 : see if dlerror exists
6233 set dlerror d_dlerror
6237 : see if dlfcn is available
6245 On a few systems, the dynamically loaded modules that perl generates and uses
6246 will need a different extension then shared libs. The default will probably
6254 rp='What is the extension of dynamically loaded modules'
6263 : Check if dlsym need a leading underscore
6269 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6270 $cat >dyna.c <<'EOM'
6279 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6281 #include <sys/types.h>
6295 int mode = RTLD_LAZY ;
6297 handle = dlopen("./dyna.$dlext", mode) ;
6298 if (handle == NULL) {
6303 symbol = dlsym(handle, "fred") ;
6304 if (symbol == NULL) {
6305 /* try putting a leading underscore */
6306 symbol = dlsym(handle, "_fred") ;
6307 if (symbol == NULL) {
6320 : Call the object file tmp-dyna.o in case dlext=o.
6321 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6322 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6323 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6324 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6327 1) echo "Test program failed using dlopen." >&4
6328 echo "Perhaps you should not use dynamic loading." >&4;;
6329 2) echo "Test program failed using dlsym." >&4
6330 echo "Perhaps you should not use dynamic loading." >&4;;
6331 3) echo "dlsym needs a leading underscore" >&4
6333 4) echo "dlsym doesn't need a leading underscore." >&4;;
6336 echo "I can't compile and run the test program." >&4
6341 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6346 : see if dup2 exists
6350 : Locate the flags for 'open()'
6352 $cat >open3.c <<'EOCP'
6353 #include <sys/types.h>
6358 #include <sys/file.h>
6369 : check sys/file.h first to get FREAD on Sun
6370 if $test `./findhdr sys/file.h` && \
6371 $cc $ccflags "-DI_SYS_FILE" -o open3 $ldflags open3.c $libs >/dev/null 2>&1 ; then
6373 echo "<sys/file.h> defines the O_* constants..." >&4
6375 echo "and you have the 3 argument form of open()." >&4
6378 echo "but not the 3 argument form of open(). Oh, well." >&4
6381 elif $test `./findhdr fcntl.h` && \
6382 $cc $ccflags "-DI_FCNTL" -o open3 $ldflags open3.c $libs >/dev/null 2>&1 ; then
6384 echo "<fcntl.h> defines the O_* constants..." >&4
6386 echo "and you have the 3 argument form of open()." >&4
6389 echo "but not the 3 argument form of open(). Oh, well." >&4
6394 echo "I can't find the O_* constant definitions! You got problems." >&4
6400 : check for non-blocking I/O stuff
6401 case "$h_sysfile" in
6402 true) echo "#include <sys/file.h>" > head.c;;
6405 true) echo "#include <fcntl.h>" > head.c;;
6406 *) echo "#include <sys/fcntl.h>" > head.c;;
6411 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6412 case "$o_nonblock" in
6415 $cat >>try.c <<'EOCP'
6418 printf("O_NONBLOCK\n");
6422 printf("O_NDELAY\n");
6426 printf("FNDELAY\n");
6432 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6434 case "$o_nonblock" in
6435 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6436 *) echo "Seems like we can use $o_nonblock.";;
6439 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6442 *) echo "Using $hint value $o_nonblock.";;
6444 $rm -f try try.* .out core
6447 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6453 #include <sys/types.h>
6455 #define MY_O_NONBLOCK $o_nonblock
6457 $signal_t blech(x) int x; { exit(3); }
6459 $cat >> try.c <<'EOCP'
6467 pipe(pd); /* Down: child -> parent */
6468 pipe(pu); /* Up: parent -> child */
6471 close(pd[1]); /* Parent reads from pd[0] */
6472 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6473 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6475 signal(SIGALRM, blech);
6477 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6479 sprintf(string, "%d\n", ret);
6480 write(2, string, strlen(string));
6483 if (errno == EAGAIN) {
6489 if (errno == EWOULDBLOCK)
6490 printf("EWOULDBLOCK\n");
6493 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6494 sleep(2); /* Give it time to close our pipe */
6496 ret = read(pd[0], buf, 1); /* Should read EOF */
6498 sprintf(string, "%d\n", ret);
6499 write(3, string, strlen(string));
6503 close(pd[0]); /* We write to pd[1] */
6504 close(pu[1]); /* We read from pu[0] */
6505 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6506 close(pd[1]); /* Pipe pd is now fully closed! */
6507 exit(0); /* Bye bye, thank you for playing! */
6510 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6511 echo "$startsh" >mtry
6512 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6514 ./mtry >/dev/null 2>&1
6516 0) eagain=`$cat try.out`;;
6517 1) echo "Could not perform non-blocking setting!";;
6518 2) echo "I did a successful read() for something that was not there!";;
6519 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6520 *) echo "Something terribly wrong happened during testing.";;
6522 rd_nodata=`$cat try.ret`
6523 echo "A read() system call with no data present returns $rd_nodata."
6524 case "$rd_nodata" in
6527 echo "(That's peculiar, fixing that to be -1.)"
6533 echo "Forcing errno EAGAIN on read() with no data available."
6537 echo "Your read() sets errno to $eagain when no data is available."
6540 status=`$cat try.err`
6542 0) echo "And it correctly returns 0 to signal EOF.";;
6543 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6544 *) echo "However, your read() returns '$status' on EOF??";;
6547 if test "$status" = "$rd_nodata"; then
6548 echo "WARNING: you can't distinguish between EOF and no data!"
6552 echo "I can't compile the test program--assuming errno EAGAIN will do."
6559 echo "Using $hint value $eagain."
6560 echo "Your read() returns $rd_nodata when no data is present."
6561 case "$d_eofnblk" in
6562 "$define") echo "And you can see EOF because read() returns 0.";;
6563 "$undef") echo "But you can't see EOF status from read() returned value.";;
6565 echo "(Assuming you can't see EOF status from read anyway.)"
6571 $rm -f try try.* .out core head.c mtry
6573 : see if fchmod exists
6577 : see if fchown exists
6581 : see if this is an fcntl system
6585 : see if fgetpos exists
6586 set fgetpos d_fgetpos
6589 : see if flock exists
6593 : see if fork exists
6597 : see if pathconf exists
6598 set pathconf d_pathconf
6601 : see if fpathconf exists
6602 set fpathconf d_fpathconf
6605 : see if fsetpos exists
6606 set fsetpos d_fsetpos
6609 : see if gethostbyaddr exists
6610 set gethostbyaddr d_gethbadd
6613 : see if getnetbyaddr exists
6614 set getnetbyaddr d_getnbadd
6617 : see if gethostent exists
6618 set gethostent d_gethent
6621 : see if getlogin exists
6622 set getlogin d_getlogin
6625 : see if getpgid exists
6626 set getpgid d_getpgid
6629 : see if getpgrp2 exists
6630 set getpgrp2 d_getpgrp2
6633 : see if getppid exists
6634 set getppid d_getppid
6637 : see if getpriority exists
6638 set getpriority d_getprior
6641 : see if gettimeofday or ftime exists
6642 set gettimeofday d_gettimeod
6644 case "$d_gettimeod" in
6650 val="$undef"; set d_ftime; eval $setvar
6653 case "$d_gettimeod$d_ftime" in
6656 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
6660 : see if this is a netinet/in.h or sys/in.h system
6661 set netinet/in.h i_niin sys/in.h i_sysin
6664 : see if htonl --and friends-- exists
6669 : Maybe they are macros.
6674 #include <sys/types.h>
6675 #$i_niin I_NETINET_IN
6678 #include <netinet/in.h>
6684 printf("Defined as a macro.");
6687 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6688 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6690 echo "But it seems to be defined as a macro." >&4
6698 : see which of string.h or strings.h is needed
6700 strings=`./findhdr string.h`
6701 if $test "$strings" && $test -r "$strings"; then
6702 echo "Using <string.h> instead of <strings.h>." >&4
6706 strings=`./findhdr strings.h`
6707 if $test "$strings" && $test -r "$strings"; then
6708 echo "Using <strings.h> instead of <string.h>." >&4
6710 echo "No string header found -- You'll surely have problems." >&4
6716 "$undef") strings=`./findhdr strings.h`;;
6717 *) strings=`./findhdr string.h`;;
6722 if set index val -f; eval $csym; $val; then
6723 if set strchr val -f d_strchr; eval $csym; $val; then
6724 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6727 echo "strchr() found." >&4
6731 echo "index() found." >&4
6736 echo "index() found." >&4
6739 if set strchr val -f d_strchr; eval $csym; $val; then
6742 echo "strchr() found." >&4
6744 echo "No index() or strchr() found!" >&4
6749 set d_strchr; eval $setvar
6751 set d_index; eval $setvar
6753 : check whether inet_aton exists
6754 set inet_aton d_inetaton
6759 $cat >isascii.c <<'EOCP'
6770 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6771 echo "isascii() found." >&4
6774 echo "isascii() NOT found." >&4
6781 : see if killpg exists
6785 : see if link exists
6789 : see if localeconv exists
6790 set localeconv d_locconv
6793 : see if lockf exists
6797 : see if lstat exists
6801 : see if mblen exists
6805 : see if mbstowcs exists
6806 set mbstowcs d_mbstowcs
6809 : see if mbtowc exists
6813 : see if memcmp exists
6817 : see if memcpy exists
6821 : see if memmove exists
6822 set memmove d_memmove
6825 : see if memset exists
6829 : see if mkdir exists
6833 : see if mkfifo exists
6837 : see if mktime exists
6841 : see if msgctl exists
6845 : see if msgget exists
6849 : see if msgsnd exists
6853 : see if msgrcv exists
6857 : see how much of the 'msg*(2)' library is present.
6860 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6861 *"$undef"*) h_msg=false;;
6863 : we could also check for sys/ipc.h ...
6864 if $h_msg && $test `./findhdr sys/msg.h`; then
6865 echo "You have the full msg*(2) library." >&4
6868 echo "You don't have the full msg*(2) library." >&4
6874 : see if this is a malloc.h system
6875 set malloc.h i_malloc
6878 : see if stdlib is available
6879 set stdlib.h i_stdlib
6882 : determine which malloc to compile in
6884 case "$usemymalloc" in
6885 ''|y*|true) dflt='y' ;;
6886 n*|false) dflt='n' ;;
6887 *) dflt="$usemymalloc" ;;
6889 rp="Do you wish to attempt to use the malloc that comes with $package?"
6895 mallocsrc='malloc.c'
6896 mallocobj='malloc.o'
6897 d_mymalloc="$define"
6900 : Remove malloc from list of libraries to use
6901 echo "Removing unneeded -lmalloc from library list" >&4
6902 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6905 echo "libs = $libs" >&4
6917 : compute the return types of malloc and free
6919 $cat >malloc.c <<END
6923 #include <sys/types.h>
6937 case "$malloctype" in
6939 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6946 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6950 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6957 echo "Your system uses $freetype free(), it would seem." >&4
6959 : see if nice exists
6963 : see if pause exists
6967 : see if pipe exists
6971 : see if poll exists
6975 : see if this is a pwd.h system
6981 xxx=`./findhdr pwd.h`
6982 $cppstdin $cppflags $cppminus < $xxx >$$.h
6984 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6992 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
7000 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
7008 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
7016 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
7024 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
7036 set d_pwquota; eval $setvar
7037 set d_pwage; eval $setvar
7038 set d_pwchange; eval $setvar
7039 set d_pwclass; eval $setvar
7040 set d_pwexpire; eval $setvar
7041 set d_pwcomment; eval $setvar
7045 : see if readdir and friends exist
7046 set readdir d_readdir
7048 set seekdir d_seekdir
7050 set telldir d_telldir
7052 set rewinddir d_rewinddir
7055 : see if readlink exists
7056 set readlink d_readlink
7059 : see if rename exists
7063 : see if rmdir exists
7067 : see if memory.h is available.
7072 : See if it conflicts with string.h
7078 $cppstdin $cppflags $cppminus < $strings > mem.h
7079 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7081 echo "We won't be including <memory.h>."
7091 : can bcopy handle overlapping blocks?
7096 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
7103 $cat >>foo.c <<'EOCP'
7107 # include <memory.h>
7110 # include <stdlib.h>
7113 # include <string.h>
7115 # include <strings.h>
7118 # include <unistd.h> /* Needed for NetBSD */
7122 char buf[128], abc[128];
7128 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7129 try to store the string in read-only memory. */
7130 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
7132 for (align = 7; align >= 0; align--) {
7133 for (len = 36; len; len--) {
7136 for (off = 1; off <= len; off++) {
7137 bcopy(b, b+off, len);
7138 bcopy(b+off, b, len);
7139 if (bcmp(b, abc, len))
7147 if $cc $optimize $ccflags $ldflags foo.c \
7148 -o safebcpy $libs >/dev/null 2>&1; then
7149 if ./safebcpy 2>/dev/null; then
7153 echo "It can't, sorry."
7154 case "$d_memmove" in
7155 "$define") echo "But that's Ok since you have memmove()." ;;
7159 echo "(I can't compile the test program, so we'll assume not...)"
7160 case "$d_memmove" in
7161 "$define") echo "But that's Ok since you have memmove()." ;;
7166 $rm -f foo.* safebcpy core
7170 : can memcpy handle overlapping blocks?
7175 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
7182 $cat >>foo.c <<'EOCP'
7186 # include <memory.h>
7189 # include <stdlib.h>
7192 # include <string.h>
7194 # include <strings.h>
7197 # include <unistd.h> /* Needed for NetBSD */
7201 char buf[128], abc[128];
7207 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7208 try to store the string in read-only memory. */
7209 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
7211 for (align = 7; align >= 0; align--) {
7212 for (len = 36; len; len--) {
7214 memcpy(b, abc, len);
7215 for (off = 1; off <= len; off++) {
7216 memcpy(b+off, b, len);
7217 memcpy(b, b+off, len);
7218 if (memcmp(b, abc, len))
7226 if $cc $optimize $ccflags $ldflags foo.c \
7227 -o safemcpy $libs >/dev/null 2>&1; then
7228 if ./safemcpy 2>/dev/null; then
7232 echo "It can't, sorry."
7233 case "$d_memmove" in
7234 "$define") echo "But that's Ok since you have memmove()." ;;
7238 echo "(I can't compile the test program, so we'll assume not...)"
7239 case "$d_memmove" in
7240 "$define") echo "But that's Ok since you have memmove()." ;;
7245 $rm -f foo.* safemcpy core
7249 : can memcmp be trusted to compare relative magnitude?
7254 echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
7261 $cat >>foo.c <<'EOCP'
7265 # include <memory.h>
7268 # include <stdlib.h>
7271 # include <string.h>
7273 # include <strings.h>
7276 # include <unistd.h> /* Needed for NetBSD */
7282 if ((a < b) && memcmp(&a, &b, 1) < 0)
7287 if $cc $optimize $ccflags $ldflags foo.c \
7288 -o sanemcmp $libs >/dev/null 2>&1; then
7289 if ./sanemcmp 2>/dev/null; then
7293 echo "No, it can't (it uses signed chars)."
7296 echo "(I can't compile the test program, so we'll assume not...)"
7300 $rm -f foo.* sanemcmp core
7304 : see if select exists
7308 : see if semctl exists
7312 : see if semget exists
7316 : see if semop exists
7320 : see how much of the 'sem*(2)' library is present.
7323 case "$d_semctl$d_semget$d_semop" in
7324 *"$undef"*) h_sem=false;;
7326 : we could also check for sys/ipc.h ...
7327 if $h_sem && $test `./findhdr sys/sem.h`; then
7328 echo "You have the full sem*(2) library." >&4
7331 echo "You don't have the full sem*(2) library." >&4
7337 : see if setegid exists
7338 set setegid d_setegid
7341 : see if seteuid exists
7342 set seteuid d_seteuid
7345 : see if setlinebuf exists
7346 set setlinebuf d_setlinebuf
7349 : see if setlocale exists
7350 set setlocale d_setlocale
7353 : see if setpgid exists
7354 set setpgid d_setpgid
7357 : see if setpgrp2 exists
7358 set setpgrp2 d_setpgrp2
7361 : see if setpriority exists
7362 set setpriority d_setprior
7365 : see if setregid exists
7366 set setregid d_setregid
7368 set setresgid d_setresgid
7371 : see if setreuid exists
7372 set setreuid d_setreuid
7374 set setresuid d_setresuid
7377 : see if setrgid exists
7378 set setrgid d_setrgid
7381 : see if setruid exists
7382 set setruid d_setruid
7385 : see if setsid exists
7389 : see if sfio.h is available
7394 : see if sfio library is available
7405 : Ok, but do we want to use it.
7409 true|$define|[yY]*) dflt='y';;
7412 echo "$package can use the sfio library, but it is experimental."
7413 rp="You seem to have sfio available, do you want to try using it?"
7417 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7419 : Remove sfio from list of libraries to use
7420 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
7423 echo "libs = $libs" >&4
7427 *) case "$usesfio" in
7429 echo "Sorry, cannot find sfio on this machine" >&4
7430 echo "Ignoring your setting of usesfio=$usesfio" >&4
7438 $define) usesfio='true';;
7439 *) usesfio='false';;
7442 : see if shmctl exists
7446 : see if shmget exists
7450 : see if shmat exists
7453 : see what shmat returns
7456 $cat >shmat.c <<'END'
7457 #include <sys/shm.h>
7460 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7465 echo "and it returns ($shmattype)." >&4
7466 : see if a prototype for shmat is available
7467 xxx=`./findhdr sys/shm.h`
7468 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7469 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7480 set d_shmatprototype
7483 : see if shmdt exists
7487 : see how much of the 'shm*(2)' library is present.
7490 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7491 *"$undef"*) h_shm=false;;
7493 : we could also check for sys/ipc.h ...
7494 if $h_shm && $test `./findhdr sys/shm.h`; then
7495 echo "You have the full shm*(2) library." >&4
7498 echo "You don't have the full shm*(2) library." >&4
7505 : see if we have sigaction
7506 if set sigaction val -f d_sigaction; eval $csym; $val; then
7507 echo 'sigaction() found.' >&4
7510 echo 'sigaction NOT found.' >&4
7514 $cat > set.c <<'EOP'
7515 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7516 sigaction structure if compiled with cc -Xc. This compile test
7517 will fail then. <doughera@lafcol.lafayette.edu>
7520 #include <sys/types.h>
7524 struct sigaction act, oact;
7528 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7531 echo "But you don't seem to have a useable struct sigaction." >&4
7534 set d_sigaction; eval $setvar
7535 $rm -f set set.o set.c
7537 : see if sigsetjmp exists
7539 case "$d_sigsetjmp" in
7547 if (sigsetjmp(env,1))
7554 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7555 if ./set >/dev/null 2>&1; then
7556 echo "POSIX sigsetjmp found." >&4
7560 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7566 echo "sigsetjmp not found." >&4
7570 *) val="$d_sigsetjmp"
7571 case "$d_sigsetjmp" in
7572 $define) echo "POSIX sigsetjmp found." >&4;;
7573 $undef) echo "sigsetjmp not found." >&4;;
7583 : see whether socket exists
7585 $echo $n "Hmm... $c" >&4
7586 if set socket val -f d_socket; eval $csym; $val; then
7587 echo "Looks like you have Berkeley networking support." >&4
7589 if set setsockopt val -f; eval $csym; $val; then
7592 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7596 if $contains socklib libc.list >/dev/null 2>&1; then
7597 echo "Looks like you have Berkeley networking support." >&4
7599 : we will have to assume that it supports the 4.2 BSD interface
7602 echo "You don't have Berkeley networking in libc$lib_ext..." >&4
7603 if test -f /usr/lib/libnet$lib_ext; then
7604 ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) || \
7605 ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list
7606 if $contains socket libc.list >/dev/null 2>&1; then
7607 echo "...but the Wollongong group seems to have hacked it in." >&4
7609 sockethdr="-I/usr/netinclude"
7611 if $contains setsockopt libc.list >/dev/null 2>&1; then
7614 echo "...using the old 4.1c interface, rather than 4.2" >&4
7618 echo "or even in libnet$lib_ext, which is peculiar." >&4
7623 echo "or anywhere else I see." >&4
7630 : see if socketpair exists
7631 set socketpair d_sockpair
7634 : see if stat knows about block sizes
7636 xxx=`./findhdr sys/stat.h`
7637 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7638 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7639 echo "Your stat() knows about block sizes." >&4
7642 echo "Your stat() doesn't know about block sizes." >&4
7646 echo "Your stat() doesn't know about block sizes." >&4
7652 : see if _ptr and _cnt from stdio act std
7654 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7655 echo "(Looks like you have stdio.h from Linux.)"
7656 case "$stdio_ptr" in
7657 '') stdio_ptr='((fp)->_IO_read_ptr)'
7660 *) ptr_lval=$d_stdio_ptr_lval;;
7662 case "$stdio_cnt" in
7663 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7666 *) cnt_lval=$d_stdio_cnt_lval;;
7668 case "$stdio_base" in
7669 '') stdio_base='((fp)->_IO_read_base)';;
7671 case "$stdio_bufsiz" in
7672 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7675 case "$stdio_ptr" in
7676 '') stdio_ptr='((fp)->_ptr)'
7679 *) ptr_lval=$d_stdio_ptr_lval;;
7681 case "$stdio_cnt" in
7682 '') stdio_cnt='((fp)->_cnt)'
7685 *) cnt_lval=$d_stdio_cnt_lval;;
7687 case "$stdio_base" in
7688 '') stdio_base='((fp)->_base)';;
7690 case "$stdio_bufsiz" in
7691 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7694 : test whether _ptr and _cnt really work
7695 echo "Checking how std your stdio is..." >&4
7698 #define FILE_ptr(fp) $stdio_ptr
7699 #define FILE_cnt(fp) $stdio_cnt
7701 FILE *fp = fopen("try.c", "r");
7704 18 <= FILE_cnt(fp) &&
7705 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7712 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7714 echo "Your stdio acts pretty std."
7717 echo "Your stdio isn't very std."
7720 echo "Your stdio doesn't appear very std."
7726 : Can _ptr be used as an lvalue?
7727 case "$d_stdstdio$ptr_lval" in
7728 $define$define) val=$define ;;
7731 set d_stdio_ptr_lval
7734 : Can _cnt be used as an lvalue?
7735 case "$d_stdstdio$cnt_lval" in
7736 $define$define) val=$define ;;
7739 set d_stdio_cnt_lval
7743 : see if _base is also standard
7745 case "$d_stdstdio" in
7749 #define FILE_base(fp) $stdio_base
7750 #define FILE_bufsiz(fp) $stdio_bufsiz
7752 FILE *fp = fopen("try.c", "r");
7755 19 <= FILE_bufsiz(fp) &&
7756 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7762 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7764 echo "And its _base field acts std."
7767 echo "But its _base field isn't std."
7770 echo "However, it seems to be lacking the _base field."
7778 : see if strcoll exists
7779 set strcoll d_strcoll
7782 : check for structure copying
7784 echo "Checking to see if your C compiler can copy structs..." >&4
7785 $cat >try.c <<'EOCP'
7795 if $cc -c try.c >/dev/null 2>&1 ; then
7800 echo "Nope, it can't."
7806 : see if strerror and/or sys_errlist[] exist
7808 if set strerror val -f d_strerror; eval $csym; $val; then
7809 echo 'strerror() found.' >&4
7810 d_strerror="$define"
7811 d_strerrm='strerror(e)'
7812 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7813 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7814 d_syserrlst="$define"
7816 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7817 d_syserrlst="$undef"
7819 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7820 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7821 echo 'strerror() found in string header.' >&4
7822 d_strerror="$define"
7823 d_strerrm='strerror(e)'
7824 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7825 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7826 d_syserrlst="$define"
7828 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7829 d_syserrlst="$undef"
7831 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7832 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7834 d_syserrlst="$define"
7835 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7837 echo 'strerror() and sys_errlist[] NOT found.' >&4
7839 d_syserrlst="$undef"
7840 d_strerrm='"unknown"'
7843 : see if strtod exists
7847 : see if strtol exists
7851 : see if strtoul exists
7852 set strtoul d_strtoul
7855 : see if strxfrm exists
7856 set strxfrm d_strxfrm
7859 : see if symlink exists
7860 set symlink d_symlink
7863 : see if syscall exists
7864 set syscall d_syscall
7867 : see if sysconf exists
7868 set sysconf d_sysconf
7871 : see if system exists
7875 : see if tcgetpgrp exists
7876 set tcgetpgrp d_tcgetpgrp
7879 : see if tcsetpgrp exists
7880 set tcsetpgrp d_tcsetpgrp
7883 : define an is-a-typedef? function
7884 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7886 "") inclist="sys/types.h";;
7888 eval "varval=\$$var";
7892 for inc in $inclist; do
7893 echo "#include <$inc>" >>temp.c;
7895 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7896 if $contains $type temp.E >/dev/null 2>&1; then
7902 *) eval "$var=\$varval";;
7905 : see if this is a sys/times.h system
7906 set sys/times.h i_systimes
7909 : see if times exists
7911 if set times val -f d_times; eval $csym; $val; then
7912 echo 'times() found.' >&4
7915 case "$i_systimes" in
7916 "$define") inc='sys/times.h';;
7918 set clock_t clocktype long stdio.h sys/types.h $inc
7922 rp="What type is returned by times() on this system?"
7926 echo 'times() NOT found, hope that will do.' >&4
7931 : see if truncate exists
7932 set truncate d_truncate
7935 : see if tzname[] exists
7937 if set tzname val -a d_tzname; eval $csym; $val; then
7939 echo 'tzname[] found.' >&4
7942 echo 'tzname[] NOT found.' >&4
7947 : see if umask exists
7951 : see how we will look up host name
7954 : dummy stub to allow use of elif
7955 elif set uname val -f d_uname; eval $csym; $val; then
7958 uname() was found, but you're running xenix, and older versions of xenix
7959 have a broken uname(). If you don't really know whether your xenix is old
7960 enough to have a broken system call, use the default answer.
7967 rp='Is your uname() broken?'
7970 n*) d_uname="$define"; call=uname;;
7973 echo 'uname() found.' >&4
7978 case "$d_gethname" in
7979 '') d_gethname="$undef";;
7982 '') d_uname="$undef";;
7984 case "$d_phostname" in
7985 '') d_phostname="$undef";;
7988 : backward compatibility for d_hvfork
7989 if test X$d_hvfork != X; then
7993 : see if there is a vfork
7998 : Ok, but do we want to use it. vfork is reportedly unreliable in
7999 : perl on Solaris 2.x, and probably elsewhere.
8007 rp="Some systems have problems with vfork(). Do you want to use it?"
8012 echo "Ok, we won't use vfork()."
8021 $define) usevfork='true';;
8022 *) usevfork='false';;
8025 : see if this is an sysdir system
8026 set sys/dir.h i_sysdir
8029 : see if this is an sysndir system
8030 set sys/ndir.h i_sysndir
8033 : see if closedir exists
8034 set closedir d_closedir
8037 case "$d_closedir" in
8040 echo "Checking whether closedir() returns a status..." >&4
8041 cat > closedir.c <<EOM
8042 #$i_dirent I_DIRENT /**/
8043 #$i_sysdir I_SYS_DIR /**/
8044 #$i_sysndir I_SYS_NDIR /**/
8046 #if defined(I_DIRENT)
8048 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
8049 #include <sys/dir.h>
8053 #include <sys/ndir.h>
8057 #include <ndir.h> /* may be wrong in the future */
8059 #include <sys/dir.h>
8064 int main() { return closedir(opendir(".")); }
8066 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
8067 if ./closedir > /dev/null 2>&1 ; then
8068 echo "Yes, it does."
8071 echo "No, it doesn't."
8075 echo "(I can't seem to compile the test program--assuming it doesn't)"
8086 : check for volatile keyword
8088 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
8089 $cat >try.c <<'EOCP'
8092 typedef struct _goo_struct goo_struct;
8093 goo_struct * volatile goo = ((goo_struct *)0);
8094 struct _goo_struct {
8099 typedef unsigned short foo_t;
8102 volatile foo_t blech;
8106 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
8108 echo "Yup, it does."
8111 echo "Nope, it doesn't."
8117 : see if there is a wait4
8121 : see if waitpid exists
8122 set waitpid d_waitpid
8125 : see if wcstombs exists
8126 set wcstombs d_wcstombs
8129 : see if wctomb exists
8133 : preserve RCS keywords in files with variable substitution, grrr
8138 Revision='$Revision'
8140 : check for alignment requirements
8142 case "$alignbytes" in
8143 '') echo "Checking alignment constraints..." >&4
8144 $cat >try.c <<'EOCP'
8151 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
8154 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
8158 echo "(I can't seem to compile the test program...)"
8161 *) dflt="$alignbytes"
8164 rp="Doubles must be aligned on a how-many-byte boundary?"
8169 : check for ordering of bytes in a long
8170 case "$byteorder" in
8174 In the following, larger digits indicate more significance. A big-endian
8175 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
8176 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
8177 machines may have weird orders like 3412. A Cray will report 87654321. If
8178 the test program works the default is probably right.
8179 I'm now running the test program...
8181 $cat >try.c <<'EOCP'
8188 char c[sizeof(long)];
8191 if (sizeof(long) > 4)
8192 u.l = (0x08070605L << 32) | 0x04030201L;
8195 for (i = 0; i < sizeof(long); i++)
8196 printf("%c", u.c[i]+'0');
8202 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
8205 [1-4][1-4][1-4][1-4]|12345678|87654321)
8206 echo "(The test program ran ok.)"
8207 echo "byteorder=$dflt"
8210 ????|????????) echo "(The test program ran ok.)" ;;
8211 *) echo "(The test program didn't run right for some reason.)" ;;
8216 (I can't seem to compile the test program. Guessing big-endian...)
8219 case "$xxx_prompt" in
8221 rp="What is the order of bytes in a long?"
8232 : how do we catenate cpp tokens here?
8234 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8235 $cat >cpp_stuff.c <<'EOCP'
8236 #define RCAT(a,b)a/**/b
8237 #define ACAT(a,b)a ## b
8241 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8242 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8243 echo "Oh! Smells like ANSI's been here."
8244 echo "We can catify or stringify, separately or together!"
8246 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8247 echo "Ah, yes! The good old days!"
8248 echo "However, in the good old days we don't know how to stringify and"
8249 echo "catify at the same time."
8253 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8254 to have to edit the values of CAT[2-5] in config.h...
8256 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8260 : see if this is a db.h system
8266 : Check db version. We can not use version 2.
8268 echo "Checking Berkeley DB version ..." >&4
8274 #include <sys/types.h>
8279 #ifdef DB_VERSION_MAJOR /* DB version >= 2: not yet. */
8280 printf("You have Berkeley DB Version %d.%d\n",
8281 DB_VERSION_MAJOR, DB_VERSION_MINOR);
8282 printf("Perl currently only supports up to version 1.86.\n");
8285 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
8286 exit(0); /* DB version < 2: the coast is clear. */
8288 exit(1); /* <db.h> not Berkeley DB? */
8293 if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then
8294 echo 'Looks OK. (Perl supports up to version 1.86).' >&4
8296 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
8300 : Remove db from list of libraries to use
8301 echo "Removing unusable -ldb from library list" >&4
8302 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
8305 echo "libs = $libs" >&4
8315 : Check the return type needed for hash
8317 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8323 #include <sys/types.h>
8325 u_int32_t hash_cb (ptr, size)
8333 info.hash = hash_cb;
8336 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8337 if $contains warning try.out >>/dev/null 2>&1 ; then
8340 db_hashtype='u_int32_t'
8343 : XXX Maybe we should just give up here.
8344 db_hashtype=u_int32_t
8345 echo "Help: I can't seem to compile the db test program." >&4
8346 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
8349 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8351 *) db_hashtype=u_int32_t
8357 : Check the return type needed for prefix
8359 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8365 #include <sys/types.h>
8367 size_t prefix_cb (key1, key2)
8375 info.prefix = prefix_cb;
8378 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8379 if $contains warning try.out >>/dev/null 2>&1 ; then
8382 db_prefixtype='size_t'
8385 db_prefixtype='size_t'
8386 : XXX Maybe we should just give up here.
8387 echo "Help: I can't seem to compile the db test program." >&4
8388 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
8391 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8393 *) db_prefixtype='size_t'
8397 : check for void type
8399 echo "Checking to see how well your C compiler groks the void type..." >&4
8402 Support flag bits are:
8403 1: basic void declarations.
8404 2: arrays of pointers to functions returning void.
8405 4: operations between pointers to and addresses of void functions.
8406 8: generic void pointers.
8409 case "$voidflags" in
8411 $cat >try.c <<'EOCP'
8417 extern void moo(); /* function returning void */
8418 void (*goo)(); /* ptr to func returning void */
8420 void *hue; /* generic ptr */
8435 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8436 voidflags=$defvoidused
8437 echo "It appears to support void to the level $package wants ($defvoidused)."
8438 if $contains warning .out >/dev/null 2>&1; then
8439 echo "However, you might get some warnings that look like this:"
8443 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8444 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8445 echo "It supports 1..."
8446 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8447 echo "It also supports 2..."
8448 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8450 echo "And it supports 4 but not 8 definitely."
8452 echo "It doesn't support 4..."
8453 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8455 echo "But it supports 8."
8458 echo "Neither does it support 8."
8462 echo "It does not support 2..."
8463 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8465 echo "But it supports 4 and 8."
8467 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8469 echo "And it supports 4 but has not heard about 8."
8471 echo "However it supports 8 but not 4."
8476 echo "There is no support at all for void."
8481 : Only prompt user if support does not match the level we want
8482 case "$voidflags" in
8486 rp="Your void support flags add up to what?"
8493 : see what type file positions are declared as in the library
8494 set fpos_t fpostype long stdio.h sys/types.h
8498 rp="What is the type for file position used by fsetpos()?"
8502 : Store the full pathname to the sed program for use in the C program
8505 : see what type gids are declared as in the kernel
8506 set gid_t gidtype xxx stdio.h sys/types.h
8510 xxx=`./findhdr sys/user.h`
8511 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8513 unsigned) dflt="$1 $2" ;;
8517 *) dflt="$gidtype";;
8520 rp="What is the type for group ids returned by getgid()?"
8524 : see if getgroups exists
8525 set getgroups d_getgrps
8528 : see if setgroups exists
8529 set setgroups d_setgrps
8532 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
8534 case "$d_getgrps$d_setgrps" in
8536 case "$groupstype" in
8537 '') dflt="$gidtype" ;;
8538 *) dflt="$groupstype" ;;
8541 What is the type of the second argument to getgroups() and setgroups()?
8542 Usually this is the same as group ids, $gidtype, but not always.
8545 rp='What type is the second argument to getgroups() and setgroups()?'
8549 *) groupstype="$gidtype";;
8552 : see what type lseek is declared as in the kernel
8553 set off_t lseektype long stdio.h sys/types.h
8557 rp="What type is lseek's offset on this system declared as?"
8564 make=`./loc make make $pth`
8566 /*) echo make is in $make. ;;
8567 ?:[\\/]*) echo make is in $make. ;;
8568 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8569 echo "Go find a make program or fix your PATH setting!" >&4
8574 *) echo make is in $make. ;;
8577 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8578 case "$make_set_make" in
8580 $sed 's/^X //' > testmake.mak << 'EOF'
8582 X @echo 'ac_maketemp="$(MAKE)"'
8584 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8585 case "`$make -f testmake.mak 2>/dev/null`" in
8586 *ac_maketemp=*) make_set_make='#' ;;
8587 *) make_set_make="MAKE=$make" ;;
8592 case "$make_set_make" in
8593 '#') echo "Yup, it does." >&4 ;;
8594 *) echo "Nope, it doesn't." >&4 ;;
8597 : see what type is used for mode_t
8598 set mode_t modetype int stdio.h sys/types.h
8602 rp="What type is used for file modes?"
8606 : locate the preferred pager for this system
8620 '') dflt=/usr/ucb/more;;
8627 rp='What pager is used on your system?'
8631 : Cruising for prototypes
8633 echo "Checking out function prototypes..." >&4
8634 $cat >prototype.c <<'EOCP'
8635 main(int argc, char *argv[]) {
8638 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8639 echo "Your C compiler appears to support function prototypes."
8642 echo "Your C compiler doesn't seem to understand function prototypes."
8649 : check for size of random number generator
8653 echo "Checking to see how many bits your rand function produces..." >&4
8659 # include <unistd.h>
8662 # include <stdlib.h>
8665 $cat >>try.c <<'EOCP'
8669 register unsigned long tmp;
8670 register unsigned long max = 0L;
8672 for (i = 1000; i; i--) {
8673 tmp = (unsigned long)rand();
8674 if (tmp > max) max = tmp;
8676 for (i = 0; max; i++)
8682 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
8686 echo "(I can't seem to compile the test program...)"
8693 rp='How many bits does your rand() function produce?'
8696 $rm -f try.c try.o try
8698 : see if ar generates random libraries by itself
8700 echo "Checking how to generate random libraries on your machine..." >&4
8701 echo 'int bar1() { return bar2(); }' > bar1.c
8702 echo 'int bar2() { return 2; }' > bar2.c
8703 $cat > foo.c <<'EOP'
8704 main() { printf("%d\n", bar1()); exit(0); }
8706 $cc $ccflags -c bar1.c >/dev/null 2>&1
8707 $cc $ccflags -c bar2.c >/dev/null 2>&1
8708 $cc $ccflags -c foo.c >/dev/null 2>&1
8709 ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1
8710 if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8711 ./foobar >/dev/null 2>&1; then
8712 echo "ar appears to generate random libraries itself."
8715 elif ar ts bar$lib_ext >/dev/null 2>&1 &&
8716 $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8717 ./foobar >/dev/null 2>&1; then
8718 echo "a table of contents needs to be added with 'ar ts'."
8725 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8726 $test -f $ranlib || ranlib=''
8729 if $test -n "$ranlib"; then
8730 echo "your system has '$ranlib'; we'll use that."
8733 echo "your system doesn't seem to support random libraries"
8734 echo "so we'll use lorder and tsort to order the libraries."
8741 : see if sys/select.h has to be included
8742 set sys/select.h i_sysselct
8745 : see if we should include time.h, sys/time.h, or both
8747 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8748 $echo $n "I'm now running the test program...$c"
8749 $cat >try.c <<'EOCP'
8750 #include <sys/types.h>
8755 #ifdef SYSTIMEKERNEL
8758 #include <sys/time.h>
8761 #include <sys/select.h>
8770 struct timezone tzp;
8772 if (foo.tm_sec == foo.tm_sec)
8775 if (bar.tv_sec == bar.tv_sec)
8782 for s_timezone in '-DS_TIMEZONE' ''; do
8784 for s_timeval in '-DS_TIMEVAL' ''; do
8785 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8786 for i_time in '' '-DI_TIME'; do
8787 for i_systime in '-DI_SYSTIME' ''; do
8791 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8792 try.c -o try >/dev/null 2>&1 ; then
8793 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8797 $echo $n "Succeeded with $flags$c"
8809 *SYSTIMEKERNEL*) i_systimek="$define"
8810 timeincl=`./findhdr sys/time.h`
8811 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8812 *) i_systimek="$undef";;
8815 *I_TIME*) i_time="$define"
8816 timeincl=`./findhdr time.h`" $timeincl"
8817 echo "We'll include <time.h>." >&4;;
8818 *) i_time="$undef";;
8821 *I_SYSTIME*) i_systime="$define"
8822 timeincl=`./findhdr sys/time.h`" $timeincl"
8823 echo "We'll include <sys/time.h>." >&4;;
8824 *) i_systime="$undef";;
8828 : check for fd_set items
8831 Checking to see how well your C compiler handles fd_set and friends ...
8833 $cat >fd_set.c <<EOCP
8834 #$i_systime I_SYS_TIME
8835 #$i_sysselct I_SYS_SELECT
8836 #$d_socket HAS_SOCKET
8837 #include <sys/types.h>
8839 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8842 #include <sys/time.h>
8845 #include <sys/select.h>
8854 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8861 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8862 d_fds_bits="$define"
8864 echo "Well, your system knows about the normal fd_set typedef..." >&4
8866 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8867 d_fd_macros="$define"
8870 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8872 d_fd_macros="$undef"
8876 Hmm, your compiler has some difficulty with fd_set. Checking further...
8878 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8881 echo "Well, your system has some sort of fd_set available..." >&4
8883 echo "and you have the normal fd_set macros." >&4
8884 d_fd_macros="$define"
8887 but not the normal fd_set macros! Gross! More work for me...
8889 d_fd_macros="$undef"
8892 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8895 d_fd_macros="$undef"
8901 : check for type of arguments to select. This will only really
8902 : work if the system supports prototypes and provides one for
8906 : Make initial guess
8907 case "$selecttype" in
8910 $define) xxx='fd_set *' ;;
8914 *) xxx="$selecttype"
8919 'fd_set *') yyy='int *' ;;
8920 'int *') yyy='fd_set *' ;;
8925 Checking to see what type of arguments are expected by select().
8928 #$i_systime I_SYS_TIME
8929 #$i_sysselct I_SYS_SELECT
8930 #$d_socket HAS_SOCKET
8931 #include <sys/types.h>
8933 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8936 #include <sys/time.h>
8939 #include <sys/select.h>
8944 Select_fd_set_t readfds;
8945 Select_fd_set_t writefds;
8946 Select_fd_set_t exceptfds;
8947 struct timeval timeout;
8948 select(width, readfds, writefds, exceptfds, &timeout);
8952 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8954 echo "Your system uses $xxx for the arguments to select." >&4
8955 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8957 echo "Your system uses $yyy for the arguments to select." >&4
8959 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8966 *) selecttype='int *'
8970 : Trace out the files included by signal.h, then look for SIGxxx names.
8971 : Remove SIGARRAYSIZE used by HPUX.
8972 : Remove SIGTYP void lines used by OS2.
8973 xxx=`echo '#include <signal.h>' |
8974 $cppstdin $cppminus $cppflags 2>/dev/null |
8975 $grep '^[ ]*#.*include' |
8976 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8977 : Check this list of files to be sure we have parsed the cpp output ok.
8978 : This will also avoid potentially non-existent files, such
8981 for xx in $xxx /dev/null ; do
8982 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8984 : If we have found no files, at least try signal.h
8986 '') xxxfiles=`./findhdr signal.h` ;;
8989 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8990 print substr($2, 4, 20)
8992 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8993 print substr($3, 4, 20)
8995 : Append some common names just in case the awk scan failed.
8996 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8997 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8998 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8999 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
9000 : generate a few handy files for later
9001 $cat > signal.c <<'EOP'
9002 #include <sys/types.h>
9006 /* Strange style to avoid deeply-nested #if/#else/#endif */
9009 # define NSIG (_NSIG)
9015 # define NSIG (SIGMAX+1)
9021 # define NSIG (SIG_MAX+1)
9027 # define NSIG (MAXSIG+1)
9033 # define NSIG (MAX_SIG+1)
9038 # ifdef SIGARRAYSIZE
9039 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
9045 # define NSIG (_sys_nsig) /* Solaris 2.5 */
9049 /* Default to some arbitrary number that's big enough to get most
9050 of the common signals.
9056 printf("NSIG %d\n", NSIG);
9059 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
9061 printf "#ifdef SIG"; printf $1; printf "\n"
9062 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
9063 printf $1; printf ");\n"
9070 $cat >signal.awk <<'EOP'
9072 $1 ~ /^NSIG$/ { nsig = $2 }
9073 ($1 !~ /^NSIG$/) && (NF == 2) {
9074 if ($2 > maxsig) { maxsig = $2 }
9076 dup_name[ndups] = $1
9087 if (nsig == 0) { nsig = maxsig + 1 }
9088 for (n = 1; n < nsig; n++) {
9090 printf("%s %d\n", sig_name[n], sig_num[n])
9093 printf("NUM%d %d\n", n, n)
9096 for (n = 0; n < ndups; n++) {
9097 printf("%s %d\n", dup_name[n], dup_num[n])
9101 $cat >signal_cmd <<EOS
9103 $test -s signal.lst && exit 0
9104 if $cc $ccflags $ldflags signal.c -o signal >/dev/null 2>&1; then
9105 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
9107 echo "(I can't seem be able to compile the test program -- Guessing)"
9108 echo 'kill -l' >signal
9109 set X \`csh -f <signal\`
9113 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
9115 echo \$@ | $tr ' ' '\012' | \
9116 $awk '{ printf \$1; printf " %d\n", ++s; }' >signal.lst
9118 $rm -f signal.c signal signal.o
9120 chmod a+x signal_cmd
9121 $eunicefix signal_cmd
9123 : generate list of signal names
9133 echo "Generating a list of signal names and numbers..." >&4
9135 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
9136 sig_name="ZERO $sig_name"
9137 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
9138 sig_num="0 $sig_num"
9141 echo "The following signals are available:"
9143 echo $sig_name | $awk \
9144 'BEGIN { linelen = 0 }
9146 for (i = 1; i <= NF; i++) {
9148 linelen = linelen + length(name)
9151 linelen = length(name)
9157 $rm -f signal signal.c signal.awk signal.lst signal_cmd
9159 : see what type is used for size_t
9160 set size_t sizetype 'unsigned int' stdio.h sys/types.h
9164 rp="What type is used for the length parameter for string functions?"
9168 : see what type is used for signed size_t
9169 set ssize_t ssizetype int stdio.h sys/types.h
9172 $cat > ssize.c <<EOM
9174 #include <sys/types.h>
9175 #define Size_t $sizetype
9176 #define SSize_t $dflt
9179 if (sizeof(Size_t) == sizeof(SSize_t))
9181 else if (sizeof(Size_t) == sizeof(int))
9190 # If $libs contains -lsfio, and sfio is mis-configured, then it
9191 # sometimes (apparently) runs and exits with a 0 status, but with no
9192 # output!. Thus we check with test -s whether we actually got any
9193 # output. I think it has to do with sfio's use of _exit vs. exit,
9194 # but I don't know for sure. --Andy Dougherty 1/27/97.
9195 if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
9196 ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
9197 ssizetype=`$cat ssize.out`
9198 echo "I'll be using $ssizetype for functions returning a byte count." >&4
9202 Help! I can't compile and run the ssize_t test program: please enlighten me!
9203 (This is probably a misconfiguration in your system or libraries, and
9204 you really ought to fix it. Still, I'll try anyway.)
9206 I need a type that is the same size as $sizetype, but is guaranteed to
9207 be signed. Common values are ssize_t, int and long.
9210 rp="What signed type is the same size as $sizetype?"
9214 $rm -f ssize ssize.[co] ssize.out
9216 : see if this is a netdb.h system
9220 : check for type of arguments to gethostbyaddr. This will only really
9221 : work if the system supports prototypes and provides one for
9223 case "$d_gethbadd" in
9225 if test "X$gethbadd_addr_type" = X -o "X$gethbadd_alen_type" = X; then
9228 Checking to see what type of arguments are expected by gethostbyaddr().
9231 #include <sys/types.h>
9235 #$d_socket HAS_SOCKET
9236 #$d_socket HAS_SOCKET
9238 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9241 #include <netinet/in.h>
9249 #define Size_t $sizetype
9252 Gethbadd_addr_t addr;
9253 Gethbadd_alen_t alen;
9254 struct hostent* hent;
9256 extern struct hostent *gethostbyaddr(const Gethbadd_addr_t, Gethbadd_alen_t, int);
9258 alen = sizeof(struct in_addr);
9259 addr = (Gethbadd_addr_t)malloc(alen);
9260 /* We do not execute this so the contents of the addr matter not. */
9261 hent = gethostbyaddr(addr, alen, AF_INET);
9266 for xxx in "void *" "char *"; do
9267 for yyy in Size_t int; do
9268 if $cc $ccflags -c -DGethbadd_addr_t="$xxx" -DGethbadd_alen_t="$yyy" try.c >/dev/null 2>&1 ; then
9269 gethbadd_addr_type="$xxx"
9270 gethbadd_alen_type="$yyy"
9271 echo "Your system uses $xxx for the 1st argument to gethostbyaddr." >&4
9272 echo "and the the 2nd argument to gethostbyaddr is $yyy." >&4
9276 test "X$gethbadd_addr_type" != X && break
9278 if test "X$gethbadd_addr_type" = X; then
9279 rp='What is the type for the 1st argument to gethostbyaddr?'
9282 gethbadd_addr_type="$ans"
9284 # Remove the "const" if needed.
9285 gethbadd_addr_type=`echo $gethbadd_addr_type | sed 's/^const //'`
9287 rp='What is the type for the 2nd argument to gethostbyaddr ?'
9290 gethbadd_alen_type="$ans"
9295 *) gethbadd_addr_type='void *'
9296 gethbadd_alen_type='Size_t'
9300 : check for type of arguments to getnetbyaddr. This will only really
9301 : work if the system supports prototypes and provides one for
9303 case "$d_getnbadd" in
9305 if test "X$getnbadd_addr_type" = X -o "X$getnbadd_alen_type" = X; then
9308 Checking to see what type of arguments are expected by getnetbyaddr().
9313 #$d_socket HAS_SOCKET
9314 #$d_socket HAS_SOCKET
9315 #include <sys/types.h>
9317 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9320 #include <netinet/in.h>
9328 struct netent* nent;
9330 extern struct netent *getnetbyaddr(Getnbadd_net_t, int);
9332 /* We do not execute this so the contents of the net matter not. */
9333 nent = getnetbyaddr(net, AF_INET);
9338 for xxx in in_addr_t long int; do
9339 if $cc $ccflags -c -DGetnbadd_net_t="$xxx" try.c >/dev/null 2>&1 ; then
9340 getnbadd_net_type="$xxx"
9341 echo "Your system uses $xxx for the 1st argument to getnetbyaddr." >&4
9345 if test "X$getnbadd_net_type" = X; then
9346 rp='What is the type for the 1st argument to getnetbyaddr?'
9349 getnbadd_net_type="$ans"
9354 *) getnbadd_net_type='long'
9358 : see what type of char stdio uses.
9360 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9361 echo "Your stdio uses unsigned chars." >&4
9362 stdchar="unsigned char"
9364 echo "Your stdio uses signed chars." >&4
9368 : see if time exists
9370 if set time val -f d_time; eval $csym; $val; then
9371 echo 'time() found.' >&4
9373 set time_t timetype long stdio.h sys/types.h
9377 rp="What type is returned by time() on this system?"
9381 echo 'time() not found, hope that will do.' >&4
9388 : see what type uids are declared as in the kernel
9389 set uid_t uidtype xxx stdio.h sys/types.h
9393 xxx=`./findhdr sys/user.h`
9394 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
9396 unsigned) dflt="$1 $2" ;;
9400 *) dflt="$uidtype";;
9403 rp="What is the type for user ids returned by getuid()?"
9407 : see if dbm.h is available
9408 : see if dbmclose exists
9409 set dbmclose d_dbmclose
9412 case "$d_dbmclose" in
9422 *) set rpcsvc/dbm.h i_rpcsvcdbm
9427 *) echo "We won't be including <dbm.h>"
9437 : see if this is a sys/file.h system
9442 : do we need to include sys/file.h ?
9448 echo "We'll be including <sys/file.h>." >&4
9451 echo "We won't be including <sys/file.h>." >&4
9461 : see if fcntl.h is there
9466 : see if we can include fcntl.h
9472 echo "We'll be including <fcntl.h>." >&4
9476 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9478 echo "We won't be including <fcntl.h>." >&4
9490 : see if this is an grp system
9494 : see if locale.h is available
9495 set locale.h i_locale
9498 : see if this is a math.h system
9502 : see if ndbm.h is available
9507 : see if dbm_open exists
9508 set dbm_open d_dbm_open
9510 case "$d_dbm_open" in
9513 echo "We won't be including <ndbm.h>"
9522 : see if net/errno.h is available
9527 : Unfortunately, it causes problems on some systems. Arrgh.
9533 #include <net/errno.h>
9539 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9540 echo "We'll be including <net/errno.h>." >&4
9542 echo "We won't be including <net/errno.h>." >&4
9551 : get C preprocessor symbols handy
9553 $echo $n "Hmm... $c"
9554 echo $al | $tr ' ' '\012' >Cppsym.know
9566 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9568 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9571 unknown="\$unknown \$sym"
9581 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9583 exit 0; _ _ _ _\1\\ \1\\
9586 echo "exit 1; _ _ _" >>Cppsym\$\$
9587 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9589 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9595 $rm -f Cppsym\$\$ Cppsym2\$\$
9600 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9602 : now check the C compiler for additional symbols
9608 for i in \`$cc -v -c tmp.c 2>&1\`
9611 -D*) echo "\$i" | $sed 's/^-D//';;
9612 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9619 ./ccsym | $sort | $uniq >ccsym.raw
9620 $awk '/\=/ { print $0; next }
9621 { print $0"=1" }' ccsym.raw >ccsym.list
9622 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9623 $comm -13 ccsym.true ccsym.list >ccsym.own
9624 $comm -12 ccsym.true ccsym.list >ccsym.com
9625 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9628 if $test -z ccsym.raw; then
9629 echo "Your C compiler doesn't seem to define any symbol!" >&4
9631 echo "However, your C preprocessor defines the following ones:"
9634 if $test -s ccsym.com; then
9635 echo "Your C compiler and pre-processor define these symbols:"
9636 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9639 $test "$silent" || sleep 1
9641 if $test -s ccsym.cpp; then
9642 $test "$also" && echo " "
9643 echo "Your C pre-processor ${also}defines the following $symbols:"
9644 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9646 $test "$silent" || sleep 1
9648 if $test -s ccsym.own; then
9649 $test "$also" && echo " "
9650 echo "Your C compiler ${also}defines the following cpp variables:"
9651 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9652 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9653 $test "$silent" || sleep 1
9658 : see if this is a termio system
9662 if $test `./findhdr termios.h`; then
9663 set tcsetattr i_termios
9669 "$define") echo "You have POSIX termios.h... good!" >&4;;
9670 *) if ./Cppsym pyr; then
9671 case "`/bin/universe`" in
9672 ucb) if $test `./findhdr sgtty.h`; then
9674 echo "<sgtty.h> found." >&4
9676 echo "System is pyramid with BSD universe."
9677 echo "<sgtty.h> not found--you could have problems." >&4
9679 *) if $test `./findhdr termio.h`; then
9681 echo "<termio.h> found." >&4
9683 echo "System is pyramid with USG universe."
9684 echo "<termio.h> not found--you could have problems." >&4
9688 if $test `./findhdr termio.h`; then
9689 echo "<termio.h> found." >&4
9691 elif $test `./findhdr sgtty.h`; then
9692 echo "<sgtty.h> found." >&4
9695 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9698 if $test `./findhdr sgtty.h`; then
9699 echo "<sgtty.h> found." >&4
9701 elif $test `./findhdr termio.h`; then
9702 echo "<termio.h> found." >&4
9705 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9709 set i_termio; eval $setvar
9710 val=$val2; set i_sgtty; eval $setvar
9711 val=$val3; set i_termios; eval $setvar
9713 : see if stdarg is available
9715 if $test `./findhdr stdarg.h`; then
9716 echo "<stdarg.h> found." >&4
9719 echo "<stdarg.h> NOT found." >&4
9723 : see if varags is available
9725 if $test `./findhdr varargs.h`; then
9726 echo "<varargs.h> found." >&4
9728 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9731 : set up the varargs testing programs
9732 $cat > varargs.c <<EOP
9737 #include <varargs.h>
9755 p = va_arg(ap, char *);
9760 $cat > varargs <<EOP
9762 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9771 : now check which varargs header should be included
9776 if `./varargs I_STDARG`; then
9778 elif `./varargs I_VARARGS`; then
9783 if `./varargs I_VARARGS`; then
9790 echo "I could not find the definition for va_dcl... You have problems..." >&4
9791 val="$undef"; set i_stdarg; eval $setvar
9792 val="$undef"; set i_varargs; eval $setvar
9799 val="$define"; set i_stdarg; eval $setvar
9800 val="$undef"; set i_varargs; eval $setvar
9803 val="$undef"; set i_stdarg; eval $setvar
9804 val="$define"; set i_varargs; eval $setvar
9807 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9811 : see if stddef is available
9812 set stddef.h i_stddef
9815 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9816 set sys/filio.h i_sysfilio
9819 if $test `./findhdr sys/ioctl.h`; then
9821 echo '<sys/ioctl.h> found.' >&4
9824 if $test $i_sysfilio = "$define"; then
9825 echo '<sys/ioctl.h> NOT found.' >&4
9827 $test $i_sgtty = "$define" && xxx="sgtty.h"
9828 $test $i_termio = "$define" && xxx="termio.h"
9829 $test $i_termios = "$define" && xxx="termios.h"
9830 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9836 : see if this is a sys/param system
9837 set sys/param.h i_sysparam
9840 : see if sys/resource.h has to be included
9841 set sys/resource.h i_sysresrc
9844 : see if sys/stat.h is available
9845 set sys/stat.h i_sysstat
9848 : see if sys/types.h has to be included
9849 set sys/types.h i_systypes
9852 : see if this is a sys/un.h system
9853 set sys/un.h i_sysun
9856 : see if this is a syswait system
9857 set sys/wait.h i_syswait
9860 : see if this is an utime system
9864 : see if this is a values.h system
9865 set values.h i_values
9868 : see if this is a vfork system
9879 : see if gdbm.h is available
9884 : see if gdbm_open exists
9885 set gdbm_open d_gdbm_open
9887 case "$d_gdbm_open" in
9890 echo "We won't be including <gdbm.h>"
9900 echo "Looking for extensions..." >&4
9902 : If we are using the old config.sh, known_extensions may contain
9903 : old or inaccurate or duplicate values.
9905 : We do not use find because it might not be available.
9906 : We do not just use MANIFEST because the user may have dropped
9907 : some additional extensions into the source tree and expect them
9912 *) if $test -f $xxx/$xxx.xs; then
9913 known_extensions="$known_extensions $xxx"
9915 if $test -d $xxx; then
9918 if $test -f $yyy/$yyy.xs; then
9919 known_extensions="$known_extensions $xxx/$yyy"
9927 set X $known_extensions
9929 known_extensions="$*"
9932 : Now see which are supported on this system.
9934 for xxx in $known_extensions ; do
9936 DB_File) case "$i_db" in
9937 $define) avail_ext="$avail_ext $xxx" ;;
9940 GDBM_File) case "$i_gdbm" in
9941 $define) avail_ext="$avail_ext $xxx" ;;
9944 NDBM_File) case "$i_ndbm" in
9945 $define) avail_ext="$avail_ext $xxx" ;;
9948 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9949 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9952 POSIX) case "$useposix" in
9953 true|define|y) avail_ext="$avail_ext $xxx" ;;
9956 Opcode) case "$useopcode" in
9957 true|define|y) avail_ext="$avail_ext $xxx" ;;
9960 Socket) case "$d_socket" in
9961 $define) avail_ext="$avail_ext $xxx" ;;
9964 Thread) case "$usethreads" in
9965 $define) avail_ext="$avail_ext $xxx" ;;
9968 *) avail_ext="$avail_ext $xxx"
9980 A number of extensions are supplied with $package. You may choose to
9981 compile these extensions for dynamic loading (the default), compile
9982 them into the $package executable (static loading), or not include
9983 them at all. Answer "none" to include no extensions.
9986 case "$dynamic_ext" in
9987 '') dflt="$avail_ext" ;;
9988 *) dflt="$dynamic_ext" ;;
9993 rp="What extensions do you wish to load dynamically?"
9996 none) dynamic_ext=' ' ;;
9997 *) dynamic_ext="$ans" ;;
10000 case "$static_ext" in
10002 : Exclude those already listed in dynamic linking
10004 for xxx in $avail_ext; do
10005 case " $dynamic_ext " in
10007 *) dflt="$dflt $xxx" ;;
10014 *) dflt="$static_ext"
10021 rp="What extensions do you wish to load statically?"
10024 none) static_ext=' ' ;;
10025 *) static_ext="$ans" ;;
10030 A number of extensions are supplied with $package. Answer "none"
10031 to include no extensions.
10034 case "$static_ext" in
10035 '') dflt="$avail_ext" ;;
10036 *) dflt="$static_ext" ;;
10042 rp="What extensions do you wish to include?"
10045 none) static_ext=' ' ;;
10046 *) static_ext="$ans" ;;
10051 set X $dynamic_ext $static_ext
10055 : Remove build directory name from cppstdin so it can be used from
10056 : either the present location or the final installed location.
10058 : Get out of the UU directory to get correct path name.
10060 case "$cppstdin" in
10062 echo "Stripping down cppstdin path name"
10068 : end of configuration questions
10070 echo "End of configuration questions."
10073 : back to where it started
10074 if test -d ../UU; then
10078 : configuration may be patched via a 'config.over' file
10079 if $test -f config.over; then
10082 rp='I see a config.over file. Do you wish to load it?'
10085 n*) echo "OK, I'll ignore it.";;
10087 echo "Configuration override changes have been loaded."
10092 : in case they want portability, strip down executable paths
10093 case "$d_portable" in
10096 echo "Stripping down executable paths..." >&4
10097 for file in $loclist $trylist; do
10098 eval $file="\$file"
10103 : create config.sh file
10105 echo "Creating config.sh..." >&4
10106 $spitshell <<EOT >config.sh
10109 # This file was produced by running the Configure script. It holds all
10110 # the definitions figured out by Configure. Should you modify any of
10111 # these values, do not forget to propagate your changes by running
10112 # "Configure -S"; or, equivalently, you may run each .SH file yourself.
10115 # Configuration time: $cf_time
10116 # Configured by: $cf_by
10117 # Target system: $myuname
10127 Revision='$Revision'
10131 alignbytes='$alignbytes'
10132 aphostname='$aphostname'
10135 archlibexp='$archlibexp'
10136 archname='$archname'
10137 archobjs='$archobjs'
10142 bincompat3='$bincompat3'
10146 byteorder='$byteorder'
10148 castflags='$castflags'
10151 cccdlflags='$cccdlflags'
10152 ccdlflags='$ccdlflags'
10155 cf_email='$cf_email'
10160 clocktype='$clocktype'
10162 compress='$compress'
10163 contains='$contains'
10167 cpp_stuff='$cpp_stuff'
10168 cppflags='$cppflags'
10170 cppminus='$cppminus'
10172 cppstdin='$cppstdin'
10173 cryptlib='$cryptlib'
10175 d_Gconvert='$d_Gconvert'
10176 d_access='$d_access'
10178 d_archlib='$d_archlib'
10179 d_attribut='$d_attribut'
10182 d_bincompat3='$d_bincompat3'
10184 d_bsdgetpgrp='$d_bsdgetpgrp'
10185 d_bsdpgrp='$d_bsdpgrp'
10186 d_bsdsetpgrp='$d_bsdsetpgrp'
10188 d_casti32='$d_casti32'
10189 d_castneg='$d_castneg'
10190 d_charvspr='$d_charvspr'
10192 d_chroot='$d_chroot'
10193 d_chsize='$d_chsize'
10194 d_closedir='$d_closedir'
10198 d_cuserid='$d_cuserid'
10199 d_dbl_dig='$d_dbl_dig'
10200 d_difftime='$d_difftime'
10201 d_dirnamlen='$d_dirnamlen'
10202 d_dlerror='$d_dlerror'
10203 d_dlopen='$d_dlopen'
10204 d_dlsymun='$d_dlsymun'
10205 d_dosuid='$d_dosuid'
10207 d_eofnblk='$d_eofnblk'
10208 d_eunice='$d_eunice'
10209 d_fchmod='$d_fchmod'
10210 d_fchown='$d_fchown'
10212 d_fd_macros='$d_fd_macros'
10213 d_fd_set='$d_fd_set'
10214 d_fds_bits='$d_fds_bits'
10215 d_fgetpos='$d_fgetpos'
10216 d_flexfnam='$d_flexfnam'
10219 d_fpathconf='$d_fpathconf'
10220 d_fsetpos='$d_fsetpos'
10222 d_getgrps='$d_getgrps'
10223 d_setgrps='$d_setgrps'
10224 d_gethbadd='$d_gethbadd'
10225 gethbadd_addr_type='$gethbadd_addr_type'
10226 gethbadd_alen_type='$gethbadd_alen_type'
10227 d_gethent='$d_gethent'
10228 d_gethname='$d_gethname'
10229 d_getlogin='$d_getlogin'
10230 d_getnbadd='$d_getnbadd'
10231 getnbadd_net_type='$getnbadd_net_type'
10232 d_getpgid='$d_getpgid'
10233 d_getpgrp2='$d_getpgrp2'
10234 d_getpgrp='$d_getpgrp'
10235 d_getppid='$d_getppid'
10236 d_getprior='$d_getprior'
10237 d_gettimeod='$d_gettimeod'
10238 d_gnulibc='$d_gnulibc'
10241 d_inetaton='$d_inetaton'
10242 d_isascii='$d_isascii'
10243 d_killpg='$d_killpg'
10245 d_locconv='$d_locconv'
10249 d_mbstowcs='$d_mbstowcs'
10250 d_mbtowc='$d_mbtowc'
10251 d_memcmp='$d_memcmp'
10252 d_memcpy='$d_memcpy'
10253 d_memmove='$d_memmove'
10254 d_memset='$d_memset'
10256 d_mkfifo='$d_mkfifo'
10257 d_mktime='$d_mktime'
10259 d_msgctl='$d_msgctl'
10260 d_msgget='$d_msgget'
10261 d_msgrcv='$d_msgrcv'
10262 d_msgsnd='$d_msgsnd'
10263 d_mymalloc='$d_mymalloc'
10265 d_oldarchlib='$d_oldarchlib'
10266 d_oldsock='$d_oldsock'
10268 d_pathconf='$d_pathconf'
10270 d_phostname='$d_phostname'
10273 d_portable='$d_portable'
10275 d_pwchange='$d_pwchange'
10276 d_pwclass='$d_pwclass'
10277 d_pwcomment='$d_pwcomment'
10278 d_pwexpire='$d_pwexpire'
10279 d_pwquota='$d_pwquota'
10280 d_readdir='$d_readdir'
10281 d_readlink='$d_readlink'
10282 d_rename='$d_rename'
10283 d_rewinddir='$d_rewinddir'
10285 d_safebcpy='$d_safebcpy'
10286 d_safemcpy='$d_safemcpy'
10287 d_sanemcmp='$d_sanemcmp'
10288 d_seekdir='$d_seekdir'
10289 d_select='$d_select'
10291 d_semctl='$d_semctl'
10292 d_semget='$d_semget'
10294 d_setegid='$d_setegid'
10295 d_seteuid='$d_seteuid'
10296 d_setlinebuf='$d_setlinebuf'
10297 d_setlocale='$d_setlocale'
10298 d_setpgid='$d_setpgid'
10299 d_setpgrp2='$d_setpgrp2'
10300 d_setpgrp='$d_setpgrp'
10301 d_setprior='$d_setprior'
10302 d_setregid='$d_setregid'
10303 d_setresgid='$d_setresgid'
10304 d_setresuid='$d_setresuid'
10305 d_setreuid='$d_setreuid'
10306 d_setrgid='$d_setrgid'
10307 d_setruid='$d_setruid'
10308 d_setsid='$d_setsid'
10312 d_shmatprototype='$d_shmatprototype'
10313 d_shmctl='$d_shmctl'
10315 d_shmget='$d_shmget'
10316 d_sigaction='$d_sigaction'
10317 d_sigsetjmp='$d_sigsetjmp'
10318 d_socket='$d_socket'
10319 d_sockpair='$d_sockpair'
10320 d_statblks='$d_statblks'
10321 d_stdio_cnt_lval='$d_stdio_cnt_lval'
10322 d_stdio_ptr_lval='$d_stdio_ptr_lval'
10323 d_stdiobase='$d_stdiobase'
10324 d_stdstdio='$d_stdstdio'
10325 d_strchr='$d_strchr'
10326 d_strcoll='$d_strcoll'
10327 d_strctcpy='$d_strctcpy'
10328 d_strerrm='$d_strerrm'
10329 d_strerror='$d_strerror'
10330 d_strtod='$d_strtod'
10331 d_strtol='$d_strtol'
10332 d_strtoul='$d_strtoul'
10333 d_strxfrm='$d_strxfrm'
10334 d_suidsafe='$d_suidsafe'
10335 d_symlink='$d_symlink'
10336 d_syscall='$d_syscall'
10337 d_sysconf='$d_sysconf'
10338 d_sysernlst='$d_sysernlst'
10339 d_syserrlst='$d_syserrlst'
10340 d_system='$d_system'
10341 d_tcgetpgrp='$d_tcgetpgrp'
10342 d_tcsetpgrp='$d_tcsetpgrp'
10343 d_telldir='$d_telldir'
10346 d_truncate='$d_truncate'
10347 d_tzname='$d_tzname'
10351 d_void_closedir='$d_void_closedir'
10352 d_voidsig='$d_voidsig'
10353 d_voidtty='$d_voidtty'
10354 d_volatile='$d_volatile'
10355 d_vprintf='$d_vprintf'
10357 d_waitpid='$d_waitpid'
10358 d_wcstombs='$d_wcstombs'
10359 d_wctomb='$d_wctomb'
10362 db_hashtype='$db_hashtype'
10363 db_prefixtype='$db_prefixtype'
10364 defvoidused='$defvoidused'
10365 direntrytype='$direntrytype'
10368 dynamic_ext='$dynamic_ext'
10373 eunicefix='$eunicefix'
10376 extensions='$extensions'
10378 firstmakefile='$firstmakefile'
10380 fpostype='$fpostype'
10381 freetype='$freetype'
10382 full_csh='$full_csh'
10383 full_sed='$full_sed'
10385 gccversion='$gccversion'
10389 groupcat='$groupcat'
10390 groupstype='$groupstype'
10393 h_sysfile='$h_sysfile'
10397 i_bsdioctl='$i_bsdioctl'
10400 i_dirent='$i_dirent'
10407 i_limits='$i_limits'
10408 i_locale='$i_locale'
10409 i_malloc='$i_malloc'
10411 i_memory='$i_memory'
10414 i_neterrno='$i_neterrno'
10417 i_rpcsvcdbm='$i_rpcsvcdbm'
10420 i_stdarg='$i_stdarg'
10421 i_stddef='$i_stddef'
10422 i_stdlib='$i_stdlib'
10423 i_string='$i_string'
10424 i_sysdir='$i_sysdir'
10425 i_sysfile='$i_sysfile'
10426 i_sysfilio='$i_sysfilio'
10428 i_sysioctl='$i_sysioctl'
10429 i_sysndir='$i_sysndir'
10430 i_sysparam='$i_sysparam'
10431 i_sysresrc='$i_sysresrc'
10432 i_sysselct='$i_sysselct'
10433 i_syssockio='$i_syssockio'
10434 i_sysstat='$i_sysstat'
10435 i_systime='$i_systime'
10436 i_systimek='$i_systimek'
10437 i_systimes='$i_systimes'
10438 i_systypes='$i_systypes'
10440 i_syswait='$i_syswait'
10441 i_termio='$i_termio'
10442 i_termios='$i_termios'
10444 i_unistd='$i_unistd'
10446 i_values='$i_values'
10447 i_varargs='$i_varargs'
10448 i_varhdr='$i_varhdr'
10452 installarchlib='$installarchlib'
10453 installbin='$installbin'
10454 installman1dir='$installman1dir'
10455 installman3dir='$installman3dir'
10456 installprivlib='$installprivlib'
10457 installscript='$installscript'
10458 installsitearch='$installsitearch'
10459 installsitelib='$installsitelib'
10461 known_extensions='$known_extensions'
10465 lddlflags='$lddlflags'
10473 libswanted='$libswanted'
10479 locincpth='$locincpth'
10480 loclibpth='$loclibpth'
10481 longsize='$longsize'
10485 lseektype='$lseektype'
10489 make_set_make='$make_set_make'
10490 mallocobj='$mallocobj'
10491 mallocsrc='$mallocsrc'
10492 malloctype='$malloctype'
10494 man1direxp='$man1direxp'
10497 man3direxp='$man3direxp'
10501 mips_type='$mips_type'
10504 modetype='$modetype'
10507 myarchname='$myarchname'
10508 mydomain='$mydomain'
10509 myhostname='$myhostname'
10513 nm_so_opt='$nm_so_opt'
10515 o_nonblock='$o_nonblock'
10517 oldarchlib='$oldarchlib'
10518 oldarchlibexp='$oldarchlibexp'
10519 optimize='$optimize'
10520 orderlib='$orderlib'
10526 patchlevel='$patchlevel'
10527 path_sep='$path_sep'
10529 perladmin='$perladmin'
10530 perlpath='$perlpath'
10532 phostname='$phostname'
10537 prefixexp='$prefixexp'
10539 privlibexp='$privlibexp'
10540 prototype='$prototype'
10541 randbits='$randbits'
10543 rd_nodata='$rd_nodata'
10547 scriptdir='$scriptdir'
10548 scriptdirexp='$scriptdirexp'
10550 selecttype='$selecttype'
10551 sendmail='$sendmail'
10554 sharpbang='$sharpbang'
10555 shmattype='$shmattype'
10556 shortsize='$shortsize'
10559 sig_name='$sig_name'
10561 signal_t='$signal_t'
10562 sitearch='$sitearch'
10563 sitearchexp='$sitearchexp'
10565 sitelibexp='$sitelibexp'
10566 sizetype='$sizetype'
10571 sockethdr='$sockethdr'
10572 socketlib='$socketlib'
10574 spackage='$spackage'
10575 spitshell='$spitshell'
10577 ssizetype='$ssizetype'
10578 startperl='$startperl'
10580 static_ext='$static_ext'
10582 stdio_base='$stdio_base'
10583 stdio_bufsiz='$stdio_bufsiz'
10584 stdio_cnt='$stdio_cnt'
10585 stdio_ptr='$stdio_ptr'
10588 subversion='$subversion'
10594 timeincl='$timeincl'
10595 timetype='$timetype'
10603 usemymalloc='$usemymalloc'
10605 useopcode='$useopcode'
10606 useperlio='$useperlio'
10607 useposix='$useposix'
10609 useshrplib='$useshrplib'
10610 usevfork='$usevfork'
10614 voidflags='$voidflags'
10620 : add special variables
10621 $test -f patchlevel.h && \
10622 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10623 echo "CONFIG=true" >>config.sh
10625 : propagate old symbols
10626 if $test -f UU/config.sh; then
10627 <UU/config.sh sort | uniq >UU/oldconfig.sh
10628 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10629 sort | uniq -u >UU/oldsyms
10630 set X `cat UU/oldsyms`
10636 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10638 echo "# Variables propagated from previous config.sh file." >>config.sh
10639 for sym in `cat UU/oldsyms`; do
10640 echo " Propagating $hint variable "'$'"$sym..."
10641 eval 'tmp="$'"${sym}"'"'
10643 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10649 : Finish up by extracting the .SH files
10663 If you'd like to make any changes to the config.sh file before I begin
10664 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10667 rp="Press return or use a shell escape to edit config.sh:"
10672 *) : in case they cannot read
10673 sh 1>&4 -c "$ans";;
10678 : if this fails, just run all the .SH files by hand
10685 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10692 Now you need to generate make dependencies by running "make depend".
10693 You might prefer to run it in background: "make depend > makedepend.out &"
10694 It can take a while, so you might not want to run it right now.
10699 rp="Run make depend now?"
10703 make depend && echo "Now you must run a make."
10706 echo "You must run 'make depend' then 'make'."
10709 elif test -f [Mm]akefile; then
10711 echo "Now you must run a make."
10716 $rm -f kit*isdone ark*isdone