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
638 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
641 : We must find out about Eunice early
643 if test -f /etc/unixtovms; then
644 eunicefix=/etc/unixtovms
646 if test -f /etc/unixtovms.exe; then
647 eunicefix=/etc/unixtovms.exe
650 : list of known cpp symbols, sorted alphabetically
651 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
652 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
653 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
654 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
655 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
656 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
657 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
658 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
659 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
660 al="$al VMS Xenix286"
661 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
662 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
663 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
664 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
665 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
666 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
667 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
668 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
669 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
670 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
671 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
672 al="$al __SVR4_2__ __UMAXV__"
673 al="$al ____386BSD____ __alpha __alpha__ __amiga"
674 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
675 al="$al __host_mips__"
676 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
677 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
678 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
679 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
680 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
681 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
682 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
683 al="$al __mc88100 __mc88100__ __mips __mips__"
684 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
685 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
686 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
687 al="$al _host_mips _mips _unix"
688 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
689 al="$al apollo ardent att386 att3b"
690 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
691 al="$al cadmus clipper concurrent convex cray ctix"
692 al="$al dmert encore gcos gcx gimpel gould"
693 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
694 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
695 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
696 al="$al i186 i286 i386 i486 i8086"
697 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
698 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
699 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
700 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
701 al="$al mc88000 mc88100 merlin mert mips mvs n16"
702 al="$al ncl_el ncl_mr"
703 al="$al news1500 news1700 news1800 news1900 news3700"
704 al="$al news700 news800 news900 ns16000 ns32000"
705 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
706 al="$al parisc pc532 pdp11 plexus posix pyr"
707 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
708 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
709 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
710 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
711 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
712 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
717 : default library list
719 : set useposix=false in your hint file to disable the POSIX extension.
721 : set useopcode=false in your hint file to disable the Opcode extension.
723 : Define several unixisms. These can be used in hint files.
725 : Extra object files, if any, needed on this platform.
727 : Possible local include directories to search.
728 : Set locincpth to "" in a hint file to defeat local include searches.
729 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
730 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
732 : no include file wanted by default
735 : change the next line if compiling for Xenix/286 on Xenix/386
736 xlibpth='/usr/lib/386 /lib/386'
738 : Possible local library directories to search.
739 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
740 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
742 : general looking path for locating libraries
743 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
744 glibpth="$glibpth /lib /usr/lib $xlibpth"
745 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
746 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
748 : Private path used by Configure to find libraries. Its value
749 : is prepended to libpth. This variable takes care of special
750 : machines, like the mips. Usually, it should be empty.
753 : full support for void wanted by default
756 : List of libraries we want.
757 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
758 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
759 libswanted="$libswanted ucb bsd BSD PW x"
760 : We probably want to search /usr/shlib before most other libraries.
761 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
762 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
763 glibpth="/usr/shlib $glibpth"
764 : Do not use vfork unless overridden by a hint file.
767 : Find the basic shell for Bourne shell scripts
770 : SYSTYPE is for some older MIPS systems.
771 : I do not know if it is still needed.
773 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
776 if test -f "$xxx"; then
779 : Build up a list and do a single loop so we can 'break' out.
780 pth=`echo $PATH | sed -e "s/$p_/ /g"`
781 for xxx in sh bash ksh pdksh ash; do
783 try="$try ${p}/${xxx}"
787 if test -f "$xxx"; then
789 echo "Your Bourne shell appears to be in $sh."
791 elif test -f "$xxx.exe"; then
793 echo "Hmm. Your Bourne shell appears to be in $sh."
803 $me: Fatal Error: I can't find a Bourne Shell anywhere.
804 Usually it's in /bin/sh. How did you even get this far?
805 Please contact me (Chip Salzenberg) at chip@perl.com and
806 we'll try to straigten this all out.
812 : see if sh knows # comments
813 if `$sh -c '#' >/dev/null 2>&1`; then
818 test -f $xcat || xcat=/usr/bin/cat
823 if test -s today; then
826 echo "#! $xcat" > try
830 if test -s today; then
833 echo "Okay, let's see if #! works on this system..."
834 echo "It's just a comment."
839 echo "Your $sh doesn't grok # comments--I will strip them later on."
842 echo "exec grep -v '^[ ]*#'" >spitshell
845 spitshell=`pwd`/spitshell
847 echo "I presume that if # doesn't work, #! won't work either!"
852 : figure out how to guarantee sh startup
854 '') startsh=${sharpbang}${sh} ;;
866 : echo "Yup, it does."
868 echo "Hmm. '$startsh' didn't work."
869 echo "You may have to fix up the shell scripts to make sure sh runs them."
873 : script used to extract .SH files with variable substitutions
877 cat >>extract <<'EOS'
879 echo "Doing variable substitutions on .SH files..."
880 if test -f MANIFEST; then
881 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
882 : Pick up possible extension manifests.
883 for dir in ext/* ; do
884 if test -f $dir/MANIFEST; then
885 xxx=`awk '{print $1}' < $dir/MANIFEST |
886 sed -n "/\.SH$/ s@^@$dir/@p"`
887 shlist="$shlist $xxx"
892 echo "(Looking for .SH files under the current directory.)"
893 set x `find . -name "*.SH" -print`
897 0) set x *.SH; shift;;
899 if test ! -f $1; then
905 dir=`expr X$file : 'X\(.*\)/'`
906 file=`expr X$file : 'X.*/\(.*\)'`
907 (cd $dir && . ./$file)
914 if test -f config_h.SH; then
915 if test ! -f config.h; then
916 : oops, they left it out of MANIFEST, probably, so do it anyway.
922 : produce awk script to parse command line options
923 cat >options.awk <<'EOF'
925 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
927 len = length(optstr);
928 for (i = 1; i <= len; i++) {
929 c = substr(optstr, i, 1);
930 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
941 if (substr(str, 1, 1) != "-") {
942 printf("'%s'\n", str);
946 for (i = 2; i <= len; i++) {
947 c = substr(str, i, 1);
949 printf("-%s\n", substr(str, i));
955 printf("'%s'\n", substr(str, i + 1));
968 : process the command line options
969 set X `for arg in "$@"; do echo "X$arg"; done |
970 sed -e s/X// | awk -f options.awk`
975 : set up default values
992 while test $# -gt 0; do
994 -d) shift; fastread=yes;;
995 -e) shift; alldone=cont;;
999 if test -r "$1"; then
1002 echo "$me: cannot read config file $1." >&2
1007 -h) shift; error=true;;
1008 -r) shift; reuseval=true;;
1009 -s) shift; silent=true;;
1010 -E) shift; alldone=exit;;
1011 -K) shift; knowitall=true;;
1012 -O) shift; override=true;;
1013 -S) shift; extractsh=true;;
1018 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1019 echo "$me: ignoring -D $1" >&2
1022 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1023 *) echo "$1='define'" >> optdef.sh;;
1030 *=) echo "$1" >> optdef.sh;;
1032 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1033 echo "$me: ignoring -U $1" >&2
1035 *) echo "$1='undef'" >> optdef.sh;;
1039 -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1042 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1050 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1051 [-U symbol] [-U symbol=]
1052 -d : use defaults for all answers.
1053 -e : go on without questioning past the production of config.sh.
1054 -f : specify an alternate default configuration file.
1055 -h : print this help message and exit (with an error status).
1056 -r : reuse C symbols value if possible (skips costly nm extraction).
1057 -s : silent mode, only echoes questions and essential information.
1058 -D : define symbol to have some value:
1059 -D symbol symbol gets the value 'define'
1060 -D symbol=value symbol gets the value 'value'
1061 -E : stop at the end of questions, after having produced config.sh.
1062 -K : do not use unless you know what you are doing.
1063 -O : let -D and -U override definitions from loaded configuration file.
1064 -S : perform variable substitutions on all .SH files (can mix with -f)
1065 -U : undefine symbol:
1066 -U symbol symbol gets the value 'undef'
1067 -U symbol= symbol gets completely empty
1068 -V : print version number and exit (with a zero status).
1076 true) exec 1>/dev/null;;
1079 : run the defines and the undefines, if any, but leave the file out there...
1083 case "$extractsh" in
1085 case "$config_sh" in
1086 '') config_sh='config.sh'; config='./config.sh';;
1087 /*) config="$config_sh";;
1088 *) config="./$config_sh";;
1091 echo "Fetching answers from $config_sh..."
1094 test "$override" && . ./optdef.sh
1105 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1106 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1107 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1108 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1109 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1112 : Eunice requires " " instead of "", can you believe it
1115 echo "Beginning of configuration questions for $package."
1117 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1119 : Some greps do not return status, grrr.
1120 echo "grimblepritz" >grimble
1121 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1123 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1129 : the following should work in any shell
1133 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1134 cat >contains <<'EOSS'
1135 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1140 : first determine how to suppress newline on echo command
1142 echo "Checking echo to see how to suppress newlines..."
1143 (echo "hi there\c" ; echo " ") >.echotmp
1144 if $contains c .echotmp >/dev/null 2>&1 ; then
1155 echo $n "The star should be here-->$c"
1159 : Now test for existence of everything in MANIFEST
1161 if test -f ../MANIFEST; then
1162 echo "First let's make sure your kit is complete. Checking..." >&4
1163 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1165 for filelist in x??; do
1166 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1168 if test -s missing; then
1172 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1174 You have the option of continuing the configuration process, despite the
1175 distinct possibility that your kit is damaged, by typing 'y'es. If you
1176 do, don't blame me if something goes wrong. I advise you to type 'n'o
1177 and contact the author (chip@perl.com).
1180 echo $n "Continue? [n] $c" >&4
1184 echo "Continuing..." >&4
1188 echo "ABORTING..." >&4
1193 echo "Looks good..." >&4
1196 echo "There is no MANIFEST file. I hope your kit is complete !"
1200 : compute the number of columns on the terminal for proper question formatting
1205 : set up the echo used in my read
1206 myecho="case \"\$xxxm\" in
1207 '') echo $n \"\$rp $c\" >&4;;
1209 '') echo $n \"[\$xxxm] $c\";;
1211 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1213 echo $n \"[\$xxxm] $c\" >&4
1215 echo $n \"\$rp [\$xxxm] $c\" >&4
1221 : now set up to do reads with possible shell escape and default assignment
1227 case "\$fastread" in
1228 yes) case "\$dflt" in
1231 case "\$silent-\$rp" in
1236 *) case "\$silent" in
1237 true) case "\$rp" in
1242 while expr "X\$ans" : "X!" >/dev/null; do
1246 aok=''; eval ans="\\"\$answ\\"" && aok=y
1251 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1256 echo "(OK, I'll run with -d after this question.)" >&4
1259 echo "*** Sorry, \$1 not supported yet." >&4
1271 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1281 echo "*** Substitution done -- please confirm."
1283 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1288 echo "*** Error -- try again."
1295 case "\$ans\$xxxm\$nostick" in
1307 : create .config dir to save info across Configure sessions
1308 test -d ../.config || mkdir ../.config
1309 cat >../.config/README <<EOF
1310 This directory created by Configure to save information that should
1311 persist across sessions.
1313 You may safely delete it if you wish.
1316 : general instructions
1319 user=`(logname) 2>/dev/null`
1321 user=`whoami 2>&1` ;;
1323 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1326 rp='Would you like to see the instructions?'
1337 This installation shell script will examine your system and ask you questions
1338 to determine how the perl5 package should be installed. If you get
1339 stuck on a question, you may use a ! shell escape to start a subshell or
1340 execute a command. Many of the questions will have default answers in square
1341 brackets; typing carriage return will give you the default.
1343 On some of the questions which ask for file or directory names you are allowed
1344 to use the ~name construct to specify the login directory belonging to "name",
1345 even if you don't have a shell which knows about that. Questions where this is
1346 allowed will be marked "(~name ok)".
1350 dflt='Type carriage return to continue'
1354 The prompter used in this script allows you to use shell variables and
1355 backticks in your answers. You may use $1, $2, etc... to refer to the words
1356 in the default answer, as if the default line was a set of arguments given to a
1357 script shell. This means you may also use $* to repeat the whole default line,
1358 so you do not have to re-type everything to add something to the default.
1360 Everytime there is a substitution, you will have to confirm. If there is an
1361 error (e.g. an unmatched backtick), the default answer will remain unchanged
1362 and you will be prompted again.
1364 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1365 the questions and use the computed defaults (or the previous answers if there
1366 was already a config.sh file). Type 'Configure -h' for a list of options.
1367 You may also start interactively and then answer '& -d' at any prompt to turn
1368 on the non-interactive behavior for the remainder of the execution.
1374 Much effort has been expended to ensure that this shell script will run on any
1375 Unix system. If despite that it blows up on yours, your best bet is to edit
1376 Configure and run it again. If you can't run Configure for some reason,
1377 you'll have to generate a config.sh file by hand. Whatever problems you
1378 have, let me (chip@perl.com) know how I blew it.
1380 This installation script affects things in two ways:
1382 1) it may do direct variable substitutions on some of the files included
1384 2) it builds a config.h file for inclusion in C programs. You may edit
1385 any of these files as the need arises after running this script.
1387 If you make a mistake on a question, there is no easy way to back up to it
1388 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1389 files. Configure will offer to let you do this before it runs the SH files.
1392 dflt='Type carriage return to continue'
1394 case "$firsttime" in
1395 true) echo $user >>../.config/instruct;;
1399 : find out where common programs are
1401 echo "Locating common programs..." >&4
1414 if test -d \$dir/\$thing; then
1420 for thisthing in \$dir/\$thing; do
1421 : just loop through to pick last item
1423 if test -f \$thisthing; then
1426 elif test -f \$dir/\$thing.exe; then
1427 : on Eunice apparently
1477 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1478 pth="$pth /lib /usr/lib"
1479 for file in $loclist; do
1480 xxx=`./loc $file $file $pth`
1485 echo $file is in $xxx.
1488 echo $file is in $xxx.
1491 echo "I don't know where '$file' is, and my life depends on it." >&4
1492 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1498 echo "Don't worry if any of the following aren't found..."
1500 for file in $trylist; do
1501 xxx=`./loc $file $file $pth`
1506 echo $file is in $xxx.
1509 echo $file is in $xxx.
1512 echo "I don't see $file out there, $say."
1519 echo "Substituting grep for egrep."
1525 echo "Substituting cp for ln."
1531 echo "Hopefully test is built into your sh."
1534 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1535 echo "Using the test built into your sh."
1543 echo "Hopefully echo is built into your sh."
1548 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1549 $echo $n "hi there$c" >foo1
1550 echo $n "hi there$c" >foo2
1551 if cmp foo1 foo2 >/dev/null 2>&1; then
1552 echo "They are compatible. In fact, they may be identical."
1559 They are not compatible! You are probably running ksh on a non-USG system.
1560 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1561 have echo built in and we may have to run some Bourne shell scripts. That
1562 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1565 $echo $n "The star should be here-->$c"
1572 : determine whether symbolic links are supported
1575 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1576 echo "Symbolic links are supported." >&4
1579 echo "Symbolic links are NOT supported." >&4
1584 : see whether [:lower:] and [:upper:] are supported character classes
1588 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1590 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1595 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1598 : set up the translation script tr, must be called with ./tr of course
1602 '[A-Z][a-z]') exec $tr '$up' '$low';;
1603 '[a-z][A-Z]') exec $tr '$low' '$up';;
1610 : Try to determine whether config.sh was made on this system
1611 case "$config_sh" in
1613 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1614 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1615 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1616 newmyuname="$myuname"
1618 case "$knowitall" in
1620 if test -f ../config.sh; then
1621 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1622 eval "`grep myuname= ../config.sh`"
1624 if test "X$myuname" = "X$newmyuname"; then
1632 : Get old answers from old config file if Configure was run on the
1633 : same system, otherwise use the hints.
1636 if test -f config.sh; then
1638 rp="I see a config.sh file. Shall I use it to set the defaults?"
1641 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1642 *) echo "Fetching default answers from your old config.sh file..." >&4
1650 : Older versions did not always set $sh. Catch re-use of such
1659 if test ! -f config.sh; then
1662 First time through, eh? I have some defaults handy for the following systems:
1665 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1667 : Half the following guesses are probably wrong... If you have better
1668 : tests or hints, please send them to chip@perl.com
1669 : The metaconfig authors would also appreciate a copy...
1670 $test -f /irix && osname=irix
1671 $test -f /xenix && osname=sco_xenix
1672 $test -f /dynix && osname=dynix
1673 $test -f /dnix && osname=dnix
1674 $test -f /lynx.os && osname=lynxos
1675 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1676 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1677 $test -f /bin/mips && /bin/mips && osname=mips
1678 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1679 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1680 $test -d /usr/apollo/bin && osname=apollo
1681 $test -f /etc/saf/_sactab && osname=svr4
1682 $test -d /usr/include/minix && osname=minix
1683 if $test -d /MachTen; then
1685 if $test -x /sbin/version; then
1686 osvers=`/sbin/version | $awk '{print $2}' |
1687 $sed -e 's/[A-Za-z]$//'`
1688 elif $test -x /usr/etc/version; then
1689 osvers=`/usr/etc/version | $awk '{print $2}' |
1690 $sed -e 's/[A-Za-z]$//'`
1695 if $test -f $uname; then
1703 umips) osname=umips ;;
1706 [23]100) osname=mips ;;
1707 next*) osname=next ;;
1709 if $test -f /etc/kconfig; then
1711 if test "$lns" = "ln -s"; then
1713 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1715 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1724 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1726 'not found') osvers="$4"."$3" ;;
1727 '<3240'|'<>3240') osvers=3.2.0 ;;
1728 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1729 '=3250'|'>3250') osvers=3.2.5 ;;
1733 *dc.osx) osname=dcosx
1739 domainos) osname=apollo
1745 dynixptx*) osname=dynixptx
1748 freebsd) osname=freebsd
1750 genix) osname=genix ;;
1755 *.10.*) osvers=10 ;;
1772 netbsd*) osname=netbsd
1775 news-os) osvers="$3"
1777 4*) osname=newsos4 ;;
1781 bsd386) osname=bsd386
1784 next*) osname=next ;;
1785 solaris) osname=solaris
1787 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1794 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1798 titanos) osname=titanos
1807 ultrix) osname=ultrix
1810 osf1|mls+) case "$5" in
1813 osvers=`echo "$3" | sed 's/^[vt]//'`
1815 hp*) osname=hp_osf1 ;;
1816 mips) osname=mips_osf1 ;;
1825 $2) case "$osname" in
1829 : svr4.x or possibly later
1839 if test -f /stand/boot ; then
1840 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1841 if test -n "$INITPROG" -a -f "$INITPROG"; then
1842 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1843 if test -n "$isesix"; then
1851 *) if test -f /etc/systemid; then
1853 set `echo $3 | $sed 's/\./ /g'` $4
1854 if $test -f sco_$1_$2_$3.sh; then
1856 elif $test -f sco_$1_$2.sh; then
1858 elif $test -f sco_$1.sh; then
1863 '') : Still unknown. Probably a generic Sys V.
1872 *) case "$osname" in
1873 '') : Still unknown. Probably a generic BSD.
1881 if test -f /vmunix -a -f newsos4.sh; then
1882 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1883 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1886 $rm -f ../UU/kernel.what
1887 elif test -d c:/.; then
1894 : Now look for a hint file osname_osvers, unless one has been
1895 : specified already.
1898 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1899 : Also try without trailing minor version numbers.
1900 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1901 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1902 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1903 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1906 *) case "$osvers" in
1909 *) if $test -f $file.sh ; then
1911 elif $test -f $xfile.sh ; then
1913 elif $test -f $xxfile.sh ; then
1915 elif $test -f $xxxfile.sh ; then
1917 elif $test -f $xxxxfile.sh ; then
1919 elif $test -f "${osname}.sh" ; then
1930 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1936 You may give one or more space-separated answers, or "none" if appropriate.
1937 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1940 rp="Which of these apply, if any?"
1943 for file in $tans; do
1944 if $test -f $file.sh; then
1946 $cat $file.sh >> ../UU/config.sh
1947 elif $test X$tans = X -o X$tans = Xnone ; then
1950 : Give one chance to correct a possible typo.
1951 echo "$file.sh does not exist"
1953 rp="hint to use instead?"
1955 for file in $ans; do
1956 if $test -f "$file.sh"; then
1958 $cat $file.sh >> ../UU/config.sh
1959 elif $test X$ans = X -o X$ans = Xnone ; then
1962 echo "$file.sh does not exist -- ignored."
1969 : Remember our hint file for later.
1970 if $test -f "$file.sh" ; then
1982 echo "Fetching default answers from $config_sh..." >&4
1986 cp $config_sh config.sh 2>/dev/null
1996 test "$override" && . ./optdef.sh
1997 myuname="$newmyuname"
1999 : Restore computed paths
2000 for file in $loclist $trylist; do
2001 eval $file="\$_$file"
2006 Configure uses the operating system name and version to set some defaults.
2007 The default value is probably right if the name rings a bell. Otherwise,
2008 since spelling matters for me, either accept the default or answer "none"
2015 ''|' '|none) dflt=none ;;
2016 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2019 *) dflt="$osname" ;;
2021 rp="Operating system name?"
2025 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2031 ''|' '|none) dflt=none ;;
2032 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2033 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2035 ''|' ') dflt=none ;;
2040 *) dflt="$osvers" ;;
2042 rp="Operating system version?"
2051 : who configured the system
2052 cf_time=`$date 2>&1`
2053 cf_by=`(logname) 2>/dev/null`
2054 case "$cf_by" in "")
2055 cf_by=`(whoami) 2>/dev/null`
2056 case "$cf_by" in "")
2061 : determine the architecture name
2063 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2064 tarch=`arch`"-$osname"
2065 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2066 if uname -m > tmparch 2>&1 ; then
2067 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2068 -e 's/$/'"-$osname/" tmparch`
2076 case "$myarchname" in
2079 echo "(Your architecture name used to be $myarchname.)"
2085 *) dflt="$archname";;
2087 rp='What is your architecture name'
2089 case "$usethreads" in
2090 $define) archname="$ans-thread"
2091 echo "usethreads selected... architecture name is now $archname." >&4
2093 *) archname="$ans" ;;
2100 $define|true) afs=true ;;
2101 $undef|false) afs=false ;;
2102 *) if test -d /afs; then
2110 echo "AFS may be running... I'll be extra cautious then..." >&4
2112 echo "AFS does not seem to be running..." >&4
2115 : decide how portable to be. Allow command line overrides.
2116 case "$d_portable" in
2118 *) d_portable="$define" ;;
2121 : set up shell script to do ~ expansion
2127 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2130 if $test -f /bin/csh; then
2131 /bin/csh -f -c "glob \$1"
2136 name=\`$expr x\$1 : '..\([^/]*\)'\`
2137 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2138 if $test ! -d "\$dir"; then
2140 echo "\$me: can't locate home directory for: \$name" >&2
2145 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2161 : now set up to get a file name
2165 cat <<'EOSC' >>getfile
2178 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2179 fn=`echo $fn | sed 's/(.*)//'`
2185 loc_file=`expr $fn : '.*:\(.*\)'`
2186 fn=`expr $fn : '\(.*\):.*'`
2194 */*) fullpath=true;;
2203 *e*) exp_file=true;;
2206 *p*) nopath_ok=true;;
2211 *d*) type='Directory';;
2212 *l*) type='Locate';;
2217 Locate) what='File';;
2222 case "$d_portable" in
2230 while test "$type"; do
2235 true) rp="$rp (~name ok)";;
2238 if test -f UU/getfile.ok && \
2239 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2258 value=`UU/filexp $ans`
2261 if test "$ans" != "$value"; then
2262 echo "(That expands to $value on this system.)"
2276 /*) value="$ansexp" ;;
2281 echo "I shall only accept a full path name, as in /bin/ls." >&4
2282 echo "Use a ! shell escape if you wish to check pathnames." >&4
2285 echo "Please give a full path name, starting with slash." >&4
2288 echo "Note that using ~name is ok provided it expands well." >&4
2301 if test -f "$ansexp"; then
2303 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2305 echo "($value is not a plain file, but that's ok.)"
2310 if test -d "$ansexp"; then
2315 if test -d "$ansexp"; then
2316 echo "(Looking for $loc_file in directory $value.)"
2317 value="$value/$loc_file"
2318 ansexp="$ansexp/$loc_file"
2320 if test -f "$ansexp"; then
2323 case "$nopath_ok" in
2324 true) case "$value" in
2326 *) echo "Assuming $value will be in people's path."
2342 if test "$fastread" = yes; then
2347 rp="$what $value doesn't exist. Use that name anyway?"
2368 : determine root of directory hierarchy where package will be installed.
2371 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2379 By default, $package will be installed in $dflt/bin, manual
2380 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2381 all installation directories. Typically set to /usr/local, but you
2382 may choose /usr if you wish to install $package among your system
2383 binaries. If you wish to have binaries under /bin but manual pages
2384 under /usr/local/man, that's ok: you will be prompted separately
2385 for each of the installation directories, the prefix being only used
2386 to set the defaults.
2390 rp='Installation prefix to use?'
2398 *) oldprefix="$prefix";;
2405 : set the prefixit variable, to compute a suitable default value
2406 prefixit='case "$3" in
2408 case "$oldprefix" in
2409 "") eval "$1=\"\$$2\"";;
2416 ""|" ") eval "$1=\"\$$2\"";;
2422 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2424 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2425 /*-$oldprefix/*|\~*-$oldprefix/*)
2426 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2427 *) eval "$1=\"\$$2\"";;
2431 : determine where private library files go
2432 : Usual default is /usr/local/lib/perl5. Also allow things like
2433 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2435 *perl*) set dflt privlib lib ;;
2436 *) set dflt privlib lib/$package ;;
2441 There are some auxiliary files for $package that need to be put into a
2442 private library directory that is accessible by everyone.
2446 rp='Pathname where the private library files will reside?'
2448 if $test "X$privlibexp" != "X$ansexp"; then
2452 privlibexp="$ansexp"
2456 Since you are running AFS, I need to distinguish the directory in which
2457 private files reside from the directory in which they are installed (and from
2458 which they are presumably copied to the former directory by occult means).
2461 case "$installprivlib" in
2462 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2463 *) dflt="$installprivlib";;
2466 rp='Where will private files be installed?'
2468 installprivlib="$ans"
2470 installprivlib="$privlibexp"
2473 : set the base revision
2476 : get the patchlevel
2478 echo "Getting the current patchlevel..." >&4
2479 if $test -r ../patchlevel.h;then
2480 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2481 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2486 $echo $n "(You have $package" $c
2489 *) $echo $n " $baserev" $c ;;
2491 $echo $n " patchlevel $patchlevel" $c
2492 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2495 : set the prefixup variable, to restore leading tilda escape
2496 prefixup='case "$prefixexp" in
2498 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2501 : determine where public architecture dependent libraries go
2507 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2511 *) if test 0 -eq "$subversion"; then
2512 version=`LC_ALL=C; export LC_ALL; \
2513 echo $baserev $patchlevel | \
2514 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2516 version=`LC_ALL=C; export LC_ALL; \
2517 echo $baserev $patchlevel $subversion | \
2518 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2520 dflt="$privlib/$archname/$version"
2530 $spackage contains architecture-dependent library files. If you are
2531 sharing libraries in a heterogeneous environment, you might store
2532 these files in a separate location. Otherwise, you can just include
2533 them with the rest of the public library files.
2537 rp='Where do you want to put the public architecture-dependent libraries?'
2540 archlibexp="$ansexp"
2545 Since you are running AFS, I need to distinguish the directory in
2546 which architecture-dependent library files reside from the directory
2547 in which they are installed (and from which they are presumably copied
2548 to the former directory by occult means).
2551 case "$installarchlib" in
2552 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2553 *) dflt="$installarchlib";;
2556 rp='Where will architecture-dependent library files be installed?'
2558 installarchlib="$ans"
2560 installarchlib="$archlibexp"
2562 if $test X"$archlib" = X"$privlib"; then
2568 : set up the script used to warn in case of inconsistency
2575 echo "*** WHOA THERE!!! ***" >&4
2576 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2577 rp=" Keep the $hint value?"
2580 y) td=$was; tu=$was;;
2584 : function used to set $1 to $val
2585 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2587 $define$undef) . ./whoa; eval "$var=\$td";;
2588 $undef$define) . ./whoa; eval "$var=\$tu";;
2589 *) eval "$var=$val";;
2594 Perl 5.004 can be compiled for binary compatibility with 5.003.
2595 If you decide to do so, you will be able to continue using any
2596 extensions that were compiled for Perl 5.003. However, binary
2597 compatibility forces Perl to expose some of its internal symbols
2598 in the same way that 5.003 did. So you may have symbol conflicts
2599 if you embed a binary-compatible Perl in other programs.
2602 case "$d_bincompat3" in
2606 rp='Binary compatibility with Perl 5.003?'
2609 y*) val="$define" ;;
2614 case "$d_bincompat3" in
2615 "$define") bincompat3=y ;;
2619 : make some quick guesses about what we are up against
2621 $echo $n "Hmm... $c"
2631 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2632 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2634 echo "Looks kind of like an OSF/1 system, but we'll see..."
2636 elif test `echo abc | tr a-z A-Z` = Abc ; then
2637 xxx=`./loc addbib blurfl $pth`
2638 if $test -f $xxx; then
2639 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2643 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2644 echo "Looks kind of like an extended USG system, but we'll see..."
2646 echo "Looks kind of like a USG system, but we'll see..."
2650 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2651 echo "Looks kind of like a BSD system, but we'll see..."
2655 echo "Looks kind of like a Version 7 system, but we'll see..."
2658 case "$eunicefix" in
2661 There is, however, a strange, musty smell in the air that reminds me of
2662 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2666 : it so happens the Eunice I know will not run shell scripts in Unix format
2670 echo "Congratulations. You aren't running Eunice."
2674 : Detect OS2. The p_ variable is set above in the Head.U unit.
2679 I have the feeling something is not exactly right, however...don't tell me...
2680 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2685 if test -f /xenix; then
2686 echo "Actually, this looks more like a XENIX system..."
2691 echo "It's not Xenix..."
2696 if test -f /venix; then
2697 echo "Actually, this looks more like a VENIX system..."
2704 echo "Nor is it Venix..."
2707 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2708 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2711 : see if setuid scripts can be secure
2714 Some kernels have a bug that prevents setuid #! scripts from being
2715 secure. Some sites have disabled setuid #! scripts because of this.
2717 First let's decide if your kernel supports secure setuid #! scripts.
2718 (If setuid #! scripts would be secure but have been disabled anyway,
2719 don't say that they are secure if asked.)
2724 if $test -d /dev/fd; then
2725 echo "#!$ls" >reflect
2726 chmod +x,u+s reflect
2727 ./reflect >flect 2>&1
2728 if $contains "/dev/fd" flect >/dev/null; then
2729 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2733 If you are not sure if they are secure, I can check but I'll need a
2734 username and password different from the one you are using right now.
2735 If you don't have such a username or don't want me to test, simply
2739 rp='Other username to test security of setuid scripts with?'
2744 case "$d_suidsafe" in
2745 '') echo "I'll assume setuid scripts are *not* secure." >&4
2748 echo "Well, the $hint value is *not* secure." >&4
2750 *) echo "Well, the $hint value *is* secure." >&4
2755 $rm -f reflect flect
2756 echo "#!$ls" >reflect
2757 chmod +x,u+s reflect
2760 echo '"su" will (probably) prompt you for '"$ans's password."
2761 su $ans -c './reflect >flect'
2762 if $contains "/dev/fd" flect >/dev/null; then
2763 echo "Okay, it looks like setuid scripts are secure." >&4
2766 echo "I don't think setuid scripts are secure." >&4
2771 rp='Does your kernel have *secure* setuid scripts?'
2774 [yY]*) val="$define";;
2779 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2780 echo "(That's for file descriptors, not floppy disks.)"
2786 $rm -f reflect flect
2788 : now see if they want to do setuid emulation
2791 case "$d_suidsafe" in
2794 echo "No need to emulate SUID scripts since they are secure here." >& 4
2798 Some systems have disabled setuid scripts, especially systems where
2799 setuid scripts cannot be secure. On systems where setuid scripts have
2800 been disabled, the setuid/setgid bits on scripts are currently
2801 useless. It is possible for $package to detect those bits and emulate
2802 setuid/setgid in a secure fashion. This emulation will only work if
2803 setuid scripts have been disabled in your kernel.
2807 "$define") dflt=y ;;
2810 rp="Do you want to do setuid/setgid emulation?"
2813 [yY]*) val="$define";;
2821 : determine where site specific libraries go.
2825 '') dflt="$privlib/site_perl" ;;
2826 *) dflt="$sitelib" ;;
2830 The installation process will also create a directory for
2831 site-specific extensions and modules. Some users find it convenient
2832 to place all local files in this directory rather than in the main
2833 distribution directory.
2837 rp='Pathname for the site-specific library files?'
2839 if $test "X$sitelibexp" != "X$ansexp"; then
2843 sitelibexp="$ansexp"
2847 Since you are running AFS, I need to distinguish the directory in
2848 which site-specific files reside from the directory in which they are
2849 installed (and from which they are presumably copied to the former
2850 directory by occult means).
2853 case "$installsitelib" in
2854 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2855 *) dflt="$installsitelib";;
2858 rp='Where will site-specific files be installed?'
2860 installsitelib="$ans"
2862 installsitelib="$sitelibexp"
2865 : determine where site specific architecture-dependent libraries go.
2866 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2867 : xxx is usuually lib/site_perl/archname.
2868 set sitearch sitearch none
2871 '') dflt="$sitelib/$archname" ;;
2872 *) dflt="$sitearch" ;;
2876 The installation process will also create a directory for
2877 architecture-dependent site-specific extensions and modules.
2881 rp='Pathname for the site-specific architecture-dependent library files?'
2883 if $test "X$sitearchexp" != "X$ansexp"; then
2887 sitearchexp="$ansexp"
2891 Since you are running AFS, I need to distinguish the directory in
2892 which site-specific architecture-dependent library files reside from
2893 the directory in which they are installed (and from which they are
2894 presumably copied to the former directory by occult means).
2897 case "$installsitearch" in
2898 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2899 *) dflt="$installsitearch";;
2902 rp='Where will site-specific architecture-dependent files be installed?'
2904 installsitearch="$ans"
2906 installsitearch="$sitearchexp"
2909 : determine where old public architecture dependent libraries might be
2910 case "$oldarchlib" in
2911 '') case "$privlib" in
2913 *) dflt="$privlib/$archname"
2917 *) dflt="$oldarchlib"
2920 if $test ! -d "$dflt/auto"; then
2925 In 5.001, Perl stored architecture-dependent library files in a directory
2926 with a name such as $privlib/$archname,
2927 and this directory contained files from the standard extensions and
2928 files from any additional extensions you might have added. Starting
2929 with version 5.002, all the architecture-dependent standard extensions
2930 will go into a version-specific directory such as
2932 while locally-added extensions will go into
2935 If you wish Perl to continue to search the old architecture-dependent
2936 library for your local extensions, give the path to that directory.
2937 If you do not wish to use your old architecture-dependent library
2938 files, answer 'none'.
2942 rp='Directory for your old 5.001 architecture-dependent libraries?'
2945 oldarchlibexp="$ansexp"
2946 case "$oldarchlib" in
2947 ''|' ') val="$undef" ;;
2953 : determine where public executables go
2958 rp='Pathname where the public executables will reside?'
2960 if $test "X$ansexp" != "X$binexp"; then
2968 Since you are running AFS, I need to distinguish the directory in which
2969 executables reside from the directory in which they are installed (and from
2970 which they are presumably copied to the former directory by occult means).
2973 case "$installbin" in
2974 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2975 *) dflt="$installbin";;
2978 rp='Where will public executables be installed?'
2982 installbin="$binexp"
2985 : determine where manual pages are on this system
2989 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2990 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2991 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2992 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2993 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2994 sysman=`./loc . /usr/man/man1 $syspath`
2997 if $test -d "$sysman"; then
2998 echo "System manual is in $sysman." >&4
3000 echo "Could not find manual pages in source form." >&4
3003 : see what memory models we can support
3006 $cat >pdp11.c <<'EOP'
3015 (cc -o pdp11 pdp11.c) >/dev/null 2>&1
3016 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3017 dflt='unsplit split'
3019 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3022 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3027 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3030 if $test -d /lib/large || $test -d /usr/lib/large; then
3033 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3042 Some systems have different model sizes. On most systems they are called
3043 small, medium, large, and huge. On the PDP11 they are called unsplit and
3044 split. If your system doesn't support different memory models, say "none".
3045 If you wish to force everything to one memory model, say "none" here and
3046 put the appropriate flags later when it asks you for other cc and ld flags.
3047 Venix systems may wish to put "none" and let the compiler figure things out.
3048 (In the following question multiple model names should be space separated.)
3051 rp="Which memory models are supported?"
3066 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3067 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3074 rp="What flag indicates separate I and D space?"
3082 *large*|*small*|*medium*|*huge*)
3089 rp="What flag indicates large model?"
3099 *huge*) case "$huge" in
3103 rp="What flag indicates huge model?"
3113 *medium*) case "$medium" in
3117 rp="What flag indicates medium model?"
3124 *) medium="$large";;
3127 *small*) case "$small" in
3131 rp="What flag indicates small model?"
3142 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3146 : see if we need a special compiler
3154 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3155 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3168 On some systems the default C compiler will not resolve multiple global
3169 references that happen to have the same name. On some such systems the "Mcc"
3170 command may be used to force these to be resolved. On other systems a "cc -M"
3171 command is required. (Note that the -M flag on other systems indicates a
3172 memory model to use!) If you have the Gnu C compiler, you might wish to use
3176 rp="What command will force resolution on this system?"
3184 rp="Use which C compiler?"
3189 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3190 $cat >gccvers.c <<EOM
3195 printf("%s\n", __VERSION__);
3197 printf("%s\n", "1");
3203 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3204 gccversion=`./gccvers`
3205 case "$gccversion" in
3206 '') echo "You are not using GNU cc." ;;
3207 *) echo "You are using GNU cc $gccversion." ;;
3211 echo "*** WHOA THERE!!! ***" >&4
3212 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3213 case "$knowitall" in
3215 echo " You'd better start hunting for one and let me know about it." >&4
3221 case "$gccversion" in
3222 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3225 : What should the include directory be ?
3227 $echo $n "Hmm... $c"
3231 if $test -f /bin/mips && /bin/mips; then
3232 echo "Looks like a MIPS system..."
3233 $cat >usr.c <<'EOCP'
3234 #ifdef SYSTYPE_BSD43
3238 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3239 dflt='/bsd43/usr/include'
3243 mips_type='System V'
3245 $rm -f usr.c usr.out
3246 echo "and you're compiling with the $mips_type compiler and libraries."
3250 echo "Doesn't look like a MIPS system."
3261 case "$xxx_prompt" in
3263 rp='Where are the include files you want to use?'
3271 : Set private lib path
3274 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3279 '') dlist="$loclibpth $plibpth $glibpth";;
3280 *) dlist="$libpth";;
3283 : Now check and see which directories actually exist, avoiding duplicates
3287 if $test -d $xxx; then
3290 *) libpth="$libpth $xxx";;
3296 Some systems have incompatible or broken versions of libraries. Among
3297 the directories listed in the question below, please remove any you
3298 know not to be holding relevant libraries, and add any that are needed.
3299 Say "none" for none.
3310 rp="Directories to use for library searches?"
3317 : Define several unixisms. Hints files or command line options
3318 : can be used to override them.
3331 : Which makefile gets called first. This is used by make depend.
3332 case "$firstmakefile" in
3333 '') firstmakefile='makefile';;
3336 : compute shared library extension
3339 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3349 On some systems, shared libraries may be available. Answer 'none' if
3350 you want to suppress searching of shared libraries for the remaining
3351 of this configuration.
3354 rp='What is the file extension used for shared libraries?'
3358 : Looking for optional libraries
3360 echo "Checking for optional libraries..." >&4
3365 case "$libswanted" in
3366 '') libswanted='c_s';;
3368 for thislib in $libswanted; do
3370 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3371 echo "Found -l$thislib (shared)."
3374 *) dflt="$dflt -l$thislib";;
3376 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3377 echo "Found -l$thislib (shared)."
3380 *) dflt="$dflt -l$thislib";;
3382 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3383 echo "Found -l$thislib."
3386 *) dflt="$dflt -l$thislib";;
3388 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3389 echo "Found -l$thislib."
3392 *) dflt="$dflt -l$thislib";;
3394 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3395 echo "Found -l${thislib}_s."
3398 *) dflt="$dflt -l${thislib}_s";;
3400 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3401 echo "Found -l$thislib."
3404 *) dflt="$dflt -l$thislib";;
3407 echo "No -l$thislib."
3418 ' '|'') dflt='none';;
3423 Some versions of Unix support shared libraries, which make executables smaller
3424 but make load time slightly longer.
3426 On some systems, mostly System V Release 3's, the shared library is included
3427 by putting the option "-lc_s" as the last thing on the cc command line when
3428 linking. Other systems use shared libraries by default. There may be other
3429 libraries needed to compile $package on your machine as well. If your system
3430 needs the "-lc_s" option, include it here. Include any other special libraries
3431 here as well. Say "none" for none.
3435 rp="Any additional libraries?"
3442 : see how we invoke the C preprocessor
3444 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3445 cat <<'EOT' >testcpp.c
3451 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3453 wrapper=`pwd`/cppstdin
3457 if $test "X$cppstdin" != "X" && \
3458 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3459 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3461 echo "You used to use $cppstdin $cppminus so we'll use that again."
3463 '') echo "But let's see if we can live without a wrapper..." ;;
3465 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3466 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3468 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3471 echo "(However, $cpprun $cpplast does not work, let's see...)"
3479 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3486 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3487 $cc -E <testcpp.c >testcpp.out 2>&1; \
3488 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489 echo "Yup, it does."
3492 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3493 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495 echo "Yup, it does."
3498 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3499 $cc -P <testcpp.c >testcpp.out 2>&1; \
3500 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 echo "Yipee, that works!"
3504 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3505 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507 echo "At long last!"
3510 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3511 $cpp <testcpp.c >testcpp.out 2>&1; \
3512 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3516 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3517 $cpp - <testcpp.c >testcpp.out 2>&1; \
3518 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519 echo "Hooray, it works! I was beginning to wonder."
3522 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3523 $wrapper <testcpp.c >testcpp.out 2>&1; \
3524 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530 rp="No dice. I can't find a C preprocessor. Name one:"
3534 $x_cpp <testcpp.c >testcpp.out 2>&1
3535 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3536 echo "OK, that will do." >&4
3538 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3553 echo "Perhaps can we force $cc -E using a wrapper..."
3554 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3555 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3561 echo "Nope, we'll have to live without it..."
3576 *) $rm -f $wrapper;;
3578 $rm -f testcpp.c testcpp.out
3580 : determine optimize, if desired, or use for debug flag also
3582 ' '|$undef) dflt='none';;
3584 *) dflt="$optimize";;
3588 Some C compilers have problems with their optimizers. By default, $package
3589 compiles with the -O flag to use the optimizer. Alternately, you might want
3590 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3591 systems). Either flag can be specified here. To use neither flag, specify
3595 rp="What optimizer/debugger flag should be used?"
3599 'none') optimize=" ";;
3603 : We will not override a previous value, but we might want to
3604 : augment a hint file
3607 case "$gccversion" in
3608 1*) dflt='-fpcc-struct-return' ;;
3611 *-g*) dflt="$dflt -DDEBUGGING";;
3613 case "$gccversion" in
3614 2*) if test -d /etc/conf/kconfig.d &&
3615 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3624 case "$mips_type" in
3625 *BSD*|'') inclwanted="$locincpth $usrinc";;
3626 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3628 for thisincl in $inclwanted; do
3629 if $test -d $thisincl; then
3630 if $test x$thisincl != x$usrinc; then
3633 *) dflt="$dflt -I$thisincl";;
3639 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3641 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3649 *) dflt="$dflt -D$2";;
3654 set signal.h __LANGUAGE_C__; eval $inctest
3656 set signal.h LANGUAGE_C; eval $inctest
3660 none|recommended) dflt="$ccflags $dflt" ;;
3661 *) dflt="$ccflags";;
3669 Your C compiler may want other flags. For this question you should include
3670 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3671 but you should NOT include libraries or ld flags like -lwhatever. If you
3672 want $package to honor its debug switch, you should include -DDEBUGGING here.
3673 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3674 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3676 To use no flags, specify the word "none".
3682 rp="Any additional cc flags?"
3689 : the following weeds options from ccflags that are of no interest to cpp
3691 case "$gccversion" in
3692 1*) cppflags="$cppflags -D__GNUC__"
3694 case "$mips_type" in
3696 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3702 echo "Let me guess what the preprocessor flags are..." >&4
3716 *) ftry="$previous $flag";;
3718 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3719 >cpp1.out 2>/dev/null && \
3720 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3721 >cpp2.out 2>/dev/null && \
3722 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3723 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3725 cppflags="$cppflags $ftry"
3735 *-*) echo "They appear to be: $cppflags";;
3737 $rm -f cpp.c cpp?.out
3741 : flags used in final linking phase
3744 '') if ./venix; then
3750 *-posix*) dflt="$dflt -posix" ;;
3753 *) dflt="$ldflags";;
3756 : Try to guess additional flags to pick up local libraries.
3757 for thislibdir in $libpth; do
3758 case " $loclibpth " in
3761 *"-L$thislibdir "*) ;;
3762 *) dflt="$dflt -L$thislibdir" ;;
3774 Your C linker may need flags. For this question you should
3775 include -L/whatever and any other flags used by the C linker, but you
3776 should NOT include libraries like -lwhatever.
3778 Make sure you include the appropriate -L/path flags if your C linker
3779 does not normally search all of the directories you specified above,
3782 To use no flags, specify the word "none".
3786 rp="Any additional ld flags (NOT including libraries)?"
3792 rmlist="$rmlist pdp11"
3796 echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3797 set X $cc $optimize $ccflags $ldflags -o try try.c $libs
3800 I've tried to compile and run a simple program with:
3805 and I got the following output:
3808 $cat > try.c <<'EOF'
3813 if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
3814 if sh -c './try' >>try.msg 2>&1; then
3817 echo "The program compiled OK, but exited with status $?." >>try.msg
3818 rp="You have a problem. Shall I abort Configure"
3822 echo "I can't compile the test program." >>try.msg
3823 rp="You have a BIG problem. Shall I abort Configure"
3829 case "$knowitall" in
3831 echo "(The supplied flags might be incorrect with this C compiler.)"
3839 *) echo "Ok. Stopping Configure." >&4
3844 n) echo "OK, that should do.";;
3846 $rm -f try try.* core
3849 echo "Checking for GNU C Library..." >&4
3850 cat >gnulibc.c <<EOM
3854 return __libc_main();
3857 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3858 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3860 echo "You are using the GNU C Library"
3863 echo "You are not using the GNU C Library"
3869 : see if nm is to be used to determine whether a symbol is defined or not
3872 case "$d_gnulibc" in
3877 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3878 if $test $dflt -gt 20; then
3895 I can use 'nm' to extract the symbols from your C libraries. This is a time
3896 consuming task which may generate huge output on the disk (up to 3 megabytes)
3897 but that should make the symbols extraction faster. The alternative is to skip
3898 the 'nm' extraction part and to compile a small test program instead to
3899 determine whether each symbol is present. If you have a fast C compiler and/or
3900 if your 'nm' output cannot be parsed, this may be the best solution.
3901 You shouldn't let me use 'nm' if you have the GNU C Library.
3904 rp='Shall I use nm to extract C symbols from the libraries?'
3916 : nm options which may be necessary
3918 '') if $test -f /mach_boot; then
3920 elif $test -d /usr/ccs/lib; then
3921 nm_opt='-p' # Solaris (and SunOS?)
3922 elif $test -f /dgux; then
3924 elif $test -f /lib64/rld; then
3925 nm_opt='-p' # 64-bit Irix
3931 : nm options which may be necessary for shared libraries but illegal
3932 : for archive libraries. Thank you, Linux.
3933 case "$nm_so_opt" in
3934 '') case "$myuname" in
3936 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3937 nm_so_opt='--dynamic'
3946 : get list of predefined functions in a handy place
3951 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3958 *) for thislib in $libs; do
3961 : Handle C library specially below.
3964 thislib=`echo $thislib | $sed -e 's/^-l//'`
3965 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3967 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3969 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3971 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3973 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3975 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3977 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3982 libnames="$libnames $try"
3984 *) libnames="$libnames $thislib" ;;
3993 for xxx in $libpth; do
3994 $test -r $1 || set $xxx/libc.$so
3995 : The messy sed command sorts on library version numbers.
3997 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3998 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
4000 s/[0-9][0-9]*/0000&/g
4001 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4004 sort | $sed -e 's/^.* //'`
4007 $test -r $1 || set /usr/ccs/lib/libc.$so
4008 $test -r $1 || set /lib/libsys_s$lib_ext
4014 if $test -r "$1"; then
4015 echo "Your (shared) C library seems to be in $1."
4017 elif $test -r /lib/libc && $test -r /lib/clib; then
4018 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4020 libc='/lib/clib /lib/libc'
4021 if $test -r /lib/syslib; then
4022 echo "(Your math library is in /lib/syslib.)"
4023 libc="$libc /lib/syslib"
4025 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4026 echo "Your C library seems to be in $libc, as you said before."
4027 elif $test -r $incpath/usr/lib/libc$lib_ext; then
4028 libc=$incpath/usr/lib/libc$lib_ext;
4029 echo "Your C library seems to be in $libc. That's fine."
4030 elif $test -r /lib/libc$lib_ext; then
4031 libc=/lib/libc$lib_ext;
4032 echo "Your C library seems to be in $libc. You're normal."
4034 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
4036 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4037 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4038 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4040 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4042 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
4045 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4047 if $test -r "$tans"; then
4048 echo "Your C library seems to be in $tans, of all places."
4054 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4058 If the guess above is wrong (which it might be if you're using a strange
4059 compiler, or your machine supports multiple models), you can override it here.
4064 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4066 I can't seem to find your C library. I've looked in the following places:
4069 $sed 's/^/ /' libpath
4072 None of these seems to contain your C library. I need to get its name...
4077 rp='Where is your C library?'
4082 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4083 set X `cat libnames`
4086 case $# in 1) xxx=file; esac
4087 echo "Extracting names from the following $xxx for later perusal:" >&4
4089 $sed 's/^/ /' libnames >&4
4091 $echo $n "This may take a while...$c" >&4
4093 : Linux may need the special Dynamic option to nm for shared libraries.
4094 : In general, this is stored in the nm_so_opt variable.
4095 : Unfortunately, that option may be fatal on non-shared libraries.
4096 for nm_libs_ext in $*; do
4097 case $nm_libs_ext in
4098 *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4099 *) nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4104 $grep fprintf libc.tmp > libc.ptf
4105 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4106 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4108 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4110 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4112 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4114 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4116 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4118 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4120 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4122 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4124 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4126 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4128 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4130 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4132 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4133 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4135 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4137 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4139 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4141 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4143 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4145 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4147 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4149 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4151 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4153 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4155 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4157 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4159 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4162 nm -p $* 2>/dev/null >libc.tmp
4163 $grep fprintf libc.tmp > libc.ptf
4164 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4165 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4171 echo "nm didn't seem to work right. Trying ar instead..." >&4
4173 if ar t $libc > libc.tmp; then
4174 for thisname in $libnames; do
4175 ar t $thisname >>libc.tmp
4177 $sed -e 's/\.o$//' < libc.tmp > libc.list
4180 echo "ar didn't seem to work right." >&4
4181 echo "Maybe this is a Cray...trying bld instead..." >&4
4182 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4184 for thisname in $libnames; do
4186 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4187 ar t $thisname >>libc.tmp
4191 echo "That didn't work either. Giving up." >&4
4198 if $test -f /lib/syscalls.exp; then
4200 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4201 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4205 $rm -f libnames libpath
4207 : determine filename position in cpp output
4209 echo "Computing filename position in cpp output for #include directives..." >&4
4210 echo '#include <stdio.h>' > foo.c
4213 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4214 $grep '^[ ]*#.*stdio\.h' | \
4215 while read cline; do
4218 while $test \$# -gt 0; do
4219 if $test -r \`echo \$1 | $tr -d '"'\`; then
4224 pos=\`expr \$pos + 1\`
4236 *) pos="${fieldn}th";;
4238 echo "Your cpp writes the filename in the $pos field of the line."
4240 : locate header file
4245 if test -f $usrinc/\$wanted; then
4246 echo "$usrinc/\$wanted"
4249 awkprg='{ print \$$fieldn }'
4250 echo "#include <\$wanted>" > foo\$\$.c
4251 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4252 $grep "^[ ]*#.*\$wanted" | \
4253 while read cline; do
4254 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4256 */\$wanted) echo "\$name"; exit 0;;
4267 : define an alternate in-header-list? function
4268 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4269 cont=true; xxf="echo \"<\$1> found.\" >&4";
4270 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4271 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4273 case $# in 4) instead=instead;; *) instead="at last";; esac;
4274 while $test "$cont"; do
4276 var=$2; eval "was=\$$2";
4277 if $test "$xxx" && $test -r "$xxx";
4279 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4282 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4283 set $yyy; shift; shift; yyy=$@;
4284 case $# in 0) cont="";;
4285 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4286 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4287 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4288 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4292 do set $yyy; var=$2; eval "was=\$$2";
4293 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4294 set $yyy; shift; shift; yyy=$@;
4297 : see if dld is available
4301 : is a C symbol defined?
4304 -v) tf=libc.tmp; tc=""; tdc="";;
4305 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4306 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4309 case "$reuseval-$4" in
4311 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4317 if $contains $tlook $tf >/dev/null 2>&1;
4322 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4323 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4331 $define) tval=true;;
4337 : define an is-in-libc? function
4338 inlibc='echo " "; td=$define; tu=$undef;
4339 sym=$1; var=$2; eval "was=\$$2";
4341 case "$reuseval$was" in
4351 echo "$sym() found." >&4;
4352 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4354 echo "$sym() NOT found." >&4;
4355 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4359 $define) echo "$sym() found." >&4;;
4360 *) echo "$sym() NOT found." >&4;;
4364 : see if dlopen exists
4371 : determine which dynamic loading, if any, to compile in
4373 dldir="ext/DynaLoader"
4386 $define) dflt='y' ;;
4389 $define) dflt='y' ;;
4391 : Does a dl_xxx.xs file exist for this operating system
4392 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4395 rp="Do you wish to use dynamic loading?"
4402 if $test -f ../$dldir/dl_${osname}.xs ; then
4403 dflt="$dldir/dl_${osname}.xs"
4404 elif $test "$d_dlopen" = "$define" ; then
4405 dflt="$dldir/dl_dlopen.xs"
4406 elif $test "$i_dld" = "$define" ; then
4407 dflt="$dldir/dl_dld.xs"
4412 *) dflt="$dldir/$dlsrc"
4415 echo "The following dynamic loading files are available:"
4416 : Can not go over to $dldir because getfile has path hard-coded in.
4417 cd ..; ls -C $dldir/dl*.xs; cd UU
4418 rp="Source file to use for dynamic loading"
4423 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4427 Some systems may require passing special flags to $cc -c to
4428 compile modules that will be used to create a shared library.
4429 To use no flags, say "none".
4432 case "$cccdlflags" in
4433 '') case "$gccversion" in
4434 '') case "$osname" in
4436 next) dflt='none' ;;
4437 svr4*|esix*) dflt='-Kpic' ;;
4438 irix*) dflt='-KPIC' ;;
4439 solaris) case "$ccflags" in
4440 *-DDEBUGGING*) dflt='-KPIC' ;;
4443 sunos) dflt='-pic' ;;
4446 *) case "$osname/$ccflags" in
4447 solaris/*-DDEBUGGING*) dflt='-fPIC' ;;
4451 *) dflt="$cccdlflags" ;;
4453 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4456 none) cccdlflags=' ' ;;
4457 *) cccdlflags="$ans" ;;
4462 Some systems use ld to create libraries that can be dynamically loaded,
4463 while other systems (such as those using ELF) use $cc.
4467 '') $cat >try.c <<'EOM'
4468 /* Test for whether ELF binaries are produced */
4473 int i = open("a.out",O_RDONLY);
4476 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4477 exit(0); /* succeed (yes, it's ELF) */
4482 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4484 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4488 echo "I'll use ld to build dynamic libraries."
4497 rp="What command should be used to create dynamic libraries?"
4503 Some systems may require passing special flags to $ld to create a
4504 library that can be dynamically loaded. If your ld flags include
4505 -L/other/path options to locate libraries outside your loader's normal
4506 search path, you may need to specify those -L options here as well. To
4507 use no flags, say "none".
4510 case "$lddlflags" in
4511 '') case "$osname" in
4513 linux|irix*) dflt='-shared' ;;
4514 next) dflt='none' ;;
4515 solaris) dflt='-G' ;;
4516 sunos) dflt='-assert nodefinitions' ;;
4517 svr4*|esix*) dflt="-G $ldflags" ;;
4521 *) dflt="$lddlflags" ;;
4524 : Try to guess additional flags to pick up local libraries.
4525 for thisflag in $ldflags; do
4530 *) dflt="$dflt $thisflag" ;;
4540 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4543 none) lddlflags=' ' ;;
4544 *) lddlflags="$ans" ;;
4549 Some systems may require passing special flags to $cc to indicate that
4550 the resulting executable will use dynamic linking. To use no flags,
4554 case "$ccdlflags" in
4555 '') case "$osname" in
4556 hpux) dflt='-Wl,-E' ;;
4557 linux) dflt='-rdynamic' ;;
4558 next) dflt='none' ;;
4559 sunos) dflt='none' ;;
4562 *) dflt="$ccdlflags" ;;
4564 rp="Any special flags to pass to $cc to use dynamic loading?"
4567 none) ccdlflags=' ' ;;
4568 *) ccdlflags="$ans" ;;
4582 # No dynamic loading being used, so don't bother even to prompt.
4585 *) case "$useshrplib" in
4586 '') case "$osname" in
4587 svr4*|dgux|dynixptx|esix|powerux)
4589 also='Building a shared libperl is required for dynamic loading to work on your system.'
4594 also='Building a shared libperl is needed for MAB support.'
4602 also='Building a shared libperl will definitely not work on SunOS 4.'
4616 The perl executable is normally obtained by linking perlmain.c with
4617 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4618 any other libraries needed on this system (such as -lm, etc.). Since
4619 your system supports dynamic loading, it is probably possible to build
4620 a shared libperl.$so. If you will have more than one executable linked
4621 to libperl.$so, this will significantly reduce the size of each
4622 executable, but it may have a noticeable affect on performance. The
4623 default is probably sensible for your system.
4627 rp="Build a shared libperl.$so (y/n)"
4632 # Why does next4 have to be so different?
4633 case "${osname}${osvers}" in
4634 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4635 *) xxx='LD_LIBRARY_PATH' ;;
4639 To build perl, you must add the current working directory to your
4640 $xxx environtment variable before running make. You can do
4642 $xxx=\`pwd\`; export $xxx
4643 for Bourne-style shells, or
4645 for Csh-style shells. You *MUST* do this before running make.
4649 *) useshrplib='false' ;;
4654 case "$useshrplib" in
4658 # Figure out a good name for libperl.so. Since it gets stored in
4659 # a version-specific architecture-dependent library, the version
4660 # number isn't really that important, except for making cc/ld happy.
4662 # A name such as libperl.so.3.1
4663 majmin="libperl.$so.$patchlevel.$subversion"
4664 # A name such as libperl.so.301
4665 majonly=`echo $patchlevel $subversion |
4666 $awk '{printf "%d%02d", $1, $2}'`
4667 majonly=libperl.$so.$majonly
4668 # I'd prefer to keep the os-specific stuff here to a minimum, and
4669 # rely on figuring it out from the naming of libc.
4670 case "${osname}${osvers}" in
4673 # XXX How handle the --version stuff for MAB?
4675 linux*) # ld won't link with a bare -lperl otherwise.
4678 *) # Try to guess based on whether libc has major.minor.
4680 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4681 *libc.$so.[0-9]*) dflt=$majonly ;;
4682 *) dflt=libperl.$so ;;
4692 I need to select a good name for the shared libperl. If your system uses
4693 library names with major and minor numbers, then you might want something
4694 like $majmin. Alternatively, if your system uses a single version
4695 number for shared libraries, then you might want to use $majonly.
4696 Or, your system might be quite happy with a simple libperl.$so.
4698 Since the shared libperl will get installed into a version-specific
4699 architecture-dependent directory, the version number of the shared perl
4700 library probably isn't important, so the default should be o.k.
4703 rp='What name do you want to give to the shared libperl?'
4706 echo "Ok, I'll use $libperl"
4709 libperl="libperl${lib_ext}"
4713 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4717 WARNING: Use of the shrpdir variable for the installation location of
4718 the shared $libperl is not supported. It was never documented and
4719 will not work in this version. Let me (chip@perl.com) know of any
4720 problems this may cause.
4726 But your current setting of $shrpdir is
4727 the default anyway, so it's harmless.
4732 Further, your current attempted setting of $shrpdir
4733 conflicts with the value of $archlibexp/CORE
4734 that installperl will use.
4741 # How will the perl executable find the installed shared $libperl?
4742 # Add $xxx to ccdlflags.
4743 # If we can't figure out a command-line option, use $shrpenv to
4744 # set env LD_RUN_PATH. The main perl makefile uses this.
4745 shrpdir=$archlibexp/CORE
4748 if "$useshrplib"; then
4751 # We'll set it in Makefile.SH...
4757 xxx="-Wl,-R$shrpdir"
4759 linux|irix*|dec_osf)
4760 xxx="-Wl,-rpath,$shrpdir"
4763 # next doesn't like the default...
4766 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4772 # Only add $xxx if it isn't already in ccdlflags.
4773 case " $ccdlflags " in
4775 *) ccdlflags="$ccdlflags $xxx"
4778 Adding $xxx to the flags
4779 passed to $ld so that the perl executable will find the
4780 installed shared $libperl.
4788 # Respect a hint or command-line value.
4790 '') shrpenv="$tmp_shrpenv" ;;
4793 : determine where manual pages go
4794 set man1dir man1dir none
4798 $spackage has manual pages available in source form.
4802 echo "However, you don't have nroff, so they're probably useless to you."
4804 '') man1dir="none";;
4807 echo "If you don't want the manual sources installed, answer 'none'."
4812 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4813 lookpath="$lookpath $prefixexp/man/p_man/man1"
4814 lookpath="$lookpath $prefixexp/man/u_man/man1"
4815 lookpath="$lookpath $prefixexp/man/man.1"
4816 : If prefix contains 'perl' then we want to keep the man pages
4817 : under the prefix directory. Otherwise, look in a variety of
4818 : other possible places. This is debatable, but probably a
4819 : good compromise. Well, apparently not.
4820 : Experience has shown people expect man1dir to be under prefix,
4821 : so we now always put it there. Users who want other behavior
4822 : can answer interactively or use a command line option.
4823 : Does user have System V-style man paths.
4825 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4826 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4836 rp="Where do the main $spackage manual pages (source) go?"
4838 if $test "X$man1direxp" != "X$ansexp"; then
4842 man1direxp="$ansexp"
4850 Since you are running AFS, I need to distinguish the directory in which
4851 manual pages reside from the directory in which they are installed (and from
4852 which they are presumably copied to the former directory by occult means).
4855 case "$installman1dir" in
4856 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4857 *) dflt="$installman1dir";;
4860 rp='Where will man pages be installed?'
4862 installman1dir="$ans"
4864 installman1dir="$man1direxp"
4867 : What suffix to use on installed man pages
4874 rp="What suffix should be used for the main $spackage man pages?"
4876 '') case "$man1dir" in
4890 *) dflt="$man1ext";;
4897 : see if we can have long filenames
4899 rmlist="$rmlist /tmp/cf$$"
4900 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4901 first=123456789abcdef
4902 second=/tmp/cf$$/$first
4903 $rm -f $first $second
4904 if (echo hi >$first) 2>/dev/null; then
4905 if $test -f 123456789abcde; then
4906 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
4909 if (echo hi >$second) 2>/dev/null; then
4910 if $test -f /tmp/cf$$/123456789abcde; then
4912 That's peculiar... You can have filenames longer than 14 characters, but only
4913 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
4914 I shall consider your system cannot support long filenames at all.
4918 echo 'You can have filenames longer than 14 characters.' >&4
4923 How confusing! Some of your filesystems are sane enough to allow filenames
4924 longer than 14 characters but some others like /tmp can't even think about them.
4925 So, for now on, I shall assume your kernel does not allow them at all.
4932 You can't have filenames longer than 14 chars. You can't even think about them!
4938 $rm -rf /tmp/cf$$ 123456789abcde*
4940 : determine where library module manual pages go
4941 set man3dir man3dir none
4945 $spackage has manual pages for many of the library modules.
4951 However, you don't have nroff, so they're probably useless to you.
4952 You can use the supplied perldoc script instead.
4955 '') man3dir="none";;
4959 case "$d_flexfnam" in
4962 However, your system can't handle the long file names like File::Basename.3.
4963 You can use the supplied perldoc script instead.
4966 '') man3dir="none";;
4970 echo "If you don't want the manual sources installed, answer 'none'."
4971 : We dont use /usr/local/man/man3 because some man programs will
4972 : only show the /usr/local/man/man3 contents, and not the system ones,
4973 : thus man less will show the perl module less.pm, but not the system
4974 : less command. We might also conflict with TCL man pages.
4975 : However, something like /opt/perl/man/man3 is fine.
4977 '') case "$prefix" in
4978 *perl*) dflt=`echo $man1dir |
4979 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4980 *) dflt="$privlib/man/man3" ;;
4984 *) dflt="$man3dir" ;;
4989 rp="Where do the $spackage library man pages (source) go?"
4991 if test "X$man3direxp" != "X$ansexp"; then
4996 man3direxp="$ansexp"
5004 Since you are running AFS, I need to distinguish the directory in which
5005 manual pages reside from the directory in which they are installed (and from
5006 which they are presumably copied to the former directory by occult means).
5009 case "$installman3dir" in
5010 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5011 *) dflt="$installman3dir";;
5014 rp='Where will man pages be installed?'
5016 installman3dir="$ans"
5018 installman3dir="$man3direxp"
5021 : What suffix to use on installed man pages
5028 rp="What suffix should be used for the $spackage library man pages?"
5030 '') case "$man3dir" in
5044 *) dflt="$man3ext";;
5051 : see if we have to deal with yellow pages, now NIS.
5052 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5053 if $test -f /usr/etc/nibindd; then
5055 echo "I'm fairly confident you're on a NeXT."
5057 rp='Do you get the hosts file via NetInfo?'
5066 y*) hostcat='nidump hosts .';;
5067 *) case "$hostcat" in
5068 nidump*) hostcat='';;
5078 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5086 rp='Are you getting the hosts file via yellow pages?'
5089 y*) hostcat='ypcat hosts';;
5090 *) hostcat='cat /etc/hosts';;
5096 : now get the host name
5098 echo "Figuring out host name..." >&4
5099 case "$myhostname" in
5101 echo 'Maybe "hostname" will work...'
5102 if tans=`sh -c hostname 2>&1` ; then
5110 if $test "$cont"; then
5112 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5113 if tans=`cat /etc/systemid 2>&1` ; then
5115 phostname='cat /etc/systemid'
5116 echo "Whadyaknow. Xenix always was a bit strange..."
5119 elif $test -r /etc/systemid; then
5120 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5123 if $test "$cont"; then
5124 echo 'No, maybe "uuname -l" will work...'
5125 if tans=`sh -c 'uuname -l' 2>&1` ; then
5127 phostname='uuname -l'
5129 echo 'Strange. Maybe "uname -n" will work...'
5130 if tans=`sh -c 'uname -n' 2>&1` ; then
5132 phostname='uname -n'
5134 echo 'Oh well, maybe I can mine it out of whoami.h...'
5135 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5136 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5137 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5139 case "$myhostname" in
5140 '') echo "Does this machine have an identity crisis or something?"
5143 echo "Well, you said $myhostname before..."
5144 phostname='echo $myhostname';;
5150 : you do not want to know about this
5155 if $test "$myhostname" ; then
5157 rp='Your host name appears to be "'$myhostname'".'" Right?"
5165 : bad guess or no guess
5166 while $test "X$myhostname" = X ; do
5168 rp="Please type the (one word) name of your host:"
5173 : translate upper to lower if necessary
5174 case "$myhostname" in
5176 echo "(Normalizing case in your host name)"
5177 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5181 case "$myhostname" in
5183 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5184 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5185 echo "(Trimming domain name from host name--host name is now $myhostname)"
5187 *) case "$mydomain" in
5190 : If we use NIS, try ypmatch.
5191 : Is there some reason why this was not done before?
5192 test "X$hostcat" = "Xypcat hosts" &&
5193 ypmatch "$myhostname" hosts 2>/dev/null |\
5194 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5197 : Extract only the relevant hosts, reducing file size,
5198 : remove comments, insert trailing space for later use.
5199 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5200 /[ ]$myhostname[ . ]/p" > hosts
5203 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5204 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5205 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5206 hosts | $sort | $uniq | \
5207 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5208 case `$echo X$dflt` in
5209 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5212 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5217 tans=`./loc resolv.conf X /etc /usr/etc`
5218 if $test -f "$tans"; then
5219 echo "(Attempting domain name extraction from $tans)"
5220 : Why was there an Egrep here, when Sed works?
5221 : Look for either a search or a domain directive.
5222 dflt=.`$sed -n -e 's/ / /g' \
5223 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5224 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5226 .) dflt=.`$sed -n -e 's/ / /g' \
5227 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5228 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5235 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5236 dflt=.`sh -c domainname 2>/dev/null`
5239 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5244 .) echo "(Lost all hope -- silly guess then)"
5250 *) dflt="$mydomain";;
5254 rp="What is your domain name?"
5264 : translate upper to lower if necessary
5267 echo "(Normalizing case in your domain name)"
5268 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5272 : a little sanity check here
5273 case "$phostname" in
5276 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5277 $myhostname$mydomain|$myhostname) ;;
5279 case "$phostname" in
5281 echo "(That doesn't agree with your whoami.h file, by the way.)"
5284 echo "(That doesn't agree with your $phostname command, by the way.)"
5294 I need to get your e-mail address in Internet format if possible, i.e.
5295 something like user@host.domain. Please answer accurately since I have
5296 no easy means to double check it. The default value provided below
5297 is most probably close to the reality but may not be valid from outside
5298 your organization...
5302 while test "$cont"; do
5304 '') dflt="$cf_by@$myhostname$mydomain";;
5305 *) dflt="$cf_email";;
5307 rp='What is your e-mail address?'
5313 rp='Address does not look like an Internet one. Use it anyway?'
5329 If you or somebody else will be maintaining perl at your site, please
5330 fill in the correct e-mail address here so that they may be contacted
5331 if necessary. Currently, the "perlbug" program included with perl
5332 will send mail to this address in addition to perlbug@perl.com. You may
5333 enter "none" for no administrator.
5336 case "$perladmin" in
5337 '') dflt="$cf_email";;
5338 *) dflt="$perladmin";;
5340 rp='Perl administrator e-mail address'
5344 : figure out how to guarantee perl startup
5345 case "$startperl" in
5347 case "$sharpbang" in
5351 I can use the #! construct to start perl on your system. This will
5352 make startup of perl scripts faster, but may cause problems if you
5353 want to share those scripts and perl is not in a standard place
5354 ($binexp/perl) on all your platforms. The alternative is to force
5355 a shell by starting the script with a single ':' character.
5359 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5362 none) startperl=": # use perl";;
5363 *) startperl="#!$ans"
5364 if $test 30 -lt `echo "$ans" | wc -c`; then
5367 WARNING: Some systems limit the #! command to 32 characters.
5368 If you experience difficulty running Perl scripts with #!, try
5369 installing Perl in a directory with a shorter pathname.
5375 *) startperl=": # use perl"
5380 echo "I'll use $startperl to start perl scripts."
5382 : figure best path for perl in scripts
5385 perlpath="$binexp/perl"
5386 case "$startperl" in
5391 I will use the "eval 'exec'" idiom to start Perl on your system.
5392 I can use the full path of your Perl binary for this purpose, but
5393 doing so may cause problems if you want to share those scripts and
5394 Perl is not always in a standard place ($binexp/perl).
5398 rp="What path shall I use in \"eval 'exec'\"?"
5405 case "$startperl" in
5407 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5410 : determine where public executable scripts go
5411 set scriptdir scriptdir
5413 case "$scriptdir" in
5416 : guess some guesses
5417 $test -d /usr/share/scripts && dflt=/usr/share/scripts
5418 $test -d /usr/share/bin && dflt=/usr/share/bin
5419 $test -d /usr/local/script && dflt=/usr/local/script
5420 $test -d $prefixexp/script && dflt=$prefixexp/script
5424 *) dflt="$scriptdir"
5429 Some installations have a separate directory just for executable scripts so
5430 that they can mount it across multiple architectures but keep the scripts in
5431 one spot. You might, for example, have a subdirectory of /usr/share for this.
5432 Or you might just lump your scripts in with all your other executables.
5436 rp='Where do you keep publicly executable scripts?'
5438 if $test "X$ansexp" != "X$scriptdirexp"; then
5442 scriptdirexp="$ansexp"
5446 Since you are running AFS, I need to distinguish the directory in which
5447 scripts reside from the directory in which they are installed (and from
5448 which they are presumably copied to the former directory by occult means).
5451 case "$installscript" in
5452 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5453 *) dflt="$installscript";;
5456 rp='Where will public scripts be installed?'
5458 installscript="$ans"
5460 installscript="$scriptdirexp"
5465 Previous version of $package used the standard IO mechanisms as defined in
5466 <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
5467 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5468 the default and is the only supported mechanism. This abstraction
5469 layer can use AT&T's sfio (if you already have sfio installed) or
5470 fall back on standard IO. This PerlIO abstraction layer is
5471 experimental and may cause problems with some extension modules.
5473 If this doesn't make any sense to you, just accept the default 'n'.
5475 case "$useperlio" in
5476 $define|true|[yY]*) dflt='y';;
5479 rp='Use the experimental PerlIO abstraction layer?'
5486 echo "Ok, doing things the stdio way"
5493 : Check how to convert floats to strings.
5495 echo "Checking for an efficient way to convert floats to strings."
5498 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5499 char *myname = "gconvert";
5502 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5503 char *myname = "gcvt";
5506 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5507 char *myname = "sprintf";
5513 checkit(expect, got)
5517 if (strcmp(expect, got)) {
5518 printf("%s oddity: Expected %s, got %s\n",
5519 myname, expect, got);
5530 /* This must be 1st test on (which?) platform */
5531 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5532 Gconvert(0.1, 8, 0, buf);
5533 checkit("0.1", buf);
5535 Gconvert(1.0, 8, 0, buf);
5538 Gconvert(0.0, 8, 0, buf);
5541 Gconvert(-1.0, 8, 0, buf);
5544 /* Some Linux gcvt's give 1.e+5 here. */
5545 Gconvert(100000.0, 8, 0, buf);
5546 checkit("100000", buf);
5548 /* Some Linux gcvt's give -1.e+5 here. */
5549 Gconvert(-100000.0, 8, 0, buf);
5550 checkit("-100000", buf);
5555 case "$d_Gconvert" in
5556 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5557 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5558 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5559 *) xxx_list='gconvert gcvt sprintf' ;;
5562 for xxx_convert in $xxx_list; do
5563 echo "Trying $xxx_convert"
5565 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5566 try.c $libs > /dev/null 2>&1 ; then
5567 echo "$xxx_convert" found. >&4
5569 echo "I'll use $xxx_convert to convert floats into a string." >&4
5572 echo "...But $xxx_convert didn't work as I expected."
5575 echo "$xxx_convert NOT found." >&4
5579 case "$xxx_convert" in
5580 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5581 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5582 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5585 : Initialize h_fcntl
5588 : Initialize h_sysfile
5591 : access call always available on UNIX
5595 : locate the flags for 'access()'
5599 $cat >access.c <<'EOCP'
5600 #include <sys/types.h>
5605 #include <sys/file.h>
5614 : check sys/file.h first, no particular reason here
5615 if $test `./findhdr sys/file.h` && \
5616 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5618 echo "<sys/file.h> defines the *_OK access constants." >&4
5619 elif $test `./findhdr fcntl.h` && \
5620 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5622 echo "<fcntl.h> defines the *_OK access constants." >&4
5623 elif $test `./findhdr unistd.h` && \
5624 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5625 echo "<unistd.h> defines the *_OK access constants." >&4
5627 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5633 : see if alarm exists
5637 : Look for GNU-cc style attribute checking
5639 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5640 $cat >attrib.c <<'EOCP'
5642 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5644 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5645 if $contains 'warning' attrib.out >/dev/null 2>&1; then
5646 echo "Your C compiler doesn't fully support __attribute__."
5649 echo "Your C compiler supports __attribute__."
5653 echo "Your C compiler doesn't seem to understand __attribute__ at all."
5660 : see if bcmp exists
5664 : see if bcopy exists
5668 : see if this is a unistd.h system
5669 set unistd.h i_unistd
5672 : see if getpgrp exists
5673 set getpgrp d_getpgrp
5676 echo "Checking to see which flavor of getpgrp is in use . . . "
5677 case "$d_getpgrp" in
5682 #include <sys/types.h>
5684 # include <unistd.h>
5688 if (getuid() == 0) {
5689 printf("(I see you are running Configure as super-user...)\n");
5693 if (getpgrp(1) == 0)
5702 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5703 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5705 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5706 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5709 echo "I can't seem to compile and run the test program."
5711 xxx="a USG one, i.e. you use getpgrp()."
5713 # SVR4 systems can appear rather BSD-ish.
5716 xxx="a BSD one, i.e. you use getpgrp(pid)."
5720 xxx="probably a USG one, i.e. you use getpgrp()."
5725 echo "Assuming your getpgrp is $xxx" >&4
5734 : see if setpgrp exists
5735 set setpgrp d_setpgrp
5738 echo "Checking to see which flavor of setpgrp is in use . . . "
5739 case "$d_setpgrp" in
5744 #include <sys/types.h>
5746 # include <unistd.h>
5750 if (getuid() == 0) {
5751 printf("(I see you are running Configure as super-user...)\n");
5755 if (-1 == setpgrp(1, 1))
5758 if (setpgrp() != -1)
5764 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5765 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5767 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5768 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5771 echo "I can't seem to compile and run the test program."
5773 xxx="a USG one, i.e. you use setpgrp()."
5775 # SVR4 systems can appear rather BSD-ish.
5778 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5782 xxx="probably a USG one, i.e. you use setpgrp()."
5787 echo "Assuming your setpgrp is $xxx" >&4
5794 d_bsdpgrp=$d_bsdsetpgrp
5796 : see if bzero exists
5800 : check for lengths of integral types
5804 echo "Checking to see how big your integers are..." >&4
5805 $cat >intsize.c <<'EOCP'
5809 printf("intsize=%d;\n", sizeof(int));
5810 printf("longsize=%d;\n", sizeof(long));
5811 printf("shortsize=%d;\n", sizeof(short));
5816 # If $libs contains -lsfio, and sfio is mis-configured, then it
5817 # sometimes (apparently) runs and exits with a 0 status, but with no
5818 # output!. Thus we check with test -s whether we actually got any
5819 # output. I think it has to do with sfio's use of _exit vs. exit,
5820 # but I don't know for sure. --Andy Dougherty 1/27/97.
5821 if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 &&
5822 ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then
5823 eval `$cat intsize.out`
5824 echo "Your integers are $intsize bytes long."
5825 echo "Your long integers are $longsize bytes long."
5826 echo "Your short integers are $shortsize bytes long."
5830 Help! I can't compile and run the intsize test program: please enlighten me!
5831 (This is probably a misconfiguration in your system or libraries, and
5832 you really ought to fix it. Still, I'll try anyway.)
5836 rp="What is the size of an integer (in bytes)?"
5840 rp="What is the size of a long integer (in bytes)?"
5844 rp="What is the size of a short integer (in bytes)?"
5850 $rm -f intsize intsize.[co] intsize.out
5852 : see if signal is declared as pointer to function returning int or void
5854 xxx=`./findhdr signal.h`
5855 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5856 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5857 echo "You have int (*signal())() instead of void." >&4
5859 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
5860 echo "You have void (*signal())() instead of int." >&4
5862 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5863 echo "You have int (*signal())() instead of void." >&4
5866 case "$d_voidsig" in
5868 echo "I can't determine whether signal handler returns void or int..." >&4
5870 rp="What type does your signal handler return?"
5877 echo "As you already told me, signal handler returns void." >&4;;
5879 echo "As you already told me, signal handler returns int." >&4;;
5884 case "$d_voidsig" in
5885 "$define") signal_t="void";;
5890 : check for ability to cast large floats to 32-bit ints.
5892 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5893 if $test "$intsize" -eq 4; then
5899 #include <sys/types.h>
5901 $signal_t blech() { exit(3); }
5907 signal(SIGFPE, blech);
5909 f = (double) 0x7fffffff;
5913 if (i32 != ($xxx) f)
5918 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5922 echo "(I can't seem to compile the test program--assuming it can't)"
5930 echo "Nope, it can't."
5937 : check for ability to cast negative floats to unsigned
5939 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5941 #include <sys/types.h>
5943 $signal_t blech() { exit(7); }
5944 $signal_t blech_in_list() { exit(4); }
5945 unsigned long dummy_long(p) unsigned long p; { return p; }
5946 unsigned int dummy_int(p) unsigned int p; { return p; }
5947 unsigned short dummy_short(p) unsigned short p; { return p; }
5951 unsigned long along;
5953 unsigned short ashort;
5956 signal(SIGFPE, blech);
5957 along = (unsigned long)f;
5958 aint = (unsigned int)f;
5959 ashort = (unsigned short)f;
5960 if (along != (unsigned long)-123)
5962 if (aint != (unsigned int)-123)
5964 if (ashort != (unsigned short)-123)
5966 f = (double)0x40000000;
5969 along = (unsigned long)f;
5970 if (along != 0x80000000)
5974 along = (unsigned long)f;
5975 if (along != 0x7fffffff)
5979 along = (unsigned long)f;
5980 if (along != 0x80000001)
5984 signal(SIGFPE, blech_in_list);
5986 along = dummy_long((unsigned long)f);
5987 aint = dummy_int((unsigned int)f);
5988 ashort = dummy_short((unsigned short)f);
5989 if (along != (unsigned long)123)
5991 if (aint != (unsigned int)123)
5993 if (ashort != (unsigned short)123)
5999 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
6003 echo "(I can't seem to compile the test program--assuming it can't)"
6006 case "$castflags" in
6011 echo "Nope, it can't."
6018 : see if vprintf exists
6020 if set vprintf val -f d_vprintf; eval $csym; $val; then
6021 echo 'vprintf() found.' >&4
6023 $cat >vprintf.c <<'EOF'
6024 #include <varargs.h>
6026 main() { xxx("foo"); }
6035 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6038 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
6039 echo "Your vsprintf() returns (int)." >&4
6042 echo "Your vsprintf() returns (char*)." >&4
6046 echo 'vprintf() NOT found.' >&4
6056 : see if chown exists
6060 : see if chroot exists
6064 : see if chsize exists
6068 : check for const keyword
6070 echo 'Checking to see if your C compiler knows about "const"...' >&4
6071 $cat >const.c <<'EOCP'
6072 typedef struct spug { int drokk; } spug;
6079 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6081 echo "Yup, it does."
6084 echo "Nope, it doesn't."
6089 : see if crypt exists
6091 if set crypt val -f d_crypt; eval $csym; $val; then
6092 echo 'crypt() found.' >&4
6096 cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
6097 if $test -z "$cryptlib"; then
6098 cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
6102 if $test -z "$cryptlib"; then
6103 cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
6107 if $test -z "$cryptlib"; then
6108 cryptlib=`./loc libcrypt$lib_ext "" $libpth`
6112 if $test -z "$cryptlib"; then
6113 echo 'crypt() NOT found.' >&4
6122 : get csh whereabouts
6124 'csh') val="$undef" ;;
6129 : Respect a hint or command line value for full_csh.
6131 '') full_csh=$csh ;;
6134 : see if cuserid exists
6135 set cuserid d_cuserid
6138 : see if this is a limits.h system
6139 set limits.h i_limits
6142 : see if this is a float.h system
6146 : See if number of significant digits in a double precision number is known
6148 $cat >dbl_dig.c <<EOM
6158 printf("Contains DBL_DIG");
6161 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6162 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6163 echo "DBL_DIG found." >&4
6166 echo "DBL_DIG NOT found." >&4
6173 : see if difftime exists
6174 set difftime d_difftime
6177 : see if this is a dirent system
6179 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
6181 echo "<dirent.h> found." >&4
6184 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
6185 echo "<sys/dir.h> found." >&4
6188 xinc=`./findhdr sys/ndir.h`
6190 echo "<dirent.h> NOT found." >&4
6195 : Look for type of directory structure.
6197 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6199 case "$direntrytype" in
6202 $define) guess1='struct dirent' ;;
6203 *) guess1='struct direct' ;;
6206 *) guess1="$direntrytype"
6211 'struct dirent') guess2='struct direct' ;;
6212 *) guess2='struct dirent' ;;
6215 if $contains "$guess1" try.c >/dev/null 2>&1; then
6216 direntrytype="$guess1"
6217 echo "Your directory entries are $direntrytype." >&4
6218 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6219 direntrytype="$guess2"
6220 echo "Your directory entries seem to be $direntrytype." >&4
6222 echo "I don't recognize your system's directory entries." >&4
6223 rp="What type is used for directory entries on this system?"
6231 : see if the directory entry stores field length
6233 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6234 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6235 echo "Good, your directory entry keeps length information in d_namlen." >&4
6238 echo "Your directory entry does not know about the d_namlen field." >&4
6245 : see if dlerror exists
6248 set dlerror d_dlerror
6252 : see if dlfcn is available
6260 On a few systems, the dynamically loaded modules that perl generates and uses
6261 will need a different extension then shared libs. The default will probably
6269 rp='What is the extension of dynamically loaded modules'
6278 : Check if dlsym need a leading underscore
6284 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6285 $cat >dyna.c <<'EOM'
6294 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
6296 #include <sys/types.h>
6310 int mode = RTLD_LAZY ;
6312 handle = dlopen("./dyna.$dlext", mode) ;
6313 if (handle == NULL) {
6318 symbol = dlsym(handle, "fred") ;
6319 if (symbol == NULL) {
6320 /* try putting a leading underscore */
6321 symbol = dlsym(handle, "_fred") ;
6322 if (symbol == NULL) {
6335 : Call the object file tmp-dyna.o in case dlext=o.
6336 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
6337 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6338 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 &&
6339 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6342 1) echo "Test program failed using dlopen." >&4
6343 echo "Perhaps you should not use dynamic loading." >&4;;
6344 2) echo "Test program failed using dlsym." >&4
6345 echo "Perhaps you should not use dynamic loading." >&4;;
6346 3) echo "dlsym needs a leading underscore" >&4
6348 4) echo "dlsym doesn't need a leading underscore." >&4;;
6351 echo "I can't compile and run the test program." >&4
6356 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6361 : see if dup2 exists
6365 : Locate the flags for 'open()'
6367 $cat >open3.c <<'EOCP'
6368 #include <sys/types.h>
6373 #include <sys/file.h>
6384 : check sys/file.h first to get FREAD on Sun
6385 if $test `./findhdr sys/file.h` && \
6386 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6388 echo "<sys/file.h> defines the O_* constants..." >&4
6390 echo "and you have the 3 argument form of open()." >&4
6393 echo "but not the 3 argument form of open(). Oh, well." >&4
6396 elif $test `./findhdr fcntl.h` && \
6397 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6399 echo "<fcntl.h> defines the O_* constants..." >&4
6401 echo "and you have the 3 argument form of open()." >&4
6404 echo "but not the 3 argument form of open(). Oh, well." >&4
6409 echo "I can't find the O_* constant definitions! You got problems." >&4
6415 : check for non-blocking I/O stuff
6416 case "$h_sysfile" in
6417 true) echo "#include <sys/file.h>" > head.c;;
6420 true) echo "#include <fcntl.h>" > head.c;;
6421 *) echo "#include <sys/fcntl.h>" > head.c;;
6426 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6427 case "$o_nonblock" in
6430 $cat >>try.c <<'EOCP'
6433 printf("O_NONBLOCK\n");
6437 printf("O_NDELAY\n");
6441 printf("FNDELAY\n");
6447 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6449 case "$o_nonblock" in
6450 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6451 *) echo "Seems like we can use $o_nonblock.";;
6454 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6457 *) echo "Using $hint value $o_nonblock.";;
6459 $rm -f try try.* .out core
6462 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6468 #include <sys/types.h>
6470 #define MY_O_NONBLOCK $o_nonblock
6472 $signal_t blech(x) int x; { exit(3); }
6474 $cat >> try.c <<'EOCP'
6482 pipe(pd); /* Down: child -> parent */
6483 pipe(pu); /* Up: parent -> child */
6486 close(pd[1]); /* Parent reads from pd[0] */
6487 close(pu[0]); /* Parent writes (blocking) to pu[1] */
6488 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6490 signal(SIGALRM, blech);
6492 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
6494 sprintf(string, "%d\n", ret);
6495 write(2, string, strlen(string));
6498 if (errno == EAGAIN) {
6504 if (errno == EWOULDBLOCK)
6505 printf("EWOULDBLOCK\n");
6508 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
6509 sleep(2); /* Give it time to close our pipe */
6511 ret = read(pd[0], buf, 1); /* Should read EOF */
6513 sprintf(string, "%d\n", ret);
6514 write(3, string, strlen(string));
6518 close(pd[0]); /* We write to pd[1] */
6519 close(pu[1]); /* We read from pu[0] */
6520 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
6521 close(pd[1]); /* Pipe pd is now fully closed! */
6522 exit(0); /* Bye bye, thank you for playing! */
6525 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6526 echo "$startsh" >mtry
6527 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6529 ./mtry >/dev/null 2>&1
6531 0) eagain=`$cat try.out`;;
6532 1) echo "Could not perform non-blocking setting!";;
6533 2) echo "I did a successful read() for something that was not there!";;
6534 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6535 *) echo "Something terribly wrong happened during testing.";;
6537 rd_nodata=`$cat try.ret`
6538 echo "A read() system call with no data present returns $rd_nodata."
6539 case "$rd_nodata" in
6542 echo "(That's peculiar, fixing that to be -1.)"
6548 echo "Forcing errno EAGAIN on read() with no data available."
6552 echo "Your read() sets errno to $eagain when no data is available."
6555 status=`$cat try.err`
6557 0) echo "And it correctly returns 0 to signal EOF.";;
6558 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6559 *) echo "However, your read() returns '$status' on EOF??";;
6562 if test "$status" = "$rd_nodata"; then
6563 echo "WARNING: you can't distinguish between EOF and no data!"
6567 echo "I can't compile the test program--assuming errno EAGAIN will do."
6574 echo "Using $hint value $eagain."
6575 echo "Your read() returns $rd_nodata when no data is present."
6576 case "$d_eofnblk" in
6577 "$define") echo "And you can see EOF because read() returns 0.";;
6578 "$undef") echo "But you can't see EOF status from read() returned value.";;
6580 echo "(Assuming you can't see EOF status from read anyway.)"
6586 $rm -f try try.* .out core head.c mtry
6588 : see if fchmod exists
6592 : see if fchown exists
6596 : see if this is an fcntl system
6600 : see if fgetpos exists
6601 set fgetpos d_fgetpos
6604 : see if flock exists
6608 : see if fork exists
6612 : see if pathconf exists
6613 set pathconf d_pathconf
6616 : see if fpathconf exists
6617 set fpathconf d_fpathconf
6620 : see if fsetpos exists
6621 set fsetpos d_fsetpos
6624 : see if gethostent exists
6625 set gethostent d_gethent
6628 : see if getlogin exists
6629 set getlogin d_getlogin
6632 : see if getpgid exists
6633 set getpgid d_getpgid
6636 : see if getpgrp2 exists
6637 set getpgrp2 d_getpgrp2
6640 : see if getppid exists
6641 set getppid d_getppid
6644 : see if getpriority exists
6645 set getpriority d_getprior
6648 : see if gettimeofday or ftime exists
6649 set gettimeofday d_gettimeod
6651 case "$d_gettimeod" in
6657 val="$undef"; set d_ftime; eval $setvar
6660 case "$d_gettimeod$d_ftime" in
6663 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
6667 : see if this is a netinet/in.h or sys/in.h system
6668 set netinet/in.h i_niin sys/in.h i_sysin
6671 : see if htonl --and friends-- exists
6676 : Maybe they are macros.
6681 #include <sys/types.h>
6682 #$i_niin I_NETINET_IN
6685 #include <netinet/in.h>
6691 printf("Defined as a macro.");
6694 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6695 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6697 echo "But it seems to be defined as a macro." >&4
6705 : see which of string.h or strings.h is needed
6707 strings=`./findhdr string.h`
6708 if $test "$strings" && $test -r "$strings"; then
6709 echo "Using <string.h> instead of <strings.h>." >&4
6713 strings=`./findhdr strings.h`
6714 if $test "$strings" && $test -r "$strings"; then
6715 echo "Using <strings.h> instead of <string.h>." >&4
6717 echo "No string header found -- You'll surely have problems." >&4
6723 "$undef") strings=`./findhdr strings.h`;;
6724 *) strings=`./findhdr string.h`;;
6729 if set index val -f; eval $csym; $val; then
6730 if set strchr val -f d_strchr; eval $csym; $val; then
6731 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6734 echo "strchr() found." >&4
6738 echo "index() found." >&4
6743 echo "index() found." >&4
6746 if set strchr val -f d_strchr; eval $csym; $val; then
6749 echo "strchr() found." >&4
6751 echo "No index() or strchr() found!" >&4
6756 set d_strchr; eval $setvar
6758 set d_index; eval $setvar
6760 : check whether inet_aton exists
6761 set inet_aton d_inetaton
6766 $cat >isascii.c <<'EOCP'
6777 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6778 echo "isascii() found." >&4
6781 echo "isascii() NOT found." >&4
6788 : see if killpg exists
6792 : see if link exists
6796 : see if localeconv exists
6797 set localeconv d_locconv
6800 : see if lockf exists
6804 : see if lstat exists
6808 : see if mblen exists
6812 : see if mbstowcs exists
6813 set mbstowcs d_mbstowcs
6816 : see if mbtowc exists
6820 : see if memcmp exists
6824 : see if memcpy exists
6828 : see if memmove exists
6829 set memmove d_memmove
6832 : see if memset exists
6836 : see if mkdir exists
6840 : see if mkfifo exists
6844 : see if mktime exists
6848 : see if msgctl exists
6852 : see if msgget exists
6856 : see if msgsnd exists
6860 : see if msgrcv exists
6864 : see how much of the 'msg*(2)' library is present.
6867 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6868 *"$undef"*) h_msg=false;;
6870 : we could also check for sys/ipc.h ...
6871 if $h_msg && $test `./findhdr sys/msg.h`; then
6872 echo "You have the full msg*(2) library." >&4
6875 echo "You don't have the full msg*(2) library." >&4
6881 : see if this is a malloc.h system
6882 set malloc.h i_malloc
6885 : see if stdlib is available
6886 set stdlib.h i_stdlib
6889 : determine which malloc to compile in
6891 case "$usemymalloc" in
6892 ''|y*|true) dflt='y' ;;
6893 n*|false) dflt='n' ;;
6894 *) dflt="$usemymalloc" ;;
6896 rp="Do you wish to attempt to use the malloc that comes with $package?"
6902 mallocsrc='malloc.c'
6903 mallocobj='malloc.o'
6904 d_mymalloc="$define"
6907 : Remove malloc from list of libraries to use
6908 echo "Removing unneeded -lmalloc from library list" >&4
6909 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6912 echo "libs = $libs" >&4
6924 : compute the return types of malloc and free
6926 $cat >malloc.c <<END
6930 #include <sys/types.h>
6944 case "$malloctype" in
6946 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6953 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6957 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6964 echo "Your system uses $freetype free(), it would seem." >&4
6966 : see if nice exists
6970 : see if pause exists
6974 : see if pipe exists
6978 : see if poll exists
6982 : see if this is a pwd.h system
6988 xxx=`./findhdr pwd.h`
6989 $cppstdin $cppflags $cppminus < $xxx >$$.h
6991 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6999 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
7007 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
7015 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
7023 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
7031 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
7043 set d_pwquota; eval $setvar
7044 set d_pwage; eval $setvar
7045 set d_pwchange; eval $setvar
7046 set d_pwclass; eval $setvar
7047 set d_pwexpire; eval $setvar
7048 set d_pwcomment; eval $setvar
7052 : see if readdir and friends exist
7053 set readdir d_readdir
7055 set seekdir d_seekdir
7057 set telldir d_telldir
7059 set rewinddir d_rewinddir
7062 : see if readlink exists
7063 set readlink d_readlink
7066 : see if rename exists
7070 : see if rmdir exists
7074 : see if memory.h is available.
7079 : See if it conflicts with string.h
7085 $cppstdin $cppflags $cppminus < $strings > mem.h
7086 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
7088 echo "We won't be including <memory.h>."
7098 : can bcopy handle overlapping blocks?
7103 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
7110 $cat >>foo.c <<'EOCP'
7114 # include <memory.h>
7117 # include <stdlib.h>
7120 # include <string.h>
7122 # include <strings.h>
7125 # include <unistd.h> /* Needed for NetBSD */
7129 char buf[128], abc[128];
7135 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7136 try to store the string in read-only memory. */
7137 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
7139 for (align = 7; align >= 0; align--) {
7140 for (len = 36; len; len--) {
7143 for (off = 1; off <= len; off++) {
7144 bcopy(b, b+off, len);
7145 bcopy(b+off, b, len);
7146 if (bcmp(b, abc, len))
7154 if $cc $optimize $ccflags $ldflags foo.c \
7155 -o safebcpy $libs >/dev/null 2>&1; then
7156 if ./safebcpy 2>/dev/null; then
7160 echo "It can't, sorry."
7161 case "$d_memmove" in
7162 "$define") echo "But that's Ok since you have memmove()." ;;
7166 echo "(I can't compile the test program, so we'll assume not...)"
7167 case "$d_memmove" in
7168 "$define") echo "But that's Ok since you have memmove()." ;;
7173 $rm -f foo.* safebcpy core
7177 : can memcpy handle overlapping blocks?
7182 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
7189 $cat >>foo.c <<'EOCP'
7193 # include <memory.h>
7196 # include <stdlib.h>
7199 # include <string.h>
7201 # include <strings.h>
7204 # include <unistd.h> /* Needed for NetBSD */
7208 char buf[128], abc[128];
7214 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7215 try to store the string in read-only memory. */
7216 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
7218 for (align = 7; align >= 0; align--) {
7219 for (len = 36; len; len--) {
7221 memcpy(b, abc, len);
7222 for (off = 1; off <= len; off++) {
7223 memcpy(b+off, b, len);
7224 memcpy(b, b+off, len);
7225 if (memcmp(b, abc, len))
7233 if $cc $optimize $ccflags $ldflags foo.c \
7234 -o safemcpy $libs >/dev/null 2>&1; then
7235 if ./safemcpy 2>/dev/null; then
7239 echo "It can't, sorry."
7240 case "$d_memmove" in
7241 "$define") echo "But that's Ok since you have memmove()." ;;
7245 echo "(I can't compile the test program, so we'll assume not...)"
7246 case "$d_memmove" in
7247 "$define") echo "But that's Ok since you have memmove()." ;;
7252 $rm -f foo.* safemcpy core
7256 : can memcmp be trusted to compare relative magnitude?
7261 echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
7268 $cat >>foo.c <<'EOCP'
7272 # include <memory.h>
7275 # include <stdlib.h>
7278 # include <string.h>
7280 # include <strings.h>
7283 # include <unistd.h> /* Needed for NetBSD */
7289 if ((a < b) && memcmp(&a, &b, 1) < 0)
7294 if $cc $optimize $ccflags $ldflags foo.c \
7295 -o sanemcmp $libs >/dev/null 2>&1; then
7296 if ./sanemcmp 2>/dev/null; then
7300 echo "No, it can't (it uses signed chars)."
7303 echo "(I can't compile the test program, so we'll assume not...)"
7307 $rm -f foo.* sanemcmp core
7311 : see if select exists
7315 : see if semctl exists
7319 : see if semget exists
7323 : see if semop exists
7327 : see how much of the 'sem*(2)' library is present.
7330 case "$d_semctl$d_semget$d_semop" in
7331 *"$undef"*) h_sem=false;;
7333 : we could also check for sys/ipc.h ...
7334 if $h_sem && $test `./findhdr sys/sem.h`; then
7335 echo "You have the full sem*(2) library." >&4
7338 echo "You don't have the full sem*(2) library." >&4
7344 : see if setegid exists
7345 set setegid d_setegid
7348 : see if seteuid exists
7349 set seteuid d_seteuid
7352 : see if setlinebuf exists
7353 set setlinebuf d_setlinebuf
7356 : see if setlocale exists
7357 set setlocale d_setlocale
7360 : see if setpgid exists
7361 set setpgid d_setpgid
7364 : see if setpgrp2 exists
7365 set setpgrp2 d_setpgrp2
7368 : see if setpriority exists
7369 set setpriority d_setprior
7372 : see if setregid exists
7373 set setregid d_setregid
7375 set setresgid d_setresgid
7378 : see if setreuid exists
7379 set setreuid d_setreuid
7381 set setresuid d_setresuid
7384 : see if setrgid exists
7385 set setrgid d_setrgid
7388 : see if setruid exists
7389 set setruid d_setruid
7392 : see if setsid exists
7396 : see if sfio.h is available
7401 : see if sfio library is available
7412 : Ok, but do we want to use it.
7416 true|$define|[yY]*) dflt='y';;
7419 echo "$package can use the sfio library, but it is experimental."
7420 rp="You seem to have sfio available, do you want to try using it?"
7424 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
7426 : Remove sfio from list of libraries to use
7427 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
7430 echo "libs = $libs" >&4
7434 *) case "$usesfio" in
7436 echo "Sorry, cannot find sfio on this machine" >&4
7437 echo "Ignoring your setting of usesfio=$usesfio" >&4
7445 $define) usesfio='true';;
7446 *) usesfio='false';;
7449 : see if shmctl exists
7453 : see if shmget exists
7457 : see if shmat exists
7460 : see what shmat returns
7463 $cat >shmat.c <<'END'
7464 #include <sys/shm.h>
7467 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7472 echo "and it returns ($shmattype)." >&4
7473 : see if a prototype for shmat is available
7474 xxx=`./findhdr sys/shm.h`
7475 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7476 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7487 set d_shmatprototype
7490 : see if shmdt exists
7494 : see how much of the 'shm*(2)' library is present.
7497 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7498 *"$undef"*) h_shm=false;;
7500 : we could also check for sys/ipc.h ...
7501 if $h_shm && $test `./findhdr sys/shm.h`; then
7502 echo "You have the full shm*(2) library." >&4
7505 echo "You don't have the full shm*(2) library." >&4
7512 : see if we have sigaction
7513 if set sigaction val -f d_sigaction; eval $csym; $val; then
7514 echo 'sigaction() found.' >&4
7517 echo 'sigaction NOT found.' >&4
7521 $cat > set.c <<'EOP'
7522 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7523 sigaction structure if compiled with cc -Xc. This compile test
7524 will fail then. <doughera@lafcol.lafayette.edu>
7527 #include <sys/types.h>
7531 struct sigaction act, oact;
7535 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7538 echo "But you don't seem to have a useable struct sigaction." >&4
7541 set d_sigaction; eval $setvar
7542 $rm -f set set.o set.c
7544 : see if sigsetjmp exists
7546 case "$d_sigsetjmp" in
7554 if (sigsetjmp(env,1))
7561 if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7562 if ./set >/dev/null 2>&1; then
7563 echo "POSIX sigsetjmp found." >&4
7567 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7573 echo "sigsetjmp not found." >&4
7577 *) val="$d_sigsetjmp"
7578 case "$d_sigsetjmp" in
7579 $define) echo "POSIX sigsetjmp found." >&4;;
7580 $undef) echo "sigsetjmp not found." >&4;;
7590 : see whether socket exists
7592 $echo $n "Hmm... $c" >&4
7593 if set socket val -f d_socket; eval $csym; $val; then
7594 echo "Looks like you have Berkeley networking support." >&4
7596 if set setsockopt val -f; eval $csym; $val; then
7599 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7603 if $contains socklib libc.list >/dev/null 2>&1; then
7604 echo "Looks like you have Berkeley networking support." >&4
7606 : we will have to assume that it supports the 4.2 BSD interface
7609 echo "You don't have Berkeley networking in libc$lib_ext..." >&4
7610 if test -f /usr/lib/libnet$lib_ext; then
7611 ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) || \
7612 ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list
7613 if $contains socket libc.list >/dev/null 2>&1; then
7614 echo "...but the Wollongong group seems to have hacked it in." >&4
7616 sockethdr="-I/usr/netinclude"
7618 if $contains setsockopt libc.list >/dev/null 2>&1; then
7621 echo "...using the old 4.1c interface, rather than 4.2" >&4
7625 echo "or even in libnet$lib_ext, which is peculiar." >&4
7630 echo "or anywhere else I see." >&4
7637 : see if socketpair exists
7638 set socketpair d_sockpair
7641 : see if stat knows about block sizes
7643 xxx=`./findhdr sys/stat.h`
7644 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7645 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7646 echo "Your stat() knows about block sizes." >&4
7649 echo "Your stat() doesn't know about block sizes." >&4
7653 echo "Your stat() doesn't know about block sizes." >&4
7659 : see if _ptr and _cnt from stdio act std
7661 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7662 echo "(Looks like you have stdio.h from Linux.)"
7663 case "$stdio_ptr" in
7664 '') stdio_ptr='((fp)->_IO_read_ptr)'
7667 *) ptr_lval=$d_stdio_ptr_lval;;
7669 case "$stdio_cnt" in
7670 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7673 *) cnt_lval=$d_stdio_cnt_lval;;
7675 case "$stdio_base" in
7676 '') stdio_base='((fp)->_IO_read_base)';;
7678 case "$stdio_bufsiz" in
7679 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7682 case "$stdio_ptr" in
7683 '') stdio_ptr='((fp)->_ptr)'
7686 *) ptr_lval=$d_stdio_ptr_lval;;
7688 case "$stdio_cnt" in
7689 '') stdio_cnt='((fp)->_cnt)'
7692 *) cnt_lval=$d_stdio_cnt_lval;;
7694 case "$stdio_base" in
7695 '') stdio_base='((fp)->_base)';;
7697 case "$stdio_bufsiz" in
7698 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7701 : test whether _ptr and _cnt really work
7702 echo "Checking how std your stdio is..." >&4
7705 #define FILE_ptr(fp) $stdio_ptr
7706 #define FILE_cnt(fp) $stdio_cnt
7708 FILE *fp = fopen("try.c", "r");
7711 18 <= FILE_cnt(fp) &&
7712 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7719 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7721 echo "Your stdio acts pretty std."
7724 echo "Your stdio isn't very std."
7727 echo "Your stdio doesn't appear very std."
7733 : Can _ptr be used as an lvalue?
7734 case "$d_stdstdio$ptr_lval" in
7735 $define$define) val=$define ;;
7738 set d_stdio_ptr_lval
7741 : Can _cnt be used as an lvalue?
7742 case "$d_stdstdio$cnt_lval" in
7743 $define$define) val=$define ;;
7746 set d_stdio_cnt_lval
7750 : see if _base is also standard
7752 case "$d_stdstdio" in
7756 #define FILE_base(fp) $stdio_base
7757 #define FILE_bufsiz(fp) $stdio_bufsiz
7759 FILE *fp = fopen("try.c", "r");
7762 19 <= FILE_bufsiz(fp) &&
7763 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7769 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7771 echo "And its _base field acts std."
7774 echo "But its _base field isn't std."
7777 echo "However, it seems to be lacking the _base field."
7785 : see if strcoll exists
7786 set strcoll d_strcoll
7789 : check for structure copying
7791 echo "Checking to see if your C compiler can copy structs..." >&4
7792 $cat >try.c <<'EOCP'
7802 if $cc -c try.c >/dev/null 2>&1 ; then
7807 echo "Nope, it can't."
7813 : see if strerror and/or sys_errlist[] exist
7815 if set strerror val -f d_strerror; eval $csym; $val; then
7816 echo 'strerror() found.' >&4
7817 d_strerror="$define"
7818 d_strerrm='strerror(e)'
7819 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7820 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
7821 d_syserrlst="$define"
7823 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7824 d_syserrlst="$undef"
7826 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7827 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7828 echo 'strerror() found in string header.' >&4
7829 d_strerror="$define"
7830 d_strerrm='strerror(e)'
7831 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7832 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7833 d_syserrlst="$define"
7835 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7836 d_syserrlst="$undef"
7838 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7839 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7841 d_syserrlst="$define"
7842 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7844 echo 'strerror() and sys_errlist[] NOT found.' >&4
7846 d_syserrlst="$undef"
7847 d_strerrm='"unknown"'
7850 : see if strtod exists
7854 : see if strtol exists
7858 : see if strtoul exists
7859 set strtoul d_strtoul
7862 : see if strxfrm exists
7863 set strxfrm d_strxfrm
7866 : see if symlink exists
7867 set symlink d_symlink
7870 : see if syscall exists
7871 set syscall d_syscall
7874 : see if sysconf exists
7875 set sysconf d_sysconf
7878 : see if system exists
7882 : see if tcgetpgrp exists
7883 set tcgetpgrp d_tcgetpgrp
7886 : see if tcsetpgrp exists
7887 set tcsetpgrp d_tcsetpgrp
7890 : define an is-a-typedef? function
7891 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7893 "") inclist="sys/types.h";;
7895 eval "varval=\$$var";
7899 for inc in $inclist; do
7900 echo "#include <$inc>" >>temp.c;
7902 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7903 if $contains $type temp.E >/dev/null 2>&1; then
7909 *) eval "$var=\$varval";;
7912 : see if this is a sys/times.h system
7913 set sys/times.h i_systimes
7916 : see if times exists
7918 if set times val -f d_times; eval $csym; $val; then
7919 echo 'times() found.' >&4
7922 case "$i_systimes" in
7923 "$define") inc='sys/times.h';;
7925 set clock_t clocktype long stdio.h sys/types.h $inc
7929 rp="What type is returned by times() on this system?"
7933 echo 'times() NOT found, hope that will do.' >&4
7938 : see if truncate exists
7939 set truncate d_truncate
7942 : see if tzname[] exists
7944 if set tzname val -a d_tzname; eval $csym; $val; then
7946 echo 'tzname[] found.' >&4
7949 echo 'tzname[] NOT found.' >&4
7954 : see if umask exists
7958 : see how we will look up host name
7961 : dummy stub to allow use of elif
7962 elif set uname val -f d_uname; eval $csym; $val; then
7965 uname() was found, but you're running xenix, and older versions of xenix
7966 have a broken uname(). If you don't really know whether your xenix is old
7967 enough to have a broken system call, use the default answer.
7974 rp='Is your uname() broken?'
7977 n*) d_uname="$define"; call=uname;;
7980 echo 'uname() found.' >&4
7985 case "$d_gethname" in
7986 '') d_gethname="$undef";;
7989 '') d_uname="$undef";;
7991 case "$d_phostname" in
7992 '') d_phostname="$undef";;
7995 : backward compatibility for d_hvfork
7996 if test X$d_hvfork != X; then
8000 : see if there is a vfork
8005 : Ok, but do we want to use it. vfork is reportedly unreliable in
8006 : perl on Solaris 2.x, and probably elsewhere.
8014 rp="Some systems have problems with vfork(). Do you want to use it?"
8019 echo "Ok, we won't use vfork()."
8028 $define) usevfork='true';;
8029 *) usevfork='false';;
8032 : see if this is an sysdir system
8033 set sys/dir.h i_sysdir
8036 : see if this is an sysndir system
8037 set sys/ndir.h i_sysndir
8040 : see if closedir exists
8041 set closedir d_closedir
8044 case "$d_closedir" in
8047 echo "Checking whether closedir() returns a status..." >&4
8048 cat > closedir.c <<EOM
8049 #$i_dirent I_DIRENT /**/
8050 #$i_sysdir I_SYS_DIR /**/
8051 #$i_sysndir I_SYS_NDIR /**/
8053 #if defined(I_DIRENT)
8055 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
8056 #include <sys/dir.h>
8060 #include <sys/ndir.h>
8064 #include <ndir.h> /* may be wrong in the future */
8066 #include <sys/dir.h>
8071 int main() { return closedir(opendir(".")); }
8073 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
8074 if ./closedir > /dev/null 2>&1 ; then
8075 echo "Yes, it does."
8078 echo "No, it doesn't."
8082 echo "(I can't seem to compile the test program--assuming it doesn't)"
8093 : check for volatile keyword
8095 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
8096 $cat >try.c <<'EOCP'
8099 typedef struct _goo_struct goo_struct;
8100 goo_struct * volatile goo = ((goo_struct *)0);
8101 struct _goo_struct {
8106 typedef unsigned short foo_t;
8109 volatile foo_t blech;
8113 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
8115 echo "Yup, it does."
8118 echo "Nope, it doesn't."
8124 : see if there is a wait4
8128 : see if waitpid exists
8129 set waitpid d_waitpid
8132 : see if wcstombs exists
8133 set wcstombs d_wcstombs
8136 : see if wctomb exists
8140 : preserve RCS keywords in files with variable substitution, grrr
8145 Revision='$Revision'
8147 : check for alignment requirements
8149 case "$alignbytes" in
8150 '') echo "Checking alignment constraints..." >&4
8151 $cat >try.c <<'EOCP'
8158 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
8161 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
8165 echo "(I can't seem to compile the test program...)"
8168 *) dflt="$alignbytes"
8171 rp="Doubles must be aligned on a how-many-byte boundary?"
8176 : check for ordering of bytes in a long
8177 case "$byteorder" in
8181 In the following, larger digits indicate more significance. A big-endian
8182 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
8183 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
8184 machines may have weird orders like 3412. A Cray will report 87654321. If
8185 the test program works the default is probably right.
8186 I'm now running the test program...
8188 $cat >try.c <<'EOCP'
8195 char c[sizeof(long)];
8198 if (sizeof(long) > 4)
8199 u.l = (0x08070605L << 32) | 0x04030201L;
8202 for (i = 0; i < sizeof(long); i++)
8203 printf("%c", u.c[i]+'0');
8209 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
8212 [1-4][1-4][1-4][1-4]|12345678|87654321)
8213 echo "(The test program ran ok.)"
8214 echo "byteorder=$dflt"
8217 ????|????????) echo "(The test program ran ok.)" ;;
8218 *) echo "(The test program didn't run right for some reason.)" ;;
8223 (I can't seem to compile the test program. Guessing big-endian...)
8226 case "$xxx_prompt" in
8228 rp="What is the order of bytes in a long?"
8239 : how do we catenate cpp tokens here?
8241 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8242 $cat >cpp_stuff.c <<'EOCP'
8243 #define RCAT(a,b)a/**/b
8244 #define ACAT(a,b)a ## b
8248 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8249 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8250 echo "Oh! Smells like ANSI's been here."
8251 echo "We can catify or stringify, separately or together!"
8253 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8254 echo "Ah, yes! The good old days!"
8255 echo "However, in the good old days we don't know how to stringify and"
8256 echo "catify at the same time."
8260 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
8261 to have to edit the values of CAT[2-5] in config.h...
8263 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8267 : see if this is a db.h system
8273 : Check db version. We can not use version 2.
8275 echo "Checking Berkeley DB version ..." >&4
8281 #include <sys/types.h>
8286 #ifdef DB_VERSION_MAJOR /* DB version >= 2: not yet. */
8287 printf("You have Berkeley DB Version %d.%d\n",
8288 DB_VERSION_MAJOR, DB_VERSION_MINOR);
8289 printf("Perl currently only supports up to version 1.86.\n");
8292 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
8293 exit(0); /* DB version < 2: the coast is clear. */
8295 exit(1); /* <db.h> not Berkeley DB? */
8300 if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then
8301 echo 'Looks OK. (Perl supports up to version 1.86).' >&4
8303 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
8307 : Remove db from list of libraries to use
8308 echo "Removing unusable -ldb from library list" >&4
8309 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
8312 echo "libs = $libs" >&4
8322 : Check the return type needed for hash
8324 echo "Checking return type needed for hash for Berkeley DB ..." >&4
8330 #include <sys/types.h>
8332 u_int32_t hash_cb (ptr, size)
8340 info.hash = hash_cb;
8343 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8344 if $contains warning try.out >>/dev/null 2>&1 ; then
8347 db_hashtype='u_int32_t'
8350 : XXX Maybe we should just give up here.
8351 db_hashtype=u_int32_t
8352 echo "Help: I can't seem to compile the db test program." >&4
8353 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
8356 echo "Your version of Berkeley DB uses $db_hashtype for hash."
8358 *) db_hashtype=u_int32_t
8364 : Check the return type needed for prefix
8366 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8372 #include <sys/types.h>
8374 size_t prefix_cb (key1, key2)
8382 info.prefix = prefix_cb;
8385 if $cc $ccflags -c try.c >try.out 2>&1 ; then
8386 if $contains warning try.out >>/dev/null 2>&1 ; then
8389 db_prefixtype='size_t'
8392 db_prefixtype='size_t'
8393 : XXX Maybe we should just give up here.
8394 echo "Help: I can't seem to compile the db test program." >&4
8395 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
8398 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8400 *) db_prefixtype='size_t'
8404 : check for void type
8406 echo "Checking to see how well your C compiler groks the void type..." >&4
8409 Support flag bits are:
8410 1: basic void declarations.
8411 2: arrays of pointers to functions returning void.
8412 4: operations between pointers to and addresses of void functions.
8413 8: generic void pointers.
8416 case "$voidflags" in
8418 $cat >try.c <<'EOCP'
8424 extern void moo(); /* function returning void */
8425 void (*goo)(); /* ptr to func returning void */
8427 void *hue; /* generic ptr */
8442 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8443 voidflags=$defvoidused
8444 echo "It appears to support void to the level $package wants ($defvoidused)."
8445 if $contains warning .out >/dev/null 2>&1; then
8446 echo "However, you might get some warnings that look like this:"
8450 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8451 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8452 echo "It supports 1..."
8453 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8454 echo "It also supports 2..."
8455 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8457 echo "And it supports 4 but not 8 definitely."
8459 echo "It doesn't support 4..."
8460 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8462 echo "But it supports 8."
8465 echo "Neither does it support 8."
8469 echo "It does not support 2..."
8470 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8472 echo "But it supports 4 and 8."
8474 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8476 echo "And it supports 4 but has not heard about 8."
8478 echo "However it supports 8 but not 4."
8483 echo "There is no support at all for void."
8488 : Only prompt user if support does not match the level we want
8489 case "$voidflags" in
8493 rp="Your void support flags add up to what?"
8500 : see what type file positions are declared as in the library
8501 set fpos_t fpostype long stdio.h sys/types.h
8505 rp="What is the type for file position used by fsetpos()?"
8509 : Store the full pathname to the sed program for use in the C program
8512 : see what type gids are declared as in the kernel
8513 set gid_t gidtype xxx stdio.h sys/types.h
8517 xxx=`./findhdr sys/user.h`
8518 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8520 unsigned) dflt="$1 $2" ;;
8524 *) dflt="$gidtype";;
8527 rp="What is the type for group ids returned by getgid()?"
8531 : see if getgroups exists
8532 set getgroups d_getgrps
8535 : see if setgroups exists
8536 set setgroups d_setgrps
8539 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
8541 case "$d_getgrps$d_setgrps" in
8543 case "$groupstype" in
8544 '') dflt="$gidtype" ;;
8545 *) dflt="$groupstype" ;;
8548 What is the type of the second argument to getgroups() and setgroups()?
8549 Usually this is the same as group ids, $gidtype, but not always.
8552 rp='What type is the second argument to getgroups() and setgroups()?'
8556 *) groupstype="$gidtype";;
8559 : see what type lseek is declared as in the kernel
8560 set off_t lseektype long stdio.h sys/types.h
8564 rp="What type is lseek's offset on this system declared as?"
8571 make=`./loc make make $pth`
8573 /*) echo make is in $make. ;;
8574 ?:[\\/]*) echo make is in $make. ;;
8575 *) echo "I don't know where 'make' is, and my life depends on it." >&4
8576 echo "Go find a make program or fix your PATH setting!" >&4
8581 *) echo make is in $make. ;;
8584 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8585 case "$make_set_make" in
8587 $sed 's/^X //' > testmake.mak << 'EOF'
8589 X @echo 'ac_maketemp="$(MAKE)"'
8591 : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8592 case "`$make -f testmake.mak 2>/dev/null`" in
8593 *ac_maketemp=*) make_set_make='#' ;;
8594 *) make_set_make="MAKE=$make" ;;
8599 case "$make_set_make" in
8600 '#') echo "Yup, it does." >&4 ;;
8601 *) echo "Nope, it doesn't." >&4 ;;
8604 : see what type is used for mode_t
8605 set mode_t modetype int stdio.h sys/types.h
8609 rp="What type is used for file modes?"
8613 : locate the preferred pager for this system
8627 '') dflt=/usr/ucb/more;;
8634 rp='What pager is used on your system?'
8638 : Cruising for prototypes
8640 echo "Checking out function prototypes..." >&4
8641 $cat >prototype.c <<'EOCP'
8642 main(int argc, char *argv[]) {
8645 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8646 echo "Your C compiler appears to support function prototypes."
8649 echo "Your C compiler doesn't seem to understand function prototypes."
8656 : check for size of random number generator
8660 echo "Checking to see how many bits your rand function produces..." >&4
8666 # include <unistd.h>
8669 # include <stdlib.h>
8672 $cat >>try.c <<'EOCP'
8676 register unsigned long tmp;
8677 register unsigned long max = 0L;
8679 for (i = 1000; i; i--) {
8680 tmp = (unsigned long)rand();
8681 if (tmp > max) max = tmp;
8683 for (i = 0; max; i++)
8689 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then
8693 echo "(I can't seem to compile the test program...)"
8700 rp='How many bits does your rand() function produce?'
8703 $rm -f try.c try.o try
8705 : see if ar generates random libraries by itself
8707 echo "Checking how to generate random libraries on your machine..." >&4
8708 echo 'int bar1() { return bar2(); }' > bar1.c
8709 echo 'int bar2() { return 2; }' > bar2.c
8710 $cat > foo.c <<'EOP'
8711 main() { printf("%d\n", bar1()); exit(0); }
8713 $cc $ccflags -c bar1.c >/dev/null 2>&1
8714 $cc $ccflags -c bar2.c >/dev/null 2>&1
8715 $cc $ccflags -c foo.c >/dev/null 2>&1
8716 ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1
8717 if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8718 ./foobar >/dev/null 2>&1; then
8719 echo "ar appears to generate random libraries itself."
8722 elif ar ts bar$lib_ext >/dev/null 2>&1 &&
8723 $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8724 ./foobar >/dev/null 2>&1; then
8725 echo "a table of contents needs to be added with 'ar ts'."
8732 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8733 $test -f $ranlib || ranlib=''
8736 if $test -n "$ranlib"; then
8737 echo "your system has '$ranlib'; we'll use that."
8740 echo "your system doesn't seem to support random libraries"
8741 echo "so we'll use lorder and tsort to order the libraries."
8748 : see if sys/select.h has to be included
8749 set sys/select.h i_sysselct
8752 : see if we should include time.h, sys/time.h, or both
8754 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8755 $echo $n "I'm now running the test program...$c"
8756 $cat >try.c <<'EOCP'
8757 #include <sys/types.h>
8762 #ifdef SYSTIMEKERNEL
8765 #include <sys/time.h>
8768 #include <sys/select.h>
8777 struct timezone tzp;
8779 if (foo.tm_sec == foo.tm_sec)
8782 if (bar.tv_sec == bar.tv_sec)
8789 for s_timezone in '-DS_TIMEZONE' ''; do
8791 for s_timeval in '-DS_TIMEVAL' ''; do
8792 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8793 for i_time in '' '-DI_TIME'; do
8794 for i_systime in '-DI_SYSTIME' ''; do
8798 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8799 try.c -o try >/dev/null 2>&1 ; then
8800 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8804 $echo $n "Succeeded with $flags$c"
8816 *SYSTIMEKERNEL*) i_systimek="$define"
8817 timeincl=`./findhdr sys/time.h`
8818 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8819 *) i_systimek="$undef";;
8822 *I_TIME*) i_time="$define"
8823 timeincl=`./findhdr time.h`" $timeincl"
8824 echo "We'll include <time.h>." >&4;;
8825 *) i_time="$undef";;
8828 *I_SYSTIME*) i_systime="$define"
8829 timeincl=`./findhdr sys/time.h`" $timeincl"
8830 echo "We'll include <sys/time.h>." >&4;;
8831 *) i_systime="$undef";;
8835 : check for fd_set items
8838 Checking to see how well your C compiler handles fd_set and friends ...
8840 $cat >fd_set.c <<EOCP
8841 #$i_systime I_SYS_TIME
8842 #$i_sysselct I_SYS_SELECT
8843 #$d_socket HAS_SOCKET
8844 #include <sys/types.h>
8846 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8849 #include <sys/time.h>
8852 #include <sys/select.h>
8861 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8868 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8869 d_fds_bits="$define"
8871 echo "Well, your system knows about the normal fd_set typedef..." >&4
8873 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8874 d_fd_macros="$define"
8877 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8879 d_fd_macros="$undef"
8883 Hmm, your compiler has some difficulty with fd_set. Checking further...
8885 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8888 echo "Well, your system has some sort of fd_set available..." >&4
8890 echo "and you have the normal fd_set macros." >&4
8891 d_fd_macros="$define"
8894 but not the normal fd_set macros! Gross! More work for me...
8896 d_fd_macros="$undef"
8899 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8902 d_fd_macros="$undef"
8908 : check for type of arguments to select. This will only really
8909 : work if the system supports prototypes and provides one for
8913 : Make initial guess
8914 case "$selecttype" in
8917 $define) xxx='fd_set *' ;;
8921 *) xxx="$selecttype"
8926 'fd_set *') yyy='int *' ;;
8927 'int *') yyy='fd_set *' ;;
8932 Checking to see what type of arguments are expected by select().
8935 #$i_systime I_SYS_TIME
8936 #$i_sysselct I_SYS_SELECT
8937 #$d_socket HAS_SOCKET
8938 #include <sys/types.h>
8940 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8943 #include <sys/time.h>
8946 #include <sys/select.h>
8951 Select_fd_set_t readfds;
8952 Select_fd_set_t writefds;
8953 Select_fd_set_t exceptfds;
8954 struct timeval timeout;
8955 select(width, readfds, writefds, exceptfds, &timeout);
8959 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8961 echo "Your system uses $xxx for the arguments to select." >&4
8962 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8964 echo "Your system uses $yyy for the arguments to select." >&4
8966 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8973 *) selecttype='int *'
8977 : Trace out the files included by signal.h, then look for SIGxxx names.
8978 : Remove SIGARRAYSIZE used by HPUX.
8979 : Remove SIGTYP void lines used by OS2.
8980 xxx=`echo '#include <signal.h>' |
8981 $cppstdin $cppminus $cppflags 2>/dev/null |
8982 $grep '^[ ]*#.*include' |
8983 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8984 : Check this list of files to be sure we have parsed the cpp output ok.
8985 : This will also avoid potentially non-existent files, such
8988 for xx in $xxx /dev/null ; do
8989 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8991 : If we have found no files, at least try signal.h
8993 '') xxxfiles=`./findhdr signal.h` ;;
8996 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8997 print substr($2, 4, 20)
8999 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
9000 print substr($3, 4, 20)
9002 : Append some common names just in case the awk scan failed.
9003 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
9004 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
9005 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
9006 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
9007 : generate a few handy files for later
9008 $cat > signal.c <<'EOP'
9009 #include <sys/types.h>
9013 /* Strange style to avoid deeply-nested #if/#else/#endif */
9016 # define NSIG (_NSIG)
9022 # define NSIG (SIGMAX+1)
9028 # define NSIG (SIG_MAX+1)
9034 # define NSIG (MAXSIG+1)
9040 # define NSIG (MAX_SIG+1)
9045 # ifdef SIGARRAYSIZE
9046 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
9052 # define NSIG (_sys_nsig) /* Solaris 2.5 */
9056 /* Default to some arbitrary number that's big enough to get most
9057 of the common signals.
9063 printf("NSIG %d\n", NSIG);
9066 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
9068 printf "#ifdef SIG"; printf $1; printf "\n"
9069 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
9070 printf $1; printf ");\n"
9077 $cat >signal.awk <<'EOP'
9079 $1 ~ /^NSIG$/ { nsig = $2 }
9080 ($1 !~ /^NSIG$/) && (NF == 2) {
9081 if ($2 > maxsig) { maxsig = $2 }
9083 dup_name[ndups] = $1
9094 if (nsig == 0) { nsig = maxsig + 1 }
9095 for (n = 1; n < nsig; n++) {
9097 printf("%s %d\n", sig_name[n], sig_num[n])
9100 printf("NUM%d %d\n", n, n)
9103 for (n = 0; n < ndups; n++) {
9104 printf("%s %d\n", dup_name[n], dup_num[n])
9108 $cat >signal_cmd <<EOS
9110 $test -s signal.lst && exit 0
9111 if $cc $ccflags $ldflags signal.c -o signal >/dev/null 2>&1; then
9112 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
9114 echo "(I can't seem be able to compile the test program -- Guessing)"
9115 echo 'kill -l' >signal
9116 set X \`csh -f <signal\`
9120 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
9122 echo \$@ | $tr ' ' '\012' | \
9123 $awk '{ printf \$1; printf " %d\n", ++s; }' >signal.lst
9125 $rm -f signal.c signal signal.o
9127 chmod a+x signal_cmd
9128 $eunicefix signal_cmd
9130 : generate list of signal names
9140 echo "Generating a list of signal names and numbers..." >&4
9142 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
9143 sig_name="ZERO $sig_name"
9144 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
9145 sig_num="0 $sig_num"
9148 echo "The following signals are available:"
9150 echo $sig_name | $awk \
9151 'BEGIN { linelen = 0 }
9153 for (i = 1; i <= NF; i++) {
9155 linelen = linelen + length(name)
9158 linelen = length(name)
9164 $rm -f signal signal.c signal.awk signal.lst signal_cmd
9166 : see what type is used for size_t
9167 set size_t sizetype 'unsigned int' stdio.h sys/types.h
9171 rp="What type is used for the length parameter for string functions?"
9175 : see what type is used for signed size_t
9176 set ssize_t ssizetype int stdio.h sys/types.h
9179 $cat > ssize.c <<EOM
9181 #include <sys/types.h>
9182 #define Size_t $sizetype
9183 #define SSize_t $dflt
9186 if (sizeof(Size_t) == sizeof(SSize_t))
9188 else if (sizeof(Size_t) == sizeof(int))
9197 # If $libs contains -lsfio, and sfio is mis-configured, then it
9198 # sometimes (apparently) runs and exits with a 0 status, but with no
9199 # output!. Thus we check with test -s whether we actually got any
9200 # output. I think it has to do with sfio's use of _exit vs. exit,
9201 # but I don't know for sure. --Andy Dougherty 1/27/97.
9202 if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 &&
9203 ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then
9204 ssizetype=`$cat ssize.out`
9205 echo "I'll be using $ssizetype for functions returning a byte count." >&4
9209 Help! I can't compile and run the ssize_t test program: please enlighten me!
9210 (This is probably a misconfiguration in your system or libraries, and
9211 you really ought to fix it. Still, I'll try anyway.)
9213 I need a type that is the same size as $sizetype, but is guaranteed to
9214 be signed. Common values are ssize_t, int and long.
9217 rp="What signed type is the same size as $sizetype?"
9221 $rm -f ssize ssize.[co] ssize.out
9223 : see what type of char stdio uses.
9225 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9226 echo "Your stdio uses unsigned chars." >&4
9227 stdchar="unsigned char"
9229 echo "Your stdio uses signed chars." >&4
9233 : see if time exists
9235 if set time val -f d_time; eval $csym; $val; then
9236 echo 'time() found.' >&4
9238 set time_t timetype long stdio.h sys/types.h
9242 rp="What type is returned by time() on this system?"
9246 echo 'time() not found, hope that will do.' >&4
9253 : see what type uids are declared as in the kernel
9254 set uid_t uidtype xxx stdio.h sys/types.h
9258 xxx=`./findhdr sys/user.h`
9259 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
9261 unsigned) dflt="$1 $2" ;;
9265 *) dflt="$uidtype";;
9268 rp="What is the type for user ids returned by getuid()?"
9272 : see if dbm.h is available
9273 : see if dbmclose exists
9274 set dbmclose d_dbmclose
9277 case "$d_dbmclose" in
9287 *) set rpcsvc/dbm.h i_rpcsvcdbm
9292 *) echo "We won't be including <dbm.h>"
9302 : see if this is a sys/file.h system
9307 : do we need to include sys/file.h ?
9313 echo "We'll be including <sys/file.h>." >&4
9316 echo "We won't be including <sys/file.h>." >&4
9326 : see if fcntl.h is there
9331 : see if we can include fcntl.h
9337 echo "We'll be including <fcntl.h>." >&4
9341 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9343 echo "We won't be including <fcntl.h>." >&4
9355 : see if this is an grp system
9359 : see if locale.h is available
9360 set locale.h i_locale
9363 : see if this is a math.h system
9367 : see if ndbm.h is available
9372 : see if dbm_open exists
9373 set dbm_open d_dbm_open
9375 case "$d_dbm_open" in
9378 echo "We won't be including <ndbm.h>"
9387 : see if net/errno.h is available
9392 : Unfortunately, it causes problems on some systems. Arrgh.
9398 #include <net/errno.h>
9404 if $cc $ccflags -c try.c >/dev/null 2>&1; then
9405 echo "We'll be including <net/errno.h>." >&4
9407 echo "We won't be including <net/errno.h>." >&4
9416 : get C preprocessor symbols handy
9418 $echo $n "Hmm... $c"
9419 echo $al | $tr ' ' '\012' >Cppsym.know
9431 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9433 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9436 unknown="\$unknown \$sym"
9446 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9448 exit 0; _ _ _ _\1\\ \1\\
9451 echo "exit 1; _ _ _" >>Cppsym\$\$
9452 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
9454 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9460 $rm -f Cppsym\$\$ Cppsym2\$\$
9465 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9467 : now check the C compiler for additional symbols
9473 for i in \`$cc -v -c tmp.c 2>&1\`
9476 -D*) echo "\$i" | $sed 's/^-D//';;
9477 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9484 ./ccsym | $sort | $uniq >ccsym.raw
9485 $awk '/\=/ { print $0; next }
9486 { print $0"=1" }' ccsym.raw >ccsym.list
9487 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9488 $comm -13 ccsym.true ccsym.list >ccsym.own
9489 $comm -12 ccsym.true ccsym.list >ccsym.com
9490 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9493 if $test -z ccsym.raw; then
9494 echo "Your C compiler doesn't seem to define any symbol!" >&4
9496 echo "However, your C preprocessor defines the following ones:"
9499 if $test -s ccsym.com; then
9500 echo "Your C compiler and pre-processor define these symbols:"
9501 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9504 $test "$silent" || sleep 1
9506 if $test -s ccsym.cpp; then
9507 $test "$also" && echo " "
9508 echo "Your C pre-processor ${also}defines the following $symbols:"
9509 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9511 $test "$silent" || sleep 1
9513 if $test -s ccsym.own; then
9514 $test "$also" && echo " "
9515 echo "Your C compiler ${also}defines the following cpp variables:"
9516 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9517 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9518 $test "$silent" || sleep 1
9523 : see if this is a termio system
9527 if $test `./findhdr termios.h`; then
9528 set tcsetattr i_termios
9534 "$define") echo "You have POSIX termios.h... good!" >&4;;
9535 *) if ./Cppsym pyr; then
9536 case "`/bin/universe`" in
9537 ucb) if $test `./findhdr sgtty.h`; then
9539 echo "<sgtty.h> found." >&4
9541 echo "System is pyramid with BSD universe."
9542 echo "<sgtty.h> not found--you could have problems." >&4
9544 *) if $test `./findhdr termio.h`; then
9546 echo "<termio.h> found." >&4
9548 echo "System is pyramid with USG universe."
9549 echo "<termio.h> not found--you could have problems." >&4
9553 if $test `./findhdr termio.h`; then
9554 echo "<termio.h> found." >&4
9556 elif $test `./findhdr sgtty.h`; then
9557 echo "<sgtty.h> found." >&4
9560 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9563 if $test `./findhdr sgtty.h`; then
9564 echo "<sgtty.h> found." >&4
9566 elif $test `./findhdr termio.h`; then
9567 echo "<termio.h> found." >&4
9570 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9574 set i_termio; eval $setvar
9575 val=$val2; set i_sgtty; eval $setvar
9576 val=$val3; set i_termios; eval $setvar
9578 : see if stdarg is available
9580 if $test `./findhdr stdarg.h`; then
9581 echo "<stdarg.h> found." >&4
9584 echo "<stdarg.h> NOT found." >&4
9588 : see if varags is available
9590 if $test `./findhdr varargs.h`; then
9591 echo "<varargs.h> found." >&4
9593 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9596 : set up the varargs testing programs
9597 $cat > varargs.c <<EOP
9602 #include <varargs.h>
9620 p = va_arg(ap, char *);
9625 $cat > varargs <<EOP
9627 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9636 : now check which varargs header should be included
9641 if `./varargs I_STDARG`; then
9643 elif `./varargs I_VARARGS`; then
9648 if `./varargs I_VARARGS`; then
9655 echo "I could not find the definition for va_dcl... You have problems..." >&4
9656 val="$undef"; set i_stdarg; eval $setvar
9657 val="$undef"; set i_varargs; eval $setvar
9664 val="$define"; set i_stdarg; eval $setvar
9665 val="$undef"; set i_varargs; eval $setvar
9668 val="$undef"; set i_stdarg; eval $setvar
9669 val="$define"; set i_varargs; eval $setvar
9672 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9676 : see if stddef is available
9677 set stddef.h i_stddef
9680 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9681 set sys/filio.h i_sysfilio
9684 if $test `./findhdr sys/ioctl.h`; then
9686 echo '<sys/ioctl.h> found.' >&4
9689 if $test $i_sysfilio = "$define"; then
9690 echo '<sys/ioctl.h> NOT found.' >&4
9692 $test $i_sgtty = "$define" && xxx="sgtty.h"
9693 $test $i_termio = "$define" && xxx="termio.h"
9694 $test $i_termios = "$define" && xxx="termios.h"
9695 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9701 : see if this is a sys/param system
9702 set sys/param.h i_sysparam
9705 : see if sys/resource.h has to be included
9706 set sys/resource.h i_sysresrc
9709 : see if sys/stat.h is available
9710 set sys/stat.h i_sysstat
9713 : see if sys/types.h has to be included
9714 set sys/types.h i_systypes
9717 : see if this is a sys/un.h system
9718 set sys/un.h i_sysun
9721 : see if this is a syswait system
9722 set sys/wait.h i_syswait
9725 : see if this is an utime system
9729 : see if this is a values.h system
9730 set values.h i_values
9733 : see if this is a vfork system
9744 : see if gdbm.h is available
9749 : see if gdbm_open exists
9750 set gdbm_open d_gdbm_open
9752 case "$d_gdbm_open" in
9755 echo "We won't be including <gdbm.h>"
9765 echo "Looking for extensions..." >&4
9767 : If we are using the old config.sh, known_extensions may contain
9768 : old or inaccurate or duplicate values.
9770 : We do not use find because it might not be available.
9771 : We do not just use MANIFEST because the user may have dropped
9772 : some additional extensions into the source tree and expect them
9777 *) if $test -f $xxx/$xxx.xs; then
9778 known_extensions="$known_extensions $xxx"
9780 if $test -d $xxx; then
9783 if $test -f $yyy/$yyy.xs; then
9784 known_extensions="$known_extensions $xxx/$yyy"
9792 set X $known_extensions
9794 known_extensions="$*"
9797 : Now see which are supported on this system.
9799 for xxx in $known_extensions ; do
9801 DB_File) case "$i_db" in
9802 $define) avail_ext="$avail_ext $xxx" ;;
9805 GDBM_File) case "$i_gdbm" in
9806 $define) avail_ext="$avail_ext $xxx" ;;
9809 NDBM_File) case "$i_ndbm" in
9810 $define) avail_ext="$avail_ext $xxx" ;;
9813 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
9814 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9817 POSIX) case "$useposix" in
9818 true|define|y) avail_ext="$avail_ext $xxx" ;;
9821 Opcode) case "$useopcode" in
9822 true|define|y) avail_ext="$avail_ext $xxx" ;;
9825 Socket) case "$d_socket" in
9826 $define) avail_ext="$avail_ext $xxx" ;;
9829 *) avail_ext="$avail_ext $xxx"
9841 A number of extensions are supplied with $package. You may choose to
9842 compile these extensions for dynamic loading (the default), compile
9843 them into the $package executable (static loading), or not include
9844 them at all. Answer "none" to include no extensions.
9847 case "$dynamic_ext" in
9848 '') dflt="$avail_ext" ;;
9849 *) dflt="$dynamic_ext" ;;
9854 rp="What extensions do you wish to load dynamically?"
9857 none) dynamic_ext=' ' ;;
9858 *) dynamic_ext="$ans" ;;
9861 case "$static_ext" in
9863 : Exclude those already listed in dynamic linking
9865 for xxx in $avail_ext; do
9866 case " $dynamic_ext " in
9868 *) dflt="$dflt $xxx" ;;
9875 *) dflt="$static_ext"
9882 rp="What extensions do you wish to load statically?"
9885 none) static_ext=' ' ;;
9886 *) static_ext="$ans" ;;
9891 A number of extensions are supplied with $package. Answer "none"
9892 to include no extensions.
9895 case "$static_ext" in
9896 '') dflt="$avail_ext" ;;
9897 *) dflt="$static_ext" ;;
9903 rp="What extensions do you wish to include?"
9906 none) static_ext=' ' ;;
9907 *) static_ext="$ans" ;;
9912 set X $dynamic_ext $static_ext
9916 : Remove build directory name from cppstdin so it can be used from
9917 : either the present location or the final installed location.
9919 : Get out of the UU directory to get correct path name.
9923 echo "Stripping down cppstdin path name"
9929 : end of configuration questions
9931 echo "End of configuration questions."
9934 : back to where it started
9935 if test -d ../UU; then
9939 : configuration may be patched via a 'config.over' file
9940 if $test -f config.over; then
9943 rp='I see a config.over file. Do you wish to load it?'
9946 n*) echo "OK, I'll ignore it.";;
9948 echo "Configuration override changes have been loaded."
9953 : in case they want portability, strip down executable paths
9954 case "$d_portable" in
9957 echo "Stripping down executable paths..." >&4
9958 for file in $loclist $trylist; do
9964 : create config.sh file
9966 echo "Creating config.sh..." >&4
9967 $spitshell <<EOT >config.sh
9970 # This file was produced by running the Configure script. It holds all
9971 # the definitions figured out by Configure. Should you modify any of
9972 # these values, do not forget to propagate your changes by running
9973 # "Configure -S"; or, equivalently, you may run each .SH file yourself.
9976 # Configuration time: $cf_time
9977 # Configured by: $cf_by
9978 # Target system: $myuname
9988 Revision='$Revision'
9992 alignbytes='$alignbytes'
9993 aphostname='$aphostname'
9996 archlibexp='$archlibexp'
9997 archname='$archname'
9998 archobjs='$archobjs'
10003 bincompat3='$bincompat3'
10007 byteorder='$byteorder'
10009 castflags='$castflags'
10012 cccdlflags='$cccdlflags'
10013 ccdlflags='$ccdlflags'
10016 cf_email='$cf_email'
10021 clocktype='$clocktype'
10023 compress='$compress'
10024 contains='$contains'
10028 cpp_stuff='$cpp_stuff'
10029 cppflags='$cppflags'
10031 cppminus='$cppminus'
10033 cppstdin='$cppstdin'
10034 cryptlib='$cryptlib'
10036 d_Gconvert='$d_Gconvert'
10037 d_access='$d_access'
10039 d_archlib='$d_archlib'
10040 d_attribut='$d_attribut'
10043 d_bincompat3='$d_bincompat3'
10045 d_bsdgetpgrp='$d_bsdgetpgrp'
10046 d_bsdpgrp='$d_bsdpgrp'
10047 d_bsdsetpgrp='$d_bsdsetpgrp'
10049 d_casti32='$d_casti32'
10050 d_castneg='$d_castneg'
10051 d_charvspr='$d_charvspr'
10053 d_chroot='$d_chroot'
10054 d_chsize='$d_chsize'
10055 d_closedir='$d_closedir'
10059 d_cuserid='$d_cuserid'
10060 d_dbl_dig='$d_dbl_dig'
10061 d_difftime='$d_difftime'
10062 d_dirnamlen='$d_dirnamlen'
10063 d_dlerror='$d_dlerror'
10064 d_dlopen='$d_dlopen'
10065 d_dlsymun='$d_dlsymun'
10066 d_dosuid='$d_dosuid'
10068 d_eofnblk='$d_eofnblk'
10069 d_eunice='$d_eunice'
10070 d_fchmod='$d_fchmod'
10071 d_fchown='$d_fchown'
10073 d_fd_macros='$d_fd_macros'
10074 d_fd_set='$d_fd_set'
10075 d_fds_bits='$d_fds_bits'
10076 d_fgetpos='$d_fgetpos'
10077 d_flexfnam='$d_flexfnam'
10080 d_fpathconf='$d_fpathconf'
10081 d_fsetpos='$d_fsetpos'
10083 d_getgrps='$d_getgrps'
10084 d_setgrps='$d_setgrps'
10085 d_gethent='$d_gethent'
10086 d_gethname='$d_gethname'
10087 d_getlogin='$d_getlogin'
10088 d_getpgid='$d_getpgid'
10089 d_getpgrp2='$d_getpgrp2'
10090 d_getpgrp='$d_getpgrp'
10091 d_getppid='$d_getppid'
10092 d_getprior='$d_getprior'
10093 d_gettimeod='$d_gettimeod'
10094 d_gnulibc='$d_gnulibc'
10097 d_inetaton='$d_inetaton'
10098 d_isascii='$d_isascii'
10099 d_killpg='$d_killpg'
10101 d_locconv='$d_locconv'
10105 d_mbstowcs='$d_mbstowcs'
10106 d_mbtowc='$d_mbtowc'
10107 d_memcmp='$d_memcmp'
10108 d_memcpy='$d_memcpy'
10109 d_memmove='$d_memmove'
10110 d_memset='$d_memset'
10112 d_mkfifo='$d_mkfifo'
10113 d_mktime='$d_mktime'
10115 d_msgctl='$d_msgctl'
10116 d_msgget='$d_msgget'
10117 d_msgrcv='$d_msgrcv'
10118 d_msgsnd='$d_msgsnd'
10119 d_mymalloc='$d_mymalloc'
10121 d_oldarchlib='$d_oldarchlib'
10122 d_oldsock='$d_oldsock'
10124 d_pathconf='$d_pathconf'
10126 d_phostname='$d_phostname'
10129 d_portable='$d_portable'
10131 d_pwchange='$d_pwchange'
10132 d_pwclass='$d_pwclass'
10133 d_pwcomment='$d_pwcomment'
10134 d_pwexpire='$d_pwexpire'
10135 d_pwquota='$d_pwquota'
10136 d_readdir='$d_readdir'
10137 d_readlink='$d_readlink'
10138 d_rename='$d_rename'
10139 d_rewinddir='$d_rewinddir'
10141 d_safebcpy='$d_safebcpy'
10142 d_safemcpy='$d_safemcpy'
10143 d_sanemcmp='$d_sanemcmp'
10144 d_seekdir='$d_seekdir'
10145 d_select='$d_select'
10147 d_semctl='$d_semctl'
10148 d_semget='$d_semget'
10150 d_setegid='$d_setegid'
10151 d_seteuid='$d_seteuid'
10152 d_setlinebuf='$d_setlinebuf'
10153 d_setlocale='$d_setlocale'
10154 d_setpgid='$d_setpgid'
10155 d_setpgrp2='$d_setpgrp2'
10156 d_setpgrp='$d_setpgrp'
10157 d_setprior='$d_setprior'
10158 d_setregid='$d_setregid'
10159 d_setresgid='$d_setresgid'
10160 d_setresuid='$d_setresuid'
10161 d_setreuid='$d_setreuid'
10162 d_setrgid='$d_setrgid'
10163 d_setruid='$d_setruid'
10164 d_setsid='$d_setsid'
10168 d_shmatprototype='$d_shmatprototype'
10169 d_shmctl='$d_shmctl'
10171 d_shmget='$d_shmget'
10172 d_sigaction='$d_sigaction'
10173 d_sigsetjmp='$d_sigsetjmp'
10174 d_socket='$d_socket'
10175 d_sockpair='$d_sockpair'
10176 d_statblks='$d_statblks'
10177 d_stdio_cnt_lval='$d_stdio_cnt_lval'
10178 d_stdio_ptr_lval='$d_stdio_ptr_lval'
10179 d_stdiobase='$d_stdiobase'
10180 d_stdstdio='$d_stdstdio'
10181 d_strchr='$d_strchr'
10182 d_strcoll='$d_strcoll'
10183 d_strctcpy='$d_strctcpy'
10184 d_strerrm='$d_strerrm'
10185 d_strerror='$d_strerror'
10186 d_strtod='$d_strtod'
10187 d_strtol='$d_strtol'
10188 d_strtoul='$d_strtoul'
10189 d_strxfrm='$d_strxfrm'
10190 d_suidsafe='$d_suidsafe'
10191 d_symlink='$d_symlink'
10192 d_syscall='$d_syscall'
10193 d_sysconf='$d_sysconf'
10194 d_sysernlst='$d_sysernlst'
10195 d_syserrlst='$d_syserrlst'
10196 d_system='$d_system'
10197 d_tcgetpgrp='$d_tcgetpgrp'
10198 d_tcsetpgrp='$d_tcsetpgrp'
10199 d_telldir='$d_telldir'
10202 d_truncate='$d_truncate'
10203 d_tzname='$d_tzname'
10207 d_void_closedir='$d_void_closedir'
10208 d_voidsig='$d_voidsig'
10209 d_voidtty='$d_voidtty'
10210 d_volatile='$d_volatile'
10211 d_vprintf='$d_vprintf'
10213 d_waitpid='$d_waitpid'
10214 d_wcstombs='$d_wcstombs'
10215 d_wctomb='$d_wctomb'
10218 db_hashtype='$db_hashtype'
10219 db_prefixtype='$db_prefixtype'
10220 defvoidused='$defvoidused'
10221 direntrytype='$direntrytype'
10224 dynamic_ext='$dynamic_ext'
10229 eunicefix='$eunicefix'
10232 extensions='$extensions'
10234 firstmakefile='$firstmakefile'
10236 fpostype='$fpostype'
10237 freetype='$freetype'
10238 full_csh='$full_csh'
10239 full_sed='$full_sed'
10241 gccversion='$gccversion'
10245 groupcat='$groupcat'
10246 groupstype='$groupstype'
10249 h_sysfile='$h_sysfile'
10253 i_bsdioctl='$i_bsdioctl'
10256 i_dirent='$i_dirent'
10263 i_limits='$i_limits'
10264 i_locale='$i_locale'
10265 i_malloc='$i_malloc'
10267 i_memory='$i_memory'
10269 i_neterrno='$i_neterrno'
10272 i_rpcsvcdbm='$i_rpcsvcdbm'
10275 i_stdarg='$i_stdarg'
10276 i_stddef='$i_stddef'
10277 i_stdlib='$i_stdlib'
10278 i_string='$i_string'
10279 i_sysdir='$i_sysdir'
10280 i_sysfile='$i_sysfile'
10281 i_sysfilio='$i_sysfilio'
10283 i_sysioctl='$i_sysioctl'
10284 i_sysndir='$i_sysndir'
10285 i_sysparam='$i_sysparam'
10286 i_sysresrc='$i_sysresrc'
10287 i_sysselct='$i_sysselct'
10288 i_syssockio='$i_syssockio'
10289 i_sysstat='$i_sysstat'
10290 i_systime='$i_systime'
10291 i_systimek='$i_systimek'
10292 i_systimes='$i_systimes'
10293 i_systypes='$i_systypes'
10295 i_syswait='$i_syswait'
10296 i_termio='$i_termio'
10297 i_termios='$i_termios'
10299 i_unistd='$i_unistd'
10301 i_values='$i_values'
10302 i_varargs='$i_varargs'
10303 i_varhdr='$i_varhdr'
10307 installarchlib='$installarchlib'
10308 installbin='$installbin'
10309 installman1dir='$installman1dir'
10310 installman3dir='$installman3dir'
10311 installprivlib='$installprivlib'
10312 installscript='$installscript'
10313 installsitearch='$installsitearch'
10314 installsitelib='$installsitelib'
10316 known_extensions='$known_extensions'
10320 lddlflags='$lddlflags'
10328 libswanted='$libswanted'
10334 locincpth='$locincpth'
10335 loclibpth='$loclibpth'
10336 longsize='$longsize'
10340 lseektype='$lseektype'
10344 make_set_make='$make_set_make'
10345 mallocobj='$mallocobj'
10346 mallocsrc='$mallocsrc'
10347 malloctype='$malloctype'
10349 man1direxp='$man1direxp'
10352 man3direxp='$man3direxp'
10356 mips_type='$mips_type'
10359 modetype='$modetype'
10362 myarchname='$myarchname'
10363 mydomain='$mydomain'
10364 myhostname='$myhostname'
10368 nm_so_opt='$nm_so_opt'
10370 o_nonblock='$o_nonblock'
10372 oldarchlib='$oldarchlib'
10373 oldarchlibexp='$oldarchlibexp'
10374 optimize='$optimize'
10375 orderlib='$orderlib'
10381 patchlevel='$patchlevel'
10382 path_sep='$path_sep'
10384 perladmin='$perladmin'
10385 perlpath='$perlpath'
10387 phostname='$phostname'
10392 prefixexp='$prefixexp'
10394 privlibexp='$privlibexp'
10395 prototype='$prototype'
10396 randbits='$randbits'
10398 rd_nodata='$rd_nodata'
10402 scriptdir='$scriptdir'
10403 scriptdirexp='$scriptdirexp'
10405 selecttype='$selecttype'
10406 sendmail='$sendmail'
10409 sharpbang='$sharpbang'
10410 shmattype='$shmattype'
10411 shortsize='$shortsize'
10414 sig_name='$sig_name'
10416 signal_t='$signal_t'
10417 sitearch='$sitearch'
10418 sitearchexp='$sitearchexp'
10420 sitelibexp='$sitelibexp'
10421 sizetype='$sizetype'
10426 sockethdr='$sockethdr'
10427 socketlib='$socketlib'
10429 spackage='$spackage'
10430 spitshell='$spitshell'
10432 ssizetype='$ssizetype'
10433 startperl='$startperl'
10435 static_ext='$static_ext'
10437 stdio_base='$stdio_base'
10438 stdio_bufsiz='$stdio_bufsiz'
10439 stdio_cnt='$stdio_cnt'
10440 stdio_ptr='$stdio_ptr'
10443 subversion='$subversion'
10449 timeincl='$timeincl'
10450 timetype='$timetype'
10458 usemymalloc='$usemymalloc'
10460 useopcode='$useopcode'
10461 useperlio='$useperlio'
10462 useposix='$useposix'
10464 useshrplib='$useshrplib'
10465 usevfork='$usevfork'
10469 voidflags='$voidflags'
10475 : add special variables
10476 $test -f patchlevel.h && \
10477 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10478 echo "CONFIG=true" >>config.sh
10480 : propagate old symbols
10481 if $test -f UU/config.sh; then
10482 <UU/config.sh sort | uniq >UU/oldconfig.sh
10483 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10484 sort | uniq -u >UU/oldsyms
10485 set X `cat UU/oldsyms`
10491 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10493 echo "# Variables propagated from previous config.sh file." >>config.sh
10494 for sym in `cat UU/oldsyms`; do
10495 echo " Propagating $hint variable "'$'"$sym..."
10496 eval 'tmp="$'"${sym}"'"'
10498 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10504 : Finish up by extracting the .SH files
10518 If you'd like to make any changes to the config.sh file before I begin
10519 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10522 rp="Press return or use a shell escape to edit config.sh:"
10527 *) : in case they cannot read
10528 sh 1>&4 -c "$ans";;
10533 : if this fails, just run all the .SH files by hand
10540 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10547 Now you need to generate make dependencies by running "make depend".
10548 You might prefer to run it in background: "make depend > makedepend.out &"
10549 It can take a while, so you might not want to run it right now.
10554 rp="Run make depend now?"
10558 make depend && echo "Now you must run a make."
10561 echo "You must run 'make depend' then 'make'."
10564 elif test -f [Mm]akefile; then
10566 echo "Now you must run a make."
10571 $rm -f kit*isdone ark*isdone