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 Fri Dec 8 11:19:33 EST 1995 [metaconfig 3.0 PL58]
28 SCO csh still thinks true is false. Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34 [End of diatribe. We now return you to your regularly scheduled programming...]
38 OOPS! You naughty creature! You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
49 : compute my invocation name
53 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
58 : Proper PATH separator
60 : On OS/2 this directory should exist if this is not floppy only system :-]
63 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
81 *) test -d $p && PATH=$PATH$p_$p ;;
90 echo "Say 'sh $me', not 'sh <$me'"
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96 if (PATH=.; alias -x) >/dev/null 2>&1; then
97 : already under /bin/ksh
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
103 exec /bin/ksh $0 "$@"
106 : Warn them if they use ksh on other systems
107 (PATH=.; alias -x) >/dev/null 2>&1 && \
109 (I see you are using the Korn shell. Some ksh's blow up on $me,
110 especially on exotic machines. If yours does, try the Bourne shell instead.)
114 : Configure runs within the UU subdirectory
115 test -d UU || mkdir UU
582 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
585 : We must find out about Eunice early
587 if test -f /etc/unixtovms; then
588 eunicefix=/etc/unixtovms
590 if test -f /etc/unixtovms.exe; then
591 eunicefix=/etc/unixtovms.exe
594 : list of known cpp symbols, sorted alphabetically
595 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
596 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
597 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
598 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
599 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
600 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
601 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
602 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
603 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
604 al="$al VMS Xenix286"
605 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
606 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
607 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
608 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
609 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
610 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
611 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
612 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
613 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
614 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
615 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
616 al="$al __SVR4_2__ __UMAXV__"
617 al="$al ____386BSD____ __alpha __alpha__ __amiga"
618 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
619 al="$al __host_mips__"
620 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
621 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
622 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
623 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
624 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
625 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
626 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
627 al="$al __mc88100 __mc88100__ __mips __mips__"
628 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
629 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
630 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
631 al="$al _host_mips _mips _unix"
632 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
633 al="$al apollo ardent att386 att3b"
634 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
635 al="$al cadmus clipper concurrent convex cray ctix"
636 al="$al dmert encore gcos gcx gimpel gould"
637 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
638 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
639 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
640 al="$al i186 i286 i386 i486 i8086"
641 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
642 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
643 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
644 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
645 al="$al mc88000 mc88100 merlin mert mips mvs n16"
646 al="$al ncl_el ncl_mr"
647 al="$al news1500 news1700 news1800 news1900 news3700"
648 al="$al news700 news800 news900 ns16000 ns32000"
649 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
650 al="$al parisc pc532 pdp11 plexus posix pyr"
651 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
652 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
653 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
654 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
655 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
656 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
661 : default library list
663 : set useposix=false in your hint file to disable the POSIX extension.
665 : Define several unixisms. These can be overridden in hint files.
667 : Extra object files, if any, needed on this platform.
669 : Possible local include directories to search.
670 : Set locincpth to "" in a hint file to defeat local include searches.
671 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
672 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
674 : no include file wanted by default
677 : change the next line if compiling for Xenix/286 on Xenix/386
678 xlibpth='/usr/lib/386 /lib/386'
680 : Possible local library directories to search.
681 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
682 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
684 : general looking path for locating libraries
685 glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
686 glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
687 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
689 : Private path used by Configure to find libraries. Its value
690 : is prepended to libpth. This variable takes care of special
691 : machines, like the mips. Usually, it should be empty.
694 : full support for void wanted by default
697 : List of libraries we want.
698 libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
699 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
700 libswanted="$libswanted ucb bsd BSD PW x"
701 : We probably want to search /usr/shlib before most other libraries.
702 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
703 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
704 glibpth="/usr/shlib $glibpth"
705 : Do not use vfork unless overridden by a hint file.
708 : script used to extract .SH files with variable substitutions
711 echo "Doing variable substitutions on .SH files..."
712 if test -f MANIFEST; then
713 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
714 : Pick up possible extension manifests.
715 for dir in ext/* ; do
716 if test -f $dir/MANIFEST; then
717 xxx=`awk '{print $1}' < $dir/MANIFEST |
718 sed -n "/\.SH$/ s@^@$dir/@p"`
719 shlist="$shlist $xxx"
724 echo "(Looking for .SH files under the current directory.)"
725 set x `find . -name "*.SH" -print`
729 0) set x *.SH; shift;;
731 if test ! -f $1; then
737 dir=`expr X$file : 'X\(.*\)/'`
738 file=`expr X$file : 'X.*/\(.*\)'`
739 (cd $dir && . ./$file)
746 if test -f config_h.SH; then
747 if test ! -f config.h; then
748 : oops, they left it out of MANIFEST, probably, so do it anyway.
754 : produce awk script to parse command line options
755 cat >options.awk <<'EOF'
757 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
759 len = length(optstr);
760 for (i = 1; i <= len; i++) {
761 c = substr(optstr, i, 1);
762 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
773 if (substr(str, 1, 1) != "-") {
774 printf("'%s'\n", str);
778 for (i = 2; i <= len; i++) {
779 c = substr(str, i, 1);
781 printf("-%s\n", substr(str, i));
787 printf("'%s'\n", substr(str, i + 1));
800 : process the command line options
801 set X `for arg in "$@"; do echo "X$arg"; done |
802 sed -e s/X// | awk -f options.awk`
807 : set up default values
820 while test $# -gt 0; do
822 -d) shift; fastread=yes;;
823 -e) shift; alldone=cont;;
827 if test -r "$1"; then
830 echo "$me: cannot read config file $1." >&2
835 -h) shift; error=true;;
836 -r) shift; reuseval=true;;
837 -s) shift; silent=true;;
838 -E) shift; alldone=exit;;
839 -K) shift; knowitall=true;;
840 -O) shift; override=true;;
841 -S) shift; extractsh=true;;
846 echo "$me: use '-U symbol=', not '-D symbol='." >&2
847 echo "$me: ignoring -D $1" >&2
850 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
851 *) echo "$1='define'" >> optdef.sh;;
858 *=) echo "$1" >> optdef.sh;;
860 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
861 echo "$me: ignoring -U $1" >&2
863 *) echo "$1='undef'" >> optdef.sh;;
867 -V) echo "$me generated by metaconfig 3.0 PL58." >&2
870 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
878 Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
879 [-U symbol] [-U symbol=]
880 -d : use defaults for all answers.
881 -e : go on without questioning past the production of config.sh.
882 -f : specify an alternate default configuration file.
883 -h : print this help message and exit (with an error status).
884 -r : reuse C symbols value if possible (skips costly nm extraction).
885 -s : silent mode, only echoes questions and essential information.
886 -D : define symbol to have some value:
887 -D symbol symbol gets the value 'define'
888 -D symbol=value symbol gets the value 'value'
889 -E : stop at the end of questions, after having produced config.sh.
890 -K : do not use unless you know what you are doing.
891 -O : let -D and -U override definitions from loaded configuration file.
892 -S : perform variable substitutions on all .SH files (can mix with -f)
893 -U : undefine symbol:
894 -U symbol symbol gets the value 'undef'
895 -U symbol= symbol gets completely empty
896 -V : print version number and exit (with a zero status).
904 true) exec 1>/dev/null;;
907 : run the defines and the undefines, if any, but leave the file out there...
914 '') config_sh='config.sh'; config='./config.sh';;
915 /*) config="$config_sh";;
916 *) config="./$config_sh";;
919 echo "Fetching answers from $config_sh..."
922 test "$override" && . ./optdef.sh
933 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
934 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
935 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
936 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
937 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
940 : Eunice requires " " instead of "", can you believe it
943 echo "Beginning of configuration questions for $package."
945 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
947 : Some greps do not return status, grrr.
948 echo "grimblepritz" >grimble
949 if grep blurfldyick grimble >/dev/null 2>&1 ; then
951 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
957 : the following should work in any shell
961 echo "AGH! Grep doesn't return a status. Attempting remedial action."
962 cat >contains <<'EOSS'
963 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
968 : first determine how to suppress newline on echo command
970 echo "Checking echo to see how to suppress newlines..."
971 (echo "hi there\c" ; echo " ") >.echotmp
972 if $contains c .echotmp >/dev/null 2>&1 ; then
983 echo $n "The star should be here-->$c"
987 : Now test for existence of everything in MANIFEST
989 if test -f ../MANIFEST; then
990 echo "First let's make sure your kit is complete. Checking..." >&4
991 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
993 for filelist in x??; do
994 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
996 if test -s missing; then
1000 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1002 You have the option of continuing the configuration process, despite the
1003 distinct possibility that your kit is damaged, by typing 'y'es. If you
1004 do, don't blame me if something goes wrong. I advise you to type 'n'o
1005 and contact the author (lwall@netlabs.com).
1008 echo $n "Continue? [n] $c" >&4
1012 echo "Continuing..." >&4
1016 echo "ABORTING..." >&4
1021 echo "Looks good..." >&4
1024 echo "There is no MANIFEST file. I hope your kit is complete !"
1028 : compute the number of columns on the terminal for proper question formatting
1033 : set up the echo used in my read
1034 myecho="case \"\$xxxm\" in
1035 '') echo $n \"\$rp $c\" >&4;;
1037 '') echo $n \"[\$xxxm] $c\";;
1039 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1041 echo $n \"[\$xxxm] $c\" >&4
1043 echo $n \"\$rp [\$xxxm] $c\" >&4
1049 : now set up to do reads with possible shell escape and default assignment
1054 case "\$fastread" in
1055 yes) case "\$dflt" in
1058 case "\$silent-\$rp" in
1063 *) case "\$silent" in
1064 true) case "\$rp" in
1069 while expr "X\$ans" : "X!" >/dev/null; do
1073 aok=''; eval "ans=\"\$answ\"" && aok=y
1078 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1083 echo "(OK, I'll run with -d after this question.)"
1086 echo "*** Sorry, \$1 not supported yet."
1098 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1108 echo "*** Substitution done -- please confirm."
1110 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1115 echo "*** Error -- try again."
1122 case "\$ans\$xxxm\$nostick" in
1134 : create .config dir to save info across Configure sessions
1135 test -d ../.config || mkdir ../.config
1136 cat >../.config/README <<EOF
1137 This directory created by Configure to save information that should
1138 persist across sessions.
1140 You may safely delete it if you wish.
1143 : general instructions
1146 user=`( (logname) 2>/dev/null || whoami) 2>&1`
1147 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1150 rp='Would you like to see the instructions?'
1161 This installation shell script will examine your system and ask you questions
1162 to determine how the perl5 package should be installed. If you get
1163 stuck on a question, you may use a ! shell escape to start a subshell or
1164 execute a command. Many of the questions will have default answers in square
1165 brackets; typing carriage return will give you the default.
1167 On some of the questions which ask for file or directory names you are allowed
1168 to use the ~name construct to specify the login directory belonging to "name",
1169 even if you don't have a shell which knows about that. Questions where this is
1170 allowed will be marked "(~name ok)".
1174 dflt='Type carriage return to continue'
1178 The prompter used in this script allows you to use shell variables and
1179 backticks in your answers. You may use $1, $2, etc... to refer to the words
1180 in the default answer, as if the default line was a set of arguments given to a
1181 script shell. This means you may also use $* to repeat the whole default line,
1182 so you do not have to re-type everything to add something to the default.
1184 Everytime there is a substitution, you will have to confirm. If there is an
1185 error (e.g. an unmatched backtick), the default answer will remain unchanged
1186 and you will be prompted again.
1188 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1189 the questions and use the computed defaults (or the previous answers if there
1190 was already a config.sh file). Type 'Configure -h' for a list of options.
1191 You may also start interactively and then answer '& -d' at any prompt to turn
1192 on the non-interactive behaviour for the remaining of the execution.
1198 Much effort has been expended to ensure that this shell script will run on any
1199 Unix system. If despite that it blows up on yours, your best bet is to edit
1200 Configure and run it again. If you can't run Configure for some reason,
1201 you'll have to generate a config.sh file by hand. Whatever problems you
1202 have, let me (lwall@netlabs.com) know how I blew it.
1204 This installation script affects things in two ways:
1206 1) it may do direct variable substitutions on some of the files included
1208 2) it builds a config.h file for inclusion in C programs. You may edit
1209 any of these files as the need arises after running this script.
1211 If you make a mistake on a question, there is no easy way to back up to it
1212 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1213 files. Configure will offer to let you do this before it runs the SH files.
1216 dflt='Type carriage return to continue'
1218 case "$firsttime" in
1219 true) echo $user >>../.config/instruct;;
1223 : see if sh knows # comments
1225 echo "Checking your sh to see if it knows about # comments..." >&4
1226 if `sh -c '#' >/dev/null 2>&1`; then
1227 echo "Your sh handles # comments correctly."
1231 echo "Okay, let's see if #! works on this system..."
1233 test -f $xcat || xcat=/usr/bin/cat
1238 if test -s today; then
1242 echo "#! $xcat" > try
1246 if test -s today; then
1250 echo "It's just a comment."
1255 echo "Your sh doesn't grok # comments--I will strip them later on."
1258 echo "exec grep -v '^[ ]*#'" >spitshell
1260 $eunicefix spitshell
1261 spitshell=`pwd`/spitshell
1263 echo "I presume that if # doesn't work, #! won't work either!"
1268 : figure out how to guarantee sh startup
1270 echo "Checking out how to guarantee sh startup..." >&4
1272 *bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1273 *) startsh=$sharpbang'/bin/sh';;
1275 echo "Let's see if '$startsh' works..."
1285 echo "Yup, it does."
1287 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1291 : find out where common programs are
1293 echo "Locating common programs..." >&4
1306 if test -d \$dir/\$thing; then
1312 for thisthing in \$dir/\$thing; do
1313 : just loop through to pick last item
1315 if test -f \$thisthing; then
1318 elif test -f \$dir/\$thing.exe; then
1319 : on Eunice apparently
1363 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1364 pth="$pth /lib /usr/lib"
1365 for file in $loclist; do
1366 xxx=`./loc $file $file $pth`
1371 echo $file is in $xxx.
1374 echo $file is in $xxx.
1377 echo "I don't know where '$file' is, and my life depends on it." >&4
1378 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1384 echo "Don't worry if any of the following aren't found..."
1386 for file in $trylist; do
1387 xxx=`./loc $file $file $pth`
1392 echo $file is in $xxx.
1395 echo $file is in $xxx.
1398 echo "I don't see $file out there, $say."
1405 echo "Substituting grep for egrep."
1411 echo "Hopefully test is built into your sh."
1414 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1415 echo "Using the test built into your sh."
1423 echo "Hopefully echo is built into your sh."
1428 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1429 $echo $n "hi there$c" >foo1
1430 echo $n "hi there$c" >foo2
1431 if cmp foo1 foo2 >/dev/null 2>&1; then
1432 echo "They are compatible. In fact, they may be identical."
1439 They are not compatible! You are probably running ksh on a non-USG system.
1440 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1441 have echo built in and we may have to run some Bourne shell scripts. That
1442 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1445 $echo $n "The star should be here-->$c"
1452 : determine whether symbolic links are supported
1455 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1456 echo "Symbolic links are supported." >&4
1459 echo "Symbolic links are NOT supported." >&4
1464 : see whether [:lower:] and [:upper:] are supported character classes
1468 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1470 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1475 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1478 : set up the translation script tr, must be called with ./tr of course
1482 '[A-Z][a-z]') exec $tr '$up' '$low';;
1483 '[a-z][A-Z]') exec $tr '$low' '$up';;
1490 : Try to determine whether config.sh was made on this system
1491 case "$config_sh" in
1493 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1494 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1495 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1496 newmyuname="$myuname"
1498 case "$knowitall" in
1500 if test -f ../config.sh; then
1501 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1502 eval "`grep myuname= ../config.sh`"
1504 if test "X$myuname" = "X$newmyuname"; then
1512 : Get old answers from old config file if Configure was run on the
1513 : same system, otherwise use the hints.
1516 if test -f config.sh; then
1518 rp="I see a config.sh file. Shall I use it to set the defaults?"
1521 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1522 *) echo "Fetching default answers from your old config.sh file..." >&4
1533 if test ! -f config.sh; then
1536 First time through, eh? I have some defaults handy for the following systems:
1539 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1541 : Half the following guesses are probably wrong... If you have better
1542 : tests or hints, please send them to lwall@netlabs.com
1543 : The metaconfig authors would also appreciate a copy...
1544 $test -f /irix && osname=irix
1545 $test -f /xenix && osname=sco_xenix
1546 $test -f /dynix && osname=dynix
1547 $test -f /dnix && osname=dnix
1548 $test -f /unicos && osname=unicos && osvers=`$uname -r`
1549 $test -f /bin/mips && /bin/mips && osname=mips
1550 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1551 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1552 $test -d /usr/apollo/bin && osname=apollo
1553 $test -f /etc/saf/_sactab && osname=svr4
1554 $test -d /usr/include/minix && osname=minix
1555 if $test -d /MachTen; then
1557 if $test -x /sbin/version; then
1558 osvers=`/sbin/version | $awk '{print $2}' |
1559 $sed -e 's/[A-Za-z]$//'`
1560 elif $test -x /usr/etc/version; then
1561 osvers=`/usr/etc/version | $awk '{print $2}' |
1562 $sed -e 's/[A-Za-z]$//'`
1567 if $test -f $uname; then
1575 umips) osname=umips ;;
1578 [23]100) osname=mips ;;
1579 next*) osname=next ;;
1580 news*) osname=news ;;
1582 if $test -f /etc/kconfig; then
1584 if test "$lns" = "ln -s"; then
1586 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1588 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1597 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1599 'not found') osvers="$4"."$3" ;;
1600 '<3240'|'<>3240') osvers=3.2.0 ;;
1601 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1602 '=3250'|'>3250') osvers=3.2.5 ;;
1609 domainos) osname=apollo
1615 freebsd) osname=freebsd
1617 genix) osname=genix ;;
1622 *.10.*) osvers=10 ;;
1639 netbsd*) osname=netbsd
1642 bsd386) osname=bsd386
1645 next*) osname=next ;;
1646 solaris) osname=solaris
1648 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1655 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1659 titanos) osname=titanos
1668 ultrix) osname=ultrix
1674 osvers=`echo "$3" | sed 's/^[vt]//'`
1676 hp*) osname=hp_osf1 ;;
1677 mips) osname=mips_osf1 ;;
1683 $2) case "$osname" in
1687 : svr4.x or possibly later
1697 if test -f /stand/boot ; then
1698 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1699 if test -n "$INITPROG" -a -f "$INITPROG"; then
1700 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1701 if test -n "$isesix"; then
1709 *) if test -f /etc/systemid; then
1711 set `echo $3 | $sed 's/\./ /g'` $4
1712 if $test -f sco_$1_$2_$3.sh; then
1714 elif $test -f sco_$1_$2.sh; then
1716 elif $test -f sco_$1.sh; then
1721 '') : Still unknown. Probably a generic Sys V.
1730 *) case "$osname" in
1731 '') : Still unknown. Probably a generic BSD.
1739 if test -f /vmunix -a -f news_os.sh; then
1740 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1741 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1744 $rm -f ../UU/kernel.what
1745 elif test -d c:/.; then
1752 : Now look for a hint file osname_osvers, unless one has been
1753 : specified already.
1756 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1757 : Also try without trailing minor version numbers.
1758 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1759 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1760 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1761 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1764 *) case "$osvers" in
1767 *) if $test -f $file.sh ; then
1769 elif $test -f $xfile.sh ; then
1771 elif $test -f $xxfile.sh ; then
1773 elif $test -f $xxxfile.sh ; then
1775 elif $test -f $xxxxfile.sh ; then
1777 elif $test -f "${osname}.sh" ; then
1788 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1794 You may give one or more space-separated answers, or "none" if appropriate.
1795 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1798 rp="Which of these apply, if any?"
1801 for file in $tans; do
1802 if $test -f $file.sh; then
1804 $cat $file.sh >> ../UU/config.sh
1805 elif $test X$tans = X -o X$tans = Xnone ; then
1808 : Give one chance to correct a possible typo.
1809 echo "$file.sh does not exist"
1811 rp="hint to use instead?"
1813 for file in $ans; do
1814 if $test -f "$file.sh"; then
1816 $cat $file.sh >> ../UU/config.sh
1817 elif $test X$ans = X -o X$ans = Xnone ; then
1820 echo "$file.sh does not exist -- ignored."
1827 : Remember our hint file for later.
1828 if $test -f "$file.sh" ; then
1840 echo "Fetching default answers from $config_sh..." >&4
1844 cp $config_sh config.sh 2>/dev/null
1853 test "$override" && . ./optdef.sh
1854 myuname="$newmyuname"
1856 : Restore computed paths
1857 for file in $loclist $trylist; do
1858 eval $file="\$_$file"
1863 Configure uses the operating system name and version to set some defaults.
1864 The default value is probably right if the name rings a bell. Otherwise,
1865 since spelling matters for me, either accept the default or answer "none"
1872 ''|' '|none) dflt=none ;;
1873 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1876 *) dflt="$osname" ;;
1878 rp="Operating system name?"
1882 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1884 : who configured the system
1885 cf_time=`$date 2>&1`
1886 (logname > .temp) >/dev/null 2>&1
1887 $test -s .temp || (whoami > .temp) >/dev/null 2>&1
1888 $test -s .temp || echo unknown > .temp
1892 : determine the architecture name
1894 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
1895 tarch=`arch`"-$osname"
1896 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
1897 if uname -m > tmparch 2>&1 ; then
1898 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
1906 case "$myarchname" in
1909 echo "(Your architecture name used to be $myarchname.)"
1915 *) dflt="$archname";;
1917 rp='What is your architecture name'
1924 if test -d /afs; then
1925 echo "AFS may be running... I'll be extra cautious then..." >&4
1928 echo "AFS does not seem to be running..." >&4
1932 : decide how portable to be. Allow command line overrides.
1933 case "$d_portable" in
1935 *) d_portable="$define" ;;
1938 : set up shell script to do ~ expansion
1944 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
1947 if $test -f /bin/csh; then
1948 /bin/csh -f -c "glob \$1"
1953 name=\`$expr x\$1 : '..\([^/]*\)'\`
1954 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
1955 if $test ! -d "\$dir"; then
1957 echo "\$me: can't locate home directory for: \$name" >&2
1962 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
1978 : now set up to get a file name
1979 cat <<'EOSC' >getfile
1992 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
1993 fn=`echo $fn | sed 's/(.*)//'`
1999 loc_file=`expr $fn : '.*:\(.*\)'`
2000 fn=`expr $fn : '\(.*\):.*'`
2008 */*) fullpath=true;;
2017 *e*) exp_file=true;;
2020 *p*) nopath_ok=true;;
2025 *d*) type='Directory';;
2026 *l*) type='Locate';;
2031 Locate) what='File';;
2036 case "$d_portable" in
2044 while test "$type"; do
2049 true) rp="$rp (~name ok)";;
2052 if test -f UU/getfile.ok && \
2053 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2072 value=`UU/filexp $ans`
2075 if test "$ans" != "$value"; then
2076 echo "(That expands to $value on this system.)"
2090 /*) value="$ansexp" ;;
2095 echo "I shall only accept a full path name, as in /bin/ls." >&4
2096 echo "Use a ! shell escape if you wish to check pathnames." >&4
2099 echo "Please give a full path name, starting with slash." >&4
2102 echo "Note that using ~name is ok provided it expands well." >&4
2115 if test -f "$ansexp"; then
2117 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2119 echo "($value is not a plain file, but that's ok.)"
2124 if test -d "$ansexp"; then
2129 if test -d "$ansexp"; then
2130 echo "(Looking for $loc_file in directory $value.)"
2131 value="$value/$loc_file"
2132 ansexp="$ansexp/$loc_file"
2134 if test -f "$ansexp"; then
2137 case "$nopath_ok" in
2138 true) case "$value" in
2140 *) echo "Assuming $value will be in people's path."
2156 if test "$fastread" = yes; then
2161 rp="$what $value doesn't exist. Use that name anyway?"
2182 : determine root of directory hierarchy where package will be installed.
2185 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2193 By default, $package will be installed in $dflt/bin, manual
2194 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2195 all installation directories. Typically set to /usr/local, but you
2196 may choose /usr if you wish to install $package among your system
2197 binaries. If you wish to have binaries under /bin but manual pages
2198 under /usr/local/man, that's ok: you will be prompted separately
2199 for each of the installation directories, the prefix being only used
2200 to set the defaults.
2204 rp='Installation prefix to use?'
2212 *) oldprefix="$prefix";;
2219 : set the prefixit variable, to compute a suitable default value
2220 prefixit='case "$3" in
2222 case "$oldprefix" in
2223 "") eval "$1=\"\$$2\"";;
2230 ""|" ") eval "$1=\"\$$2\"";;
2236 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2238 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2239 /*-$oldprefix/*|\~*-$oldprefix/*)
2240 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2241 *) eval "$1=\"\$$2\"";;
2245 : determine where private library files go
2246 : Usual default is /usr/local/lib/perl5. Also allow things like
2247 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2249 *perl*) set dflt privlib lib ;;
2250 *) set dflt privlib lib/$package ;;
2255 There are some auxiliary files for $package that need to be put into a
2256 private library directory that is accessible by everyone.
2260 rp='Pathname where the private library files will reside?'
2262 if $test "X$privlibexp" != "X$ansexp"; then
2266 privlibexp="$ansexp"
2270 Since you are running AFS, I need to distinguish the directory in which
2271 private files reside from the directory in which they are installed (and from
2272 which they are presumably copied to the former directory by occult means).
2275 case "$installprivlib" in
2276 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2277 *) dflt="$installprivlib";;
2280 rp='Where will private files be installed?'
2282 installprivlib="$ans"
2284 installprivlib="$privlibexp"
2287 : set the base revision
2290 : get the patchlevel
2292 echo "Getting the current patchlevel..." >&4
2293 if $test -r ../patchlevel.h;then
2294 patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
2298 echo "(You have $package $baserev PL$patchlevel.)"
2300 : set the prefixup variable, to restore leading tilda escape
2301 prefixup='case "$prefixexp" in
2303 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2306 : determine where public architecture dependent libraries go
2313 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2317 *) version=`echo $baserev $patchlevel | $awk '{print $1 + $2/1000.0}'`
2318 dflt="$privlib/$archname/$version"
2322 *) dflt="$archlib";;
2326 $spackage contains architecture-dependent library files. If you are
2327 sharing libraries in a heterogeneous environment, you might store
2328 these files in a separate location. Otherwise, you can just include
2329 them with the rest of the public library files.
2333 rp='Where do you want to put the public architecture-dependent libraries?'
2336 archlibexp="$ansexp"
2341 Since you are running AFS, I need to distinguish the directory in which
2342 private files reside from the directory in which they are installed (and from
2343 which they are presumably copied to the former directory by occult means).
2346 case "$installarchlib" in
2347 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2348 *) dflt="$installarchlib";;
2351 rp='Where will architecture-dependent library files be installed?'
2353 installarchlib="$ans"
2355 installarchlib="$archlibexp"
2357 if $test X"$archlib" = X"$privlib"; then
2363 : determine where site specific libraries go.
2367 '') dflt="$privlib/site_perl" ;;
2368 *) dflt="$sitelib" ;;
2372 The installation process will also create a directory for
2373 site-specific extensions and modules. Some users find it convenient
2374 to place all local files in this directory rather than in the main
2375 distribution directory.
2379 rp='Pathname for the site-specific library files?'
2381 if $test "X$sitelibexp" != "X$ansexp"; then
2385 sitelibexp="$ansexp"
2389 Since you are running AFS, I need to distinguish the directory in which
2390 private files reside from the directory in which they are installed (and from
2391 which they are presumably copied to the former directory by occult means).
2394 case "$installsitelib" in
2395 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2396 *) dflt="$installsitelib";;
2399 rp='Where will private files be installed?'
2401 installsitelib="$ans"
2403 installsitelib="$sitelibexp"
2406 : determine where site specific architecture-dependent libraries go.
2407 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2408 : xxx is usuually lib/site_perl/archname.
2409 set sitearch sitearch none
2412 '') dflt="$sitelib/$archname" ;;
2413 *) dflt="$sitearch" ;;
2417 The installation process will also create a directory for
2418 architecture-dependent site-specific extensions and modules.
2422 rp='Pathname for the site-specific architecture-dependent library files?'
2424 if $test "X$sitearchexp" != "X$ansexp"; then
2428 sitearchexp="$ansexp"
2432 Since you are running AFS, I need to distinguish the directory in which
2433 private files reside from the directory in which they are installed (and from
2434 which they are presumably copied to the former directory by occult means).
2437 case "$installsitearch" in
2438 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2439 *) dflt="$installsitearch";;
2442 rp='Where will private files be installed?'
2444 installsitearch="$ans"
2446 installsitearch="$sitearchexp"
2449 : set up the script used to warn in case of inconsistency
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp=" Keep the $hint value?"
2458 y) td=$was; tu=$was;;
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2470 : determine where old public architecture dependent libraries might be
2471 case "$oldarchlib" in
2472 '') case "$privlib" in
2474 *) dflt="$privlib/$archname"
2478 *) dflt="$oldarchlib"
2481 if $test ! -d "$dflt/auto"; then
2486 In 5.001, Perl stored architecutre-dependent library files in a library
2487 with a name such as $privlib/$archname,
2488 and this directory contained files from the standard extensions and
2489 files from any additional extensions you might have added. Starting
2490 with version 5.002, all the architecture-dependent standard extensions
2491 will go into $archlib,
2492 while locally-added extensions will go into
2495 If you wish Perl to continue to search the old architecture-dependent
2496 library for your local extensions, give the path to that directory.
2497 If you do not wish to use your old architecture-dependent library
2498 files, answer 'none'.
2502 rp='Directory for your old 5.001 architecture-dependent libraries?'
2505 oldarchlibexp="$ansexp"
2506 case "$oldarchlib" in
2507 ''|' ') val="$undef" ;;
2513 : determine where public executables go
2518 rp='Pathname where the public executables will reside?'
2520 if $test "X$ansexp" != "X$binexp"; then
2528 Since you are running AFS, I need to distinguish the directory in which
2529 executables reside from the directory in which they are installed (and from
2530 which they are presumably copied to the former directory by occult means).
2533 case "$installbin" in
2534 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2535 *) dflt="$installbin";;
2538 rp='Where will public executables be installed?'
2542 installbin="$binexp"
2545 : determine where manual pages go
2546 set man1dir man1dir none
2550 $spackage has manual pages available in source form.
2554 echo "However, you don't have nroff, so they're probably useless to you."
2556 '') man1dir="none";;
2559 echo "If you don't want the manual sources installed, answer 'none'."
2562 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
2563 lookpath="$lookpath $prefixexp/man/p_man/man1"
2564 lookpath="$lookpath $prefixexp/man/u_man/man1"
2565 : If prefix contains 'perl' then we want to keep the man pages
2566 : under the prefix directory. Otherwise, look in a variety of
2567 : other possible places. This is debatable, but probably a
2571 *) lookpath="$lookpath /usr/local/man/man1"
2572 lookpath="$lookpath /opt/local/man/man1"
2573 lookpath="$lookpath /usr/local/man/man.1"
2574 lookpath="$lookpath /opt/local/man/man.1"
2575 lookpath="$lookpath /usr/man/local/man1"
2576 lookpath="$lookpath /usr/man/l_man/man1"
2577 lookpath="$lookpath /usr/man/p_man/man1"
2578 lookpath="$lookpath /usr/man/u_man/man1"
2579 lookpath="$lookpath /usr/man/man.L"
2580 lookpath="$lookpath /usr/man/man.l"
2583 dflt=`./loc . $prefixexp/man/man1 $lookpath`
2593 rp="Where do the main $spackage manual pages (source) go?"
2595 if $test "X$man1direxp" != "X$ansexp"; then
2599 man1direxp="$ansexp"
2607 Since you are running AFS, I need to distinguish the directory in which
2608 manual pages reside from the directory in which they are installed (and from
2609 which they are presumably copied to the former directory by occult means).
2612 case "$installman1dir" in
2613 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
2614 *) dflt="$installman1dir";;
2617 rp='Where will man pages be installed?'
2619 installman1dir="$ans"
2621 installman1dir="$man1direxp"
2624 : What suffix to use on installed man pages
2631 rp="What suffix should be used for the main $spackage man pages?"
2650 : see if we can have long filenames
2652 rmlist="$rmlist /tmp/cf$$"
2653 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
2654 first=123456789abcdef
2655 second=/tmp/cf$$/$first
2656 $rm -f $first $second
2657 if (echo hi >$first) 2>/dev/null; then
2658 if $test -f 123456789abcde; then
2659 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
2662 if (echo hi >$second) 2>/dev/null; then
2663 if $test -f /tmp/cf$$/123456789abcde; then
2665 That's peculiar... You can have filenames longer than 14 characters, but only
2666 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
2667 I shall consider your system cannot support long filenames at all.
2671 echo 'You can have filenames longer than 14 characters.' >&4
2676 How confusing! Some of your filesystems are sane enough to allow filenames
2677 longer than 14 characters but some others like /tmp can't even think about them.
2678 So, for now on, I shall assume your kernel does not allow them at all.
2685 You can't have filenames longer than 14 chars. You can't even think about them!
2691 $rm -rf /tmp/cf$$ 123456789abcde*
2693 : determine where library module manual pages go
2694 set man3dir man3dir none
2698 $spackage has manual pages for many of the library modules.
2704 However, you don't have nroff, so they're probably useless to you.
2705 You can use the supplied perldoc script instead.
2708 '') man3dir="none";;
2712 case "$d_flexfnam" in
2715 However, your system can't handle the long file names like File::Basename.3.
2716 You can use the supplied perldoc script instead.
2719 '') man3dir="none";;
2723 echo "If you don't want the manual sources installed, answer 'none'."
2724 : We dont use /usr/local/man/man3 because some man programs will
2725 : only show the /usr/local/man/man3 contents, and not the system ones,
2726 : thus man less will show the perl module less.pm, but not the system
2727 : less command. We might also conflict with TCL man pages.
2728 : However, something like /opt/perl/man/man3 is fine.
2730 '') case "$prefix" in
2731 *perl*) dflt=`echo $man1dir | $sed 's/man1/man3/g'` ;;
2732 *) dflt="$privlib/man/man3" ;;
2736 *) dflt="$man3dir" ;;
2741 rp="Where do the $spackage library man pages (source) go?"
2743 if test "X$man3direxp" != "X$ansexp"; then
2748 man3direxp="$ansexp"
2756 Since you are running AFS, I need to distinguish the directory in which
2757 manual pages reside from the directory in which they are installed (and from
2758 which they are presumably copied to the former directory by occult means).
2761 case "$installman3dir" in
2762 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
2763 *) dflt="$installman3dir";;
2766 rp='Where will man pages be installed?'
2768 installman3dir="$ans"
2770 installman3dir="$man3direxp"
2773 : What suffix to use on installed man pages
2780 rp="What suffix should be used for the $spackage library man pages?"
2799 : determine where public executable scripts go
2800 set scriptdir scriptdir
2802 case "$scriptdir" in
2805 : guess some guesses
2806 $test -d /usr/share/scripts && dflt=/usr/share/scripts
2807 $test -d /usr/share/bin && dflt=/usr/share/bin
2808 $test -d /usr/local/script && dflt=/usr/local/script
2809 $test -d $prefixexp/script && dflt=$prefixexp/script
2813 *) dflt="$scriptdir"
2818 Some installations have a separate directory just for executable scripts so
2819 that they can mount it across multiple architectures but keep the scripts in
2820 one spot. You might, for example, have a subdirectory of /usr/share for this.
2821 Or you might just lump your scripts in with all your other executables.
2825 rp='Where do you keep publicly executable scripts?'
2827 if $test "X$ansexp" != "X$scriptdirexp"; then
2831 scriptdirexp="$ansexp"
2835 Since you are running AFS, I need to distinguish the directory in which
2836 scripts reside from the directory in which they are installed (and from
2837 which they are presumably copied to the former directory by occult means).
2840 case "$installscript" in
2841 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
2842 *) dflt="$installscript";;
2845 rp='Where will public scripts be installed?'
2847 installscript="$ans"
2849 installscript="$scriptdirexp"
2852 : determine perl absolute location
2854 '') perlpath=$binexp/perl ;;
2857 : figure out how to guarantee perl startup
2858 case "$startperl" in
2860 case "$sharpbang" in
2864 I can use the #! construct to start perl on your system. This will
2865 make startup of perl scripts faster, but may cause problems if you
2866 want to share those scripts and perl is not in a standard place
2867 ($perlpath) on all your platforms. The alternative is to force
2868 a shell by starting the script with a single ':' character.
2872 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
2875 none) startperl=": # use perl";;
2876 *) startperl="#!$ans";;
2879 *) startperl=": # use perl"
2884 echo "I'll use $startperl to start perl scripts."
2886 : determine where manual pages are on this system
2890 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2891 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2892 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2893 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2894 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2895 sysman=`./loc . /usr/man/man1 $syspath`
2898 if $test -d "$sysman"; then
2899 echo "System manual is in $sysman." >&4
2901 echo "Could not find manual pages in source form." >&4
2904 : see what memory models we can support
2907 $cat >pdp11.c <<'EOP'
2916 cc -o pdp11 pdp11.c >/dev/null 2>&1
2917 if ./pdp11 2>/dev/null; then
2918 dflt='unsplit split'
2920 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2923 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2928 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2931 if $test -d /lib/large || $test -d /usr/lib/large; then
2934 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2943 Some systems have different model sizes. On most systems they are called
2944 small, medium, large, and huge. On the PDP11 they are called unsplit and
2945 split. If your system doesn't support different memory models, say "none".
2946 If you wish to force everything to one memory model, say "none" here and
2947 put the appropriate flags later when it asks you for other cc and ld flags.
2948 Venix systems may wish to put "none" and let the compiler figure things out.
2949 (In the following question multiple model names should be space separated.)
2952 rp="Which memory models are supported?"
2967 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2968 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2975 rp="What flag indicates separate I and D space?"
2983 *large*|*small*|*medium*|*huge*)
2990 rp="What flag indicates large model?"
3000 *huge*) case "$huge" in
3004 rp="What flag indicates huge model?"
3014 *medium*) case "$medium" in
3018 rp="What flag indicates medium model?"
3025 *) medium="$large";;
3028 *small*) case "$small" in
3032 rp="What flag indicates small model?"
3043 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3047 : make some quick guesses about what we are up against
3049 $echo $n "Hmm... $c"
3058 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3059 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3061 echo "Looks kind of like an OSF/1 system, but we'll see..."
3063 elif test `echo abc | tr a-z A-Z` = Abc ; then
3064 xxx=`./loc addbib blurfl $pth`
3065 if $test -f $xxx; then
3066 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3070 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3071 echo "Looks kind of like an extended USG system, but we'll see..."
3073 echo "Looks kind of like a USG system, but we'll see..."
3077 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3078 echo "Looks kind of like a BSD system, but we'll see..."
3082 echo "Looks kind of like a Version 7 system, but we'll see..."
3085 case "$eunicefix" in
3088 There is, however, a strange, musty smell in the air that reminds me of
3089 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3093 : it so happens the Eunice I know will not run shell scripts in Unix format
3097 echo "Congratulations. You aren't running Eunice."
3101 if test -f /xenix; then
3102 echo "Actually, this looks more like a XENIX system..."
3107 echo "It's not Xenix..."
3112 if test -f /venix; then
3113 echo "Actually, this looks more like a VENIX system..."
3120 echo "Nor is it Venix..."
3123 chmod +x bsd usg v7 osf1 eunice xenix venix
3124 $eunicefix bsd usg v7 osf1 eunice xenix venix
3127 : see if we need a special compiler
3135 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3136 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3149 On some systems the default C compiler will not resolve multiple global
3150 references that happen to have the same name. On some such systems the "Mcc"
3151 command may be used to force these to be resolved. On other systems a "cc -M"
3152 command is required. (Note that the -M flag on other systems indicates a
3153 memory model to use!) If you have the Gnu C compiler, you might wish to use
3157 rp="What command will force resolution on this system?"
3165 rp="Use which C compiler?"
3170 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3171 $cat >gccvers.c <<EOM
3176 printf("%s\n", __VERSION__);
3178 printf("%s\n", "1");
3184 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3185 gccversion=`./gccvers`
3186 case "$gccversion" in
3187 '') echo "You are not using GNU cc." ;;
3188 *) echo "You are using GNU cc $gccversion." ;;
3192 echo "*** WHOA THERE!!! ***" >&4
3193 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3194 case "$knowitall" in
3196 echo " You'd better start hunting for one and let me know about it." >&4
3202 case "$gccversion" in
3203 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3206 : What should the include directory be ?
3208 $echo $n "Hmm... $c"
3212 if $test -f /bin/mips && /bin/mips; then
3213 echo "Looks like a MIPS system..."
3214 $cat >usr.c <<'EOCP'
3215 #ifdef SYSTYPE_BSD43
3219 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3220 dflt='/bsd43/usr/include'
3224 mips_type='System V'
3226 $rm -f usr.c usr.out
3227 echo "and you're compiling with the $mips_type compiler and libraries."
3231 echo "Doesn't look like a MIPS system."
3242 case "$xxx_prompt" in
3244 rp='Where are the include files you want to use?'
3252 : see how we invoke the C preprocessor
3254 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3255 cat <<'EOT' >testcpp.c
3261 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3263 wrapper=`pwd`/cppstdin
3267 if $test "X$cppstdin" != "X" && \
3268 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3269 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3271 echo "You used to use $cppstdin $cppminus so we'll use that again."
3273 '') echo "But let's see if we can live without a wrapper..." ;;
3275 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3276 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3278 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3281 echo "(However, $cpprun $cpplast does not work, let's see...)"
3289 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3296 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3297 $cc -E <testcpp.c >testcpp.out 2>&1; \
3298 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3299 echo "Yup, it does."
3302 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3303 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3304 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3305 echo "Yup, it does."
3308 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3309 $cc -P <testcpp.c >testcpp.out 2>&1; \
3310 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3311 echo "Yipee, that works!"
3314 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3315 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3316 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3317 echo "At long last!"
3320 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3321 $cpp <testcpp.c >testcpp.out 2>&1; \
3322 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3326 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3327 $cpp - <testcpp.c >testcpp.out 2>&1; \
3328 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3329 echo "Hooray, it works! I was beginning to wonder."
3332 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3333 $wrapper <testcpp.c >testcpp.out 2>&1; \
3334 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3340 rp="No dice. I can't find a C preprocessor. Name one:"
3344 $x_cpp <testcpp.c >testcpp.out 2>&1
3345 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3346 echo "OK, that will do." >&4
3348 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3363 echo "Perhaps can we force $cc -E using a wrapper..."
3364 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3365 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3371 echo "Nope, we'll have to live without it..."
3386 *) $rm -f $wrapper;;
3388 $rm -f testcpp.c testcpp.out
3390 : Set private lib path
3393 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3398 '') dlist="$loclibpth $plibpth $glibpth";;
3399 *) dlist="$libpth";;
3402 : Now check and see which directories actually exist, avoiding duplicates
3406 if $test -d $xxx; then
3409 *) libpth="$libpth $xxx";;
3415 Some systems have incompatible or broken versions of libraries. Among
3416 the directories listed in the question below, please remove any you
3417 know not to be holding relevant libraries, and add any that are needed.
3418 Say "none" for none.
3429 rp="Directories to use for library searches?"
3436 : determine optimize, if desired, or use for debug flag also
3440 *) dflt="$optimize";;
3444 Some C compilers have problems with their optimizers, by default, $package
3445 compiles with the -O flag to use the optimizer. Alternately, you might want
3446 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3447 systems). Either flag can be specified here. To use neither flag, specify
3451 rp="What optimizer/debugger flag should be used?"
3455 'none') optimize=" ";;
3459 : We will not override a previous value, but we might want to
3460 : augment a hint file
3463 case "$gccversion" in
3464 1*) dflt='-fpcc-struct-return' ;;
3467 *-g*) dflt="$dflt -DDEBUGGING";;
3469 case "$gccversion" in
3470 2*) if test -d /etc/conf/kconfig.d &&
3471 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3480 case "$mips_type" in
3481 *BSD*|'') inclwanted="$locincpth $usrinc";;
3482 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3484 for thisincl in $inclwanted; do
3485 if $test -d $thisincl; then
3486 if $test x$thisincl != x$usrinc; then
3489 *) dflt="$dflt -I$thisincl";;
3495 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3497 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3505 *) dflt="$dflt -D$2";;
3510 set signal.h __LANGUAGE_C__; eval $inctest
3512 set signal.h LANGUAGE_C; eval $inctest
3514 set signal.h NO_PROTOTYPE; eval $inctest
3515 set signal.h _NO_PROTO; eval $inctest
3518 none|recommended) dflt="$ccflags $dflt" ;;
3519 *) dflt="$ccflags";;
3527 Your C compiler may want other flags. For this question you should include
3528 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3529 but you should NOT include libraries or ld flags like -lwhatever. If you
3530 want $package to honor its debug switch, you should include -DDEBUGGING here.
3531 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3532 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3534 To use no flags, specify the word "none".
3540 rp="Any additional cc flags?"
3547 : the following weeds options from ccflags that are of no interest to cpp
3549 case "$gccversion" in
3550 1*) cppflags="$cppflags -D__GNUC__"
3552 case "$mips_type" in
3554 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3560 echo "Let me guess what the preprocessor flags are..." >&4
3574 *) ftry="$previous $flag";;
3576 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3577 >cpp1.out 2>/dev/null && \
3578 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3579 >cpp2.out 2>/dev/null && \
3580 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3581 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3583 cppflags="$cppflags $ftry"
3593 *-*) echo "They appear to be: $cppflags";;
3595 $rm -f cpp.c cpp?.out
3599 : flags used in final linking phase
3602 '') if ./venix; then
3608 *-posix*) dflt="$dflt -posix" ;;
3611 *) dflt="$ldflags";;
3614 : Try to guess additional flags to pick up local libraries.
3615 for thislibdir in $libpth; do
3616 case " $loclibpth " in
3619 *"-L$thislibdir "*) ;;
3620 *) dflt="$dflt -L$thislibdir" ;;
3632 Your C linker may need flags. For this question you should
3633 include -L/whatever and any other flags used by the C linker, but you
3634 should NOT include libraries like -lwhatever.
3636 Make sure you include the appropriate -L/path flags if your C linker
3637 does not normally search all of the directories you specified above,
3640 To use no flags, specify the word "none".
3644 rp="Any additional ld flags (NOT including libraries)?"
3650 rmlist="$rmlist pdp11"
3654 echo "Checking your choice of C compiler and flags for coherency..." >&4
3655 set X $cc $optimize $ccflags $ldflags try.c -o try
3658 I've tried to compile and run a simple program with:
3663 and I got the following output:
3666 $cat > try.c <<'EOF'
3671 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3672 if sh -c './try' >>try.msg 2>&1; then
3675 echo "The program compiled OK, but exited with status $?." >>try.msg
3676 rp="You have a problem. Shall I abort Configure"
3680 echo "I can't compile the test program." >>try.msg
3681 rp="You have a BIG problem. Shall I abort Configure"
3687 case "$knowitall" in
3689 echo "(The supplied flags might be incorrect with this C compiler.)"
3697 *) echo "Ok. Stopping Configure." >&4
3702 n) echo "OK, that should do.";;
3704 $rm -f try try.* core
3706 : compute shared library extension
3709 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3719 On some systems, shared libraries may be available. Answer 'none' if
3720 you want to suppress searching of shared libraries for the remaining
3721 of this configuration.
3724 rp='What is the file extension used for shared libraries?'
3728 : Looking for optional libraries
3730 echo "Checking for optional libraries..." >&4
3735 case "$libswanted" in
3736 '') libswanted='c_s';;
3738 for thislib in $libswanted; do
3740 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3741 echo "Found -l$thislib (shared)."
3744 *) dflt="$dflt -l$thislib";;
3746 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3747 echo "Found -l$thislib (shared)."
3750 *) dflt="$dflt -l$thislib";;
3752 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
3753 echo "Found -l$thislib."
3756 *) dflt="$dflt -l$thislib";;
3758 elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
3759 echo "Found -l$thislib."
3762 *) dflt="$dflt -l$thislib";;
3764 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
3765 echo "Found -l${thislib}_s."
3768 *) dflt="$dflt -l${thislib}_s";;
3770 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
3771 echo "Found -l$thislib."
3774 *) dflt="$dflt -l$thislib";;
3777 echo "No -l$thislib."
3788 ' '|'') dflt='none';;
3793 Some versions of Unix support shared libraries, which make executables smaller
3794 but make load time slightly longer.
3796 On some systems, mostly newer Unix System V's, the shared library is included
3797 by putting the option "-lc_s" as the last thing on the cc command line when
3798 linking. Other systems use shared libraries by default. There may be other
3799 libraries needed to compile $package on your machine as well. If your system
3800 needs the "-lc_s" option, include it here. Include any other special libraries
3801 here as well. Say "none" for none.
3805 rp="Any additional libraries?"
3812 : see if nm is to be used to determine whether a symbol is defined or not
3815 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3816 if $test $dflt -gt 20; then
3831 I can use 'nm' to extract the symbols from your C libraries. This is a time
3832 consuming task which may generate huge output on the disk (up to 3 megabytes)
3833 but that should make the symbols extraction faster. The alternative is to skip
3834 the 'nm' extraction part and to compile a small test program instead to
3835 determine whether each symbol is present. If you have a fast C compiler and/or
3836 if your 'nm' output cannot be parsed, this may be the best solution.
3839 rp='Shall I use nm to extract C symbols from the libraries?'
3851 : nm options which may be necessary
3853 '') if $test -f /mach_boot; then
3855 elif $test -d /usr/ccs/lib; then
3857 elif $test -f /dgux; then
3866 : get list of predefined functions in a handy place
3871 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
3878 *) for thislib in $libs; do
3881 : Handle C library specially below.
3884 thislib=`echo $thislib | $sed -e 's/^-l//'`
3885 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3887 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3889 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
3891 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3893 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3895 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
3900 libnames="$libnames $try"
3902 *) libnames="$libnames $thislib" ;;
3910 set /usr/ccs/lib/libc.$so
3911 $test -r $1 || set /usr/lib/libc.$so
3912 $test -r $1 || set /usr/shlib/libc.$so
3914 set `echo blurfl; echo /usr/lib/libc.$so.[0-9]* | \
3915 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3917 s/[0-9][0-9]*/0000&/g
3918 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3921 sort | $sed -e 's/^.* //'`
3923 $test -r $1 || set /lib/libc.$so
3924 $test -r $1 || set /lib/libsys_s.a
3930 if $test -r "$1"; then
3931 echo "Your (shared) C library seems to be in $1."
3933 elif $test -r /lib/libc && $test -r /lib/clib; then
3934 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3936 libc='/lib/clib /lib/libc'
3937 if $test -r /lib/syslib; then
3938 echo "(Your math library is in /lib/syslib.)"
3939 libc="$libc /lib/syslib"
3941 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3942 echo "Your C library seems to be in $libc, as you said before."
3943 elif $test -r $incpath/usr/lib/libc.a; then
3944 libc=$incpath/usr/lib/libc.a;
3945 echo "Your C library seems to be in $libc. That's fine."
3946 elif $test -r /lib/libc.a; then
3948 echo "Your C library seems to be in $libc. You're normal."
3950 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3952 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3953 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3954 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3956 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3958 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3961 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3963 if $test -r "$tans"; then
3964 echo "Your C library seems to be in $tans, of all places."
3970 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3974 If the guess above is wrong (which it might be if you're using a strange
3975 compiler, or your machine supports multiple models), you can override it here.
3980 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3982 I can't seem to find your C library. I've looked in the following places:
3985 $sed 's/^/ /' libpath
3988 None of these seems to contain your C library. I need to get its name...
3993 rp='Where is your C library?'
3998 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3999 set X `cat libnames`
4002 case $# in 1) xxx=file; esac
4003 echo "Extracting names from the following $xxx for later perusal:" >&4
4005 $sed 's/^/ /' libnames >&4
4007 $echo $n "This may take a while...$c" >&4
4009 nm $nm_opt $* 2>/dev/null >libc.tmp
4011 $grep fprintf libc.tmp > libc.ptf
4012 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4013 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4015 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\
4017 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4019 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4021 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4023 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4025 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4027 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4029 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4031 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4033 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4035 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4037 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4039 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4040 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4042 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4044 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4046 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4048 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4050 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4052 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4054 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4056 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4058 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4061 nm -p $* 2>/dev/null >libc.tmp
4062 $grep fprintf libc.tmp > libc.ptf
4063 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4064 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4070 echo "nm didn't seem to work right. Trying ar instead..." >&4
4072 if ar t $libc > libc.tmp; then
4073 for thisname in $libnames; do
4074 ar t $thisname >>libc.tmp
4076 $sed -e 's/\.o$//' < libc.tmp > libc.list
4079 echo "ar didn't seem to work right." >&4
4080 echo "Maybe this is a Cray...trying bld instead..." >&4
4081 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4083 for thisname in $libnames; do
4085 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4086 ar t $thisname >>libc.tmp
4090 echo "That didn't work either. Giving up." >&4
4097 if $test -f /lib/syscalls.exp; then
4099 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4100 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4104 $rm -f libnames libpath
4106 : is a C symbol defined?
4109 -v) tf=libc.tmp; tc=""; tdc="";;
4110 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4111 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4114 case "$reuseval-$4" in
4116 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4122 if $contains $tlook $tf >/dev/null 2>&1;
4127 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4128 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4136 $define) tval=true;;
4142 : define an is-in-libc? function
4143 inlibc='echo " "; td=$define; tu=$undef;
4144 sym=$1; var=$2; eval "was=\$$2";
4146 case "$reuseval$was" in
4156 echo "$sym() found." >&4;
4157 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4159 echo "$sym() NOT found." >&4;
4160 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4164 $define) echo "$sym() found." >&4;;
4165 *) echo "$sym() NOT found." >&4;;
4169 : Check how to convert floats to strings.
4171 echo "Checking for an efficient way to convert floats to strings."
4174 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
4177 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
4180 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
4184 Gconvert(1.0, 8, 0, buf);
4185 if (buf[0] != '1' || buf[1] != '\0')
4187 Gconvert(0.0, 8, 0, buf);
4188 if (buf[0] != '0' || buf[1] != '\0')
4190 Gconvert(-1.0, 8, 0, buf);
4191 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
4196 case "$d_Gconvert" in
4197 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
4198 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
4199 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
4200 *) xxx_list='gconvert gcvt sprintf' ;;
4203 for xxx_convert in $xxx_list; do
4204 echo "Trying $xxx_convert"
4206 if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
4207 try.c $libs > /dev/null 2>&1 ; then
4208 echo "$xxx_convert" found. >&4
4210 echo "Good, $xxx_convert drops a trailing decimal point."
4211 echo "I'll use $xxx_convert to convert floats into a string." >&4
4214 echo "But $xxx_convert keeps a trailing decimal point".
4217 echo "$xxx_convert NOT found." >&4
4221 case "$xxx_convert" in
4222 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
4223 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
4224 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
4227 : Initialize h_fcntl
4230 : Initialize h_sysfile
4233 : determine filename position in cpp output
4235 echo "Computing filename position in cpp output for #include directives..." >&4
4236 echo '#include <stdio.h>' > foo.c
4239 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4240 $grep '^[ ]*#.*stdio\.h' | \
4241 while read cline; do
4244 while $test \$# -gt 0; do
4245 if $test -r \`echo \$1 | $tr -d '"'\`; then
4250 pos=\`expr \$pos + 1\`
4262 *) pos="${fieldn}th";;
4264 echo "Your cpp writes the filename in the $pos field of the line."
4266 : locate header file
4271 if test -f $usrinc/\$wanted; then
4272 echo "$usrinc/\$wanted"
4275 awkprg='{ print \$$fieldn }'
4276 echo "#include <\$wanted>" > foo\$\$.c
4277 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4278 $grep "^[ ]*#.*\$wanted" | \
4279 while read cline; do
4280 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4282 */\$wanted) echo "\$name"; exit 0;;
4293 : access call always available on UNIX
4297 : locate the flags for 'access()'
4301 $cat >access.c <<'EOCP'
4302 #include <sys/types.h>
4307 #include <sys/file.h>
4316 : check sys/file.h first, no particular reason here
4317 if $test `./findhdr sys/file.h` && \
4318 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
4320 echo "<sys/file.h> defines the *_OK access constants." >&4
4321 elif $test `./findhdr fcntl.h` && \
4322 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
4324 echo "<fcntl.h> defines the *_OK access constants." >&4
4325 elif $test `./findhdr unistd.h` && \
4326 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
4327 echo "<unistd.h> defines the *_OK access constants." >&4
4329 echo "I can't find the four *_OK access constants--I'll use mine." >&4
4335 : see if alarm exists
4339 : Look for GNU-cc style attribute checking
4341 echo "Checking whether your compiler can handle __attribute__ ..." >&4
4342 $cat >attrib.c <<'EOCP'
4344 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
4346 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
4347 if $contains 'warning' attrib.out >/dev/null 2>&1; then
4348 echo "Your C compiler doesn't fully support __attribute__."
4351 echo "Your C compiler supports __attribute__."
4355 echo "Your C compiler doesn't seem to understand __attribute__ at all."
4362 : see if bcmp exists
4366 : see if bcopy exists
4370 : see if setpgrp exists
4371 set setpgrp d_setpgrp
4374 : see which flavor of setpgrp is in use
4375 case "$d_setpgrp" in
4381 if (getuid() == 0) {
4382 printf("(I see you are running Configure as super-user...)\n");
4385 if (-1 == setpgrp(1, 1))
4390 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
4393 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
4395 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
4400 xxx="USG one, i.e. you use setpgrp()."
4403 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
4406 echo "Assuming your setpgrp is a $xxx" >&4
4415 : see if bzero exists
4419 : check for length of integer
4423 echo "Checking to see how big your integers are..." >&4
4424 $cat >try.c <<'EOCP'
4428 printf("%d\n", sizeof(int));
4432 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
4434 echo "Your integers are $intsize bytes long."
4437 echo "(I can't seem to compile the test program. Guessing...)"
4438 rp="What is the size of an integer (in bytes)?"
4446 : see if signal is declared as pointer to function returning int or void
4448 xxx=`./findhdr signal.h`
4449 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
4450 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4451 echo "You have int (*signal())() instead of void." >&4
4453 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
4454 echo "You have void (*signal())() instead of int." >&4
4456 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
4457 echo "You have int (*signal())() instead of void." >&4
4460 case "$d_voidsig" in
4462 echo "I can't determine whether signal handler returns void or int..." >&4
4464 rp="What type does your signal handler return?"
4471 echo "As you already told me, signal handler returns void." >&4;;
4473 echo "As you already told me, signal handler returns int." >&4;;
4478 case "$d_voidsig" in
4479 "$define") signal_t="void";;
4484 : check for ability to cast large floats to 32-bit ints.
4486 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
4487 if $test "$intsize" -eq 4; then
4493 #include <sys/types.h>
4495 $signal_t blech() { exit(3); }
4501 signal(SIGFPE, blech);
4503 f = (double) 0x7fffffff;
4507 if (i32 != ($xxx) f)
4512 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4516 echo "(I can't seem to compile the test program--assuming it can't)"
4524 echo "Nope, it can't."
4531 : check for ability to cast negative floats to unsigned
4533 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
4535 #include <sys/types.h>
4537 $signal_t blech() { exit(7); }
4538 $signal_t blech_in_list() { exit(4); }
4539 unsigned long dummy_long(p) unsigned long p; { return p; }
4540 unsigned int dummy_int(p) unsigned int p; { return p; }
4541 unsigned short dummy_short(p) unsigned short p; { return p; }
4545 unsigned long along;
4547 unsigned short ashort;
4550 signal(SIGFPE, blech);
4551 along = (unsigned long)f;
4552 aint = (unsigned int)f;
4553 ashort = (unsigned short)f;
4554 if (along != (unsigned long)-123)
4556 if (aint != (unsigned int)-123)
4558 if (ashort != (unsigned short)-123)
4560 f = (double)0x40000000;
4563 along = (unsigned long)f;
4564 if (along != 0x80000000)
4568 along = (unsigned long)f;
4569 if (along != 0x7fffffff)
4573 along = (unsigned long)f;
4574 if (along != 0x80000001)
4578 signal(SIGFPE, blech_in_list);
4580 along = dummy_long((unsigned long)f);
4581 aint = dummy_int((unsigned int)f);
4582 ashort = dummy_short((unsigned short)f);
4583 if (along != (unsigned long)123)
4585 if (aint != (unsigned int)123)
4587 if (ashort != (unsigned short)123)
4593 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
4597 echo "(I can't seem to compile the test program--assuming it can't)"
4600 case "$castflags" in
4605 echo "Nope, it can't."
4612 : see if vprintf exists
4614 if set vprintf val -f d_vprintf; eval $csym; $val; then
4615 echo 'vprintf() found.' >&4
4617 $cat >vprintf.c <<'EOF'
4618 #include <varargs.h>
4620 main() { xxx("foo"); }
4629 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
4632 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
4633 echo "Your vsprintf() returns (int)." >&4
4636 echo "Your vsprintf() returns (char*)." >&4
4640 echo 'vprintf() NOT found.' >&4
4650 : see if chown exists
4654 : see if chroot exists
4658 : see if chsize exists
4662 : check for const keyword
4664 echo 'Checking to see if your C compiler knows about "const"...' >&4
4665 $cat >const.c <<'EOCP'
4666 typedef struct spug { int drokk; } spug;
4673 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
4675 echo "Yup, it does."
4678 echo "Nope, it doesn't."
4683 : see if crypt exists
4685 if set crypt val -f d_crypt; eval $csym; $val; then
4686 echo 'crypt() found.' >&4
4690 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
4691 if $test -z "$cryptlib"; then
4692 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
4696 if $test -z "$cryptlib"; then
4697 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
4701 if $test -z "$cryptlib"; then
4702 cryptlib=`./loc libcrypt.a "" $libpth`
4706 if $test -z "$cryptlib"; then
4707 echo 'crypt() NOT found.' >&4
4716 : get csh whereabouts
4718 'csh') val="$undef" ;;
4725 : see if cuserid exists
4726 set cuserid d_cuserid
4729 : define an alternate in-header-list? function
4730 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4731 cont=true; xxf="echo \"<\$1> found.\" >&4";
4732 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4733 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4735 case $# in 4) instead=instead;; *) instead="at last";; esac;
4736 while $test "$cont"; do
4738 var=$2; eval "was=\$$2";
4739 if $test "$xxx" && $test -r "$xxx";
4741 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4744 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4745 set $yyy; shift; shift; yyy=$@;
4746 case $# in 0) cont="";;
4747 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4748 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4749 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4750 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4754 do set $yyy; var=$2; eval "was=\$$2";
4755 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4756 set $yyy; shift; shift; yyy=$@;
4759 : see if this is a limits.h system
4760 set limits.h i_limits
4763 : see if this is a float.h system
4767 : See if number of significant digits in a double precision number is known
4769 $cat >dbl_dig.c <<EOM
4779 printf("Contains DBL_DIG");
4782 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4783 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4784 echo "DBL_DIG found." >&4
4787 echo "DBL_DIG NOT found." >&4
4794 : see if difftime exists
4795 set difftime d_difftime
4798 : see if this is a dirent system
4800 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4802 echo "<dirent.h> found." >&4
4805 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4806 echo "<sys/dir.h> found." >&4
4809 xinc=`./findhdr sys/ndir.h`
4811 echo "<dirent.h> NOT found." >&4
4816 : Look for type of directory structure.
4818 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4820 case "$direntrytype" in
4823 $define) guess1='struct dirent' ;;
4824 *) guess1='struct direct' ;;
4827 *) guess1="$direntrytype"
4832 'struct dirent') guess2='struct direct' ;;
4833 *) guess2='struct dirent' ;;
4836 if $contains "$guess1" try.c >/dev/null 2>&1; then
4837 direntrytype="$guess1"
4838 echo "Your directory entries are $direntrytype." >&4
4839 elif $contains "$guess2" try.c >/dev/null 2>&1; then
4840 direntrytype="$guess2"
4841 echo "Your directory entries seem to be $direntrytype." >&4
4843 echo "I don't recognize your system's directory entries." >&4
4844 rp="What type is used for directory entries on this system?"
4852 : see if the directory entry stores field length
4854 $cppstdin $cppflags $cppminus < "$xinc" > try.c
4855 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
4856 echo "Good, your directory entry keeps length information in d_namlen." >&4
4859 echo "Your directory entry does not know about the d_namlen field." >&4
4866 : see if dlerror exists
4869 set dlerror d_dlerror
4873 : see if dld is available
4877 : see if dlopen exists
4884 : determine which dynamic loading, if any, to compile in
4886 dldir="ext/DynaLoader"
4899 $define) dflt='y' ;;
4902 $define) dflt='y' ;;
4904 : Does a dl_xxx.xs file exist for this operating system
4905 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4908 rp="Do you wish to use dynamic loading?"
4915 if $test -f ../$dldir/dl_${osname}.xs ; then
4916 dflt="$dldir/dl_${osname}.xs"
4917 elif $test "$d_dlopen" = "$define" ; then
4918 dflt="$dldir/dl_dlopen.xs"
4919 elif $test "$i_dld" = "$define" ; then
4920 dflt="$dldir/dl_dld.xs"
4925 *) dflt="$dldir/$dlsrc"
4928 echo "The following dynamic loading files are available:"
4929 : Can not go over to $dldir because getfile has path hard-coded in.
4930 cd ..; ls -C $dldir/dl*.xs; cd UU
4931 rp="Source file to use for dynamic loading"
4936 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4940 Some systems may require passing special flags to $cc -c to
4941 compile modules that will be used to create a shared library.
4942 To use no flags, say "none".
4945 case "$cccdlflags" in
4946 '') case "$gccversion" in
4947 '') case "$osname" in
4949 next) dflt='none' ;;
4950 solaris|svr4*|esix*) dflt='-Kpic' ;;
4951 sunos) dflt='-pic' ;;
4956 *) dflt="$cccdlflags" ;;
4958 rp="Any special flags to pass to $cc -c to compile shared library modules?"
4961 none) cccdlflags=' ' ;;
4962 *) cccdlflags="$ans" ;;
4967 Some systems use ld to create libraries that can be dynamically loaded,
4968 while other systems (such as those using ELF) use $cc.
4972 '') $cat >try.c <<'EOM'
4973 /* Test for whether ELF binaries are produced */
4978 int i = open("a.out",O_RDONLY);
4981 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4982 exit(0); /* succeed (yes, it's ELF) */
4987 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4989 You appear to have ELF support. I'll use $cc to build dynamic libraries.
4993 echo "I'll use ld to build dynamic libraries."
5002 rp="What command should be used to create dynamic libraries?"
5008 Some systems may require passing special flags to $ld to create a
5009 library that can be dynamically loaded. If your ld flags include
5010 -L/other/path options to locate libraries outside your loader's normal
5011 search path, you may need to specify those -L options here as well. To
5012 use no flags, say "none".
5015 case "$lddlflags" in
5016 '') case "$osname" in
5018 linux) dflt='-shared' ;;
5019 next) dflt='none' ;;
5020 solaris) dflt='-G' ;;
5021 sunos) dflt='-assert nodefinitions' ;;
5022 svr4*|esix*) dflt="-G $ldflags" ;;
5026 *) dflt="$lddlflags" ;;
5029 : Try to guess additional flags to pick up local libraries.
5030 for thisflag in $ldflags; do
5035 *) dflt="$dflt $thisflag" ;;
5045 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5048 none) lddlflags=' ' ;;
5049 *) lddlflags="$ans" ;;
5054 Some systems may require passing special flags to $cc to indicate that
5055 the resulting executable will use dynamic linking. To use no flags,
5059 case "$ccdlflags" in
5060 '') case "$osname" in
5061 hpux) dflt='-Wl,-E' ;;
5062 linux) dflt='-rdynamic' ;;
5063 next) dflt='none' ;;
5064 sunos) dflt='none' ;;
5067 *) dflt="$ccdlflags" ;;
5069 rp="Any special flags to pass to $cc to use dynamic loading?"
5072 none) ccdlflags=' ' ;;
5073 *) ccdlflags="$ans" ;;
5091 System V Release 4 systems can support dynamic loading
5092 only if libperl is created as a shared library.
5099 set d_shrplib; eval $setvar
5100 case "$d_shrplib" in
5104 Be sure to add the perl source directory to the LD_LIBRARY_PATH
5105 environment variable before running make:
5106 LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH
5108 setenv LD_LIBRARY_PATH `cd ..;pwd`
5113 case "$d_shrplib" in
5116 "") dflt="$archlib/CORE";;
5117 *) dflt="$shrpdir";;
5119 rp="What directory should we install the shared libperl into?"
5128 : see if dlfcn is available
5136 On a few systems, the dynamically loaded modules that perl generates and uses
5137 will need a different extension then shared libs. The default will probably
5145 rp='What is the extension of dynamically loaded modules'
5154 : Check if dlsym need a leading underscore
5160 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
5161 $cat >dyna.c <<'EOM'
5170 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
5172 #include <sys/types.h>
5186 int mode = RTLD_LAZY ;
5188 handle = dlopen("./dyna.$dlext", mode) ;
5189 if (handle == NULL) {
5193 symbol = dlsym(handle, "fred") ;
5194 if (symbol == NULL) {
5195 /* try putting a leading underscore */
5196 symbol = dlsym(handle, "_fred") ;
5197 if (symbol == NULL) {
5208 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
5209 $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 &&
5210 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
5213 1) echo "Test program failed using dlopen." >&4
5214 echo "Perhaps you should not use dynamic loading." >&4;;
5215 2) echo "Test program failed using dlsym." >&4
5216 echo "Perhaps you should not use dynamic loading." >&4;;
5217 3) echo "dlsym needs a leading underscore" >&4
5219 4) echo "dlsym doesn't need a leading underscore." >&4;;
5222 echo "I can't compile and run the test program." >&4
5227 $rm -f fred fred.? dyna.$dlext dyna.?
5232 : see if setuid scripts can be secure
5235 Some kernels have a bug that prevents setuid #! scripts from being
5236 secure. Some sites have disabled setuid #! scripts because of this.
5238 First let's decide if your kernel supports secure setuid #! scripts.
5239 (If setuid #! scripts would be secure but have been disabled anyway,
5240 don't say that they are secure if asked.)
5245 if $test -d /dev/fd; then
5246 echo "#!$ls" >reflect
5247 chmod +x,u+s reflect
5248 ./reflect >flect 2>&1
5249 if $contains "/dev/fd" flect >/dev/null; then
5250 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5254 If you are not sure if they are secure, I can check but I'll need a
5255 username and password different from the one you are using right now.
5256 If you don't have such a username or don't want me to test, simply
5260 rp='Other username to test security of setuid scripts with?'
5265 case "$d_suidsafe" in
5266 '') echo "I'll assume setuid scripts are *not* secure." >&4
5269 echo "Well, the $hint value is *not* secure." >&4
5271 *) echo "Well, the $hint value *is* secure." >&4
5276 $rm -f reflect flect
5277 echo "#!$ls" >reflect
5278 chmod +x,u+s reflect
5281 echo '"su" will (probably) prompt you for '"$ans's password."
5282 su $ans -c './reflect >flect'
5283 if $contains "/dev/fd" flect >/dev/null; then
5284 echo "Okay, it looks like setuid scripts are secure." >&4
5287 echo "I don't think setuid scripts are secure." >&4
5292 rp='Does your kernel have *secure* setuid scripts?'
5295 [yY]*) val="$define";;
5300 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5306 $rm -f reflect flect
5308 : now see if they want to do setuid emulation
5311 case "$d_suidsafe" in
5314 echo "No need to emulate SUID scripts since they are secure here." >& 4
5318 Some systems have disabled setuid scripts, especially systems where
5319 setuid scripts cannot be secure. On systems where setuid scripts have
5320 been disabled, the setuid/setgid bits on scripts are currently
5321 useless. It is possible for $package to detect those bits and emulate
5322 setuid/setgid in a secure fashion. This emulation will only work if
5323 setuid scripts have been disabled in your kernel.
5327 "$define") dflt=y ;;
5330 rp="Do you want to do setuid/setgid emulation?"
5333 [yY]*) val="$define";;
5341 : see if dup2 exists
5345 : Locate the flags for 'open()'
5347 $cat >open3.c <<'EOCP'
5348 #include <sys/types.h>
5353 #include <sys/file.h>
5364 : check sys/file.h first to get FREAD on Sun
5365 if $test `./findhdr sys/file.h` && \
5366 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
5368 echo "<sys/file.h> defines the O_* constants..." >&4
5370 echo "and you have the 3 argument form of open()." >&4
5373 echo "but not the 3 argument form of open(). Oh, well." >&4
5376 elif $test `./findhdr fcntl.h` && \
5377 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
5379 echo "<fcntl.h> defines the O_* constants..." >&4
5381 echo "and you have the 3 argument form of open()." >&4
5384 echo "but not the 3 argument form of open(). Oh, well." >&4
5389 echo "I can't find the O_* constant definitions! You got problems." >&4
5395 : check for non-blocking I/O stuff
5396 case "$h_sysfile" in
5397 true) echo "#include <sys/file.h>" > head.c;;
5400 true) echo "#include <fcntl.h>" > head.c;;
5401 *) echo "#include <sys/fcntl.h>" > head.c;;
5406 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
5407 case "$o_nonblock" in
5410 $cat >>try.c <<'EOCP'
5413 printf("O_NONBLOCK\n");
5417 printf("O_NDELAY\n");
5421 printf("FNDELAY\n");
5427 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5429 case "$o_nonblock" in
5430 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
5431 *) echo "Seems like we can use $o_nonblock.";;
5434 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
5437 *) echo "Using $hint value $o_nonblock.";;
5439 $rm -f try try.* .out core
5442 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
5448 #include <sys/types.h>
5450 #define MY_O_NONBLOCK $o_nonblock
5452 $signal_t blech(x) int x; { exit(3); }
5454 $cat >> try.c <<'EOCP'
5462 pipe(pd); /* Down: child -> parent */
5463 pipe(pu); /* Up: parent -> child */
5466 close(pd[1]); /* Parent reads from pd[0] */
5467 close(pu[0]); /* Parent writes (blocking) to pu[1] */
5468 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
5470 signal(SIGALRM, blech);
5472 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
5474 sprintf(string, "%d\n", ret);
5475 write(2, string, strlen(string));
5478 if (errno == EAGAIN) {
5484 if (errno == EWOULDBLOCK)
5485 printf("EWOULDBLOCK\n");
5488 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
5489 sleep(2); /* Give it time to close our pipe */
5491 ret = read(pd[0], buf, 1); /* Should read EOF */
5493 sprintf(string, "%d\n", ret);
5494 write(3, string, strlen(string));
5498 close(pd[0]); /* We write to pd[1] */
5499 close(pu[1]); /* We read from pu[0] */
5500 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
5501 close(pd[1]); /* Pipe pd is now fully closed! */
5502 exit(0); /* Bye bye, thank you for playing! */
5505 if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
5506 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >mtry
5508 ./mtry >/dev/null 2>&1
5510 0) eagain=`$cat try.out`;;
5511 1) echo "Could not perform non-blocking setting!";;
5512 2) echo "I did a successful read() for something that was not there!";;
5513 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
5514 *) echo "Something terribly wrong happened during testing.";;
5516 rd_nodata=`$cat try.ret`
5517 echo "A read() system call with no data present returns $rd_nodata."
5518 case "$rd_nodata" in
5521 echo "(That's peculiar, fixing that to be -1.)"
5527 echo "Forcing errno EAGAIN on read() with no data available."
5531 echo "Your read() sets errno to $eagain when no data is available."
5534 status=`$cat try.err`
5536 0) echo "And it correctly returns 0 to signal EOF.";;
5537 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
5538 *) echo "However, your read() returns '$status' on EOF??";;
5541 if test "$status" -eq "$rd_nodata"; then
5542 echo "WARNING: you can't distinguish between EOF and no data!"
5546 echo "I can't compile the test program--assuming errno EAGAIN will do."
5553 echo "Using $hint value $eagain."
5554 echo "Your read() returns $rd_nodata when no data is present."
5555 case "$d_eofnblk" in
5556 "$define") echo "And you can see EOF because read() returns 0.";;
5557 "$undef") echo "But you can't see EOF status from read() returned value.";;
5559 echo "(Assuming you can't see EOF status from read anyway.)"
5565 $rm -f try try.* .out core head.c mtry
5567 : see if fchmod exists
5571 : see if fchown exists
5575 : see if this is an fcntl system
5579 : see if fgetpos exists
5580 set fgetpos d_fgetpos
5583 : see if flock exists
5587 : see if fork exists
5591 : see if pathconf exists
5592 set pathconf d_pathconf
5595 : see if fpathconf exists
5596 set fpathconf d_fpathconf
5599 : see if fsetpos exists
5600 set fsetpos d_fsetpos
5603 : see if gethostent exists
5604 set gethostent d_gethent
5607 : see if getlogin exists
5608 set getlogin d_getlogin
5611 : see if getpgrp exists
5612 set getpgrp d_getpgrp
5615 : see if getpgrp2 exists
5616 set getpgrp2 d_getpgrp2
5619 : see if getppid exists
5620 set getppid d_getppid
5623 : see if getpriority exists
5624 set getpriority d_getprior
5627 : see if this is a netinet/in.h or sys/in.h system
5628 set netinet/in.h i_niin sys/in.h i_sysin
5631 : see if htonl --and friends-- exists
5636 : Maybe they are macros.
5641 #include <sys/types.h>
5642 #$i_niin I_NETINET_IN
5645 #include <netinet/in.h>
5651 printf("Defined as a macro.");
5654 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
5655 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
5657 echo "But it seems to be defined as a macro." >&4
5665 : see which of string.h or strings.h is needed
5667 strings=`./findhdr string.h`
5668 if $test "$strings" && $test -r "$strings"; then
5669 echo "Using <string.h> instead of <strings.h>." >&4
5673 strings=`./findhdr strings.h`
5674 if $test "$strings" && $test -r "$strings"; then
5675 echo "Using <strings.h> instead of <string.h>." >&4
5677 echo "No string header found -- You'll surely have problems." >&4
5683 "$undef") strings=`./findhdr strings.h`;;
5684 *) strings=`./findhdr string.h`;;
5689 if set index val -f; eval $csym; $val; then
5690 if set strchr val -f d_strchr; eval $csym; $val; then
5691 if $contains strchr "$strings" >/dev/null 2>&1 ; then
5694 echo "strchr() found." >&4
5698 echo "index() found." >&4
5703 echo "index() found." >&4
5706 if set strchr val -f d_strchr; eval $csym; $val; then
5709 echo "strchr() found." >&4
5711 echo "No index() or strchr() found!" >&4
5716 set d_strchr; eval $setvar
5718 set d_index; eval $setvar
5722 $cat >isascii.c <<'EOCP'
5733 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
5734 echo "isascii() found." >&4
5737 echo "isascii() NOT found." >&4
5744 : see if killpg exists
5748 : see if link exists
5752 : see if localeconv exists
5753 set localeconv d_locconv
5756 : see if lockf exists
5760 : see if lstat exists
5764 : see if mblen exists
5768 : see if mbstowcs exists
5769 set mbstowcs d_mbstowcs
5772 : see if mbtowc exists
5776 : see if memcmp exists
5780 : see if memcpy exists
5784 : see if memmove exists
5785 set memmove d_memmove
5788 : see if memset exists
5792 : see if mkdir exists
5796 : see if mkfifo exists
5800 : see if mktime exists
5804 : see if msgctl exists
5808 : see if msgget exists
5812 : see if msgsnd exists
5816 : see if msgrcv exists
5820 : see how much of the 'msg*(2)' library is present.
5823 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
5824 *"$undef"*) h_msg=false;;
5826 : we could also check for sys/ipc.h ...
5827 if $h_msg && $test `./findhdr sys/msg.h`; then
5828 echo "You have the full msg*(2) library." >&4
5831 echo "You don't have the full msg*(2) library." >&4
5837 : see if this is a malloc.h system
5838 set malloc.h i_malloc
5841 : see if stdlib is available
5842 set stdlib.h i_stdlib
5845 : determine which malloc to compile in
5847 case "$usemymalloc" in
5848 ''|y*|true) dflt='y' ;;
5849 n*|false) dflt='n' ;;
5850 *) dflt="$usemymalloc" ;;
5852 rp="Do you wish to attempt to use the malloc that comes with $package?"
5858 mallocsrc='malloc.c'
5859 mallocobj='malloc.o'
5860 d_mymalloc="$define"
5863 : Remove malloc from list of libraries to use
5864 echo "Removing unneeded -lmalloc from library list" >&4
5865 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5868 echo "libs = $libs" >&4
5880 : compute the return types of malloc and free
5882 $cat >malloc.c <<END
5886 #include <sys/types.h>
5900 case "$malloctype" in
5902 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5909 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5913 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5920 echo "Your system uses $freetype free(), it would seem." >&4
5922 : see if nice exists
5926 : see if pause exists
5930 : see if pipe exists
5934 : see if poll exists
5938 : see if this is a pwd.h system
5944 xxx=`./findhdr pwd.h`
5945 $cppstdin $cppflags $cppminus < $xxx >$$.h
5947 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
5955 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
5963 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
5971 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
5979 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
5987 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
5999 set d_pwquota; eval $setvar
6000 set d_pwage; eval $setvar
6001 set d_pwchange; eval $setvar
6002 set d_pwclass; eval $setvar
6003 set d_pwexpire; eval $setvar
6004 set d_pwcomment; eval $setvar
6008 : see if readdir and friends exist
6009 set readdir d_readdir
6011 set seekdir d_seekdir
6013 set telldir d_telldir
6015 set rewinddir d_rewinddir
6018 : see if readlink exists
6019 set readlink d_readlink
6022 : see if rename exists
6026 : see if rmdir exists
6030 : can bcopy handle overlapping blocks?
6035 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6036 $cat >foo.c <<'EOCP'
6039 char buf[128], abc[128];
6045 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
6047 for (align = 7; align >= 0; align--) {
6048 for (len = 36; len; len--) {
6051 for (off = 1; off <= len; off++) {
6052 bcopy(b, b+off, len);
6053 bcopy(b+off, b, len);
6054 if (bcmp(b, abc, len))
6062 if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
6063 if ./safebcpy 2>/dev/null; then
6067 echo "It can't, sorry."
6070 echo "(I can't compile the test program, so we'll assume not...)"
6074 $rm -f foo.* safebcpy core
6078 : can memcpy handle overlapping blocks?
6083 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
6084 $cat >foo.c <<'EOCP'
6087 char buf[128], abc[128];
6093 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
6095 for (align = 7; align >= 0; align--) {
6096 for (len = 36; len; len--) {
6098 memcpy(b, abc, len);
6099 for (off = 1; off <= len; off++) {
6100 memcpy(b+off, b, len);
6101 memcpy(b, b+off, len);
6102 if (memcmp(b, abc, len))
6110 if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
6111 if ./safemcpy 2>/dev/null; then
6115 echo "It can't, sorry."
6118 echo "(I can't compile the test program, so we'll assume not...)"
6122 $rm -f foo.* safemcpy core
6126 : see if select exists
6130 : see if semctl exists
6134 : see if semget exists
6138 : see if semop exists
6142 : see how much of the 'sem*(2)' library is present.
6145 case "$d_semctl$d_semget$d_semop" in
6146 *"$undef"*) h_sem=false;;
6148 : we could also check for sys/ipc.h ...
6149 if $h_sem && $test `./findhdr sys/sem.h`; then
6150 echo "You have the full sem*(2) library." >&4
6153 echo "You don't have the full sem*(2) library." >&4
6159 : see if setegid exists
6160 set setegid d_setegid
6163 : see if seteuid exists
6164 set seteuid d_seteuid
6167 : see if setlinebuf exists
6168 set setlinebuf d_setlinebuf
6171 : see if setlocale exists
6172 set setlocale d_setlocale
6175 : see if setpgid exists
6176 set setpgid d_setpgid
6179 : see if setpgrp2 exists
6180 set setpgrp2 d_setpgrp2
6183 : see if setpriority exists
6184 set setpriority d_setprior
6187 : see if setregid exists
6188 set setregid d_setregid
6190 set setresgid d_setresgid
6193 : see if setreuid exists
6194 set setreuid d_setreuid
6196 set setresuid d_setresuid
6199 : see if setrgid exists
6200 set setrgid d_setrgid
6203 : see if setruid exists
6204 set setruid d_setruid
6207 : see if setsid exists
6211 : see if shmctl exists
6215 : see if shmget exists
6219 : see if shmat exists
6222 : see what shmat returns
6225 $cat >shmat.c <<'END'
6226 #include <sys/shm.h>
6229 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
6234 echo "and it returns ($shmattype)." >&4
6235 : see if a prototype for shmat is available
6236 xxx=`./findhdr sys/shm.h`
6237 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
6238 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
6249 set d_shmatprototype
6252 : see if shmdt exists
6256 : see how much of the 'shm*(2)' library is present.
6259 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
6260 *"$undef"*) h_shm=false;;
6262 : we could also check for sys/ipc.h ...
6263 if $h_shm && $test `./findhdr sys/shm.h`; then
6264 echo "You have the full shm*(2) library." >&4
6267 echo "You don't have the full shm*(2) library." >&4
6275 : see whether socket exists
6277 $echo $n "Hmm... $c" >&4
6278 if set socket val -f d_socket; eval $csym; $val; then
6279 echo "Looks like you have Berkeley networking support." >&4
6281 if set setsockopt val -f; eval $csym; $val; then
6284 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
6288 if $contains socklib libc.list >/dev/null 2>&1; then
6289 echo "Looks like you have Berkeley networking support." >&4
6291 : we will have to assume that it supports the 4.2 BSD interface
6294 echo "You don't have Berkeley networking in libc.a..." >&4
6295 if test -f /usr/lib/libnet.a; then
6296 ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \
6297 ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list
6298 if $contains socket libc.list >/dev/null 2>&1; then
6299 echo "...but the Wollongong group seems to have hacked it in." >&4
6301 sockethdr="-I/usr/netinclude"
6303 if $contains setsockopt libc.list >/dev/null 2>&1; then
6306 echo "...using the old 4.1c interface, rather than 4.2" >&4
6310 echo "or even in libnet.a, which is peculiar." >&4
6315 echo "or anywhere else I see." >&4
6322 : see if socketpair exists
6323 set socketpair d_sockpair
6326 : see if stat knows about block sizes
6328 xxx=`./findhdr sys/stat.h`
6329 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
6330 if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
6331 echo "Your stat() knows about block sizes." >&4
6334 echo "Your stat() doesn't know about block sizes." >&4
6338 echo "Your stat() doesn't know about block sizes." >&4
6344 : see if _ptr and _cnt from stdio act std
6346 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
6347 echo "(Looks like you have stdio.h from Linux.)"
6348 case "$stdio_ptr" in
6349 '') stdio_ptr='((fp)->_IO_read_ptr)'
6352 *) ptr_lval=$d_stdio_ptr_lval;;
6354 case "$stdio_cnt" in
6355 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
6358 *) cnt_lval=$d_stdio_cnt_lval;;
6360 case "$stdio_base" in
6361 '') stdio_base='((fp)->_IO_read_base)';;
6363 case "$stdio_bufsiz" in
6364 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
6367 case "$stdio_ptr" in
6368 '') stdio_ptr='((fp)->_ptr)'
6371 *) ptr_lval=$d_stdio_ptr_lval;;
6373 case "$stdio_cnt" in
6374 '') stdio_cnt='((fp)->_cnt)'
6377 *) cnt_lval=$d_stdio_cnt_lval;;
6379 case "$stdio_base" in
6380 '') stdio_base='((fp)->_base)';;
6382 case "$stdio_bufsiz" in
6383 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
6386 : test whether _ptr and _cnt really work
6387 echo "Checking how std your stdio is..." >&4
6390 #define FILE_ptr(fp) $stdio_ptr
6391 #define FILE_cnt(fp) $stdio_cnt
6393 FILE *fp = fopen("try.c", "r");
6396 18 <= FILE_cnt(fp) &&
6397 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
6404 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
6406 echo "Your stdio acts pretty std."
6409 echo "Your stdio isn't very std."
6412 echo "Your stdio doesn't appear very std."
6418 : Can _ptr be used as an lvalue?
6419 case "$d_stdstdio$ptr_lval" in
6420 $define$define) val=$define ;;
6423 set d_stdio_ptr_lval
6426 : Can _cnt be used as an lvalue?
6427 case "$d_stdstdio$cnt_lval" in
6428 $define$define) val=$define ;;
6431 set d_stdio_cnt_lval
6434 : see if _base is also standard
6436 case "$d_stdstdio" in
6440 #define FILE_base(fp) $stdio_base
6441 #define FILE_bufsiz(fp) $stdio_bufsiz
6443 FILE *fp = fopen("try.c", "r");
6446 19 <= FILE_bufsiz(fp) &&
6447 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
6453 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
6455 echo "Even its _base field acts std."
6458 echo "But its _base field isn't std."
6461 echo "However, it seems to be lacking the _base field."
6469 : see if strcoll exists
6470 set strcoll d_strcoll
6473 : check for structure copying
6475 echo "Checking to see if your C compiler can copy structs..." >&4
6476 $cat >try.c <<'EOCP'
6486 if $cc -c try.c >/dev/null 2>&1 ; then
6491 echo "Nope, it can't."
6497 : see if strerror and/or sys_errlist[] exist
6499 if set strerror val -f d_strerror; eval $csym; $val; then
6500 echo 'strerror() found.' >&4
6501 d_strerror="$define"
6502 d_strerrm='strerror(e)'
6503 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6504 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
6505 d_syserrlst="$define"
6507 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
6508 d_syserrlst="$undef"
6510 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
6511 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
6512 echo 'strerror() found in string header.' >&4
6513 d_strerror="$define"
6514 d_strerrm='strerror(e)'
6515 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6516 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
6517 d_syserrlst="$define"
6519 echo "(You don't appear to have any sys_errlist[], how can this be?)"
6520 d_syserrlst="$undef"
6522 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
6523 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
6525 d_syserrlst="$define"
6526 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
6528 echo 'strerror() and sys_errlist[] NOT found.' >&4
6530 d_syserrlst="$undef"
6531 d_strerrm='"unknown"'
6534 : see if strxfrm exists
6535 set strxfrm d_strxfrm
6538 : see if symlink exists
6539 set symlink d_symlink
6542 : see if syscall exists
6543 set syscall d_syscall
6546 : see if sysconf exists
6547 set sysconf d_sysconf
6550 : see if system exists
6554 : see if tcgetpgrp exists
6555 set tcgetpgrp d_tcgetpgrp
6558 : see if tcsetpgrp exists
6559 set tcsetpgrp d_tcsetpgrp
6562 : define an is-a-typedef? function
6563 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
6565 "") inclist="sys/types.h";;
6567 eval "varval=\$$var";
6571 for inc in $inclist; do
6572 echo "#include <$inc>" >>temp.c;
6574 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
6575 if $contains $type temp.E >/dev/null 2>&1; then
6581 *) eval "$var=\$varval";;
6584 : see if this is a sys/times.h system
6585 set sys/times.h i_systimes
6588 : see if times exists
6590 if set times val -f d_times; eval $csym; $val; then
6591 echo 'times() found.' >&4
6594 case "$i_systimes" in
6595 "$define") inc='sys/times.h';;
6597 set clock_t clocktype long stdio.h sys/types.h $inc
6601 rp="What type is returned by times() on this system?"
6605 echo 'times() NOT found, hope that will do.' >&4
6610 : see if truncate exists
6611 set truncate d_truncate
6614 : see if tzname[] exists
6616 if set tzname val -a d_tzname; eval $csym; $val; then
6618 echo 'tzname[] found.' >&4
6621 echo 'tzname[] NOT found.' >&4
6626 : see if umask exists
6630 : see if we have to deal with yellow pages, now NIS.
6631 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6632 if $test -f /usr/etc/nibindd; then
6634 echo "I'm fairly confident you're on a NeXT."
6636 rp='Do you get the hosts file via NetInfo?'
6645 y*) hostcat='nidump hosts .';;
6646 *) case "$hostcat" in
6647 nidump*) hostcat='';;
6657 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6665 rp='Are you getting the hosts file via yellow pages?'
6668 y*) hostcat='ypcat hosts';;
6669 *) hostcat='cat /etc/hosts';;
6675 : now get the host name
6677 echo "Figuring out host name..." >&4
6678 case "$myhostname" in
6680 echo 'Maybe "hostname" will work...'
6681 if tans=`sh -c hostname 2>&1` ; then
6689 if $test "$cont"; then
6691 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6692 if tans=`cat /etc/systemid 2>&1` ; then
6694 phostname='cat /etc/systemid'
6695 echo "Whadyaknow. Xenix always was a bit strange..."
6698 elif $test -r /etc/systemid; then
6699 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6702 if $test "$cont"; then
6703 echo 'No, maybe "uuname -l" will work...'
6704 if tans=`sh -c 'uuname -l' 2>&1` ; then
6706 phostname='uuname -l'
6708 echo 'Strange. Maybe "uname -n" will work...'
6709 if tans=`sh -c 'uname -n' 2>&1` ; then
6711 phostname='uname -n'
6713 echo 'Oh well, maybe I can mine it out of whoami.h...'
6714 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6715 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6716 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6718 case "$myhostname" in
6719 '') echo "Does this machine have an identity crisis or something?"
6722 echo "Well, you said $myhostname before..."
6723 phostname='echo $myhostname';;
6729 : you do not want to know about this
6734 if $test "$myhostname" ; then
6736 rp='Your host name appears to be "'$myhostname'".'" Right?"
6744 : bad guess or no guess
6745 while $test "X$myhostname" = X ; do
6747 rp="Please type the (one word) name of your host:"
6752 : translate upper to lower if necessary
6753 case "$myhostname" in
6755 echo "(Normalizing case in your host name)"
6756 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6760 case "$myhostname" in
6762 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6763 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6764 echo "(Trimming domain name from host name--host name is now $myhostname)"
6766 *) case "$mydomain" in
6769 : If we use NIS, try ypmatch.
6770 : Is there some reason why this was not done before?
6771 test "X$hostcat" = "Xypcat hosts" &&
6772 ypmatch "$myhostname" hosts 2>/dev/null |\
6773 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6776 : Extract only the relevant hosts, reducing file size,
6777 : remove comments, insert trailing space for later use.
6778 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6779 /[ ]$myhostname[ . ]/p" > hosts
6782 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6783 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6784 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6785 hosts | $sort | $uniq | \
6786 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6787 case `$echo X$dflt` in
6788 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6791 .) echo "(You do not have fully-qualified names in /etc/hosts)"
6796 tans=`./loc resolv.conf X /etc /usr/etc`
6797 if $test -f "$tans"; then
6798 echo "(Attempting domain name extraction from $tans)"
6799 : Why was there an Egrep here, when Sed works?
6800 dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \
6801 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6806 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6807 dflt=.`sh -c domainname 2>/dev/null`
6810 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6815 .) echo "(Lost all hope -- silly guess then)"
6821 *) dflt="$mydomain";;
6825 rp="What is your domain name?"
6835 : translate upper to lower if necessary
6838 echo "(Normalizing case in your domain name)"
6839 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6843 : a little sanity check here
6844 case "$phostname" in
6847 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6848 $myhostname$mydomain|$myhostname) ;;
6850 case "$phostname" in
6852 echo "(That doesn't agree with your whoami.h file, by the way.)"
6855 echo "(That doesn't agree with your $phostname command, by the way.)"
6863 : see how we will look up host name
6866 : dummy stub to allow use of elif
6867 elif set uname val -f d_uname; eval $csym; $val; then
6870 uname() was found, but you're running xenix, and older versions of xenix
6871 have a broken uname(). If you don't really know whether your xenix is old
6872 enough to have a broken system call, use the default answer.
6879 rp='Is your uname() broken?'
6882 n*) d_uname="$define"; call=uname;;
6885 echo 'uname() found.' >&4
6890 case "$d_gethname" in
6891 '') d_gethname="$undef";;
6894 '') d_uname="$undef";;
6896 case "$d_phostname" in
6897 '') d_phostname="$undef";;
6900 : backward compatibility for d_hvfork
6901 if test X$d_hvfork != X; then
6905 : see if there is a vfork
6910 : Ok, but do we want to use it. vfork is reportedly unreliable in
6911 : perl on Solaris 2.x, and probably elsewhere.
6919 rp="Some systems have problems with vfork(). Do you want to use it?"
6924 echo "Ok, we won't use vfork()."
6933 $define) usevfork='true';;
6934 *) usevfork='false';;
6937 : see if this is an sysdir system
6938 set sys/dir.h i_sysdir
6941 : see if this is an sysndir system
6942 set sys/ndir.h i_sysndir
6945 : see if closedir exists
6946 set closedir d_closedir
6949 case "$d_closedir" in
6952 echo "Checking whether closedir() returns a status..." >&4
6953 cat > closedir.c <<EOM
6954 #$i_dirent I_DIRENT /**/
6955 #$i_sysdir I_SYS_DIR /**/
6956 #$i_sysndir I_SYS_NDIR /**/
6958 #if defined(I_DIRENT)
6960 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
6961 #include <sys/dir.h>
6965 #include <sys/ndir.h>
6969 #include <ndir.h> /* may be wrong in the future */
6971 #include <sys/dir.h>
6976 int main() { return closedir(opendir(".")); }
6978 if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
6979 if ./closedir > /dev/null 2>&1 ; then
6980 echo "Yes, it does."
6983 echo "No, it doesn't."
6987 echo "(I can't seem to compile the test program--assuming it doesn't)"
6998 : check for volatile keyword
7000 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
7001 $cat >try.c <<'EOCP'
7004 typedef struct _goo_struct goo_struct;
7005 goo_struct * volatile goo = ((goo_struct *)0);
7006 struct _goo_struct {
7011 typedef unsigned short foo_t;
7014 volatile foo_t blech;
7018 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
7020 echo "Yup, it does."
7023 echo "Nope, it doesn't."
7029 : see if there is a wait4
7033 : see if waitpid exists
7034 set waitpid d_waitpid
7037 : see if wcstombs exists
7038 set wcstombs d_wcstombs
7041 : see if wctomb exists
7045 : preserve RCS keywords in files with variable substitution, grrr
7050 Revision='$Revision'
7052 : check for alignment requirements
7054 case "$alignbytes" in
7055 '') echo "Checking alignment constraints..." >&4
7056 $cat >try.c <<'EOCP'
7063 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
7066 if $cc $ccflags try.c -o try >/dev/null 2>&1; then
7070 echo"(I can't seem to compile the test program...)"
7073 *) dflt="$alignbytes"
7076 rp="Doubles must be aligned on a how-many-byte boundary?"
7093 : Which makefile gets called first. This is used by make depend.
7094 case "$firstmakefile" in
7095 '') firstmakefile='makefile';;
7098 : check for ordering of bytes in a long
7099 case "$byteorder" in
7103 In the following, larger digits indicate more significance. A big-endian
7104 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
7105 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
7106 machines may have weird orders like 3412. A Cray will report 87654321. If
7107 the test program works the default is probably right.
7108 I'm now running the test program...
7110 $cat >try.c <<'EOCP'
7117 char c[sizeof(long)];
7120 if (sizeof(long) > 4)
7121 u.l = (0x08070605L << 32) | 0x04030201L;
7124 for (i = 0; i < sizeof(long); i++)
7125 printf("%c", u.c[i]+'0');
7131 if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
7134 [1-4][1-4][1-4][1-4]|12345678|87654321)
7135 echo "(The test program ran ok.)"
7136 echo "byteorder=$dflt"
7139 ????|????????) echo "(The test program ran ok.)" ;;
7140 *) echo "(The test program didn't run right for some reason.)" ;;
7145 (I can't seem to compile the test program. Guessing big-endian...)
7148 case "$xxx_prompt" in
7150 rp="What is the order of bytes in a long?"
7161 : how do we catenate cpp tokens here?
7163 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
7164 $cat >cpp_stuff.c <<'EOCP'
7165 #define RCAT(a,b)a/**/b
7166 #define ACAT(a,b)a ## b
7170 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
7171 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
7172 echo "Oh! Smells like ANSI's been here."
7173 echo "We can catify or stringify, separately or together!"
7175 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
7176 echo "Ah, yes! The good old days!"
7177 echo "However, in the good old days we don't know how to stringify and"
7178 echo "catify at the same time."
7182 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
7183 to have to edit the values of CAT[2-5] in config.h...
7185 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
7189 : see if this is a db.h system
7195 : Check the return type needed for hash
7197 echo "Checking return type needed for hash for Berkeley DB ..." >&4
7203 #include <sys/types.h>
7205 u_int32_t hash_cb (ptr, size)
7213 info.hash = hash_cb;
7216 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7217 if $contains warning try.out >>/dev/null 2>&1 ; then
7220 db_hashtype='u_int32_t'
7223 echo "I can't seem to compile the test program." >&4
7227 echo "Your version of Berkeley DB uses $db_hashtype for hash."
7235 : Check the return type needed for prefix
7237 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
7243 #include <sys/types.h>
7245 size_t prefix_cb (key1, key2)
7253 info.prefix = prefix_cb;
7256 if $cc $ccflags -c try.c >try.out 2>&1 ; then
7257 if $contains warning try.out >>/dev/null 2>&1 ; then
7260 db_prefixtype='size_t'
7263 echo "I can't seem to compile the test program." >&4
7267 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
7269 *) db_prefixtype='int'
7273 : check for void type
7275 echo "Checking to see how well your C compiler groks the void type..." >&4
7278 Support flag bits are:
7279 1: basic void declarations.
7280 2: arrays of pointers to functions returning void.
7281 4: operations between pointers to and addresses of void functions.
7282 8: generic void pointers.
7285 case "$voidflags" in
7287 $cat >try.c <<'EOCP'
7293 extern void moo(); /* function returning void */
7294 void (*goo)(); /* ptr to func returning void */
7296 void *hue; /* generic ptr */
7310 if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
7311 voidflags=$defvoidused
7312 echo "It appears to support void to the level $package wants ($defvoidused)."
7313 if $contains warning .out >/dev/null 2>&1; then
7314 echo "However, you might get some warnings that look like this:"
7318 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
7319 if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then
7320 echo "It supports 1..."
7321 if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then
7322 echo "It also supports 2..."
7323 if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then
7325 echo "And it supports 4 but not 8 definitely."
7327 echo "It doesn't support 4..."
7328 if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then
7330 echo "But it supports 8."
7333 echo "Neither does it support 8."
7337 echo "It does not support 2..."
7338 if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then
7340 echo "But it supports 4 and 8."
7342 if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then
7344 echo "And it supports 4 but has not heard about 8."
7346 echo "However it supports 8 but not 4."
7351 echo "There is no support at all for void."
7356 : Only prompt user if voidflags is not 15. If voidflags is 15, then
7357 : we presume all is well.
7358 case "$voidflags" in
7360 *) dflt="$voidflags";
7361 rp="Your void support flags add up to what?"
7368 : see what type file positions are declared as in the library
7369 set fpos_t fpostype long stdio.h sys/types.h
7373 rp="What is the type for file position used by fsetpos()?"
7377 : Store the full pathname to the sed program for use in the C program
7380 : see what type gids are declared as in the kernel
7381 set gid_t gidtype xxx stdio.h sys/types.h
7385 xxx=`./findhdr sys/user.h`
7386 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
7388 unsigned) dflt="$1 $2" ;;
7392 *) dflt="$gidtype";;
7395 rp="What is the type for group ids returned by getgid()?"
7399 : see if getgroups exists
7400 set getgroups d_getgrps
7403 : Find type of 2nd arg to getgroups
7405 case "$d_getgrps" in
7407 case "$groupstype" in
7408 '') dflt="$gidtype" ;;
7409 *) dflt="$groupstype" ;;
7412 What is the type of the second argument to getgroups()? Usually this
7413 is the same as group ids, $gidtype, but not always.
7416 rp='What type is the second argument to getgroups()?'
7420 *) groupstype="$gidtype";;
7423 : see what type lseek is declared as in the kernel
7424 set off_t lseektype long stdio.h sys/types.h
7428 rp="What type is lseek's offset on this system declared as?"
7432 : see what type is used for mode_t
7433 set mode_t modetype int stdio.h sys/types.h
7437 rp="What type is used for file modes?"
7441 : Cruising for prototypes
7443 echo "Checking out function prototypes..." >&4
7444 $cat >prototype.c <<'EOCP'
7445 main(int argc, char *argv[]) {
7448 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7449 echo "Your C compiler appears to support function prototypes."
7452 echo "Your C compiler doesn't seem to understand function prototypes."
7459 : check for size of random number generator
7463 echo "Checking to see how many bits your rand function produces..." >&4
7464 $cat >try.c <<'EOCP'
7469 register unsigned long tmp;
7470 register unsigned long max = 0L;
7472 for (i = 1000; i; i--) {
7473 tmp = (unsigned long)rand();
7474 if (tmp > max) max = tmp;
7476 for (i = 0; max; i++)
7481 if $cc try.c -o try >/dev/null 2>&1 ; then
7485 echo "(I can't seem to compile the test program...)"
7492 rp='How many bits does your rand() function produce?'
7497 : see if ar generates random libraries by itself
7499 echo "Checking how to generate random libraries on your machine..." >&4
7500 echo 'int bar1() { return bar2(); }' > bar1.c
7501 echo 'int bar2() { return 2; }' > bar2.c
7502 $cat > foo.c <<'EOP'
7503 main() { printf("%d\n", bar1()); exit(0); }
7505 $cc $ccflags -c bar1.c >/dev/null 2>&1
7506 $cc $ccflags -c bar2.c >/dev/null 2>&1
7507 $cc $ccflags -c foo.c >/dev/null 2>&1
7508 ar rc bar.a bar2.o bar1.o >/dev/null 2>&1
7509 if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7510 ./foobar >/dev/null 2>&1; then
7511 echo "ar appears to generate random libraries itself."
7514 elif ar ts bar.a >/dev/null 2>&1 &&
7515 $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 &&
7516 ./foobar >/dev/null 2>&1; then
7517 echo "a table of contents needs to be added with 'ar ts'."
7524 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
7525 $test -f $ranlib || ranlib=''
7528 if $test -n "$ranlib"; then
7529 echo "your system has '$ranlib'; we'll use that."
7532 echo "your system doesn't seem to support random libraries"
7533 echo "so we'll use lorder and tsort to order the libraries."
7540 : see if sys/select.h has to be included
7541 set sys/select.h i_sysselct
7544 : see if we should include time.h, sys/time.h, or both
7546 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7547 $echo $n "I'm now running the test program...$c"
7548 $cat >try.c <<'EOCP'
7549 #include <sys/types.h>
7554 #ifdef SYSTIMEKERNEL
7557 #include <sys/time.h>
7560 #include <sys/select.h>
7569 struct timezone tzp;
7571 if (foo.tm_sec == foo.tm_sec)
7574 if (bar.tv_sec == bar.tv_sec)
7583 for s_timeval in '-DS_TIMEVAL' ''; do
7584 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7585 for i_time in '' '-DI_TIME'; do
7586 for i_systime in '-DI_SYSTIME' ''; do
7590 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
7591 try.c -o try >/dev/null 2>&1 ; then
7592 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7596 $echo $n "Succeeded with $flags$c"
7607 *SYSTIMEKERNEL*) i_systimek="$define"
7608 timeincl=`./findhdr sys/time.h`
7609 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7610 *) i_systimek="$undef";;
7613 *I_TIME*) i_time="$define"
7614 timeincl=`./findhdr time.h`" $timeincl"
7615 echo "We'll include <time.h>." >&4;;
7616 *) i_time="$undef";;
7619 *I_SYSTIME*) i_systime="$define"
7620 timeincl=`./findhdr sys/time.h`" $timeincl"
7621 echo "We'll include <sys/time.h>." >&4;;
7622 *) i_systime="$undef";;
7626 : check for fd_set items
7629 Checking to see how well your C compiler handles fd_set and friends ...
7631 $cat >fd_set.c <<EOCP
7632 #$i_systime I_SYS_TIME
7633 #$i_sysselct I_SYS_SELECT
7634 #$d_socket HAS_SOCKET
7635 #include <sys/types.h>
7637 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7640 #include <sys/time.h>
7643 #include <sys/select.h>
7653 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7660 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7661 d_fds_bits="$define"
7663 echo "Well, your system knows about the normal fd_set typedef..." >&4
7665 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7666 d_fd_macros="$define"
7669 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7671 d_fd_macros="$undef"
7675 Hmm, your compiler has some difficulty with fd_set. Checking further...
7677 if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
7680 echo "Well, your system has some sort of fd_set available..." >&4
7682 echo "and you have the normal fd_set macros." >&4
7683 d_fd_macros="$define"
7686 but not the normal fd_set macros! Gross! More work for me...
7688 d_fd_macros="$undef"
7691 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7694 d_fd_macros="$undef"
7700 : check for type of arguments to select. This will only really
7701 : work if the system supports prototypes and provides one for
7705 : Make initial guess
7706 case "$selecttype" in
7709 $define) xxx='fd_set *' ;;
7713 *) xxx="$selecttype"
7718 'fd_set *') yyy='int *' ;;
7719 'int *') yyy='fd_set *' ;;
7724 Checking to see what type of arguments are expected by select().
7727 #$i_systime I_SYS_TIME
7728 #$i_sysselct I_SYS_SELECT
7729 #$d_socket HAS_SOCKET
7730 #include <sys/types.h>
7732 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7735 #include <sys/time.h>
7738 #include <sys/select.h>
7744 Select_fd_set_t readfds;
7745 Select_fd_set_t writefds;
7746 Select_fd_set_t exceptfds;
7747 struct timeval timeout;
7748 select(width, readfds, writefds, exceptfds, &timeout);
7752 if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
7754 echo "Your system uses $xxx for the arguments to select." >&4
7755 elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
7757 echo "Your system uses $yyy for the arguments to select." >&4
7759 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
7766 *) selecttype='int *'
7770 : Trace out the files included by signal.h, then look for SIGxxx names.
7771 : Remove SIGARRAYSIZE used by HPUX.
7772 : Remove SIGTYP void lines used by OS2.
7773 xxx=`echo '#include <signal.h>' |
7774 $cppstdin $cppminus $cppflags 2>/dev/null |
7775 $grep '^[ ]*#.*include' |
7776 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
7777 : Check this list of files to be sure we have parsed the cpp output ok.
7778 : This will also avoid potentially non-existent files, such
7781 for xx in $xxx /dev/null ; do
7782 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
7784 : If we have found no files, at least try signal.h
7786 '') xxxfiles=`./findhdr signal.h` ;;
7789 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
7790 print substr($2, 4, 20)
7792 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
7793 print substr($3, 4, 20)
7795 : Append some common names just in case the awk scan failed.
7796 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
7797 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
7798 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
7799 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
7800 : generate a few handy files for later
7801 $cat > signal.c <<'EOP'
7802 #include <sys/types.h>
7806 printf("NSIG %d\n", NSIG);
7809 printf("NSIG %d\n", _NSIG);
7813 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
7815 printf "#ifdef SIG"; printf $1; printf "\n"
7816 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
7817 printf $1; printf ");\n"
7824 $cat >signal.awk <<'EOP'
7826 $1 ~ /^NSIG$/ { nsig = $2 }
7827 ($1 !~ /^NSIG$/) && (NF == 2) {
7828 if ($2 > maxsig) { maxsig = $2 }
7830 dup_name[ndups] = $1
7841 if (nsig == 0) { nsig = maxsig + 1 }
7842 for (n = 1; n < nsig; n++) {
7844 printf("%s %d\n", sig_name[n], sig_num[n])
7847 printf("NUM%d %d\n", n, n)
7850 for (n = 0; n < ndups; n++) {
7851 printf("%s %d\n", dup_name[n], dup_num[n])
7855 $cat >signal_cmd <<EOS
7857 $test -s signal.lst && exit 0
7858 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
7859 ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
7861 echo "(I can't seem be able to compile the test program -- Guessing)"
7862 echo 'kill -l' >signal
7863 set X \`csh -f <signal\`
7867 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
7869 echo \$@ | $tr ' ' '\012' | \
7870 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
7872 $rm -f signal.c signal signal.o
7874 chmod a+x signal_cmd
7875 $eunicefix signal_cmd
7877 : generate list of signal names
7887 echo "Generating a list of signal names and numbers..." >&4
7889 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
7890 sig_name="ZERO $sig_name"
7891 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
7892 sig_num="0 $sig_num"
7895 echo "The following signals are available:"
7897 echo $sig_name | $awk \
7898 'BEGIN { linelen = 0 }
7900 for (i = 1; i <= NF; i++) {
7902 linelen = linelen + length(name)
7905 linelen = length(name)
7911 $rm -f signal signal.c signal.awk signal.lst signal_cmd
7913 : see what type is used for size_t
7914 set size_t sizetype 'unsigned int' stdio.h sys/types.h
7918 rp="What type is used for the length parameter for string functions?"
7922 : see what type is used for signed size_t
7923 set ssize_t ssizetype int stdio.h sys/types.h
7926 $cat > ssize.c <<EOM
7928 #include <sys/types.h>
7929 #define Size_t $sizetype
7930 #define SSize_t $dflt
7933 if (sizeof(Size_t) == sizeof(SSize_t))
7935 else if (sizeof(Size_t) == sizeof(int))
7942 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
7944 echo "I'll be using $ssizetype for functions returning a byte count." >&4
7946 echo "(I can't compile the test program--please enlighten me!)"
7949 I need a type that is the same size as $sizetype, but is guaranteed to
7950 be signed. Common values are int and long.
7953 rp="What signed type is the same size as $sizetype?"
7957 $rm -f ssize ssize.[co]
7959 : see what type of char stdio uses.
7961 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7962 echo "Your stdio uses unsigned chars." >&4
7963 stdchar="unsigned char"
7965 echo "Your stdio uses signed chars." >&4
7969 : see if time exists
7971 if set time val -f d_time; eval $csym; $val; then
7972 echo 'time() found.' >&4
7974 set time_t timetype long stdio.h sys/types.h
7978 rp="What type is returned by time() on this system?"
7982 echo 'time() not found, hope that will do.' >&4
7989 : see what type uids are declared as in the kernel
7990 set uid_t uidtype xxx stdio.h sys/types.h
7994 xxx=`./findhdr sys/user.h`
7995 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
7997 unsigned) dflt="$1 $2" ;;
8001 *) dflt="$uidtype";;
8004 rp="What is the type for user ids returned by getuid()?"
8008 : see if dbm.h is available
8009 : see if dbmclose exists
8010 set dbmclose d_dbmclose
8013 case "$d_dbmclose" in
8023 *) set rpcsvc/dbm.h i_rpcsvcdbm
8028 *) echo "We won't be including <dbm.h>"
8038 : see if this is a sys/file.h system
8043 : do we need to include sys/file.h ?
8049 echo "We'll be including <sys/file.h>." >&4
8052 echo "We won't be including <sys/file.h>." >&4
8062 : see if fcntl.h is there
8067 : see if we can include fcntl.h
8073 echo "We'll be including <fcntl.h>." >&4
8077 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
8079 echo "We won't be including <fcntl.h>." >&4
8091 : see if this is an grp system
8095 : see if locale.h is available
8096 set locale.h i_locale
8099 : see if this is a math.h system
8103 : see if memory.h is available.
8108 : See if it conflicts with string.h
8114 $cppstdin $cppflags $cppminus < $strings > mem.h
8115 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8117 echo "We won't be including <memory.h>."
8127 : see if ndbm.h is available
8132 : see if dbm_open exists
8133 set dbm_open d_dbm_open
8135 case "$d_dbm_open" in
8138 echo "We won't be including <ndbm.h>"
8147 : see if net/errno.h is available
8152 : Unfortunately, it causes problems on some systems. Arrgh.
8158 #include <net/errno.h>
8164 if $cc $ccflags -c try.c >/dev/null 2>&1; then
8165 echo "We'll be including <net/errno.h>." >&4
8167 echo "We won't be including <net/errno.h>." >&4
8176 : get C preprocessor symbols handy
8178 $echo $n "Hmm... $c"
8179 echo $al | $tr ' ' '\012' >Cppsym.know
8191 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
8193 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
8196 unknown="\$unknown \$sym"
8206 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
8208 exit 0; _ _ _ _\1\\ \1\\
8211 echo "exit 1; _ _ _" >>Cppsym\$\$
8212 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
8214 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
8220 $rm -f Cppsym\$\$ Cppsym2\$\$
8225 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
8227 : now check the C compiler for additional symbols
8233 for i in \`$cc -v -c tmp.c 2>&1\`
8236 -D*) echo "\$i" | $sed 's/^-D//';;
8237 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
8244 ./ccsym | $sort | $uniq >ccsym.raw
8245 $awk '/\=/ { print $0; next }
8246 { print $0"=1" }' ccsym.raw >ccsym.list
8247 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
8248 $comm -13 ccsym.true ccsym.list >ccsym.own
8249 $comm -12 ccsym.true ccsym.list >ccsym.com
8250 $comm -23 ccsym.true ccsym.list >ccsym.cpp
8253 if $test -z ccsym.raw; then
8254 echo "Your C compiler doesn't seem to define any symbol!" >&4
8256 echo "However, your C preprocessor defines the following ones:"
8259 if $test -s ccsym.com; then
8260 echo "Your C compiler and pre-processor define these symbols:"
8261 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
8264 $test "$silent" || sleep 1
8266 if $test -s ccsym.cpp; then
8267 $test "$also" && echo " "
8268 echo "Your C pre-processor ${also}defines the following $symbols:"
8269 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
8271 $test "$silent" || sleep 1
8273 if $test -s ccsym.own; then
8274 $test "$also" && echo " "
8275 echo "Your C compiler ${also}defines the following cpp variables:"
8276 $sed -e 's/\(.*\)=1/\1/' ccsym.own
8277 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
8278 $test "$silent" || sleep 1
8283 : see if this is a termio system
8287 if $test `./findhdr termios.h`; then
8288 set tcsetattr i_termios
8294 "$define") echo "You have POSIX termios.h... good!" >&4;;
8295 *) if ./Cppsym pyr; then
8296 case "`/bin/universe`" in
8297 ucb) if $test `./findhdr sgtty.h`; then
8299 echo "<sgtty.h> found." >&4
8301 echo "System is pyramid with BSD universe."
8302 echo "<sgtty.h> not found--you could have problems." >&4
8304 *) if $test `./findhdr termio.h`; then
8306 echo "<termio.h> found." >&4
8308 echo "System is pyramid with USG universe."
8309 echo "<termio.h> not found--you could have problems." >&4
8313 if $test `./findhdr termio.h`; then
8314 echo "<termio.h> found." >&4
8316 elif $test `./findhdr sgtty.h`; then
8317 echo "<sgtty.h> found." >&4
8320 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
8323 if $test `./findhdr sgtty.h`; then
8324 echo "<sgtty.h> found." >&4
8326 elif $test `./findhdr termio.h`; then
8327 echo "<termio.h> found." >&4
8330 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
8334 set i_termio; eval $setvar
8335 val=$val2; set i_sgtty; eval $setvar
8336 val=$val3; set i_termios; eval $setvar
8338 : see if stdarg is available
8340 if $test `./findhdr stdarg.h`; then
8341 echo "<stdarg.h> found." >&4
8344 echo "<stdarg.h> NOT found." >&4
8348 : see if varags is available
8350 if $test `./findhdr varargs.h`; then
8351 echo "<varargs.h> found." >&4
8353 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
8356 : set up the varargs testing programs
8357 $cat > varargs.c <<EOP
8362 #include <varargs.h>
8380 p = va_arg(ap, char *);
8385 $cat > varargs <<EOP
8386 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
8395 : now check which varargs header should be included
8400 if `./varargs I_STDARG`; then
8402 elif `./varargs I_VARARGS`; then
8407 if `./varargs I_VARARGS`; then
8414 echo "I could not find the definition for va_dcl... You have problems..." >&4
8415 val="$undef"; set i_stdarg; eval $setvar
8416 val="$undef"; set i_varargs; eval $setvar
8423 val="$define"; set i_stdarg; eval $setvar
8424 val="$undef"; set i_varargs; eval $setvar
8427 val="$undef"; set i_stdarg; eval $setvar
8428 val="$define"; set i_varargs; eval $setvar
8431 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
8435 : see if stddef is available
8436 set stddef.h i_stddef
8439 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
8440 set sys/filio.h i_sysfilio
8443 if $test `./findhdr sys/ioctl.h`; then
8445 echo '<sys/ioctl.h> found.' >&4
8448 if $test $i_sysfilio = "$define"; then
8449 echo '<sys/ioctl.h> NOT found.' >&4
8451 $test $i_sgtty = "$define" && xxx="sgtty.h"
8452 $test $i_termio = "$define" && xxx="termio.h"
8453 $test $i_termios = "$define" && xxx="termios.h"
8454 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
8460 : see if this is a sys/param system
8461 set sys/param.h i_sysparam
8464 : see if sys/stat.h is available
8465 set sys/stat.h i_sysstat
8468 : see if sys/types.h has to be included
8469 set sys/types.h i_systypes
8472 : see if this is a sys/un.h system
8473 set sys/un.h i_sysun
8476 : see if this is a unistd.h system
8477 set unistd.h i_unistd
8480 : see if this is an utime system
8484 : see if this is a vfork system
8495 : see if gdbm.h is available
8500 : see if gdbm_open exists
8501 set gdbm_open d_gdbm_open
8503 case "$d_gdbm_open" in
8506 echo "We won't be including <gdbm.h>"
8516 echo "Looking for extensions..." >&4
8518 : If we are using the old config.sh, known_extensions may contain
8519 : old or inaccurate or duplicate values.
8521 : We do not use find because it might not be available.
8522 : We do not just use MANIFEST because the user may have dropped
8523 : some additional extensions into the source tree and expect them
8526 if $test -f $xxx/$xxx.xs; then
8527 known_extensions="$known_extensions $xxx"
8529 if $test -d $xxx; then
8532 if $test -f $yyy/$yyy.xs; then
8533 known_extensions="$known_extensions $xxx/$yyy"
8540 set X $known_extensions
8542 known_extensions="$*"
8545 : Now see which are supported on this system.
8547 for xxx in $known_extensions ; do
8549 DB_File) case "$i_db" in
8550 $define) avail_ext="$avail_ext $xxx" ;;
8553 GDBM_File) case "$i_gdbm" in
8554 $define) avail_ext="$avail_ext $xxx" ;;
8557 NDBM_File) case "$i_ndbm" in
8558 $define) avail_ext="$avail_ext $xxx" ;;
8561 ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in
8562 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
8565 POSIX) case "$useposix" in
8566 true|define|y) avail_ext="$avail_ext $xxx" ;;
8569 Socket) case "$d_socket" in
8570 $define) avail_ext="$avail_ext $xxx" ;;
8573 *) avail_ext="$avail_ext $xxx"
8585 A number of extensions are supplied with $package. You may choose to
8586 compile these extensions for dynamic loading (the default), compile
8587 them into the $package executable (static loading), or not include
8588 them at all. Answer "none" to include no extensions.
8591 case "$dynamic_ext" in
8592 '') dflt="$avail_ext" ;;
8593 *) dflt="$dynamic_ext" ;;
8598 rp="What extensions do you wish to load dynamically?"
8601 none) dynamic_ext=' ' ;;
8602 *) dynamic_ext="$ans" ;;
8605 case "$static_ext" in
8607 : Exclude those already listed in dynamic linking
8609 for xxx in $avail_ext; do
8610 case " $dynamic_ext " in
8612 *) dflt="$dflt $xxx" ;;
8619 *) dflt="$static_ext"
8626 rp="What extensions do you wish to load statically?"
8629 none) static_ext=' ' ;;
8630 *) static_ext="$ans" ;;
8635 A number of extensions are supplied with $package. Answer "none"
8636 to include no extensions.
8639 case "$static_ext" in
8640 '') dflt="$avail_ext" ;;
8641 *) dflt="$static_ext" ;;
8647 rp="What extensions do you wish to include?"
8650 none) static_ext=' ' ;;
8651 *) static_ext="$ans" ;;
8656 set X $dynamic_ext $static_ext
8662 I need to get your e-mail address in Internet format if possible, i.e.
8663 something like user@host.domain. Please answer accurately since I have
8664 no easy means to double check it. The default value provided below
8665 is most probably close to the reality but may not be valid from outside
8666 your organization...
8670 while test "$cont"; do
8672 '') dflt="$cf_by@$myhostname$mydomain";;
8673 *) dflt="$cf_email";;
8675 rp='What is your e-mail address?'
8681 rp='Address does not look like an Internet one. Use it anyway?'
8697 If you or somebody else will be maintaining perl at your site, please
8698 fill in the correct e-mail address here so that they may be contacted
8699 if necessary. Currently, the "perlbug" program included with perl
8700 will send mail to this address in addition to perlbug@perl.com. You may
8701 enter "none" for no administrator.
8704 case "$perladmin" in
8705 '') dflt="$cf_email";;
8706 *) dflt="$perladmin";;
8708 rp='Perl administrator e-mail address'
8712 : Remove build directory name from cppstdin so it can be used from
8713 : either the present location or the final installed location.
8715 : Get out of the UU directory to get correct path name.
8719 echo "Stripping down cppstdin path name"
8725 : end of configuration questions
8727 echo "End of configuration questions."
8730 : back to where it started
8731 if test -d ../UU; then
8735 : configuration may be patched via a 'config.over' file
8736 if $test -f config.over; then
8739 rp='I see a config.over file. Do you wish to load it?'
8742 n*) echo "OK, I'll ignore it.";;
8744 echo "Configuration override changes have been loaded."
8749 : in case they want portability, strip down executable paths
8750 case "$d_portable" in
8753 echo "Stripping down executable paths..." >&4
8754 for file in $loclist $trylist; do
8760 : create config.sh file
8762 echo "Creating config.sh..." >&4
8763 $spitshell <<EOT >config.sh
8766 # This file was produced by running the Configure script. It holds all the
8767 # definitions figured out by Configure. Should you modify one of these values,
8768 # do not forget to propagate your changes by running "Configure -der". You may
8769 # instead choose to run each of the .SH files by yourself, or "Configure -S".
8772 # Configuration time: $cf_time
8773 # Configured by: $cf_by
8774 # Target system: $myuname
8784 Revision='$Revision'
8788 alignbytes='$alignbytes'
8789 aphostname='$aphostname'
8792 archlibexp='$archlibexp'
8793 archname='$archname'
8794 archobjs='$archobjs'
8802 byteorder='$byteorder'
8804 castflags='$castflags'
8807 cccdlflags='$cccdlflags'
8808 ccdlflags='$ccdlflags'
8811 cf_email='$cf_email'
8816 clocktype='$clocktype'
8818 compress='$compress'
8819 contains='$contains'
8823 cpp_stuff='$cpp_stuff'
8824 cppflags='$cppflags'
8826 cppminus='$cppminus'
8828 cppstdin='$cppstdin'
8829 cryptlib='$cryptlib'
8831 d_Gconvert='$d_Gconvert'
8832 d_access='$d_access'
8834 d_archlib='$d_archlib'
8835 d_attribut='$d_attribut'
8839 d_bsdpgrp='$d_bsdpgrp'
8841 d_casti32='$d_casti32'
8842 d_castneg='$d_castneg'
8843 d_charvspr='$d_charvspr'
8845 d_chroot='$d_chroot'
8846 d_chsize='$d_chsize'
8847 d_closedir='$d_closedir'
8851 d_cuserid='$d_cuserid'
8852 d_dbl_dig='$d_dbl_dig'
8853 d_difftime='$d_difftime'
8854 d_dirnamlen='$d_dirnamlen'
8855 d_dlerror='$d_dlerror'
8856 d_dlopen='$d_dlopen'
8857 d_dlsymun='$d_dlsymun'
8858 d_dosuid='$d_dosuid'
8860 d_eofnblk='$d_eofnblk'
8861 d_eunice='$d_eunice'
8862 d_fchmod='$d_fchmod'
8863 d_fchown='$d_fchown'
8865 d_fd_macros='$d_fd_macros'
8866 d_fd_set='$d_fd_set'
8867 d_fds_bits='$d_fds_bits'
8868 d_fgetpos='$d_fgetpos'
8869 d_flexfnam='$d_flexfnam'
8872 d_fpathconf='$d_fpathconf'
8873 d_fsetpos='$d_fsetpos'
8874 d_getgrps='$d_getgrps'
8875 d_gethent='$d_gethent'
8876 d_gethname='$d_gethname'
8877 d_getlogin='$d_getlogin'
8878 d_getpgrp2='$d_getpgrp2'
8879 d_getpgrp='$d_getpgrp'
8880 d_getppid='$d_getppid'
8881 d_getprior='$d_getprior'
8884 d_isascii='$d_isascii'
8885 d_killpg='$d_killpg'
8887 d_locconv='$d_locconv'
8891 d_mbstowcs='$d_mbstowcs'
8892 d_mbtowc='$d_mbtowc'
8893 d_memcmp='$d_memcmp'
8894 d_memcpy='$d_memcpy'
8895 d_memmove='$d_memmove'
8896 d_memset='$d_memset'
8898 d_mkfifo='$d_mkfifo'
8899 d_mktime='$d_mktime'
8901 d_msgctl='$d_msgctl'
8902 d_msgget='$d_msgget'
8903 d_msgrcv='$d_msgrcv'
8904 d_msgsnd='$d_msgsnd'
8905 d_mymalloc='$d_mymalloc'
8907 d_oldarchlib='$d_oldarchlib'
8908 d_oldsock='$d_oldsock'
8910 d_pathconf='$d_pathconf'
8912 d_phostname='$d_phostname'
8915 d_portable='$d_portable'
8917 d_pwchange='$d_pwchange'
8918 d_pwclass='$d_pwclass'
8919 d_pwcomment='$d_pwcomment'
8920 d_pwexpire='$d_pwexpire'
8921 d_pwquota='$d_pwquota'
8922 d_readdir='$d_readdir'
8923 d_readlink='$d_readlink'
8924 d_rename='$d_rename'
8925 d_rewinddir='$d_rewinddir'
8927 d_safebcpy='$d_safebcpy'
8928 d_safemcpy='$d_safemcpy'
8929 d_seekdir='$d_seekdir'
8930 d_select='$d_select'
8932 d_semctl='$d_semctl'
8933 d_semget='$d_semget'
8935 d_setegid='$d_setegid'
8936 d_seteuid='$d_seteuid'
8937 d_setlinebuf='$d_setlinebuf'
8938 d_setlocale='$d_setlocale'
8939 d_setpgid='$d_setpgid'
8940 d_setpgrp2='$d_setpgrp2'
8941 d_setpgrp='$d_setpgrp'
8942 d_setprior='$d_setprior'
8943 d_setregid='$d_setregid'
8944 d_setresgid='$d_setresgid'
8945 d_setresuid='$d_setresuid'
8946 d_setreuid='$d_setreuid'
8947 d_setrgid='$d_setrgid'
8948 d_setruid='$d_setruid'
8949 d_setsid='$d_setsid'
8952 d_shmatprototype='$d_shmatprototype'
8953 d_shmctl='$d_shmctl'
8955 d_shmget='$d_shmget'
8956 d_shrplib='$d_shrplib'
8957 d_socket='$d_socket'
8958 d_sockpair='$d_sockpair'
8959 d_statblks='$d_statblks'
8960 d_stdio_cnt_lval='$d_stdio_cnt_lval'
8961 d_stdio_ptr_lval='$d_stdio_ptr_lval'
8962 d_stdiobase='$d_stdiobase'
8963 d_stdstdio='$d_stdstdio'
8964 d_strchr='$d_strchr'
8965 d_strcoll='$d_strcoll'
8966 d_strctcpy='$d_strctcpy'
8967 d_strerrm='$d_strerrm'
8968 d_strerror='$d_strerror'
8969 d_strxfrm='$d_strxfrm'
8970 d_suidsafe='$d_suidsafe'
8971 d_symlink='$d_symlink'
8972 d_syscall='$d_syscall'
8973 d_sysconf='$d_sysconf'
8974 d_sysernlst='$d_sysernlst'
8975 d_syserrlst='$d_syserrlst'
8976 d_system='$d_system'
8977 d_tcgetpgrp='$d_tcgetpgrp'
8978 d_tcsetpgrp='$d_tcsetpgrp'
8979 d_telldir='$d_telldir'
8982 d_truncate='$d_truncate'
8983 d_tzname='$d_tzname'
8987 d_void_closedir='$d_void_closedir'
8988 d_voidsig='$d_voidsig'
8989 d_voidtty='$d_voidtty'
8990 d_volatile='$d_volatile'
8991 d_vprintf='$d_vprintf'
8993 d_waitpid='$d_waitpid'
8994 d_wcstombs='$d_wcstombs'
8995 d_wctomb='$d_wctomb'
8998 db_hashtype='$db_hashtype'
8999 db_prefixtype='$db_prefixtype'
9000 defvoidused='$defvoidused'
9001 direntrytype='$direntrytype'
9004 dynamic_ext='$dynamic_ext'
9009 eunicefix='$eunicefix'
9012 extensions='$extensions'
9014 firstmakefile='$firstmakefile'
9016 fpostype='$fpostype'
9017 freetype='$freetype'
9018 full_csh='$full_csh'
9019 full_sed='$full_sed'
9021 gccversion='$gccversion'
9025 groupcat='$groupcat'
9026 groupstype='$groupstype'
9028 h_sysfile='$h_sysfile'
9032 i_bsdioctl='$i_bsdioctl'
9035 i_dirent='$i_dirent'
9042 i_limits='$i_limits'
9043 i_locale='$i_locale'
9044 i_malloc='$i_malloc'
9046 i_memory='$i_memory'
9048 i_neterrno='$i_neterrno'
9051 i_rpcsvcdbm='$i_rpcsvcdbm'
9053 i_stdarg='$i_stdarg'
9054 i_stddef='$i_stddef'
9055 i_stdlib='$i_stdlib'
9056 i_string='$i_string'
9057 i_sysdir='$i_sysdir'
9058 i_sysfile='$i_sysfile'
9059 i_sysfilio='$i_sysfilio'
9061 i_sysioctl='$i_sysioctl'
9062 i_sysndir='$i_sysndir'
9063 i_sysparam='$i_sysparam'
9064 i_sysselct='$i_sysselct'
9065 i_syssockio='$i_syssockio'
9066 i_sysstat='$i_sysstat'
9067 i_systime='$i_systime'
9068 i_systimek='$i_systimek'
9069 i_systimes='$i_systimes'
9070 i_systypes='$i_systypes'
9072 i_termio='$i_termio'
9073 i_termios='$i_termios'
9075 i_unistd='$i_unistd'
9077 i_varargs='$i_varargs'
9078 i_varhdr='$i_varhdr'
9082 installarchlib='$installarchlib'
9083 installbin='$installbin'
9084 installman1dir='$installman1dir'
9085 installman3dir='$installman3dir'
9086 installprivlib='$installprivlib'
9087 installscript='$installscript'
9088 installsitearch='$installsitearch'
9089 installsitelib='$installsitelib'
9091 known_extensions='$known_extensions'
9095 lddlflags='$lddlflags'
9102 libswanted='$libswanted'
9108 locincpth='$locincpth'
9109 loclibpth='$loclibpth'
9113 lseektype='$lseektype'
9117 mallocobj='$mallocobj'
9118 mallocsrc='$mallocsrc'
9119 malloctype='$malloctype'
9121 man1direxp='$man1direxp'
9124 man3direxp='$man3direxp'
9128 mips_type='$mips_type'
9131 modetype='$modetype'
9134 myarchname='$myarchname'
9135 mydomain='$mydomain'
9136 myhostname='$myhostname'
9141 o_nonblock='$o_nonblock'
9143 oldarchlib='$oldarchlib'
9144 oldarchlibexp='$oldarchlibexp'
9145 optimize='$optimize'
9146 orderlib='$orderlib'
9151 patchlevel='$patchlevel'
9152 path_sep='$path_sep'
9154 perladmin='$perladmin'
9155 perlpath='$perlpath'
9157 phostname='$phostname'
9162 prefixexp='$prefixexp'
9164 privlibexp='$privlibexp'
9165 prototype='$prototype'
9166 randbits='$randbits'
9168 rd_nodata='$rd_nodata'
9172 scriptdir='$scriptdir'
9173 scriptdirexp='$scriptdirexp'
9175 selecttype='$selecttype'
9176 sendmail='$sendmail'
9179 sharpbang='$sharpbang'
9180 shmattype='$shmattype'
9183 sig_name='$sig_name'
9185 signal_t='$signal_t'
9186 sitearch='$sitearch'
9187 sitearchexp='$sitearchexp'
9189 sitelibexp='$sitelibexp'
9190 sizetype='$sizetype'
9195 sockethdr='$sockethdr'
9196 socketlib='$socketlib'
9198 spackage='$spackage'
9199 spitshell='$spitshell'
9201 ssizetype='$ssizetype'
9202 startperl='$startperl'
9204 static_ext='$static_ext'
9206 stdio_base='$stdio_base'
9207 stdio_bufsiz='$stdio_bufsiz'
9208 stdio_cnt='$stdio_cnt'
9209 stdio_ptr='$stdio_ptr'
9217 timeincl='$timeincl'
9218 timetype='$timetype'
9226 usemymalloc='$usemymalloc'
9228 useposix='$useposix'
9229 usevfork='$usevfork'
9233 voidflags='$voidflags'
9238 : add special variables
9239 $test -f patchlevel.h && \
9240 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
9241 echo "CONFIG=true" >>config.sh
9243 : propagate old symbols
9244 if $test -f UU/config.sh; then
9245 <UU/config.sh sort | uniq >UU/oldconfig.sh
9246 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
9247 sort | uniq -u >UU/oldsyms
9248 set X `cat UU/oldsyms`
9254 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
9256 echo "# Variables propagated from previous config.sh file." >>config.sh
9257 for sym in `cat UU/oldsyms`; do
9258 echo " Propagating $hint variable "'$'"$sym..."
9259 eval 'tmp="$'"${sym}"'"'
9261 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
9267 : Finish up by extracting the .SH files
9281 If you'd like to make any changes to the config.sh file before I begin
9282 to configure things, do it as a shell escape now (e.g. !vi config.sh).
9285 rp="Press return or use a shell escape to edit config.sh:"
9290 *) : in case they cannot read
9296 : if this fails, just run all the .SH files by hand
9303 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
9310 Now you need to generate make dependencies by running "make depend".
9311 You might prefer to run it in background: "make depend > makedepend.out &"
9312 It can take a while, so you might not want to run it right now.
9317 rp="Run make depend now?"
9321 make depend && echo "Now you must run a make."
9324 echo "You must run 'make depend' then 'make'."
9327 elif test -f [Mm]akefile; then
9329 echo "Now you must run a make."
9334 $rm -f kit*isdone ark*isdone