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 and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Fri Feb 12 13:46:36 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 case "$inksh/$needksh" in
118 case "$inksh/$avoidksh" in
124 case "$inksh/$needksh-$avoidksh-" in
127 (I see you are using the Korn shell. Some ksh's blow up on $me,
128 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
134 echo "(Feeding myself to $newsh $reason.)"
136 Configure|*/Configure) exec $newsh $0 "$@";;
137 *) exec $newsh Configure "$@";;
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
147 *bash*) CDPATH='.' ;;
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
421 d_old_pthread_create_joinable=''
422 old_pthread_create_joinable=''
680 ignore_versioned_solibs=''
805 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
808 : We must find out about Eunice early
810 if test -f /etc/unixtovms; then
811 eunicefix=/etc/unixtovms
813 if test -f /etc/unixtovms.exe; then
814 eunicefix=/etc/unixtovms.exe
818 : change the next line if compiling for Xenix/286 on Xenix/386
819 xlibpth='/usr/lib/386 /lib/386'
821 : Possible local library directories to search.
822 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
823 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
825 : general looking path for locating libraries
826 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
827 glibpth="$glibpth /lib /usr/lib $xlibpth"
828 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
829 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
831 : Private path used by Configure to find libraries. Its value
832 : is prepended to libpth. This variable takes care of special
833 : machines, like the mips. Usually, it should be empty.
836 : Possible local include directories to search.
837 : Set locincpth to "" in a hint file to defeat local include searches.
838 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
839 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
841 : no include file wanted by default
844 : list of known cpp symbols, sorted alphabetically
845 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
846 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
847 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
848 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
849 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
850 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
851 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
852 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
853 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
854 al="$al VMS Xenix286"
855 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
856 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
857 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
858 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
859 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
860 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
861 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
862 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
863 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
864 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
865 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
866 al="$al __SVR4_2__ __UMAXV__"
867 al="$al ____386BSD____ __alpha __alpha__ __amiga"
868 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
869 al="$al __host_mips__"
870 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
871 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
872 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
873 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
874 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
875 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
876 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
877 al="$al __mc88100 __mc88100__ __mips __mips__"
878 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
879 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
880 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
881 al="$al _host_mips _mips _unix"
882 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
883 al="$al apollo ardent att386 att3b"
884 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
885 al="$al cadmus clipper concurrent convex cray ctix"
886 al="$al dmert encore gcos gcx gimpel gould"
887 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
888 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
889 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
890 al="$al i186 i286 i386 i486 i8086"
891 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
892 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
893 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
894 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
895 al="$al mc88000 mc88100 merlin mert mips mvs n16"
896 al="$al ncl_el ncl_mr"
897 al="$al news1500 news1700 news1800 news1900 news3700"
898 al="$al news700 news800 news900 ns16000 ns32000"
899 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
900 al="$al parisc pc532 pdp11 plexus posix pyr"
901 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
902 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
903 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
904 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
905 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
906 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
909 : Trailing extension. Override this in a hint file, if needed.
911 : Extra object files, if any, needed on this platform.
914 : default library list
916 : some systems want to use only the non-versioned libso:s
917 ignore_versioned_solibs=''
918 : full support for void wanted by default
921 : set useposix=false in your hint file to disable the POSIX extension.
923 : set useopcode=false in your hint file to disable the Opcode extension.
925 : set usemultiplicity on the Configure command line to enable multiplicity.
926 : set usethreads on the Configure command line to enable threads.
927 : List of libraries we want.
928 : If anyone needs -lnet, put it in a hint file.
929 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
930 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
931 libswanted="$libswanted ucb bsd BSD PW x"
932 : We probably want to search /usr/shlib before most other libraries.
933 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
934 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
935 glibpth="/usr/shlib $glibpth"
936 : Do not use vfork unless overridden by a hint file.
939 : Find the basic shell for Bourne shell scripts
943 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
946 if test -f "$xxx"; then
949 : Build up a list and do a single loop so we can 'break' out.
950 pth=`echo $PATH | sed -e "s/$p_/ /g"`
951 for xxx in sh bash ksh pdksh ash; do
953 try="$try ${p}/${xxx}"
957 if test -f "$xxx"; then
960 elif test -f "$xxx.exe"; then
971 $me: Fatal Error: I can't find a Bourne Shell anywhere.
973 Usually it's in /bin/sh. How did you even get this far?
974 Please contact me (Perl Maintainers) at perlbug@perl.com and
975 we'll try to straighten this all out.
981 : see if sh knows # comments
982 if `$sh -c '#' >/dev/null 2>&1`; then
986 test -f $xcat || xcat=/usr/bin/cat
991 if test -s today; then
994 echo "#! $xcat" > try
998 if test -s today; then
1006 echo "Your $sh doesn't grok # comments--I will strip them later on."
1009 echo "exec grep -v '^[ ]*#'" >spitshell
1011 $eunicefix spitshell
1012 spitshell=`pwd`/spitshell
1014 echo "I presume that if # doesn't work, #! won't work either!"
1019 : figure out how to guarantee sh startup
1021 '') startsh=${sharpbang}${sh} ;;
1033 : echo "Yup, it does."
1035 echo "Hmm... '$startsh' does not guarantee sh startup..."
1036 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1041 : Save command line options in file UU/cmdline.opt for later use in
1042 : generating config.sh.
1043 cat > cmdline.opt <<EOSH
1044 # Configure command line arguments.
1051 cat >>cmdline.opt <<EOSH
1052 config_arg$argn='$arg'
1054 argn=`expr $argn + 1`
1057 : produce awk script to parse command line options
1058 cat >options.awk <<'EOF'
1060 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1062 len = length(optstr);
1063 for (i = 1; i <= len; i++) {
1064 c = substr(optstr, i, 1);
1065 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1076 if (substr(str, 1, 1) != "-") {
1077 printf("'%s'\n", str);
1081 for (i = 2; i <= len; i++) {
1082 c = substr(str, i, 1);
1084 printf("-%s\n", substr(str, i));
1090 printf("'%s'\n", substr(str, i + 1));
1103 : process the command line options
1104 set X `for arg in "$@"; do echo "X$arg"; done |
1105 sed -e s/X// | awk -f options.awk`
1110 : set up default values
1121 cat >optdef.sh <<EOS
1127 while test $# -gt 0; do
1129 -d) shift; fastread=yes;;
1130 -e) shift; alldone=cont;;
1134 if test -r "$1"; then
1137 echo "$me: cannot read config file $1." >&2
1142 -h) shift; error=true;;
1143 -r) shift; reuseval=true;;
1144 -s) shift; silent=true; realsilent=true;;
1145 -E) shift; alldone=exit;;
1146 -K) shift; knowitall=true;;
1147 -O) shift; override=true;;
1148 -S) shift; silent=true; extractsh=true;;
1153 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1154 echo "$me: ignoring -D $1" >&2
1157 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1158 *) echo "$1='define'" >> optdef.sh;;
1165 *=) echo "$1" >> optdef.sh;;
1167 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1168 echo "$me: ignoring -U $1" >&2
1170 *) echo "$1='undef'" >> optdef.sh;;
1174 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1177 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1185 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1186 [-U symbol] [-U symbol=]
1187 -d : use defaults for all answers.
1188 -e : go on without questioning past the production of config.sh.
1189 -f : specify an alternate default configuration file.
1190 -h : print this help message and exit (with an error status).
1191 -r : reuse C symbols value if possible (skips costly nm extraction).
1192 -s : silent mode, only echoes questions and essential information.
1193 -D : define symbol to have some value:
1194 -D symbol symbol gets the value 'define'
1195 -D symbol=value symbol gets the value 'value'
1196 -E : stop at the end of questions, after having produced config.sh.
1197 -K : do not use unless you know what you are doing.
1198 -O : let -D and -U override definitions from loaded configuration file.
1199 -S : perform variable substitutions on all .SH files (can mix with -f)
1200 -U : undefine symbol:
1201 -U symbol symbol gets the value 'undef'
1202 -U symbol= symbol gets completely empty
1203 -V : print version number and exit (with a zero status).
1210 case "$fastread$alldone" in
1213 if test ! -t 0; then
1214 echo "Say 'sh Configure', not 'sh <Configure'"
1222 true) exec 1>/dev/null;;
1225 : run the defines and the undefines, if any, but leave the file out there...
1231 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1232 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1233 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1234 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1235 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1238 : Some greps do not return status, grrr.
1239 echo "grimblepritz" >grimble
1240 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1242 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1248 : the following should work in any shell
1252 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1253 cat >contains <<'EOSS'
1254 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1259 : Find the path to the source tree
1262 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1273 if test -f $rsrc/Configure && \
1274 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1276 : found it, so we are ok.
1279 for src in . .. ../.. ../../.. ../../../..; do
1280 if test -f ../$src/Configure && \
1281 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1292 Sorry, I can't seem to locate the source dir for $package. Please start
1293 Configure with an explicit path -- i.e. /some/path/Configure.
1301 echo "Sources for $package found in \"$src\"." >&4
1305 : script used to extract .SH files with variable substitutions
1306 cat >extract <<'EOS'
1308 echo "Doing variable substitutions on .SH files..."
1309 if test -f $src/MANIFEST; then
1310 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1312 echo "(Looking for .SH files under the source directory.)"
1313 set x `(cd $src; find . -name "*.SH" -print)`
1317 0) set x `(cd $src; echo *.SH)`; shift;;
1319 if test ! -f $src/$1; then
1325 while test $name; do
1326 if test ! -d "$name"; then
1327 create="$name $create";
1328 name=`echo $name | sed -e "s|^[^/]*$||"`;
1329 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1334 for file in $create; do
1343 dir=`expr X$file : 'X\(.*\)/'`
1344 file=`expr X$file : 'X.*/\(.*\)'`
1345 (cd $dir && . ./$file)
1355 dir=`expr X$file : 'X\(.*\)/'`
1356 file=`expr X$file : 'X.*/\(.*\)'`
1357 (set x $dir; shift; eval $mkdir_p)
1367 if test -f $src/config_h.SH; then
1368 if test ! -f config.h; then
1369 : oops, they left it out of MANIFEST, probably, so do it anyway.
1375 : extract files and exit if asked to do so
1376 case "$extractsh" in
1378 case "$realsilent" in
1382 case "$config_sh" in
1383 '') config_sh='config.sh';;
1386 echo "Fetching answers from $config_sh..."
1389 test "$override" && . ./optdef.sh
1398 : Eunice requires " " instead of "", can you believe it
1401 echo "Beginning of configuration questions for $package."
1403 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1405 : first determine how to suppress newline on echo command
1407 echo "Checking echo to see how to suppress newlines..."
1408 (echo "hi there\c" ; echo " ") >.echotmp
1409 if $contains c .echotmp >/dev/null 2>&1 ; then
1420 echo $n "The star should be here-->$c"
1424 : Now test for existence of everything in MANIFEST
1426 if test -f $rsrc/MANIFEST; then
1427 echo "First let's make sure your kit is complete. Checking..." >&4
1428 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1431 for filelist in x??; do
1432 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1434 if test -s missing; then
1438 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1440 You have the option of continuing the configuration process, despite the
1441 distinct possibility that your kit is damaged, by typing 'y'es. If you
1442 do, don't blame me if something goes wrong. I advise you to type 'n'o
1443 and contact the author (perlbug@perl.com).
1446 echo $n "Continue? [n] $c" >&4
1450 echo "Continuing..." >&4
1454 echo "ABORTING..." >&4
1459 echo "Looks good..."
1462 echo "There is no MANIFEST file. I hope your kit is complete !"
1467 : Find the appropriate value for a newline for tr
1468 if test -n "$DJGPP"; then
1471 if test X"$trnl" = X; then
1472 case "`echo foo|tr '\n' x 2>/dev/null`" in
1476 if test X"$trnl" = X; then
1477 case "`echo foo|tr '\012' x 2>/dev/null`" in
1478 foox) trnl='\012' ;;
1481 if test X"$trnl" = X; then
1484 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1490 : compute the number of columns on the terminal for proper question formatting
1495 : set up the echo used in my read
1496 myecho="case \"\$xxxm\" in
1497 '') echo $n \"\$rp $c\" >&4;;
1499 '') echo $n \"[\$xxxm] $c\";;
1501 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1503 echo $n \"[\$xxxm] $c\" >&4
1505 echo $n \"\$rp [\$xxxm] $c\" >&4
1511 : now set up to do reads with possible shell escape and default assignment
1517 case "\$fastread" in
1518 yes) case "\$dflt" in
1521 case "\$silent-\$rp" in
1526 *) case "\$silent" in
1527 true) case "\$rp" in
1532 while expr "X\$ans" : "X!" >/dev/null; do
1536 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1544 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1553 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1558 echo "(OK, I'll run with -d after this question.)" >&4
1561 echo "*** Sorry, \$1 not supported yet." >&4
1571 echo "*** Substitution done -- please confirm."
1573 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1578 echo "*** Error -- try again."
1585 case "\$ans\$xxxm\$nostick" in
1597 : create .config dir to save info across Configure sessions
1598 test -d ../.config || mkdir ../.config
1599 cat >../.config/README <<EOF
1600 This directory created by Configure to save information that should
1601 persist across sessions for $package.
1603 You may safely delete it if you wish.
1606 : general instructions
1609 user=`(logname) 2>/dev/null`
1611 '') user=`whoami 2>&1`;;
1613 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1616 rp='Would you like to see the instructions?'
1627 This installation shell script will examine your system and ask you questions
1628 to determine how the perl5 package should be installed. If you get
1629 stuck on a question, you may use a ! shell escape to start a subshell or
1630 execute a command. Many of the questions will have default answers in square
1631 brackets; typing carriage return will give you the default.
1633 On some of the questions which ask for file or directory names you are allowed
1634 to use the ~name construct to specify the login directory belonging to "name",
1635 even if you don't have a shell which knows about that. Questions where this is
1636 allowed will be marked "(~name ok)".
1640 dflt='Type carriage return to continue'
1644 The prompter used in this script allows you to use shell variables and
1645 backticks in your answers. You may use $1, $2, etc... to refer to the words
1646 in the default answer, as if the default line was a set of arguments given to a
1647 script shell. This means you may also use $* to repeat the whole default line,
1648 so you do not have to re-type everything to add something to the default.
1650 Everytime there is a substitution, you will have to confirm. If there is an
1651 error (e.g. an unmatched backtick), the default answer will remain unchanged
1652 and you will be prompted again.
1654 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1655 the questions and use the computed defaults (or the previous answers if there
1656 was already a config.sh file). Type 'Configure -h' for a list of options.
1657 You may also start interactively and then answer '& -d' at any prompt to turn
1658 on the non-interactive behaviour for the remainder of the execution.
1664 Much effort has been expended to ensure that this shell script will run on any
1665 Unix system. If despite that it blows up on yours, your best bet is to edit
1666 Configure and run it again. If you can't run Configure for some reason,
1667 you'll have to generate a config.sh file by hand. Whatever problems you
1668 have, let me (perlbug@perl.com) know how I blew it.
1670 This installation script affects things in two ways:
1672 1) it may do direct variable substitutions on some of the files included
1674 2) it builds a config.h file for inclusion in C programs. You may edit
1675 any of these files as the need arises after running this script.
1677 If you make a mistake on a question, there is no easy way to back up to it
1678 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1679 files. Configure will offer to let you do this before it runs the SH files.
1682 dflt='Type carriage return to continue'
1684 case "$firsttime" in
1685 true) echo $user >>../.config/instruct;;
1689 : find out where common programs are
1691 echo "Locating common programs..." >&4
1704 if test -d \$dir/\$thing; then
1710 for thisthing in \$dir/\$thing; do
1711 : just loop through to pick last item
1713 if test -f \$thisthing; then
1716 elif test -f \$dir/\$thing.exe; then
1717 if test -n "$DJGPP"; then
1718 echo \$dir/\$thing.exe
1720 : on Eunice apparently
1771 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1772 pth="$pth /lib /usr/lib"
1773 for file in $loclist; do
1777 if test -f "$xxx"; then
1780 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1781 xxx=`./loc $file $file $pth`
1784 '') xxx=`./loc $file $file $pth`;;
1785 *) xxx=`./loc $xxx $xxx $pth`;;
1791 echo $file is in $xxx.
1794 echo $file is in $xxx.
1797 echo "I don't know where '$file' is, and my life depends on it." >&4
1798 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1804 echo "Don't worry if any of the following aren't found..."
1806 for file in $trylist; do
1810 if test -f "$xxx"; then
1813 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1814 xxx=`./loc $file $file $pth`
1817 '') xxx=`./loc $file $file $pth`;;
1818 *) xxx=`./loc $xxx $xxx $pth`;;
1824 echo $file is in $xxx.
1827 echo $file is in $xxx.
1830 echo "I don't see $file out there, $say."
1837 echo "Substituting grep for egrep."
1843 echo "Substituting cp for ln."
1849 echo "Hopefully test is built into your sh."
1852 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1853 echo "Using the test built into your sh."
1861 echo "Hopefully echo is built into your sh."
1866 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1867 $echo $n "hi there$c" >foo1
1868 echo $n "hi there$c" >foo2
1869 if cmp foo1 foo2 >/dev/null 2>&1; then
1870 echo "They are compatible. In fact, they may be identical."
1877 They are not compatible! You are probably running ksh on a non-USG system.
1878 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1879 have echo built in and we may have to run some Bourne shell scripts. That
1880 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1883 $echo $n "The star should be here-->$c"
1890 : determine whether symbolic links are supported
1893 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1894 echo "Symbolic links are supported." >&4
1897 echo "Symbolic links are NOT supported." >&4
1902 : see whether [:lower:] and [:upper:] are supported character classes
1904 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1906 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1910 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1911 # (0xc9 and 0xd1), therefore that is a nice testing point.
1912 if test "X$up" = X -o "X$low" = X; then
1913 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1919 if test "X$up" = X -o "X$low" = X; then
1920 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1926 if test "X$up" = X -o "X$low" = X; then
1927 case "`echo IJ | od -x 2>/dev/null`" in
1929 echo "Hey, this might be EBCDIC." >&4
1930 if test "X$up" = X -o "X$low" = X; then
1931 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1932 ij) up='[A-IJ-RS-Z]'
1937 if test "X$up" = X -o "X$low" = X; then
1938 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1948 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1950 echo "Using $up and $low to convert case." >&4
1953 echo "I don't know how to translate letters from upper to lower case." >&4
1954 echo "Your tr is not acting any way I know of." >&4
1958 : set up the translation script tr, must be called with ./tr of course
1962 '[A-Z][a-z]') exec $tr '$up' '$low';;
1963 '[a-z][A-Z]') exec $tr '$low' '$up';;
1970 : Try to determine whether config.sh was made on this system
1971 case "$config_sh" in
1973 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1974 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1975 # because the A-Z/a-z are not consecutive.
1976 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1977 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1978 newmyuname="$myuname"
1980 case "$knowitall" in
1982 if test -f ../config.sh; then
1983 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1984 eval "`grep myuname= ../config.sh`"
1986 if test "X$myuname" = "X$newmyuname"; then
1994 : Get old answers from old config file if Configure was run on the
1995 : same system, otherwise use the hints.
1998 if test -f config.sh; then
2000 rp="I see a config.sh file. Shall I use it to set the defaults?"
2003 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2004 *) echo "Fetching default answers from your old config.sh file..." >&4
2012 : Older versions did not always set $sh. Catch re-use of such
2021 if test ! -f config.sh; then
2024 First time through, eh? I have some defaults handy for some systems
2025 that need some extra help getting the Configure answers right:
2028 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2030 : Half the following guesses are probably wrong... If you have better
2031 : tests or hints, please send them to perlbug@perl.com
2032 : The metaconfig authors would also appreciate a copy...
2033 $test -f /irix && osname=irix
2034 $test -f /xenix && osname=sco_xenix
2035 $test -f /dynix && osname=dynix
2036 $test -f /dnix && osname=dnix
2037 $test -f /lynx.os && osname=lynxos
2038 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2039 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2040 $test -f /bin/mips && /bin/mips && osname=mips
2041 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2042 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2043 $test -d /usr/apollo/bin && osname=apollo
2044 $test -f /etc/saf/_sactab && osname=svr4
2045 $test -d /usr/include/minix && osname=minix
2046 if $test -d /MachTen -o -d /MachTen_Folder; then
2048 if $test -x /sbin/version; then
2049 osvers=`/sbin/version | $awk '{print $2}' |
2050 $sed -e 's/[A-Za-z]$//'`
2051 elif $test -x /usr/etc/version; then
2052 osvers=`/usr/etc/version | $awk '{print $2}' |
2053 $sed -e 's/[A-Za-z]$//'`
2058 $test -f /sys/posix.dll &&
2059 $test -f /usr/bin/what &&
2060 set X `/usr/bin/what /sys/posix.dll` &&
2061 $test "$3" = UWIN &&
2064 if $test -f $uname; then
2072 umips) osname=umips ;;
2075 [23]100) osname=mips ;;
2076 next*) osname=next ;;
2078 tmp=`/bin/uname -X 2>/dev/null|awk -e '/3\.2v[45]/{ print $(NF) }'`
2079 if $test "$tmp" != "" -a "$3" = "3.2" -a test -e '/etc/systemid'; then
2082 elif $test -f /etc/kconfig; then
2084 if test "$lns" = "ln -s"; then
2086 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2088 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2095 if test -n "$DJGPP"; then
2104 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2106 'not found') osvers="$4"."$3" ;;
2107 '<3240'|'<>3240') osvers=3.2.0 ;;
2108 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2109 '=3250'|'>3250') osvers=3.2.5 ;;
2113 *dc.osx) osname=dcosx
2119 domainos) osname=apollo
2125 dynixptx*) osname=dynixptx
2126 osvers=`echo "$4"|sed 's/^v//'`
2128 freebsd) osname=freebsd
2130 genix) osname=genix ;;
2132 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2148 netbsd*) osname=netbsd
2151 news-os) osvers="$3"
2153 4*) osname=newsos4 ;;
2157 bsd386) osname=bsd386
2160 POSIX-BC | posix-bc ) osname=posix-bc
2163 powerux | power_ux | powermax_os | powermaxos | \
2164 powerunix | power_unix) osname=powerux
2167 next*) osname=next ;;
2168 solaris) osname=solaris
2170 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2177 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2181 titanos) osname=titanos
2190 ultrix) osname=ultrix
2193 osf1|mls+) case "$5" in
2196 osvers=`echo "$3" | sed 's/^[xvt]//'`
2198 hp*) osname=hp_osf1 ;;
2199 mips) osname=mips_osf1 ;;
2208 $2) case "$osname" in
2212 : svr4.x or possibly later
2222 if test -f /stand/boot ; then
2223 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2224 if test -n "$INITPROG" -a -f "$INITPROG"; then
2225 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2226 if test -n "$isesix"; then
2234 *) if test -f /etc/systemid; then
2236 set `echo $3 | $sed 's/\./ /g'` $4
2237 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2239 elif $test -f $src/hints/sco_$1_$2.sh; then
2241 elif $test -f $src/hints/sco_$1.sh; then
2246 '') : Still unknown. Probably a generic Sys V.
2255 *) case "$osname" in
2256 '') : Still unknown. Probably a generic BSD.
2264 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2265 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2266 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2269 $rm -f UU/kernel.what
2270 elif test -d c:/.; then
2277 : Now look for a hint file osname_osvers, unless one has been
2278 : specified already.
2281 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2282 : Also try without trailing minor version numbers.
2283 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2284 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2285 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2286 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2289 *) case "$osvers" in
2292 *) if $test -f $src/hints/$file.sh ; then
2294 elif $test -f $src/hints/$xfile.sh ; then
2296 elif $test -f $src/hints/$xxfile.sh ; then
2298 elif $test -f $src/hints/$xxxfile.sh ; then
2300 elif $test -f $src/hints/$xxxxfile.sh ; then
2302 elif $test -f "$src/hints/${osname}.sh" ; then
2311 if $test -f Policy.sh ; then
2314 none) dflt="Policy" ;;
2315 *) dflt="Policy $dflt" ;;
2320 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2324 if $test -f Policy.sh ; then
2327 There's also a Policy hint file available, which should make the
2328 site-specific (policy) questions easier to answer.
2335 You may give one or more space-separated answers, or "none" if appropriate.
2336 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2337 is a good thing. DO NOT give a wrong version.
2341 rp="Which of these apply, if any?"
2344 for file in $tans; do
2345 if $test X$file = XPolicy -a -f Policy.sh; then
2347 $cat Policy.sh >> UU/config.sh
2348 elif $test -f $src/hints/$file.sh; then
2349 . $src/hints/$file.sh
2350 $cat $src/hints/$file.sh >> UU/config.sh
2351 elif $test X$tans = X -o X$tans = Xnone ; then
2354 : Give one chance to correct a possible typo.
2355 echo "$file.sh does not exist"
2357 rp="hint to use instead?"
2359 for file in $ans; do
2360 if $test -f "$src/hints/$file.sh"; then
2361 . $src/hints/$file.sh
2362 $cat $src/hints/$file.sh >> UU/config.sh
2363 elif $test X$ans = X -o X$ans = Xnone ; then
2366 echo "$file.sh does not exist -- ignored."
2373 : Remember our hint file for later.
2374 if $test -f "$src/hints/$file.sh" ; then
2384 echo "Fetching default answers from $config_sh..." >&4
2388 cp $config_sh config.sh 2>/dev/null
2398 test "$override" && . ./optdef.sh
2399 myuname="$newmyuname"
2401 : Restore computed paths
2402 for file in $loclist $trylist; do
2403 eval $file="\$_$file"
2408 Configure uses the operating system name and version to set some defaults.
2409 The default value is probably right if the name rings a bell. Otherwise,
2410 since spelling matters for me, either accept the default or answer "none"
2417 ''|' '|none) dflt=none ;;
2418 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2421 *) dflt="$osname" ;;
2423 rp="Operating system name?"
2427 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2433 ''|' '|none) dflt=none ;;
2434 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2435 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2437 ''|' ') dflt=none ;;
2442 *) dflt="$osvers" ;;
2444 rp="Operating system version?"
2451 : who configured the system
2452 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2453 cf_by=`(logname) 2>/dev/null`
2456 cf_by=`(whoami) 2>/dev/null`
2458 "") cf_by=unknown ;;
2462 : set up the script used to warn in case of inconsistency
2469 echo "*** WHOA THERE!!! ***" >&4
2470 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2471 rp=" Keep the $hint value?"
2474 y) td=$was; tu=$was;;
2478 : function used to set $1 to $val
2479 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2481 $define$undef) . ./whoa; eval "$var=\$td";;
2482 $undef$define) . ./whoa; eval "$var=\$tu";;
2483 *) eval "$var=$val";;
2488 Perl can be built to take advantage of threads, on some systems.
2489 To do so, Configure must be run with -Dusethreads.
2490 (See README.threads for details.)
2492 case "$usethreads" in
2493 $define|true|[yY]*) dflt='y';;
2496 rp='Build a threading Perl?'
2499 y|Y) val="$define" ;;
2505 case "$d_oldpthreads" in
2506 '') : Configure tests would be welcome here. For now, assume undef.
2508 *) val="$d_oldpthreads" ;;
2514 case "$usethreads" in
2515 "$define"|true|[yY]*)
2516 : Look for a hint-file generated 'call-back-unit'. If the
2517 : user has specified that a threading perl is to be built,
2518 : we may need to set or change some other defaults.
2519 if $test -f usethreads.cbu; then
2523 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|openbsd|os2|solaris|vmesa)
2524 # Known thread-capable platforms.
2528 $osname is not known to support threads.
2529 Please let perlbug@perl.com know how to do that.
2531 Cannot continue, aborting.
2541 Perl can be built so that multiple Perl interpreters can coexist
2542 within the same Perl executable. To do so, Configure must be run with
2545 Normally you do not need this and you should answer no.
2548 case "$usemultiplicity" in
2549 $define|true|[yY]*) dflt='y';;
2552 rp='Build Perl for multiplicity?'
2555 y|Y) val="$define" ;;
2563 Perl can be built to take advantage of explicit 64-bit interfaces,
2564 on some systems. To do so, Configure must be run with -Duse64bits.
2566 If this doesn't make any sense to you, just accept the default 'n'.
2568 case "$use64bits" in
2569 $define|true|[yY]*) dflt='y';;
2572 rp='Try to use explicit 64-bit interfaces, if available?'
2585 case "$archname64" in
2586 '') archname64='' ;; # not a typo
2589 case "$use64bits" in
2590 "$define"|true|[yY]*)
2591 : Look for a hint-file generated 'call-back-unit'. If the
2592 : user has specified that a threading perl is to be built,
2593 : we may need to set or change some other defaults.
2594 if $test -f use64bits.cbu; then
2598 dec_osf|hpux|irix|solaris|unicos)
2599 # Known 64-bit capable platforms.
2603 $osname is not known to support 64-bit interfaces.
2604 Please let perlbug@perl.com know how to do that.
2606 Cannot continue, aborting.
2614 : determine the architecture name
2616 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2617 tarch=`arch`"-$osname"
2618 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2619 if uname -m > tmparch 2>&1 ; then
2620 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2621 -e 's/$/'"-$osname/" tmparch`
2629 case "$myarchname" in
2632 echo "(Your architecture name used to be $myarchname.)"
2639 *) dflt="$archname";;
2641 rp='What is your architecture name'
2644 case "$usethreads" in
2646 echo "Threads selected." >&4
2648 *-thread*) echo "...and architecture name already has -thread." >&4
2650 *) archname="$archname-thread"
2651 echo "...setting architecture name to $archname." >&4
2656 case "$usemultiplicity" in
2658 echo "Multiplicity selected." >&4
2660 *-multi*) echo "...and architecture name already has -multi." >&4
2662 *) archname="$archname-multi"
2663 echo "...setting architecture name to $archname." >&4
2668 case "$use64bits" in
2670 echo "Explicit 64-bitness selected." >&4
2671 case "$archname64" in
2676 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2678 *) archname="$archname-$archname64"
2679 echo "...setting architecture name to $archname." >&4
2689 $define|true) afs=true ;;
2690 $undef|false) afs=false ;;
2691 *) if test -d /afs; then
2699 echo "AFS may be running... I'll be extra cautious then..." >&4
2701 echo "AFS does not seem to be running..." >&4
2704 : decide how portable to be. Allow command line overrides.
2705 case "$d_portable" in
2707 *) d_portable="$define" ;;
2710 : set up shell script to do ~ expansion
2716 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2719 if $test -f /bin/csh; then
2720 /bin/csh -f -c "glob \$1"
2725 name=\`$expr x\$1 : '..\([^/]*\)'\`
2726 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2727 if $test ! -d "\$dir"; then
2729 echo "\$me: can't locate home directory for: \$name" >&2
2734 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2750 : now set up to get a file name
2754 cat <<'EOSC' >>getfile
2767 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2768 fn=`echo $fn | sed 's/(.*)//'`
2774 loc_file=`expr $fn : '.*:\(.*\)'`
2775 fn=`expr $fn : '\(.*\):.*'`
2783 */*) fullpath=true;;
2792 *e*) exp_file=true;;
2795 *p*) nopath_ok=true;;
2800 *d*) type='Directory';;
2801 *l*) type='Locate';;
2806 Locate) what='File';;
2811 case "$d_portable" in
2819 while test "$type"; do
2824 true) rp="$rp (~name ok)";;
2827 if test -f UU/getfile.ok && \
2828 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2847 value=`UU/filexp $ans`
2850 if test "$ans" != "$value"; then
2851 echo "(That expands to $value on this system.)"
2865 /*) value="$ansexp" ;;
2870 echo "I shall only accept a full path name, as in /bin/ls." >&4
2871 echo "Use a ! shell escape if you wish to check pathnames." >&4
2874 echo "Please give a full path name, starting with slash." >&4
2877 echo "Note that using ~name is ok provided it expands well." >&4
2890 if test -f "$ansexp"; then
2892 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2894 echo "($value is not a plain file, but that's ok.)"
2899 if test -d "$ansexp"; then
2904 if test -d "$ansexp"; then
2905 echo "(Looking for $loc_file in directory $value.)"
2906 value="$value/$loc_file"
2907 ansexp="$ansexp/$loc_file"
2909 if test -f "$ansexp"; then
2912 case "$nopath_ok" in
2913 true) case "$value" in
2915 *) echo "Assuming $value will be in people's path."
2931 if test "$fastread" = yes; then
2936 rp="$what $value doesn't exist. Use that name anyway?"
2957 : determine root of directory hierarchy where package will be installed.
2960 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2968 By default, $package will be installed in $dflt/bin, manual
2969 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2970 all installation directories. Typically set to /usr/local, but you
2971 may choose /usr if you wish to install $package among your system
2972 binaries. If you wish to have binaries under /bin but manual pages
2973 under /usr/local/man, that's ok: you will be prompted separately
2974 for each of the installation directories, the prefix being only used
2975 to set the defaults.
2979 rp='Installation prefix to use?'
2987 *) oldprefix="$prefix";;
2994 : set the prefixit variable, to compute a suitable default value
2995 prefixit='case "$3" in
2997 case "$oldprefix" in
2998 "") eval "$1=\"\$$2\"";;
3005 ""|" ") eval "$1=\"\$$2\"";;
3011 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3013 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3014 /*-$oldprefix/*|\~*-$oldprefix/*)
3015 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3016 *) eval "$1=\"\$$2\"";;
3020 : set the base revision
3023 : get the patchlevel
3025 echo "Getting the current patchlevel..." >&4
3026 if $test -r $rsrc/patchlevel.h;then
3027 patchlevel=`awk '/define[ ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3028 subversion=`awk '/define[ ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3033 $echo $n "(You have $package" $c
3036 *) $echo $n " $baserev" $c ;;
3038 $echo $n " patchlevel $patchlevel" $c
3039 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3042 if test 0 -eq "$subversion"; then
3043 version=`LC_ALL=C; export LC_ALL; \
3044 echo $baserev $patchlevel | \
3045 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3047 version=`LC_ALL=C; export LC_ALL; \
3048 echo $baserev $patchlevel $subversion | \
3049 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3051 : Figure out perl API version. Perhaps this should be in patchlevel.h
3052 if test "$subversion" -lt 50; then
3053 apiversion=`LC_ALL=C; export LC_ALL; \
3054 LANGUAGE=C; export LANGUAGE; \
3055 echo $baserev $patchlevel | \
3056 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3058 apiversion="$version"
3061 : determine where private library files go
3062 : Usual default is /usr/local/lib/perl5/$version.
3063 : Also allow things like /opt/perl/lib/$version, since
3064 : /opt/perl/lib/perl5... would be redundant.
3066 *perl*) set dflt privlib lib/$version ;;
3067 *) set dflt privlib lib/$package/$version ;;
3072 There are some auxiliary files for $package that need to be put into a
3073 private library directory that is accessible by everyone.
3077 rp='Pathname where the private library files will reside?'
3079 if $test "X$privlibexp" != "X$ansexp"; then
3083 privlibexp="$ansexp"
3087 Since you are running AFS, I need to distinguish the directory in which
3088 private files reside from the directory in which they are installed (and from
3089 which they are presumably copied to the former directory by occult means).
3092 case "$installprivlib" in
3093 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3094 *) dflt="$installprivlib";;
3097 rp='Where will private files be installed?'
3099 installprivlib="$ans"
3101 installprivlib="$privlibexp"
3104 : set the prefixup variable, to restore leading tilda escape
3105 prefixup='case "$prefixexp" in
3107 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3110 : determine where public architecture dependent libraries go
3113 : privlib default is /usr/local/lib/$package/$version
3114 : archlib default is /usr/local/lib/$package/$version/$archname
3115 : privlib may have an optional trailing /share.
3116 tdflt=`echo $privlib | $sed 's,/share$,,'`
3117 tdflt=$tdflt/$archname
3126 $spackage contains architecture-dependent library files. If you are
3127 sharing libraries in a heterogeneous environment, you might store
3128 these files in a separate location. Otherwise, you can just include
3129 them with the rest of the public library files.
3133 rp='Where do you want to put the public architecture-dependent libraries?'
3136 archlibexp="$ansexp"
3141 Since you are running AFS, I need to distinguish the directory in
3142 which architecture-dependent library files reside from the directory
3143 in which they are installed (and from which they are presumably copied
3144 to the former directory by occult means).
3147 case "$installarchlib" in
3148 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3149 *) dflt="$installarchlib";;
3152 rp='Where will architecture-dependent library files be installed?'
3154 installarchlib="$ans"
3156 installarchlib="$archlibexp"
3158 if $test X"$archlib" = X"$privlib"; then
3164 : make some quick guesses about what we are up against
3166 $echo $n "Hmm... $c"
3176 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3177 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3179 echo "Looks kind of like an OSF/1 system, but we'll see..."
3181 elif test `echo abc | tr a-z A-Z` = Abc ; then
3182 xxx=`./loc addbib blurfl $pth`
3183 if $test -f $xxx; then
3184 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3188 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3189 echo "Looks kind of like an extended USG system, but we'll see..."
3191 echo "Looks kind of like a USG system, but we'll see..."
3195 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3196 echo "Looks kind of like a BSD system, but we'll see..."
3200 echo "Looks kind of like a Version 7 system, but we'll see..."
3203 case "$eunicefix" in
3206 There is, however, a strange, musty smell in the air that reminds me of
3207 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3211 : it so happens the Eunice I know will not run shell scripts in Unix format
3215 echo "Congratulations. You aren't running Eunice."
3219 : Detect OS2. The p_ variable is set above in the Head.U unit.
3224 I have the feeling something is not exactly right, however...don't tell me...
3225 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3230 if test -f /xenix; then
3231 echo "Actually, this looks more like a XENIX system..."
3236 echo "It's not Xenix..."
3241 if test -f /venix; then
3242 echo "Actually, this looks more like a VENIX system..."
3249 echo "Nor is it Venix..."
3252 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3253 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3256 : see if setuid scripts can be secure
3259 Some kernels have a bug that prevents setuid #! scripts from being
3260 secure. Some sites have disabled setuid #! scripts because of this.
3262 First let's decide if your kernel supports secure setuid #! scripts.
3263 (If setuid #! scripts would be secure but have been disabled anyway,
3264 don't say that they are secure if asked.)
3269 if $test -d /dev/fd; then
3270 echo "#!$ls" >reflect
3271 chmod +x,u+s reflect
3272 ./reflect >flect 2>&1
3273 if $contains "/dev/fd" flect >/dev/null; then
3274 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3278 If you are not sure if they are secure, I can check but I'll need a
3279 username and password different from the one you are using right now.
3280 If you don't have such a username or don't want me to test, simply
3284 rp='Other username to test security of setuid scripts with?'
3289 case "$d_suidsafe" in
3290 '') echo "I'll assume setuid scripts are *not* secure." >&4
3293 echo "Well, the $hint value is *not* secure." >&4
3295 *) echo "Well, the $hint value *is* secure." >&4
3300 $rm -f reflect flect
3301 echo "#!$ls" >reflect
3302 chmod +x,u+s reflect
3305 echo '"su" will (probably) prompt you for '"$ans's password."
3306 su $ans -c './reflect >flect'
3307 if $contains "/dev/fd" flect >/dev/null; then
3308 echo "Okay, it looks like setuid scripts are secure." >&4
3311 echo "I don't think setuid scripts are secure." >&4
3316 rp='Does your kernel have *secure* setuid scripts?'
3319 [yY]*) val="$define";;
3324 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3325 echo "(That's for file descriptors, not floppy disks.)"
3331 $rm -f reflect flect
3333 : now see if they want to do setuid emulation
3336 case "$d_suidsafe" in
3339 echo "No need to emulate SUID scripts since they are secure here." >& 4
3343 Some systems have disabled setuid scripts, especially systems where
3344 setuid scripts cannot be secure. On systems where setuid scripts have
3345 been disabled, the setuid/setgid bits on scripts are currently
3346 useless. It is possible for $package to detect those bits and emulate
3347 setuid/setgid in a secure fashion. This emulation will only work if
3348 setuid scripts have been disabled in your kernel.
3352 "$define") dflt=y ;;
3355 rp="Do you want to do setuid/setgid emulation?"
3358 [yY]*) val="$define";;
3366 : determine where manual pages are on this system
3370 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3371 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3372 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3373 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3374 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3375 sysman=`./loc . /usr/man/man1 $syspath`
3378 if $test -d "$sysman"; then
3379 echo "System manual is in $sysman." >&4
3381 echo "Could not find manual pages in source form." >&4
3384 : see what memory models we can support
3387 $cat >pdp11.c <<'EOP'
3396 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3397 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3398 dflt='unsplit split'
3400 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3403 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3408 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3411 if $test -d /lib/large || $test -d /usr/lib/large; then
3414 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3423 Some systems have different model sizes. On most systems they are called
3424 small, medium, large, and huge. On the PDP11 they are called unsplit and
3425 split. If your system doesn't support different memory models, say "none".
3426 If you wish to force everything to one memory model, say "none" here and
3427 put the appropriate flags later when it asks you for other cc and ld flags.
3428 Venix systems may wish to put "none" and let the compiler figure things out.
3429 (In the following question multiple model names should be space separated.)
3431 The default for most systems is "none".
3434 rp="Which memory models are supported?"
3449 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3450 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3457 rp="What flag indicates separate I and D space?"
3465 *large*|*small*|*medium*|*huge*)
3472 rp="What flag indicates large model?"
3482 *huge*) case "$huge" in
3486 rp="What flag indicates huge model?"
3496 *medium*) case "$medium" in
3500 rp="What flag indicates medium model?"
3507 *) medium="$large";;
3510 *small*) case "$small" in
3514 rp="What flag indicates small model?"
3525 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3528 $rm -f pdp11.* pdp11
3530 : see if we need a special compiler
3538 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3539 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3553 On some older systems the default C compiler will not resolve multiple global
3554 references that happen to have the same name. On some such systems the "Mcc"
3555 command may be used to force these to be resolved. On other systems a "cc -M"
3556 command is required. (Note that the -M flag on other systems indicates a
3557 memory model to use!) If you have the Gnu C compiler, you might wish to use
3563 rp="Use which C compiler?"
3571 rp="Use which C compiler?"
3575 : Look for a hint-file generated 'call-back-unit'. Now that the
3576 : user has specified the compiler, we may need to set or change some
3578 if $test -f cc.cbu; then
3582 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3583 $cat >gccvers.c <<EOM
3588 printf("%s\n", __VERSION__);
3590 printf("%s\n", "1");
3596 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3597 gccversion=`./gccvers`
3598 case "$gccversion" in
3599 '') echo "You are not using GNU cc." ;;
3600 *) echo "You are using GNU cc $gccversion." ;;
3604 echo "*** WHOA THERE!!! ***" >&4
3605 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3606 case "$knowitall" in
3608 echo " You'd better start hunting for one and let me know about it." >&4
3614 case "$gccversion" in
3615 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3618 : What should the include directory be ?
3620 $echo $n "Hmm... $c"
3624 if $test -f /bin/mips && /bin/mips; then
3625 echo "Looks like a MIPS system..."
3626 $cat >usr.c <<'EOCP'
3627 #ifdef SYSTYPE_BSD43
3631 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3632 dflt='/bsd43/usr/include'
3636 mips_type='System V'
3638 $rm -f usr.c usr.out
3639 echo "and you're compiling with the $mips_type compiler and libraries."
3643 echo "Doesn't look like a MIPS system."
3653 case "$xxx_prompt" in
3656 rp='Where are the include files you want to use?'
3664 : see how we invoke the C preprocessor
3666 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3667 cat <<'EOT' >testcpp.c
3673 if test ! -f cppstdin; then
3674 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3676 echo "Keeping your $hint cppstdin wrapper."
3679 wrapper=`pwd`/cppstdin
3683 if $test "X$cppstdin" != "X" && \
3684 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3685 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3687 echo "You used to use $cppstdin $cppminus so we'll use that again."
3689 '') echo "But let's see if we can live without a wrapper..." ;;
3691 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3692 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3694 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3697 echo "(However, $cpprun $cpplast does not work, let's see...)"
3705 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3712 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3713 $cc -E <testcpp.c >testcpp.out 2>&1; \
3714 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3715 echo "Yup, it does."
3718 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3719 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3720 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3721 echo "Yup, it does."
3724 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3725 $cc -P <testcpp.c >testcpp.out 2>&1; \
3726 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3727 echo "Yipee, that works!"
3730 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3731 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3732 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3733 echo "At long last!"
3736 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3737 $cpp <testcpp.c >testcpp.out 2>&1; \
3738 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3743 $cpp - <testcpp.c >testcpp.out 2>&1; \
3744 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3745 echo "Hooray, it works! I was beginning to wonder."
3748 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3749 $wrapper <testcpp.c >testcpp.out 2>&1; \
3750 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 rp="No dice. I can't find a C preprocessor. Name one:"
3760 $x_cpp <testcpp.c >testcpp.out 2>&1
3761 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3762 echo "OK, that will do." >&4
3764 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3779 echo "Perhaps can we force $cc -E using a wrapper..."
3780 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3781 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3787 echo "Nope, we'll have to live without it..."
3801 "$wrapper"|'cppstdin') ;;
3802 *) $rm -f $wrapper;;
3804 $rm -f testcpp.c testcpp.out
3806 : Set private lib path
3809 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3814 '') dlist="$loclibpth $plibpth $glibpth";;
3815 *) dlist="$libpth";;
3818 : Now check and see which directories actually exist, avoiding duplicates
3822 if $test -d $xxx; then
3825 *) libpth="$libpth $xxx";;
3831 Some systems have incompatible or broken versions of libraries. Among
3832 the directories listed in the question below, please remove any you
3833 know not to be holding relevant libraries, and add any that are needed.
3834 Say "none" for none.
3845 rp="Directories to use for library searches?"
3852 : compute shared library extension
3855 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3865 On some systems, shared libraries may be available. Answer 'none' if
3866 you want to suppress searching of shared libraries for the remaining
3867 of this configuration.
3870 rp='What is the file extension used for shared libraries?'
3874 : Define several unixisms.
3875 : Hints files or command line option can be used to override them.
3876 : The convoluted testing is in case hints files set either the old
3879 '') case "$exe_ext" in
3881 *) _exe="$exe_ext" ;;
3886 '') case "$lib_ext" in
3893 '') case "$obj_ext" in
3900 '') case "$path_sep" in
3911 : Which makefile gets called first. This is used by make depend.
3912 case "$firstmakefile" in
3913 '') firstmakefile='makefile';;
3916 : Looking for optional libraries
3918 echo "Checking for optional libraries..." >&4
3923 case "$libswanted" in
3924 '') libswanted='c_s';;
3926 for thislib in $libswanted; do
3928 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3929 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3930 echo "Found -l$thislib (shared)."
3933 *) dflt="$dflt -l$thislib";;
3935 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3936 echo "Found -l$thislib (shared)."
3939 *) dflt="$dflt -l$thislib";;
3941 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3942 echo "Found -l$thislib."
3945 *) dflt="$dflt -l$thislib";;
3947 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3948 echo "Found -l$thislib."
3951 *) dflt="$dflt -l$thislib";;
3953 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3954 echo "Found -l${thislib}_s."
3957 *) dflt="$dflt -l${thislib}_s";;
3959 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3960 echo "Found -l$thislib."
3963 *) dflt="$dflt -l$thislib";;
3966 echo "No -l$thislib."
3977 ' '|'') dflt='none';;
3982 Some versions of Unix support shared libraries, which make executables smaller
3983 but make load time slightly longer.
3985 On some systems, mostly System V Release 3's, the shared library is included
3986 by putting the option "-lc_s" as the last thing on the cc command line when
3987 linking. Other systems use shared libraries by default. There may be other
3988 libraries needed to compile $package on your machine as well. If your system
3989 needs the "-lc_s" option, include it here. Include any other special libraries
3990 here as well. Say "none" for none.
3994 rp="Any additional libraries?"
4001 : determine optimize, if desired, or use for debug flag also
4003 ' '|$undef) dflt='none';;
4005 *) dflt="$optimize";;
4009 Some C compilers have problems with their optimizers. By default, $package
4010 compiles with the -O flag to use the optimizer. Alternately, you might want
4011 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4012 systems). Either flag can be specified here. To use neither flag, specify
4016 rp="What optimizer/debugger flag should be used?"
4020 'none') optimize=" ";;
4024 : We will not override a previous value, but we might want to
4025 : augment a hint file
4028 case "$gccversion" in
4029 1*) dflt='-fpcc-struct-return' ;;
4032 *-g*) dflt="$dflt -DDEBUGGING";;
4034 case "$gccversion" in
4035 2*) if test -d /etc/conf/kconfig.d &&
4036 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4045 case "$mips_type" in
4046 *BSD*|'') inclwanted="$locincpth $usrinc";;
4047 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4049 for thisincl in $inclwanted; do
4050 if $test -d $thisincl; then
4051 if $test x$thisincl != x$usrinc; then
4054 *) dflt="$dflt -I$thisincl";;
4060 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4062 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4070 *) dflt="$dflt -D$2";;
4075 set signal.h __LANGUAGE_C__; eval $inctest
4077 set signal.h LANGUAGE_C; eval $inctest
4081 none|recommended) dflt="$ccflags $dflt" ;;
4082 *) dflt="$ccflags";;
4090 Your C compiler may want other flags. For this question you should include
4091 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4092 but you should NOT include libraries or ld flags like -lwhatever. If you
4093 want $package to honor its debug switch, you should include -DDEBUGGING here.
4094 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4096 To use no flags, specify the word "none".
4102 rp="Any additional cc flags?"
4109 : the following weeds options from ccflags that are of no interest to cpp
4111 case "$gccversion" in
4112 1*) cppflags="$cppflags -D__GNUC__"
4114 case "$mips_type" in
4116 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4122 echo "Let me guess what the preprocessor flags are..." >&4
4136 *) ftry="$previous $flag";;
4138 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4139 >cpp1.out 2>/dev/null && \
4140 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4141 >cpp2.out 2>/dev/null && \
4142 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4143 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4145 cppflags="$cppflags $ftry"
4155 *-*) echo "They appear to be: $cppflags";;
4157 $rm -f cpp.c cpp?.out
4161 : flags used in final linking phase
4163 '') if ./venix; then
4169 *-posix*) dflt="$dflt -posix" ;;
4172 *) dflt="$ldflags";;
4175 : Try to guess additional flags to pick up local libraries.
4176 for thislibdir in $libpth; do
4177 case " $loclibpth " in
4180 *"-L$thislibdir "*) ;;
4181 *) dflt="$dflt -L$thislibdir" ;;
4193 Your C linker may need flags. For this question you should
4194 include -L/whatever and any other flags used by the C linker, but you
4195 should NOT include libraries like -lwhatever.
4197 Make sure you include the appropriate -L/path flags if your C linker
4198 does not normally search all of the directories you specified above,
4201 To use no flags, specify the word "none".
4205 rp="Any additional ld flags (NOT including libraries)?"
4211 rmlist="$rmlist pdp11"
4215 echo "Checking your choice of C compiler and flags for coherency..." >&4
4216 $cat > try.c <<'EOF'
4218 int main() { printf("Ok\n"); exit(0); }
4220 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4222 $cat >try.msg <<'EOM'
4223 I've tried to compile and run the following simple program:
4226 $cat try.c >> try.msg
4228 $cat >> try.msg <<EOM
4235 and I got the following output:
4239 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4240 if sh -c './try' >>try.msg 2>&1; then
4244 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4247 cat >> try.msg <<'EOQS'
4248 If $libs contains -lsfio, and sfio is mis-configured, then it
4249 sometimes (apparently) runs and exits with a 0 status, but with no
4250 output! It may have to do with sfio's use of _exit vs. exit.
4253 rp="You have a big problem. Shall I abort Configure"
4260 echo "The program compiled OK, but exited with status $?." >>try.msg
4261 rp="You have a problem. Shall I abort Configure"
4265 echo "I can't compile the test program." >>try.msg
4266 rp="You have a BIG problem. Shall I abort Configure"
4272 case "$knowitall" in
4274 echo "(The supplied flags or libraries might be incorrect.)"
4282 *) echo "Ok. Stopping Configure." >&4
4287 n) echo "OK, that should do.";;
4289 $rm -f try try.* core
4291 : determine filename position in cpp output
4293 echo "Computing filename position in cpp output for #include directives..." >&4
4294 echo '#include <stdio.h>' > foo.c
4297 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4298 $grep '^[ ]*#.*stdio\.h' | \
4299 while read cline; do
4302 while $test \$# -gt 0; do
4303 if $test -r \`echo \$1 | $tr -d '"'\`; then
4308 pos=\`expr \$pos + 1\`
4320 *) pos="${fieldn}th";;
4322 echo "Your cpp writes the filename in the $pos field of the line."
4324 : locate header file
4329 if test -f $usrinc/\$wanted; then
4330 echo "$usrinc/\$wanted"
4333 awkprg='{ print \$$fieldn }'
4334 echo "#include <\$wanted>" > foo\$\$.c
4335 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4336 $grep "^[ ]*#.*\$wanted" | \
4337 while read cline; do
4338 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4340 */\$wanted) echo "\$name"; exit 0;;
4351 : define an alternate in-header-list? function
4352 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4353 cont=true; xxf="echo \"<\$1> found.\" >&4";
4354 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4355 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4357 case $# in 4) instead=instead;; *) instead="at last";; esac;
4358 while $test "$cont"; do
4360 var=$2; eval "was=\$$2";
4361 if $test "$xxx" && $test -r "$xxx";
4363 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4366 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4367 set $yyy; shift; shift; yyy=$@;
4368 case $# in 0) cont="";;
4369 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4370 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4371 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4372 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4376 do set $yyy; var=$2; eval "was=\$$2";
4377 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4378 set $yyy; shift; shift; yyy=$@;
4381 : see if this is a malloc.h system
4382 set malloc.h i_malloc
4385 : see if stdlib is available
4386 set stdlib.h i_stdlib
4389 : determine which malloc to compile in
4391 case "$usemymalloc" in
4392 ''|[yY]*|true|$define) dflt='y' ;;
4395 rp="Do you wish to attempt to use the malloc that comes with $package?"
4401 mallocsrc='malloc.c'
4402 mallocobj="malloc$_o"
4403 d_mymalloc="$define"
4406 : Remove malloc from list of libraries to use
4407 echo "Removing unneeded -lmalloc from library list" >&4
4408 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4411 echo "libs = $libs" >&4
4423 : compute the return types of malloc and free
4425 $cat >malloc.c <<END
4429 #include <sys/types.h>
4443 case "$malloctype" in
4445 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4452 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4456 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4463 echo "Your system uses $freetype free(), it would seem." >&4
4465 : Cruising for prototypes
4467 echo "Checking out function prototypes..." >&4
4468 $cat >prototype.c <<'EOCP'
4469 int main(int argc, char *argv[]) {
4472 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4473 echo "Your C compiler appears to support function prototypes."
4476 echo "Your C compiler doesn't seem to understand function prototypes."
4483 case "$prototype" in
4485 *) ansi2knr='ansi2knr'
4490 This version of $package can only be compiled by a compiler that
4491 understands function prototypes. Unfortunately, your C compiler
4493 doesn't seem to understand them. Sorry about that.
4495 If GNU cc is available for your system, perhaps you could try that instead.
4497 Eventually, we hope to support building Perl with pre-ANSI compilers.
4498 If you would like to help in that effort, please contact <perlbug@perl.org>.
4500 Aborting Configure now.
4506 : determine where public executables go
4511 rp='Pathname where the public executables will reside?'
4513 if $test "X$ansexp" != "X$binexp"; then
4521 Since you are running AFS, I need to distinguish the directory in which
4522 executables reside from the directory in which they are installed (and from
4523 which they are presumably copied to the former directory by occult means).
4526 case "$installbin" in
4527 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4528 *) dflt="$installbin";;
4531 rp='Where will public executables be installed?'
4535 installbin="$binexp"
4538 : determine whether to install perl also as /usr/bin/perl
4541 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4543 Many scripts expect to perl to be installed as /usr/bin/perl.
4544 I can install the perl you are about to compile also as /usr/bin/perl
4545 (in addition to $installbin/perl).
4547 case "$installusrbinperl" in
4548 "$undef"|[nN]*) dflt='n';;
4551 rp="Do you want to install perl as /usr/bin/perl?"
4554 [yY]*) val="$define";;
4560 set installusrbinperl
4563 : define a shorthand compile call
4567 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4568 : define a shorthand compile call for compilations that should be ok.
4572 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4575 echo "Checking for GNU C Library..." >&4
4576 cat >gnulibc.c <<EOM
4588 if eval $compile_ok && ./gnulibc; then
4590 echo "You are using the GNU C Library"
4593 echo "You are not using the GNU C Library"
4599 : see if nm is to be used to determine whether a symbol is defined or not
4603 case "$d_gnulibc" in
4606 echo "nm probably won't work on the GNU C Library." >&4
4612 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4614 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4615 echo "'nm' won't be sufficient on this sytem." >&4
4621 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4622 if $test $dflt -gt 20; then
4632 true|$define) dflt=y;;
4639 I can use $nm to extract the symbols from your C libraries. This
4640 is a time consuming task which may generate huge output on the disk (up
4641 to 3 megabytes) but that should make the symbols extraction faster. The
4642 alternative is to skip the 'nm' extraction part and to compile a small
4643 test program instead to determine whether each symbol is present. If
4644 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4645 this may be the best solution.
4647 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4650 rp="Shall I use $nm to extract C symbols from the libraries?"
4653 [Nn]*) usenm=false;;
4662 : nm options which may be necessary
4664 '') if $test -f /mach_boot; then
4666 elif $test -d /usr/ccs/lib; then
4667 nm_opt='-p' # Solaris (and SunOS?)
4668 elif $test -f /dgux; then
4670 elif $test -f /lib64/rld; then
4671 nm_opt='-p' # 64-bit Irix
4677 : nm options which may be necessary for shared libraries but illegal
4678 : for archive libraries. Thank you, Linux.
4679 case "$nm_so_opt" in
4680 '') case "$myuname" in
4682 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4683 nm_so_opt='--dynamic'
4692 : get list of predefined functions in a handy place
4697 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4704 *) for thislib in $libs; do
4707 : Handle C library specially below.
4710 thislib=`echo $thislib | $sed -e 's/^-l//'`
4711 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4713 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4715 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4717 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4719 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4721 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4723 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4728 libnames="$libnames $try"
4730 *) libnames="$libnames $thislib" ;;
4739 for xxx in $libpth; do
4740 $test -r $1 || set $xxx/libc.$so
4741 : The messy sed command sorts on library version numbers.
4743 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4744 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4746 s/[0-9][0-9]*/0000&/g
4747 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4750 sort | $sed -e 's/^.* //'`
4753 $test -r $1 || set /usr/ccs/lib/libc.$so
4754 $test -r $1 || set /lib/libsys_s$_a
4760 if $test -r "$1"; then
4761 echo "Your (shared) C library seems to be in $1."
4763 elif $test -r /lib/libc && $test -r /lib/clib; then
4764 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4766 libc='/lib/clib /lib/libc'
4767 if $test -r /lib/syslib; then
4768 echo "(Your math library is in /lib/syslib.)"
4769 libc="$libc /lib/syslib"
4771 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4772 echo "Your C library seems to be in $libc, as you said before."
4773 elif $test -r $incpath/usr/lib/libc$_a; then
4774 libc=$incpath/usr/lib/libc$_a;
4775 echo "Your C library seems to be in $libc. That's fine."
4776 elif $test -r /lib/libc$_a; then
4778 echo "Your C library seems to be in $libc. You're normal."
4780 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4782 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4783 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4784 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4786 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4788 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4791 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4793 if $test -r "$tans"; then
4794 echo "Your C library seems to be in $tans, of all places."
4800 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4804 If the guess above is wrong (which it might be if you're using a strange
4805 compiler, or your machine supports multiple models), you can override it here.
4810 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4812 I can't seem to find your C library. I've looked in the following places:
4815 $sed 's/^/ /' libpath
4818 None of these seems to contain your C library. I need to get its name...
4823 rp='Where is your C library?'
4828 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4829 set X `cat libnames`
4832 case $# in 1) xxx=file; esac
4833 echo "Extracting names from the following $xxx for later perusal:" >&4
4835 $sed 's/^/ /' libnames >&4
4837 $echo $n "This may take a while...$c" >&4
4841 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4842 *) $nm $nm_opt $file 2>/dev/null;;
4847 $grep fprintf libc.tmp > libc.ptf
4848 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4849 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4851 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4853 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4855 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4857 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4859 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4861 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4863 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4865 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4867 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4869 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4871 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4873 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4875 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4876 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4878 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4880 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4882 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4884 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4886 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4888 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4890 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4892 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4894 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4896 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4898 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4900 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4902 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4904 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4906 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4909 $nm -p $* 2>/dev/null >libc.tmp
4910 $grep fprintf libc.tmp > libc.ptf
4911 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4912 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4918 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4920 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4921 for thisname in $libnames $libc; do
4922 $ar t $thisname >>libc.tmp
4924 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4926 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4927 # Repeat libc to extract forwarders to DLL entries too
4928 for thisname in $libnames $libc; do
4929 $ar tv $thisname >>libc.tmp
4930 # Revision 50 of EMX has bug in $ar.
4931 # it will not extract forwarders to DLL entries
4932 # Use emximp which will extract exactly them.
4933 emximp -o tmp.imp $thisname \
4935 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4936 < tmp.imp >>libc.tmp
4939 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4942 echo "$ar didn't seem to work right." >&4
4943 echo "Maybe this is a Cray...trying bld instead..." >&4
4944 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4946 for thisname in $libnames; do
4948 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4949 $ar t $thisname >>libc.tmp
4953 echo "That didn't work either. Giving up." >&4
4960 if $test -f /lib/syscalls.exp; then
4962 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4963 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4967 $rm -f libnames libpath
4969 : see if dld is available
4973 : is a C symbol defined?
4976 -v) tf=libc.tmp; tc=""; tdc="";;
4977 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4978 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4981 case "$reuseval-$4" in
4983 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4989 if $contains $tlook $tf >/dev/null 2>&1;
4994 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4995 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5003 $define) tval=true;;
5009 : define an is-in-libc? function
5010 inlibc='echo " "; td=$define; tu=$undef;
5011 sym=$1; var=$2; eval "was=\$$2";
5013 case "$reuseval$was" in
5023 echo "$sym() found." >&4;
5024 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5026 echo "$sym() NOT found." >&4;
5027 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5031 $define) echo "$sym() found." >&4;;
5032 *) echo "$sym() NOT found." >&4;;
5036 : see if dlopen exists
5043 : determine which dynamic loading, if any, to compile in
5045 dldir="ext/DynaLoader"
5058 $define) dflt='y' ;;
5061 $define) dflt='y' ;;
5063 : Does a dl_xxx.xs file exist for this operating system
5064 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5067 rp="Do you wish to use dynamic loading?"
5074 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5075 dflt="$dldir/dl_${osname}.xs"
5076 elif $test "$d_dlopen" = "$define" ; then
5077 dflt="$dldir/dl_dlopen.xs"
5078 elif $test "$i_dld" = "$define" ; then
5079 dflt="$dldir/dl_dld.xs"
5084 *) dflt="$dldir/$dlsrc"
5087 echo "The following dynamic loading files are available:"
5088 : Can not go over to $dldir because getfile has path hard-coded in.
5089 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5090 rp="Source file to use for dynamic loading"
5092 # XXX This getfile call will fail the existence check if you try
5093 # building away from $src (this is not supported yet).
5097 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5101 Some systems may require passing special flags to $cc -c to
5102 compile modules that will be used to create a shared library.
5103 To use no flags, say "none".
5106 case "$cccdlflags" in
5107 '') case "$gccversion" in
5108 '') case "$osname" in
5110 next) dflt='none' ;;
5111 irix*) dflt='-KPIC' ;;
5112 svr4*|esix*|solaris) dflt='-KPIC' ;;
5113 sunos) dflt='-pic' ;;
5117 *) case "$osname" in
5118 svr4*|esix*|solaris) dflt='-fPIC' ;;
5123 *) dflt="$cccdlflags" ;;
5125 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5128 none) cccdlflags=' ' ;;
5129 *) cccdlflags="$ans" ;;
5134 Some systems use ld to create libraries that can be dynamically loaded,
5135 while other systems (such as those using ELF) use $cc.
5139 '') $cat >try.c <<'EOM'
5140 /* Test for whether ELF binaries are produced */
5145 int i = open("a.out",O_RDONLY);
5148 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5149 exit(0); /* succeed (yes, it's ELF) */
5154 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5156 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5160 echo "I'll use ld to build dynamic libraries."
5169 rp="What command should be used to create dynamic libraries?"
5175 Some systems may require passing special flags to $ld to create a
5176 library that can be dynamically loaded. If your ld flags include
5177 -L/other/path options to locate libraries outside your loader's normal
5178 search path, you may need to specify those -L options here as well. To
5179 use no flags, say "none".
5182 case "$lddlflags" in
5183 '') case "$osname" in
5184 beos) dflt='-nostart' ;;
5186 linux|irix*) dflt='-shared' ;;
5187 next) dflt='none' ;;
5188 solaris) dflt='-G' ;;
5189 sunos) dflt='-assert nodefinitions' ;;
5190 svr4*|esix*) dflt="-G $ldflags" ;;
5194 *) dflt="$lddlflags" ;;
5197 : Try to guess additional flags to pick up local libraries.
5198 : Be careful not to append to a plain 'none'
5202 for thisflag in $ldflags; do
5207 *) dflt="$dflt $thisflag" ;;
5214 ''|' ') dflt='none' ;;
5217 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5220 none) lddlflags=' ' ;;
5221 *) lddlflags="$ans" ;;
5226 Some systems may require passing special flags to $cc to indicate that
5227 the resulting executable will use dynamic linking. To use no flags,
5231 case "$ccdlflags" in
5232 '') case "$osname" in
5233 hpux) dflt='-Wl,-E' ;;
5234 linux) dflt='-rdynamic' ;;
5235 next) dflt='none' ;;
5236 sunos) dflt='none' ;;
5240 *) dflt="$ccdlflags" ;;
5242 rp="Any special flags to pass to $cc to use dynamic loading?"
5245 none) ccdlflags=' ' ;;
5246 *) ccdlflags="$ans" ;;
5260 # No dynamic loading being used, so don't bother even to prompt.
5263 *) case "$useshrplib" in
5264 '') case "$osname" in
5265 svr4*|dgux|dynixptx|esix|powerux|beos)
5267 also='Building a shared libperl is required for dynamic loading to work on your system.'
5272 also='Building a shared libperl is needed for MAB support.'
5290 The perl executable is normally obtained by linking perlmain.c with
5291 libperl${_a}, any static extensions (usually just DynaLoader), and
5292 any other libraries needed on this system (such as -lm, etc.). Since
5293 your system supports dynamic loading, it is probably possible to build
5294 a shared libperl.$so. If you will have more than one executable linked
5295 to libperl.$so, this will significantly reduce the size of each
5296 executable, but it may have a noticeable affect on performance. The
5297 default is probably sensible for your system.
5301 rp="Build a shared libperl.$so (y/n)"
5306 # Why does next4 have to be so different?
5307 case "${osname}${osvers}" in
5308 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5309 os2*) xxx='' ;; # Nothing special needed.
5311 *) xxx='LD_LIBRARY_PATH' ;;
5313 if test X"$xxx" != "X"; then
5314 $cat <<EOM | $tee -a ../config.msg >&4
5316 To build perl, you must add the current working directory to your
5317 $xxx environment variable before running make. You can do
5319 $xxx=\`pwd\`:\$$xxx; export $xxx
5320 for Bourne-style shells, or
5322 for Csh-style shells. You *MUST* do this before running make.
5327 *) useshrplib='false' ;;
5332 case "$useshrplib" in
5336 # Figure out a good name for libperl.so. Since it gets stored in
5337 # a version-specific architecture-dependent library, the version
5338 # number isn't really that important, except for making cc/ld happy.
5340 # A name such as libperl.so.3.1
5341 majmin="libperl.$so.$patchlevel.$subversion"
5342 # A name such as libperl.so.301
5343 majonly=`echo $patchlevel $subversion |
5344 $awk '{printf "%d%02d", $1, $2}'`
5345 majonly=libperl.$so.$majonly
5346 # I'd prefer to keep the os-specific stuff here to a minimum, and
5347 # rely on figuring it out from the naming of libc.
5348 case "${osname}${osvers}" in
5351 # XXX How handle the --version stuff for MAB?
5353 linux*) # ld won't link with a bare -lperl otherwise.
5356 *) # Try to guess based on whether libc has major.minor.
5358 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5359 *libc.$so.[0-9]*) dflt=$majonly ;;
5360 *) dflt=libperl.$so ;;
5370 I need to select a good name for the shared libperl. If your system uses
5371 library names with major and minor numbers, then you might want something
5372 like $majmin. Alternatively, if your system uses a single version
5373 number for shared libraries, then you might want to use $majonly.
5374 Or, your system might be quite happy with a simple libperl.$so.
5376 Since the shared libperl will get installed into a version-specific
5377 architecture-dependent directory, the version number of the shared perl
5378 library probably isn't important, so the default should be o.k.
5381 rp='What name do you want to give to the shared libperl?'
5384 echo "Ok, I'll use $libperl"
5387 libperl="libperl${_a}"
5391 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5395 WARNING: Use of the shrpdir variable for the installation location of
5396 the shared $libperl is not supported. It was never documented and
5397 will not work in this version. Let me (perlbug@perl.com)
5398 know of any problems this may cause.
5404 But your current setting of $shrpdir is
5405 the default anyway, so it's harmless.
5410 Further, your current attempted setting of $shrpdir
5411 conflicts with the value of $archlibexp/CORE
5412 that installperl will use.
5419 # How will the perl executable find the installed shared $libperl?
5420 # Add $xxx to ccdlflags.
5421 # If we can't figure out a command-line option, use $shrpenv to
5422 # set env LD_RUN_PATH. The main perl makefile uses this.
5423 shrpdir=$archlibexp/CORE
5426 if "$useshrplib"; then
5429 # We'll set it in Makefile.SH...
5435 xxx="-Wl,-R$shrpdir"
5437 linux|irix*|dec_osf)
5438 xxx="-Wl,-rpath,$shrpdir"
5441 # next doesn't like the default...
5444 # beos doesn't like the default, either.
5447 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5453 # Only add $xxx if it isn't already in ccdlflags.
5454 case " $ccdlflags " in
5456 *) ccdlflags="$ccdlflags $xxx"
5459 Adding $xxx to the flags
5460 passed to $ld so that the perl executable will find the
5461 installed shared $libperl.
5469 # Respect a hint or command-line value.
5471 '') shrpenv="$tmp_shrpenv" ;;
5474 : determine where manual pages go
5475 set man1dir man1dir none
5479 $spackage has manual pages available in source form.
5483 echo "However, you don't have nroff, so they're probably useless to you."
5485 '') man1dir="none";;
5488 echo "If you don't want the manual sources installed, answer 'none'."
5493 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5494 lookpath="$lookpath $prefixexp/man/p_man/man1"
5495 lookpath="$lookpath $prefixexp/man/u_man/man1"
5496 lookpath="$lookpath $prefixexp/man/man.1"
5498 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5499 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5509 rp="Where do the main $spackage manual pages (source) go?"
5511 if $test "X$man1direxp" != "X$ansexp"; then
5515 man1direxp="$ansexp"
5523 Since you are running AFS, I need to distinguish the directory in which
5524 manual pages reside from the directory in which they are installed (and from
5525 which they are presumably copied to the former directory by occult means).
5528 case "$installman1dir" in
5529 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5530 *) dflt="$installman1dir";;
5533 rp='Where will man pages be installed?'
5535 installman1dir="$ans"
5537 installman1dir="$man1direxp"
5540 : What suffix to use on installed man pages
5547 rp="What suffix should be used for the main $spackage man pages?"
5549 '') case "$man1dir" in
5563 *) dflt="$man1ext";;
5570 : see if we can have long filenames
5572 rmlist="$rmlist /tmp/cf$$"
5573 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5574 first=123456789abcdef
5575 second=/tmp/cf$$/$first
5576 $rm -f $first $second
5577 if (echo hi >$first) 2>/dev/null; then
5578 if $test -f 123456789abcde; then
5579 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5582 if (echo hi >$second) 2>/dev/null; then
5583 if $test -f /tmp/cf$$/123456789abcde; then
5585 That's peculiar... You can have filenames longer than 14 characters, but only
5586 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5587 I shall consider your system cannot support long filenames at all.
5591 echo 'You can have filenames longer than 14 characters.' >&4
5596 How confusing! Some of your filesystems are sane enough to allow filenames
5597 longer than 14 characters but some others like /tmp can't even think about them.
5598 So, for now on, I shall assume your kernel does not allow them at all.
5605 You can't have filenames longer than 14 chars. You can't even think about them!
5611 $rm -rf /tmp/cf$$ 123456789abcde*
5613 : determine where library module manual pages go
5614 set man3dir man3dir none
5618 $spackage has manual pages for many of the library modules.
5624 However, you don't have nroff, so they're probably useless to you.
5627 '') man3dir="none";;
5631 case "$d_flexfnam" in
5634 However, your system can't handle the long file names like File::Basename.3.
5637 '') man3dir="none";;
5641 echo "If you don't want the manual sources installed, answer 'none'."
5642 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5644 '') case "$prefix" in
5645 *$prog*) dflt=`echo $man1dir |
5646 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5647 *) dflt="$privlib/man/man3" ;;
5651 *) dflt="$man3dir" ;;
5656 rp="Where do the $package library man pages (source) go?"
5658 if test "X$man3direxp" != "X$ansexp"; then
5663 man3direxp="$ansexp"
5671 Since you are running AFS, I need to distinguish the directory in which
5672 manual pages reside from the directory in which they are installed (and from
5673 which they are presumably copied to the former directory by occult means).
5676 case "$installman3dir" in
5677 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5678 *) dflt="$installman3dir";;
5681 rp='Where will man pages be installed?'
5683 installman3dir="$ans"
5685 installman3dir="$man3direxp"
5688 : What suffix to use on installed man pages
5695 rp="What suffix should be used for the $package library man pages?"
5697 '') case "$man3dir" in
5711 *) dflt="$man3ext";;
5718 : see if we have to deal with yellow pages, now NIS.
5719 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5720 if $test -f /usr/etc/nibindd; then
5722 echo "I'm fairly confident you're on a NeXT."
5724 rp='Do you get the hosts file via NetInfo?'
5733 y*) hostcat='nidump hosts .';;
5734 *) case "$hostcat" in
5735 nidump*) hostcat='';;
5745 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5753 rp='Are you getting the hosts file via yellow pages?'
5756 y*) hostcat='ypcat hosts';;
5757 *) hostcat='cat /etc/hosts';;
5763 '') hostcat='cat /etc/hosts';;
5766 '') groupcat='cat /etc/group';;
5769 '') passcat='cat /etc/passwd';;
5772 : now get the host name
5774 echo "Figuring out host name..." >&4
5775 case "$myhostname" in
5777 echo 'Maybe "hostname" will work...'
5778 if tans=`sh -c hostname 2>&1` ; then
5786 if $test "$cont"; then
5788 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5789 if tans=`cat /etc/systemid 2>&1` ; then
5791 phostname='cat /etc/systemid'
5792 echo "Whadyaknow. Xenix always was a bit strange..."
5795 elif $test -r /etc/systemid; then
5796 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5799 if $test "$cont"; then
5800 echo 'No, maybe "uuname -l" will work...'
5801 if tans=`sh -c 'uuname -l' 2>&1` ; then
5803 phostname='uuname -l'
5805 echo 'Strange. Maybe "uname -n" will work...'
5806 if tans=`sh -c 'uname -n' 2>&1` ; then
5808 phostname='uname -n'
5810 echo 'Oh well, maybe I can mine it out of whoami.h...'
5811 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5812 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5813 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5815 case "$myhostname" in
5816 '') echo "Does this machine have an identity crisis or something?"
5819 echo "Well, you said $myhostname before..."
5820 phostname='echo $myhostname';;
5826 : you do not want to know about this
5831 if $test "$myhostname" ; then
5833 rp='Your host name appears to be "'$myhostname'".'" Right?"
5841 : bad guess or no guess
5842 while $test "X$myhostname" = X ; do
5844 rp="Please type the (one word) name of your host:"
5849 : translate upper to lower if necessary
5850 case "$myhostname" in
5852 echo "(Normalizing case in your host name)"
5853 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5857 case "$myhostname" in
5859 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5860 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5861 echo "(Trimming domain name from host name--host name is now $myhostname)"
5863 *) case "$mydomain" in
5866 test "X$hostcat" = "Xypcat hosts" &&
5867 ypmatch "$myhostname" hosts 2>/dev/null |\
5868 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5871 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5872 /[ ]$myhostname[ . ]/p" > hosts
5875 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5876 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5877 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5878 hosts | $sort | $uniq | \
5879 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5880 case `$echo X$dflt` in
5881 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5884 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5889 tans=`./loc resolv.conf X /etc /usr/etc`
5890 if $test -f "$tans"; then
5891 echo "(Attempting domain name extraction from $tans)"
5892 dflt=.`$sed -n -e 's/ / /g' \
5893 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5894 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5896 .) dflt=.`$sed -n -e 's/ / /g' \
5897 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5898 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5905 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5906 dflt=.`sh -c domainname 2>/dev/null`
5909 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5914 .) echo "(Lost all hope -- silly guess then)"
5920 *) dflt="$mydomain";;
5924 rp="What is your domain name?"
5934 : translate upper to lower if necessary
5937 echo "(Normalizing case in your domain name)"
5938 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5942 : a little sanity check here
5943 case "$phostname" in
5946 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5947 $myhostname$mydomain|$myhostname) ;;
5949 case "$phostname" in
5951 echo "(That doesn't agree with your whoami.h file, by the way.)"
5954 echo "(That doesn't agree with your $phostname command, by the way.)"
5964 I need to get your e-mail address in Internet format if possible, i.e.
5965 something like user@host.domain. Please answer accurately since I have
5966 no easy means to double check it. The default value provided below
5967 is most probably close to the reality but may not be valid from outside
5968 your organization...
5972 while test "$cont"; do
5974 '') dflt="$cf_by@$myhostname$mydomain";;
5975 *) dflt="$cf_email";;
5977 rp='What is your e-mail address?'
5983 rp='Address does not look like an Internet one. Use it anyway?'
5999 If you or somebody else will be maintaining perl at your site, please
6000 fill in the correct e-mail address here so that they may be contacted
6001 if necessary. Currently, the "perlbug" program included with perl
6002 will send mail to this address in addition to perlbug@perl.com. You may
6003 enter "none" for no administrator.
6006 case "$perladmin" in
6007 '') dflt="$cf_email";;
6008 *) dflt="$perladmin";;
6010 rp='Perl administrator e-mail address'
6014 : figure out how to guarantee perl startup
6015 case "$startperl" in
6017 case "$sharpbang" in
6021 I can use the #! construct to start perl on your system. This will
6022 make startup of perl scripts faster, but may cause problems if you
6023 want to share those scripts and perl is not in a standard place
6024 ($binexp/perl) on all your platforms. The alternative is to force
6025 a shell by starting the script with a single ':' character.
6029 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6032 none) startperl=": # use perl";;
6033 *) startperl="#!$ans"
6034 if $test 30 -lt `echo "$ans" | wc -c`; then
6037 WARNING: Some systems limit the #! command to 32 characters.
6038 If you experience difficulty running Perl scripts with #!, try
6039 installing Perl in a directory with a shorter pathname.
6045 *) startperl=": # use perl"
6050 echo "I'll use $startperl to start perl scripts."
6052 : figure best path for perl in scripts
6055 perlpath="$binexp/perl"
6056 case "$startperl" in
6061 I will use the "eval 'exec'" idiom to start Perl on your system.
6062 I can use the full path of your Perl binary for this purpose, but
6063 doing so may cause problems if you want to share those scripts and
6064 Perl is not always in a standard place ($binexp/perl).
6068 rp="What path shall I use in \"eval 'exec'\"?"
6075 case "$startperl" in
6077 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6080 : determine where public executable scripts go
6081 set scriptdir scriptdir
6083 case "$scriptdir" in
6086 : guess some guesses
6087 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6088 $test -d /usr/share/bin && dflt=/usr/share/bin
6089 $test -d /usr/local/script && dflt=/usr/local/script
6090 $test -d $prefixexp/script && dflt=$prefixexp/script
6094 *) dflt="$scriptdir"
6099 Some installations have a separate directory just for executable scripts so
6100 that they can mount it across multiple architectures but keep the scripts in
6101 one spot. You might, for example, have a subdirectory of /usr/share for this.
6102 Or you might just lump your scripts in with all your other executables.
6106 rp='Where do you keep publicly executable scripts?'
6108 if $test "X$ansexp" != "X$scriptdirexp"; then
6112 scriptdirexp="$ansexp"
6116 Since you are running AFS, I need to distinguish the directory in which
6117 scripts reside from the directory in which they are installed (and from
6118 which they are presumably copied to the former directory by occult means).
6121 case "$installscript" in
6122 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6123 *) dflt="$installscript";;
6126 rp='Where will public scripts be installed?'
6128 installscript="$ans"
6130 installscript="$scriptdirexp"
6133 : determine where site specific libraries go.
6134 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6135 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6137 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6138 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6143 The installation process will also create a directory for
6144 site-specific extensions and modules. Some users find it convenient
6145 to place all local files in this directory rather than in the main
6146 distribution directory.
6150 rp='Pathname for the site-specific library files?'
6152 if $test "X$sitelibexp" != "X$ansexp"; then
6156 sitelibexp="$ansexp"
6160 Since you are running AFS, I need to distinguish the directory in
6161 which site-specific files reside from the directory in which they are
6162 installed (and from which they are presumably copied to the former
6163 directory by occult means).
6166 case "$installsitelib" in
6167 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6168 *) dflt="$installsitelib";;
6171 rp='Where will site-specific files be installed?'
6173 installsitelib="$ans"
6175 installsitelib="$sitelibexp"
6178 : determine where site specific architecture-dependent libraries go.
6179 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6180 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6181 : sitelib may have an optional trailing /share.
6182 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6183 tdflt="$tdflt/$archname"
6184 set sitearch sitearch none
6187 '') dflt="$tdflt" ;;
6188 *) dflt="$sitearch" ;;
6192 The installation process will also create a directory for
6193 architecture-dependent site-specific extensions and modules.
6197 rp='Pathname for the site-specific architecture-dependent library files?'
6199 if $test "X$sitearchexp" != "X$ansexp"; then
6203 sitearchexp="$ansexp"
6207 Since you are running AFS, I need to distinguish the directory in
6208 which site-specific architecture-dependent library files reside from
6209 the directory in which they are installed (and from which they are
6210 presumably copied to the former directory by occult means).
6213 case "$installsitearch" in
6214 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6215 *) dflt="$installsitearch";;
6218 rp='Where will site-specific architecture-dependent files be installed?'
6220 installsitearch="$ans"
6222 installsitearch="$sitearchexp"
6227 Previous version of $package used the standard IO mechanisms as defined
6228 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6229 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6230 the default. This abstraction layer can use AT&T's sfio (if you already
6231 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6232 problems with some extension modules. Using PerlIO with stdio is safe,
6233 but it is slower than plain stdio and therefore is not the default.
6235 If this doesn't make any sense to you, just accept the default 'n'.
6237 case "$useperlio" in
6238 $define|true|[yY]*) dflt='y';;
6241 rp='Use the experimental PerlIO abstraction layer?'
6248 echo "Ok, doing things the stdio way"
6255 : Check how to convert floats to strings.
6256 if test "X$d_Gconvert" = X; then
6258 echo "Checking for an efficient way to convert floats to strings."
6261 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6262 char *myname = "gconvert";
6265 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6266 char *myname = "gcvt";
6269 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6270 char *myname = "sprintf";
6276 checkit(expect, got)
6280 if (strcmp(expect, got)) {
6281 printf("%s oddity: Expected %s, got %s\n",
6282 myname, expect, got);
6292 /* This must be 1st test on (which?) platform */
6293 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6294 Gconvert(0.1, 8, 0, buf);
6295 checkit("0.1", buf);
6297 Gconvert(1.0, 8, 0, buf);
6300 Gconvert(0.0, 8, 0, buf);
6303 Gconvert(-1.0, 8, 0, buf);
6306 /* Some Linux gcvt's give 1.e+5 here. */
6307 Gconvert(100000.0, 8, 0, buf);
6308 checkit("100000", buf);
6310 /* Some Linux gcvt's give -1.e+5 here. */
6311 Gconvert(-100000.0, 8, 0, buf);
6312 checkit("-100000", buf);
6317 case "$d_Gconvert" in
6318 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6319 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6320 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6321 *) xxx_list='gconvert gcvt sprintf' ;;
6324 for xxx_convert in $xxx_list; do
6325 echo "Trying $xxx_convert"
6327 set try -DTRY_$xxx_convert
6328 if eval $compile; then
6329 echo "$xxx_convert" found. >&4
6331 echo "I'll use $xxx_convert to convert floats into a string." >&4
6334 echo "...But $xxx_convert didn't work as I expected."
6337 echo "$xxx_convert NOT found." >&4
6341 case "$xxx_convert" in
6342 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6343 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6344 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6348 : Initialize h_fcntl
6351 : Initialize h_sysfile
6354 : access call always available on UNIX
6358 : locate the flags for 'access()'
6362 $cat >access.c <<'EOCP'
6363 #include <sys/types.h>
6368 #include <sys/file.h>
6377 : check sys/file.h first, no particular reason here
6378 if $test `./findhdr sys/file.h` && \
6379 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6381 echo "<sys/file.h> defines the *_OK access constants." >&4
6382 elif $test `./findhdr fcntl.h` && \
6383 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6385 echo "<fcntl.h> defines the *_OK access constants." >&4
6386 elif $test `./findhdr unistd.h` && \
6387 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6388 echo "<unistd.h> defines the *_OK access constants." >&4
6390 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6396 : see if accessx exists
6397 set accessx d_accessx
6400 : see if alarm exists
6404 : Look for GNU-cc style attribute checking
6406 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6407 $cat >attrib.c <<'EOCP'
6409 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6411 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6412 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6413 echo "Your C compiler doesn't fully support __attribute__."
6416 echo "Your C compiler supports __attribute__."
6420 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6427 : see if bcmp exists
6431 : see if bcopy exists
6435 : see if this is a unistd.h system
6436 set unistd.h i_unistd
6439 : see if getpgrp exists
6440 set getpgrp d_getpgrp
6443 case "$d_getpgrp" in
6446 echo "Checking to see which flavor of getpgrp is in use..."
6449 #include <sys/types.h>
6451 # include <unistd.h>
6455 if (getuid() == 0) {
6456 printf("(I see you are running Configure as super-user...)\n");
6460 if (getpgrp(1) == 0)
6469 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6470 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6472 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6473 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6476 echo "I can't seem to compile and run the test program."
6478 xxx="a USG one, i.e. you use getpgrp()."
6480 # SVR4 systems can appear rather BSD-ish.
6483 xxx="a BSD one, i.e. you use getpgrp(pid)."
6487 xxx="probably a USG one, i.e. you use getpgrp()."
6492 echo "Assuming your getpgrp is $xxx" >&4
6501 : see if setpgrp exists
6502 set setpgrp d_setpgrp
6505 case "$d_setpgrp" in
6508 echo "Checking to see which flavor of setpgrp is in use..."
6511 #include <sys/types.h>
6513 # include <unistd.h>
6517 if (getuid() == 0) {
6518 printf("(I see you are running Configure as super-user...)\n");
6522 if (-1 == setpgrp(1, 1))
6525 if (setpgrp() != -1)
6531 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6532 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6534 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6535 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6538 echo "(I can't seem to compile and run the test program.)"
6540 xxx="a USG one, i.e. you use setpgrp()."
6542 # SVR4 systems can appear rather BSD-ish.
6545 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6549 xxx="probably a USG one, i.e. you use setpgrp()."
6554 echo "Assuming your setpgrp is $xxx" >&4
6562 : see if bzero exists
6566 : check for lengths of integral types
6570 echo "Checking to see how big your integers are..." >&4
6571 $cat >intsize.c <<'EOCP'
6575 printf("intsize=%d;\n", sizeof(int));
6576 printf("longsize=%d;\n", sizeof(long));
6577 printf("shortsize=%d;\n", sizeof(short));
6582 if eval $compile_ok && ./intsize > /dev/null; then
6584 echo "Your integers are $intsize bytes long."
6585 echo "Your long integers are $longsize bytes long."
6586 echo "Your short integers are $shortsize bytes long."
6590 Help! I can't compile and run the intsize test program: please enlighten me!
6591 (This is probably a misconfiguration in your system or libraries, and
6592 you really ought to fix it. Still, I'll try anyway.)
6596 rp="What is the size of an integer (in bytes)?"
6600 rp="What is the size of a long integer (in bytes)?"
6604 rp="What is the size of a short integer (in bytes)?"
6610 $rm -f intsize intsize.*
6612 : see if signal is declared as pointer to function returning int or void
6614 xxx=`./findhdr signal.h`
6615 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6616 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6617 echo "You have int (*signal())() instead of void." >&4
6619 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6620 echo "You have void (*signal())()." >&4
6622 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6623 echo "You have int (*signal())() instead of void." >&4
6625 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6626 echo "You have void (*signal())()." >&4
6629 case "$d_voidsig" in
6631 echo "I can't determine whether signal handler returns void or int..." >&4
6633 rp="What type does your signal handler return?"
6640 echo "As you already told me, signal handler returns void." >&4
6643 *) echo "As you already told me, signal handler returns int." >&4
6650 case "$d_voidsig" in
6651 "$define") signal_t="void";;
6656 : check for ability to cast large floats to 32-bit ints.
6658 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6659 if $test "$intsize" -ge 4; then
6666 #include <sys/types.h>
6668 $signal_t blech(s) int s; { exit(3); }
6675 signal(SIGFPE, blech);
6677 /* Don't let compiler optimize the test away. Store the number
6678 in a writable string for gcc to pass to sscanf under HP/UX.
6680 sprintf(str, "2147483647");
6681 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6685 /* x86 processors will probably give 0x8000 0000, which is a
6686 sign change. We don't want that. We want to mimic SPARC
6687 behavior here, which is to preserve the sign and give
6690 if (i32 != ($xxx) f)
6696 if eval $compile_ok; then
6700 echo "(I can't seem to compile the test program--assuming it can't)"
6708 echo "Nope, it can't."
6715 : check for ability to cast negative floats to unsigned
6717 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6720 #include <sys/types.h>
6722 $signal_t blech(s) int s; { exit(7); }
6723 $signal_t blech_in_list(s) int s; { exit(4); }
6724 unsigned long dummy_long(p) unsigned long p; { return p; }
6725 unsigned int dummy_int(p) unsigned int p; { return p; }
6726 unsigned short dummy_short(p) unsigned short p; { return p; }
6730 unsigned long along;
6732 unsigned short ashort;
6736 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6737 a direct f = -123. assignment. gcc-2.8.0 reportedly
6738 optimized the whole file away
6740 /* Store the number in a writable string for gcc to pass to
6743 sprintf(str, "-123");
6744 sscanf(str, "%lf", &f); /* f = -123.; */
6746 signal(SIGFPE, blech);
6747 along = (unsigned long)f;
6748 aint = (unsigned int)f;
6749 ashort = (unsigned short)f;
6750 if (along != (unsigned long)-123)
6752 if (aint != (unsigned int)-123)
6754 if (ashort != (unsigned short)-123)
6756 sprintf(str, "1073741824.");
6757 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6760 along = (unsigned long)f;
6761 if (along != 0x80000000)
6765 along = (unsigned long)f;
6766 if (along != 0x7fffffff)
6770 along = (unsigned long)f;
6771 if (along != 0x80000001)
6775 signal(SIGFPE, blech_in_list);
6776 sprintf(str, "123.");
6777 sscanf(str, "%lf", &f); /* f = 123.; */
6778 along = dummy_long((unsigned long)f);
6779 aint = dummy_int((unsigned int)f);
6780 ashort = dummy_short((unsigned short)f);
6781 if (along != (unsigned long)123)
6783 if (aint != (unsigned int)123)
6785 if (ashort != (unsigned short)123)
6792 if eval $compile_ok; then
6796 echo "(I can't seem to compile the test program--assuming it can't)"
6799 case "$castflags" in
6804 echo "Nope, it can't."
6811 : see if vprintf exists
6813 if set vprintf val -f d_vprintf; eval $csym; $val; then
6814 echo 'vprintf() found.' >&4
6816 $cat >vprintf.c <<'EOF'
6817 #include <varargs.h>
6819 int main() { xxx("foo"); }
6828 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6832 if eval $compile && ./vprintf; then
6833 echo "Your vsprintf() returns (int)." >&4
6836 echo "Your vsprintf() returns (char*)." >&4
6840 echo 'vprintf() NOT found.' >&4
6850 : see if chown exists
6854 : see if chroot exists
6858 : see if chsize exists
6862 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6863 while $test $# -ge 2; do
6865 $define) echo "#include <$2>";;
6869 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6870 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6879 : see if this is a sys/uio.h system
6880 set sys/uio.h i_sysuio
6883 echo "Checking to see if your system supports struct iovec..." >&4
6884 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6886 case "$d_iovec_s" in
6887 "$define") echo "Yup, it does." >&4
6889 *) echo "Nope, it doesn't." >&4
6895 : see whether socket exists
6897 $echo $n "Hmm... $c" >&4
6898 if set socket val -f d_socket; eval $csym; $val; then
6899 echo "Looks like you have Berkeley networking support." >&4
6901 if set setsockopt val -f; eval $csym; $val; then
6904 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6908 if $contains socklib libc.list >/dev/null 2>&1; then
6909 echo "Looks like you have Berkeley networking support." >&4
6911 : we will have to assume that it supports the 4.2 BSD interface
6914 echo "You don't have Berkeley networking in libc$_a..." >&4
6915 if test "X$d_socket" = "X$define"; then
6916 echo "...but you seem to believe that you have sockets." >&4
6918 for net in net socket
6920 if test -f /usr/lib/lib$net$_a; then
6921 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6922 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6923 if $contains socket libc.list >/dev/null 2>&1; then
6928 echo "...but the Wollongong group seems to have hacked it in." >&4
6929 sockethdr="-I/usr/netinclude"
6932 echo "Found Berkeley sockets interface in lib$net." >& 4
6933 if $contains setsockopt libc.list >/dev/null 2>&1; then
6936 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6943 if test "X$d_socket" != "X$define"; then
6944 echo "or anywhere else I see." >&4
6952 : see if socketpair exists
6953 set socketpair d_sockpair
6958 echo "Checking the availability of certain socket constants..." >& 4
6959 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6960 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6962 #include <sys/types.h>
6963 #include <sys/socket.h>
6969 set try; if eval $compile; then
6972 set d_${enum}; eval $setvar
6976 set sendmsg d_sendmsg
6979 set recvmsg d_recvmsg
6983 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6984 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6986 case "$d_msghdr_s" in
6987 "$define") echo "Yup, it does." >&4
6989 *) echo "Nope, it doesn't." >&4
6993 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6994 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6996 case "$d_cmsghdr_s" in
6997 "$define") echo "Yup, it does." >&4
6999 *) echo "Nope, it doesn't." >&4
7003 : check for const keyword
7005 echo 'Checking to see if your C compiler knows about "const"...' >&4
7006 $cat >const.c <<'EOCP'
7007 typedef struct spug { int drokk; } spug;
7014 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7016 echo "Yup, it does."
7019 echo "Nope, it doesn't."
7024 : see if crypt exists
7026 if set crypt val -f d_crypt; eval $csym; $val; then
7027 echo 'crypt() found.' >&4
7031 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7032 if $test -z "$cryptlib"; then
7033 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7037 if $test -z "$cryptlib"; then
7038 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7042 if $test -z "$cryptlib"; then
7043 cryptlib=`./loc libcrypt$_a "" $libpth`
7047 if $test -z "$cryptlib"; then
7048 echo 'crypt() NOT found.' >&4
7057 : get csh whereabouts
7059 'csh') val="$undef" ;;
7064 : Respect a hint or command line value for full_csh.
7066 '') full_csh=$csh ;;
7069 : see if cuserid exists
7070 set cuserid d_cuserid
7073 : see if this is a limits.h system
7074 set limits.h i_limits
7077 : see if this is a float.h system
7081 : See if number of significant digits in a double precision number is known
7083 $cat >dbl_dig.c <<EOM
7093 printf("Contains DBL_DIG");
7096 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7097 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7098 echo "DBL_DIG found." >&4
7101 echo "DBL_DIG NOT found." >&4
7109 if $test X"$use64bits" = X"$define"; then
7110 : see if dbminit64 exists
7111 set dbminit64 d_dbminit64
7114 : see if dbmclose64 exists
7115 set dbmclose64 d_dbmclose64
7118 : see if fetch64 exists
7119 set fetch64 d_fetch64
7122 : see if store64 exists
7123 set store64 d_store64
7126 : see if delete64 exists
7127 set delete64 d_delete64
7130 : see if firstkey64 exists
7131 set firstkey64 d_firstkey64
7134 : see if nextkey64 exists
7135 set nextkey64 d_nextkey64
7139 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7146 : see if difftime exists
7147 set difftime d_difftime
7150 : see if sys/stat.h is available
7151 set sys/stat.h i_sysstat
7154 : see if this is a dirent system
7156 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7158 echo "<dirent.h> found." >&4
7161 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7162 echo "<sys/dir.h> found." >&4
7165 xinc=`./findhdr sys/ndir.h`
7167 echo "<dirent.h> NOT found." >&4
7172 : Look for type of directory structure.
7174 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7176 case "$direntrytype" in
7179 $define) guess1='struct dirent' ;;
7180 *) guess1='struct direct' ;;
7183 *) guess1="$direntrytype"
7188 'struct dirent') guess2='struct direct' ;;
7189 *) guess2='struct dirent' ;;
7192 if $contains "$guess1" try.c >/dev/null 2>&1; then
7193 direntrytype="$guess1"
7194 echo "Your directory entries are $direntrytype." >&4
7195 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7196 direntrytype="$guess2"
7197 echo "Your directory entries seem to be $direntrytype." >&4
7199 echo "I don't recognize your system's directory entries." >&4
7200 rp="What type is used for directory entries on this system?"
7208 : see if the directory entry stores field length
7210 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7211 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7212 echo "Good, your directory entry keeps length information in d_namlen." >&4
7215 echo "Your directory entry does not know about the d_namlen field." >&4
7223 if $test X"$use64bits" = X"$define"; then
7224 : see if fstat64 exists
7225 set fstat64 d_fstat64
7228 : see if ftruncate64 exists
7229 set ftruncate64 d_ftruncate64
7232 : see if lockf64 exists
7233 set lockf64 d_lockf64
7236 : see if lseek64 exists
7237 set lseek64 d_lseek64
7240 : see if lstat64 exists
7241 set lstat64 d_lstat64
7244 : see if open64 exists
7248 : see if opendir64 exists
7249 set opendir64 d_opendir64
7252 : see if readdir64 exists
7253 set readdir64 d_readdir64
7256 : see if seekdir64 exists
7257 set seekdir64 d_seekdir64
7260 : see if stat64 exists
7264 : see if telldir64 exists
7265 set telldir64 d_telldir64
7268 : see if truncate64 exists
7269 set truncate64 d_truncate64
7274 echo $n "Checking to see if your system supports off64_t...$c" >&4
7276 #include <sys/types.h>
7277 off64_t foo() { off64_t x; x = 7; return x; }'
7279 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7281 echo " Yup, it does." >&4
7284 echo " Nope, it doesn't." >&4
7292 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7294 case "$i_sysstat" in
7297 #include <sys/types.h>
7298 #include <sys/stat.h>
7299 ino64_t foo() { ino64_t x; x = 7; return x; }'
7301 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7307 if $test "X$val" = X"$define"; then
7308 echo " Yup, it does." >&4
7310 echo " Nope, it doesn't." >&4
7315 : check for struct flock64
7317 echo "Checking to see if your system supports struct flock64..." >&4
7319 set d_flock64_s flock64 l_len define fcntl.h
7326 case "$d_flock64_s" in
7327 "$define") echo "Yup, it does." >&4
7329 *) echo "Nope, it doesn't." >&4
7333 : check for struct dirent64
7335 echo "Checking to see if your system supports struct dirent64..." >&4
7336 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7338 case "$d_dirent64_s" in
7339 "$define") echo "Yup, it does." >&4
7341 *) echo "Nope, it doesn't." >&4
7347 for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64_s d_dirent64_s
7354 : see if dlerror exists
7357 set dlerror d_dlerror
7361 : see if dlfcn is available
7369 On a few systems, the dynamically loaded modules that perl generates and uses
7370 will need a different extension than shared libs. The default will probably
7378 rp='What is the extension of dynamically loaded modules'
7387 : Check if dlsym need a leading underscore
7393 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7394 $cat >dyna.c <<'EOM'
7403 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7405 #include <sys/types.h>
7419 int mode = RTLD_LAZY ;
7421 handle = dlopen("./dyna.$dlext", mode) ;
7422 if (handle == NULL) {
7427 symbol = dlsym(handle, "fred") ;
7428 if (symbol == NULL) {
7429 /* try putting a leading underscore */
7430 symbol = dlsym(handle, "_fred") ;
7431 if (symbol == NULL) {
7444 : Call the object file tmp-dyna.o in case dlext=o.
7445 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7446 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7447 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7448 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7451 1) echo "Test program failed using dlopen." >&4
7452 echo "Perhaps you should not use dynamic loading." >&4;;
7453 2) echo "Test program failed using dlsym." >&4
7454 echo "Perhaps you should not use dynamic loading." >&4;;
7455 3) echo "dlsym needs a leading underscore" >&4
7457 4) echo "dlsym doesn't need a leading underscore." >&4;;
7460 echo "I can't compile and run the test program." >&4
7465 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7470 hasproto='varname=$1; func=$2; shift; shift;
7471 while $test $# -ge 2; do
7473 $define) echo "#include <$2>";;
7477 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7478 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7479 echo "$func() prototype found.";
7482 echo "$func() prototype NOT found.";
7487 $rm -f try.c tryout.c'
7489 : see if prototype for drand48 is available
7491 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7494 : see if dup2 exists
7498 : see if eaccess exists
7499 set eaccess d_eaccess
7502 : see if endgrent exists
7503 set endgrent d_endgrent
7506 : see if endhostent exists
7507 set endhostent d_endhent
7510 : see if endnetent exists
7511 set endnetent d_endnent
7514 : see if endprotoent exists
7515 set endprotoent d_endpent
7518 : see if endpwent exists
7519 set endpwent d_endpwent
7522 : see if endservent exists
7523 set endservent d_endsent
7526 : Locate the flags for 'open()'
7528 $cat >open3.c <<'EOCP'
7529 #include <sys/types.h>
7534 #include <sys/file.h>
7545 : check sys/file.h first to get FREAD on Sun
7546 if $test `./findhdr sys/file.h` && \
7547 set open3 -DI_SYS_FILE && eval $compile; then
7549 echo "<sys/file.h> defines the O_* constants..." >&4
7551 echo "and you have the 3 argument form of open()." >&4
7554 echo "but not the 3 argument form of open(). Oh, well." >&4
7557 elif $test `./findhdr fcntl.h` && \
7558 set open3 -DI_FCNTL && eval $compile; then
7560 echo "<fcntl.h> defines the O_* constants..." >&4
7562 echo "and you have the 3 argument form of open()." >&4
7565 echo "but not the 3 argument form of open(). Oh, well." >&4
7570 echo "I can't find the O_* constant definitions! You got problems." >&4
7576 : check for non-blocking I/O stuff
7577 case "$h_sysfile" in
7578 true) echo "#include <sys/file.h>" > head.c;;
7581 true) echo "#include <fcntl.h>" > head.c;;
7582 *) echo "#include <sys/fcntl.h>" > head.c;;
7587 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7588 case "$o_nonblock" in
7591 $cat >>try.c <<'EOCP'
7594 printf("O_NONBLOCK\n");
7598 printf("O_NDELAY\n");
7602 printf("FNDELAY\n");
7609 if eval $compile_ok; then
7611 case "$o_nonblock" in
7612 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7613 *) echo "Seems like we can use $o_nonblock.";;
7616 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7619 *) echo "Using $hint value $o_nonblock.";;
7621 $rm -f try try.* .out core
7624 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7630 #include <sys/types.h>
7632 #define MY_O_NONBLOCK $o_nonblock
7633 #ifndef errno /* XXX need better Configure test */
7636 $signal_t blech(x) int x; { exit(3); }
7638 $cat >> try.c <<'EOCP'
7646 pipe(pd); /* Down: child -> parent */
7647 pipe(pu); /* Up: parent -> child */
7650 close(pd[1]); /* Parent reads from pd[0] */
7651 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7652 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7654 signal(SIGALRM, blech);
7656 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7658 sprintf(string, "%d\n", ret);
7659 write(2, string, strlen(string));
7662 if (errno == EAGAIN) {
7668 if (errno == EWOULDBLOCK)
7669 printf("EWOULDBLOCK\n");
7672 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7673 sleep(2); /* Give it time to close our pipe */
7675 ret = read(pd[0], buf, 1); /* Should read EOF */
7677 sprintf(string, "%d\n", ret);
7678 write(3, string, strlen(string));
7682 close(pd[0]); /* We write to pd[1] */
7683 close(pu[1]); /* We read from pu[0] */
7684 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7685 close(pd[1]); /* Pipe pd is now fully closed! */
7686 exit(0); /* Bye bye, thank you for playing! */
7690 if eval $compile_ok; then
7691 echo "$startsh" >mtry
7692 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7694 ./mtry >/dev/null 2>&1
7696 0) eagain=`$cat try.out`;;
7697 1) echo "Could not perform non-blocking setting!";;
7698 2) echo "I did a successful read() for something that was not there!";;
7699 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7700 *) echo "Something terribly wrong happened during testing.";;
7702 rd_nodata=`$cat try.ret`
7703 echo "A read() system call with no data present returns $rd_nodata."
7704 case "$rd_nodata" in
7707 echo "(That's peculiar, fixing that to be -1.)"
7713 echo "Forcing errno EAGAIN on read() with no data available."
7717 echo "Your read() sets errno to $eagain when no data is available."
7720 status=`$cat try.err`
7722 0) echo "And it correctly returns 0 to signal EOF.";;
7723 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7724 *) echo "However, your read() returns '$status' on EOF??";;
7727 if test "$status" = "$rd_nodata"; then
7728 echo "WARNING: you can't distinguish between EOF and no data!"
7732 echo "I can't compile the test program--assuming errno EAGAIN will do."
7739 echo "Using $hint value $eagain."
7740 echo "Your read() returns $rd_nodata when no data is present."
7741 case "$d_eofnblk" in
7742 "$define") echo "And you can see EOF because read() returns 0.";;
7743 "$undef") echo "But you can't see EOF status from read() returned value.";;
7745 echo "(Assuming you can't see EOF status from read anyway.)"
7751 $rm -f try try.* .out core head.c mtry
7753 : see if fchmod exists
7757 : see if fchown exists
7761 : see if this is an fcntl system
7765 : see if sys/select.h has to be included
7766 set sys/select.h i_sysselct
7769 : see if we should include time.h, sys/time.h, or both
7771 if test "X$timeincl" = X; then
7772 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7773 $echo $n "I'm now running the test program...$c"
7774 $cat >try.c <<'EOCP'
7775 #include <sys/types.h>
7780 #ifdef SYSTIMEKERNEL
7783 #include <sys/time.h>
7786 #include <sys/select.h>
7795 struct timezone tzp;
7797 if (foo.tm_sec == foo.tm_sec)
7800 if (bar.tv_sec == bar.tv_sec)
7807 for s_timezone in '-DS_TIMEZONE' ''; do
7809 for s_timeval in '-DS_TIMEVAL' ''; do
7810 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7811 for i_time in '' '-DI_TIME'; do
7812 for i_systime in '-DI_SYSTIME' ''; do
7815 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7816 if eval $compile; then
7817 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7821 $echo $n "Succeeded with $flags$c"
7833 *SYSTIMEKERNEL*) i_systimek="$define"
7834 timeincl=`./findhdr sys/time.h`
7835 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7836 *) i_systimek="$undef";;
7839 *I_TIME*) i_time="$define"
7840 timeincl=`./findhdr time.h`" $timeincl"
7841 echo "We'll include <time.h>." >&4;;
7842 *) i_time="$undef";;
7845 *I_SYSTIME*) i_systime="$define"
7846 timeincl=`./findhdr sys/time.h`" $timeincl"
7847 echo "We'll include <sys/time.h>." >&4;;
7848 *) i_systime="$undef";;
7853 : check for fd_set items
7856 Checking to see how well your C compiler handles fd_set and friends ...
7858 $cat >fd_set.c <<EOCP
7859 #$i_systime I_SYS_TIME
7860 #$i_sysselct I_SYS_SELECT
7861 #$d_socket HAS_SOCKET
7862 #include <sys/types.h>
7864 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7867 #include <sys/time.h>
7870 #include <sys/select.h>
7879 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7886 set fd_set -DTRYBITS
7887 if eval $compile; then
7888 d_fds_bits="$define"
7890 echo "Well, your system knows about the normal fd_set typedef..." >&4
7892 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7893 d_fd_macros="$define"
7896 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7898 d_fd_macros="$undef"
7902 Hmm, your compiler has some difficulty with fd_set. Checking further...
7905 if eval $compile; then
7908 echo "Well, your system has some sort of fd_set available..." >&4
7910 echo "and you have the normal fd_set macros." >&4
7911 d_fd_macros="$define"
7914 but not the normal fd_set macros! Gross! More work for me...
7916 d_fd_macros="$undef"
7919 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7922 d_fd_macros="$undef"
7927 : see if fgetpos exists
7928 set fgetpos d_fgetpos
7932 if $test X"$use64bits" = X"$define"; then
7933 : see if fgetpos64 exists
7934 set fgetpos64 d_fgetpos64
7937 : see if fopen64 exists
7938 set freopen64 d_fopen64
7941 : see if freopen64 exists
7942 set freopen64 d_freopen64
7945 : see if fseek64 exists
7946 set fseek64 d_fseek64
7949 : see if fseeko64 exists
7950 set fseeko64 d_fseeko64
7953 : see if fsetpos64 exists
7954 set fsetpos64 d_fsetpos64
7957 : see if ftell64 exists
7958 set ftell64 d_ftell64
7961 : see if ftello64 exists
7962 set ftello64 d_ftello64
7965 : see if tmpfile64 exists
7966 set tmpfile64 d_tmpfile64
7970 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7977 : see if flock exists
7981 : see if fork exists
7985 : see if pathconf exists
7986 set pathconf d_pathconf
7989 : see if fpathconf exists
7990 set fpathconf d_fpathconf
7993 : see if fseeko exists
7997 : see if fsetpos exists
7998 set fsetpos d_fsetpos
8001 : see if this is a sys/param system
8002 set sys/param.h i_sysparam
8005 : see if this is a sys/mount.h system
8006 set sys/mount.h i_sysmount
8010 : see if statfs exists
8014 : see if fstatfs exists
8015 set fstatfs d_fstatfs
8018 : see if statfs knows about mount flags
8019 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8023 : see if statvfs exists
8024 set statvfs d_statvfs
8027 : see if fstatvfs exists
8028 set fstatvfs d_fstatvfs
8032 : see if ftello exists
8036 : see if getgrent exists
8037 set getgrent d_getgrent
8040 : see if gethostbyaddr exists
8041 set gethostbyaddr d_gethbyaddr
8044 : see if gethostbyname exists
8045 set gethostbyname d_gethbyname
8048 : see if gethostent exists
8049 set gethostent d_gethent
8052 : see how we will look up host name
8055 : dummy stub to allow use of elif
8056 elif set gethostname val -f d_gethname; eval $csym; $val; then
8057 echo 'gethostname() found.' >&4
8058 d_gethname="$define"
8060 elif set uname val -f d_uname; eval $csym; $val; then
8063 uname() was found, but you're running xenix, and older versions of xenix
8064 have a broken uname(). If you don't really know whether your xenix is old
8065 enough to have a broken system call, use the default answer.
8072 rp='Is your uname() broken?'
8075 n*) d_uname="$define"; call=uname;;
8078 echo 'uname() found.' >&4
8083 case "$d_gethname" in
8084 '') d_gethname="$undef";;
8087 '') d_uname="$undef";;
8089 case "$d_uname$d_gethname" in
8094 Every now and then someone has a $call() that lies about the hostname
8095 but can't be fixed for political or economic reasons. If you wish, I can
8096 pretend $call() isn't there and maybe compute hostname at run-time
8097 thanks to the '$phostname' command.
8100 rp="Shall I ignore $call() from now on?"
8103 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8106 case "$phostname" in
8108 *) case "$aphostname" in
8114 file=`./loc $file $file $pth`
8115 aphostname=`echo $file $*`
8120 case "$d_uname$d_gethname" in
8123 case "$phostname" in
8125 echo "There will be no way for $package to get your hostname." >&4;;
8127 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8131 case "$d_phostname" in
8132 '') d_phostname="$undef";;
8135 : see if this is a netdb.h system
8139 : see if prototypes for various gethostxxx netdb.h functions are available
8141 set d_gethostprotos gethostent $i_netdb netdb.h
8144 : see if getlogin exists
8145 set getlogin d_getlogin
8148 : see if getnetbyaddr exists
8149 set getnetbyaddr d_getnbyaddr
8152 : see if getnetbyname exists
8153 set getnetbyname d_getnbyname
8156 : see if getnetent exists
8157 set getnetent d_getnent
8160 : see if prototypes for various getnetxxx netdb.h functions are available
8162 set d_getnetprotos getnetent $i_netdb netdb.h
8166 : see if getprotobyname exists
8167 set getprotobyname d_getpbyname
8170 : see if getprotobynumber exists
8171 set getprotobynumber d_getpbynumber
8174 : see if getprotoent exists
8175 set getprotoent d_getpent
8178 : see if getpgid exists
8179 set getpgid d_getpgid
8182 : see if getpgrp2 exists
8183 set getpgrp2 d_getpgrp2
8186 : see if getppid exists
8187 set getppid d_getppid
8190 : see if getpriority exists
8191 set getpriority d_getprior
8194 : see if prototypes for various getprotoxxx netdb.h functions are available
8196 set d_getprotoprotos getprotoent $i_netdb netdb.h
8199 : see if getpwent exists
8200 set getpwent d_getpwent
8204 : see if getservbyname exists
8205 set getservbyname d_getsbyname
8208 : see if getservbyport exists
8209 set getservbyport d_getsbyport
8212 : see if getservent exists
8213 set getservent d_getsent
8216 : see if prototypes for various getservxxx netdb.h functions are available
8218 set d_getservprotos getservent $i_netdb netdb.h
8221 : see if gettimeofday or ftime exists
8222 set gettimeofday d_gettimeod
8224 case "$d_gettimeod" in
8230 val="$undef"; set d_ftime; eval $setvar
8233 case "$d_gettimeod$d_ftime" in
8236 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8240 : see if this is an grp system
8246 xxx=`./findhdr grp.h`
8247 $cppstdin $cppflags $cppminus < $xxx >$$.h
8249 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8261 set d_grpasswd; eval $setvar
8265 : see if this is a netinet/in.h or sys/in.h system
8266 set netinet/in.h i_niin sys/in.h i_sysin
8269 : see if arpa/inet.h has to be included
8270 set arpa/inet.h i_arpainet
8273 : see if htonl --and friends-- exists
8278 : Maybe they are macros.
8283 #include <sys/types.h>
8284 #$i_niin I_NETINET_IN
8286 #$i_arpainet I_ARPA_INET
8288 #include <netinet/in.h>
8294 #include <arpa/inet.h>
8297 printf("Defined as a macro.");
8300 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8301 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8303 echo "But it seems to be defined as a macro." >&4
8311 : see which of string.h or strings.h is needed
8313 strings=`./findhdr string.h`
8314 if $test "$strings" && $test -r "$strings"; then
8315 echo "Using <string.h> instead of <strings.h>." >&4
8319 strings=`./findhdr strings.h`
8320 if $test "$strings" && $test -r "$strings"; then
8321 echo "Using <strings.h> instead of <string.h>." >&4
8323 echo "No string header found -- You'll surely have problems." >&4
8329 "$undef") strings=`./findhdr strings.h`;;
8330 *) strings=`./findhdr string.h`;;
8335 if set index val -f; eval $csym; $val; then
8336 if set strchr val -f d_strchr; eval $csym; $val; then
8337 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8340 echo "strchr() found." >&4
8344 echo "index() found." >&4
8349 echo "index() found." >&4
8352 if set strchr val -f d_strchr; eval $csym; $val; then
8355 echo "strchr() found." >&4
8357 echo "No index() or strchr() found!" >&4
8362 set d_strchr; eval $setvar
8364 set d_index; eval $setvar
8366 : check whether inet_aton exists
8367 set inet_aton d_inetaton
8370 : see if inttypes.h is available
8371 : we want a real compile instead of Inhdr because some systems
8372 : have an inttypes.h which includes non-existent headers
8375 #include <inttypes.h>
8377 static int32_t foo32 = 0x12345678;
8381 if eval $compile; then
8382 echo "<inttypes.h> found." >&4
8385 echo "<inttypes.h> NOT found." >&4
8393 case "$use64bits" in
8396 echo $n "Checking to see if your system supports int64_t...$c" >&4
8398 #include <sys/types.h>
8399 #$i_inttypes I_INTTYPES
8401 #include <inttypes.h>
8403 int64_t foo() { int64_t x; x = 7; return x; }
8405 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8407 echo " Yup, it does." >&4
8410 echo " Nope, it doesn't." >&4
8423 $cat >isascii.c <<'EOCP'
8435 if eval $compile; then
8436 echo "isascii() found." >&4
8439 echo "isascii() NOT found." >&4
8446 : see if killpg exists
8450 : see if lchown exists
8452 $cat > try.c <<'EOCP'
8453 /* System header to define __stub macros and hopefully few prototypes,
8454 which can conflict with char lchown(); below. */
8456 /* Override any gcc2 internal prototype to avoid an error. */
8457 /* We use char because int might match the return type of a gcc2
8458 builtin and then its argument prototype would still apply. */
8461 /* The GNU C library defines this for functions which it implements
8462 to always fail with ENOSYS. Some functions are actually named
8463 something starting with __ and the normal name is an alias. */
8464 #if defined (__stub_lchown) || defined (__stub___lchown)
8472 if eval $compile; then
8473 $echo "lchown() found." >&4
8476 $echo "lchown() NOT found." >&4
8482 : see if link exists
8486 : see if localeconv exists
8487 set localeconv d_locconv
8490 : see if lockf exists
8494 : check for length of double
8496 case "$doublesize" in
8498 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8499 $cat >try.c <<'EOCP'
8503 printf("%d\n", sizeof(double));
8507 if eval $compile_ok; then
8509 $echo " $doublesize bytes." >&4
8512 echo "(I can't seem to compile the test program. Guessing...)"
8513 rp="What is the size of a double precision number (in bytes)?"
8521 : check for long doubles
8523 echo $n "Checking to see if your system supports long doubles...$c" >&4
8524 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8525 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8527 echo " Yup, it does." >&4
8530 echo " Nope, it doesn't." >&4
8536 : check for length of long double
8537 case "${d_longdbl}${longdblsize}" in
8540 $echo $n "Checking to see how big your long doubles are...$c" >&4
8541 $cat >try.c <<'EOCP'
8545 printf("%d\n", sizeof(long double));
8549 if eval $compile; then
8551 $echo " $longdblsize bytes." >&4
8555 echo "(I can't seem to compile the test program. Guessing...)" >&4
8556 rp="What is the size of a long double (in bytes)?"
8560 if $test "X$doublesize" = "X$longdblsize"; then
8561 echo "(That isn't any different from an ordinary double.)"
8567 : check for long long
8569 echo $n "Checking to see if your system supports long long...$c" >&4
8570 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8571 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8573 echo " Yup, it does." >&4
8576 echo " Nope, it doesn't." >&4
8582 : check for length of long long
8583 case "${d_longlong}${longlongsize}" in
8586 $echo $n "Checking to see how big your long longs are...$c" >&4
8587 $cat >try.c <<'EOCP'
8591 printf("%d\n", sizeof(long long));
8595 if eval $compile_ok; then
8596 longlongsize=`./try`
8597 $echo " $longlongsize bytes." >&4
8601 echo "(I can't seem to compile the test program. Guessing...)"
8602 rp="What is the size of a long long (in bytes)?"
8606 if $test "X$longsize" = "X$longlongsize"; then
8607 echo "(That isn't any different from an ordinary long.)"
8613 : see if lstat exists
8617 : see if madvise exists
8618 set madvise d_madvise
8621 : see if mblen exists
8625 : see if mbstowcs exists
8626 set mbstowcs d_mbstowcs
8629 : see if mbtowc exists
8633 : see if memcmp exists
8637 : see if memcpy exists
8641 : see if memmove exists
8642 set memmove d_memmove
8645 : see if memset exists
8649 : see if mkdir exists
8653 : see if mkfifo exists
8657 : see if mktime exists
8661 : see if this is a sys/mman.h system
8662 set sys/mman.h i_sysmman
8665 : see if mmap exists
8668 : see what shmat returns
8669 : default to something harmless
8671 case "$i_sysmman$d_mmap" in
8673 $cat >mmap.c <<'END'
8674 #include <sys/mman.h>
8677 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8682 echo "and it returns ($mmaptype)." >&4
8688 : see if mprotect exists
8689 set mprotect d_mprotect
8692 : see if msgctl exists
8696 : see if msgget exists
8700 : see if msgsnd exists
8704 : see if msgrcv exists
8708 : see how much of the 'msg*(2)' library is present.
8711 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8712 *"$undef"*) h_msg=false;;
8716 case "`ipcs 2>&1`" in
8717 "SVID messages"*"not configured"*)
8718 echo "Your $osname does not have the msg*(2) configured." >&4
8733 : we could also check for sys/ipc.h ...
8734 if $h_msg && $test `./findhdr sys/msg.h`; then
8735 echo "You have the full msg*(2) library." >&4
8738 echo "You don't have the full msg*(2) library." >&4
8744 : see if msync exists
8748 : see if munmap exists
8752 : see if nice exists
8756 : how to create joinable pthreads
8757 if test "X$usethreads" = "X$define"; then
8759 echo "Checking what constant to use for creating joinable pthreads..." >&4
8760 $cat >try.c <<'EOCP'
8761 #include <pthread.h>
8763 int detachstate = JOINABLE;
8766 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8767 if eval $compile; then
8768 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8769 val="$undef" # Yes, undef.
8770 set d_old_pthread_create_joinable
8773 set old_pthread_create_joinable
8776 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8777 if eval $compile; then
8778 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8780 set d_old_pthread_create_joinable
8782 val=PTHREAD_CREATE_UNDETACHED
8783 set old_pthread_create_joinable
8786 set try -DJOINABLE=__UNDETACHED
8787 if eval $compile; then
8788 echo "You seem to use __UNDETACHED." >&2
8790 set d_old_pthread_create_joinable
8793 set old_pthread_create_joinable
8796 echo "Egads, nothing obvious found. Guessing that you use 0." >&2
8798 set d_old_pthread_create_joinable
8801 set old_pthread_create_joinable
8808 d_old_pthread_create_joinable="$undef"
8809 old_pthread_create_joinable=""
8812 : see if pause exists
8816 : see if pipe exists
8820 : see if poll exists
8825 : see whether the various POSIXish _yields exist
8827 #include <pthread.h>
8833 #ifdef PTHREAD_YIELD
8836 #ifdef PTHREAD_YIELD_NULL
8837 pthread_yield(NULL);
8843 : see if sched_yield exists
8844 set try -DSCHED_YIELD
8845 if eval $compile; then
8847 sched_yield='sched_yield()'
8851 case "$usethreads" in
8854 $define) echo 'sched_yield() found.' >&4 ;;
8855 *) echo 'sched_yield() NOT found.' >&4 ;;
8861 : see if pthread_yield exists
8862 set try -DPTHREAD_YIELD
8863 if eval $compile; then
8865 case "$sched_yield" in
8866 '') sched_yield='pthread_yield()' ;;
8869 set try -DPTHREAD_YIELD_NULL
8870 if eval $compile; then
8872 case "$sched_yield" in
8873 '') sched_yield='pthread_yield(NULL)' ;;
8879 case "$usethreads" in
8882 $define) echo 'pthread_yield() found.' >&4 ;;
8883 *) echo 'pthread_yield() NOT found.' >&4 ;;
8890 case "$sched_yield" in
8891 '') sched_yield=undef ;;
8896 : see if this is a pwd.h system
8902 xxx=`./findhdr pwd.h`
8903 $cppstdin $cppflags $cppminus < $xxx >$$.h
8905 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8913 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8921 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8929 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8937 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8945 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8953 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8961 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8973 set d_pwquota; eval $setvar
8974 set d_pwage; eval $setvar
8975 set d_pwchange; eval $setvar
8976 set d_pwclass; eval $setvar
8977 set d_pwexpire; eval $setvar
8978 set d_pwcomment; eval $setvar
8979 set d_pwgecos; eval $setvar
8980 set d_pwpasswd; eval $setvar
8984 : see if readdir and friends exist
8985 set readdir d_readdir
8987 set seekdir d_seekdir
8989 set telldir d_telldir
8991 set rewinddir d_rewinddir
8994 : see if readlink exists
8995 set readlink d_readlink
8998 : see if readv exists
9002 : see if rename exists
9006 : see if rmdir exists
9010 : see if memory.h is available.
9015 : See if it conflicts with string.h
9021 $cppstdin $cppflags $cppminus < $strings > mem.h
9022 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9024 echo "We won't be including <memory.h>."
9034 : can bcopy handle overlapping blocks?
9039 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9046 $cat >>try.c <<'EOCP'
9049 # include <memory.h>
9052 # include <stdlib.h>
9055 # include <string.h>
9057 # include <strings.h>
9060 # include <unistd.h> /* Needed for NetBSD */
9064 char buf[128], abc[128];
9070 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9072 for (align = 7; align >= 0; align--) {
9073 for (len = 36; len; len--) {
9076 for (off = 1; off <= len; off++) {
9077 bcopy(b, b+off, len);
9078 bcopy(b+off, b, len);
9079 if (bcmp(b, abc, len))
9088 if eval $compile_ok; then
9089 if ./try 2>/dev/null; then
9093 echo "It can't, sorry."
9094 case "$d_memmove" in
9095 "$define") echo "But that's Ok since you have memmove()." ;;
9099 echo "(I can't compile the test program, so we'll assume not...)"
9100 case "$d_memmove" in
9101 "$define") echo "But that's Ok since you have memmove()." ;;
9106 $rm -f try.* try core
9110 : can memcpy handle overlapping blocks?
9115 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9122 $cat >>try.c <<'EOCP'
9125 # include <memory.h>
9128 # include <stdlib.h>
9131 # include <string.h>
9133 # include <strings.h>
9136 # include <unistd.h> /* Needed for NetBSD */
9140 char buf[128], abc[128];
9146 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9147 try to store the string in read-only memory. */
9148 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9150 for (align = 7; align >= 0; align--) {
9151 for (len = 36; len; len--) {
9153 memcpy(b, abc, len);
9154 for (off = 1; off <= len; off++) {
9155 memcpy(b+off, b, len);
9156 memcpy(b, b+off, len);
9157 if (memcmp(b, abc, len))
9166 if eval $compile_ok; then
9167 if ./try 2>/dev/null; then
9171 echo "It can't, sorry."
9172 case "$d_memmove" in
9173 "$define") echo "But that's Ok since you have memmove()." ;;
9177 echo "(I can't compile the test program, so we'll assume not...)"
9178 case "$d_memmove" in
9179 "$define") echo "But that's Ok since you have memmove()." ;;
9184 $rm -f try.* try core
9188 : can memcmp be trusted to compare relative magnitude?
9193 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9200 $cat >>try.c <<'EOCP'
9203 # include <memory.h>
9206 # include <stdlib.h>
9209 # include <string.h>
9211 # include <strings.h>
9214 # include <unistd.h> /* Needed for NetBSD */
9220 if ((a < b) && memcmp(&a, &b, 1) < 0)
9226 if eval $compile_ok; then
9227 if ./try 2>/dev/null; then
9231 echo "No, it can't (it uses signed chars)."
9234 echo "(I can't compile the test program, so we'll assume not...)"
9238 $rm -f try.* try core
9242 : see if select exists
9246 : see if semctl exists
9250 : see if semget exists
9254 : see if semop exists
9258 : see how much of the 'sem*(2)' library is present.
9261 case "$d_semctl$d_semget$d_semop" in
9262 *"$undef"*) h_sem=false;;
9266 case "`ipcs 2>&1`" in
9267 "SVID messages"*"not configured"*)
9268 echo "Your $osname does not have the sem*(2) configured." >&4
9281 : we could also check for sys/ipc.h ...
9282 if $h_sem && $test `./findhdr sys/sem.h`; then
9283 echo "You have the full sem*(2) library." >&4
9286 echo "You don't have the full sem*(2) library." >&4
9292 : see whether sys/sem.h defines union semun
9294 $cat > try.c <<'END'
9295 #include <sys/types.h>
9296 #include <sys/ipc.h>
9297 #include <sys/sem.h>
9298 int main () { union semun semun; semun.buf = 0; }
9301 if eval $compile; then
9302 echo "You have union semun in <sys/sem.h>." >&4
9305 echo "You do not have union semun in <sys/sem.h>." >&4
9308 $rm -f try try.c try.h
9312 : see how to do semctl IPC_STAT
9315 : see whether semctl IPC_STAT can use union semun
9320 # define S_IRUSR S_IREAD
9321 # define S_IWUSR S_IWRITE
9322 # define S_IXUSR S_IEXEC
9324 # define S_IRUSR 0400
9325 # define S_IWUSR 0200
9326 # define S_IXUSR 0100
9328 # define S_IRGRP (S_IRUSR>>3)
9329 # define S_IWGRP (S_IWUSR>>3)
9330 # define S_IXGRP (S_IXUSR>>3)
9331 # define S_IROTH (S_IRUSR>>6)
9332 # define S_IWOTH (S_IWUSR>>6)
9333 # define S_IXOTH (S_IXUSR>>6)
9336 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9337 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9338 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9343 #include <sys/types.h>
9344 #include <sys/ipc.h>
9345 #include <sys/sem.h>
9346 #include <sys/stat.h>
9353 #$d_union_semun HAS_UNION_SEMUN
9356 #ifndef HAS_UNION_SEMUN
9359 struct semid_ds *buf;
9360 unsigned short *array;
9366 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9367 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9369 struct semid_ds argbuf;
9372 st = semctl(sem, 0, IPC_STAT, arg);
9376 # endif /* IPC_STAT */
9377 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9379 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9380 # endif /* IPC_RMID */
9381 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9383 #endif /* IPC_PRIVATE && ... */
9384 printf("semget failed: errno = %d\n", errno);
9390 if eval $compile; then
9393 semun) val="$define" ;;
9399 case "$d_semctl_semun" in
9401 echo "You can use union semun for semctl IPC_STAT." >&4
9404 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9409 : see whether semctl IPC_STAT can use struct semid_ds pointer
9410 $cat > try.c <<'END'
9411 #include <sys/types.h>
9412 #include <sys/ipc.h>
9413 #include <sys/sem.h>
9414 #include <sys/stat.h>
9422 struct semid_ds arg;
9425 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9426 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9429 st = semctl(sem, 0, IPC_STAT, &arg);
9431 printf("semid_ds\n");
9433 # endif /* IPC_STAT */
9434 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9436 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9437 # endif /* IPC_RMID */
9438 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9440 #endif /* IPC_PRIVATE && ... */
9441 printf("semget failed: errno = %d\n", errno);
9448 if eval $compile; then
9451 semid_ds) val="$define" ;;
9455 set d_semctl_semid_ds
9457 case "$d_semctl_semid_ds" in
9459 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9461 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9468 # We do not have the full sem*(2) library, so assume we can not
9474 set d_semctl_semid_ds
9479 : see if setegid exists
9480 set setegid d_setegid
9483 : see if seteuid exists
9484 set seteuid d_seteuid
9487 : see if setgrent exists
9488 set setgrent d_setgrent
9491 : see if sethostent exists
9492 set sethostent d_sethent
9495 : see if setlinebuf exists
9496 set setlinebuf d_setlinebuf
9499 : see if setlocale exists
9500 set setlocale d_setlocale
9503 : see if setnetent exists
9504 set setnetent d_setnent
9507 : see if setprotoent exists
9508 set setprotoent d_setpent
9511 : see if setpgid exists
9512 set setpgid d_setpgid
9515 : see if setpgrp2 exists
9516 set setpgrp2 d_setpgrp2
9519 : see if setpriority exists
9520 set setpriority d_setprior
9523 : see if setpwent exists
9524 set setpwent d_setpwent
9527 : see if setregid exists
9528 set setregid d_setregid
9530 set setresgid d_setresgid
9533 : see if setreuid exists
9534 set setreuid d_setreuid
9536 set setresuid d_setresuid
9539 : see if setrgid exists
9540 set setrgid d_setrgid
9543 : see if setruid exists
9544 set setruid d_setruid
9547 : see if setservent exists
9548 set setservent d_setsent
9551 : see if setsid exists
9555 : see if setvbuf exists
9556 set setvbuf d_setvbuf
9559 : see if sfio.h is available
9564 : see if sfio library is available
9575 : Ok, but do we want to use it.
9579 true|$define|[yY]*) dflt='y';;
9582 echo "$package can use the sfio library, but it is experimental."
9583 rp="You seem to have sfio available, do you want to try using it?"
9587 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9589 : Remove sfio from list of libraries to use
9590 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9593 echo "libs = $libs" >&4
9597 *) case "$usesfio" in
9599 echo "Sorry, cannot find sfio on this machine" >&4
9600 echo "Ignoring your setting of usesfio=$usesfio" >&4
9608 $define) usesfio='true';;
9609 *) usesfio='false';;
9612 : see if shmctl exists
9616 : see if shmget exists
9620 : see if shmat exists
9623 : see what shmat returns
9626 $cat >shmat.c <<'END'
9627 #include <sys/shm.h>
9630 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9635 echo "and it returns ($shmattype)." >&4
9636 : see if a prototype for shmat is available
9637 xxx=`./findhdr sys/shm.h`
9638 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9639 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9650 set d_shmatprototype
9653 : see if shmdt exists
9657 : see how much of the 'shm*(2)' library is present.
9660 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9661 *"$undef"*) h_shm=false;;
9665 case "`ipcs 2>&1`" in
9666 "SVID shared memory"*"not configured"*)
9667 echo "Your $osname does not have the shm*(2) configured." >&4
9682 : we could also check for sys/ipc.h ...
9683 if $h_shm && $test `./findhdr sys/shm.h`; then
9684 echo "You have the full shm*(2) library." >&4
9687 echo "You don't have the full shm*(2) library." >&4
9694 : see if we have sigaction
9695 if set sigaction val -f d_sigaction; eval $csym; $val; then
9696 echo 'sigaction() found.' >&4
9697 $cat > try.c <<'EOP'
9699 #include <sys/types.h>
9703 struct sigaction act, oact;
9707 if eval $compile_ok; then
9710 echo "But you don't seem to have a useable struct sigaction." >&4
9714 echo 'sigaction NOT found.' >&4
9717 set d_sigaction; eval $setvar
9718 $rm -f try try$_o try.c
9720 : see if sigsetjmp exists
9722 case "$d_sigsetjmp" in
9730 if (sigsetjmp(env,1))
9738 if eval $compile; then
9739 if ./try >/dev/null 2>&1; then
9740 echo "POSIX sigsetjmp found." >&4
9744 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9750 echo "sigsetjmp not found." >&4
9754 *) val="$d_sigsetjmp"
9755 case "$d_sigsetjmp" in
9756 $define) echo "POSIX sigsetjmp found." >&4;;
9757 $undef) echo "sigsetjmp not found." >&4;;
9765 : see if stat knows about block sizes
9767 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9770 : see if _ptr and _cnt from stdio act std
9772 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9773 echo "(Looks like you have stdio.h from Linux.)"
9774 case "$stdio_ptr" in
9775 '') stdio_ptr='((fp)->_IO_read_ptr)'
9778 *) ptr_lval=$d_stdio_ptr_lval;;
9780 case "$stdio_cnt" in
9781 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9784 *) cnt_lval=$d_stdio_cnt_lval;;
9786 case "$stdio_base" in
9787 '') stdio_base='((fp)->_IO_read_base)';;
9789 case "$stdio_bufsiz" in
9790 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9793 case "$stdio_ptr" in
9794 '') stdio_ptr='((fp)->_ptr)'
9797 *) ptr_lval=$d_stdio_ptr_lval;;
9799 case "$stdio_cnt" in
9800 '') stdio_cnt='((fp)->_cnt)'
9803 *) cnt_lval=$d_stdio_cnt_lval;;
9805 case "$stdio_base" in
9806 '') stdio_base='((fp)->_base)';;
9808 case "$stdio_bufsiz" in
9809 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9812 : test whether _ptr and _cnt really work
9813 echo "Checking how std your stdio is..." >&4
9816 #define FILE_ptr(fp) $stdio_ptr
9817 #define FILE_cnt(fp) $stdio_cnt
9819 FILE *fp = fopen("try.c", "r");
9822 18 <= FILE_cnt(fp) &&
9823 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9831 if eval $compile; then
9833 echo "Your stdio acts pretty std."
9836 echo "Your stdio isn't very std."
9839 echo "Your stdio doesn't appear very std."
9845 : Can _ptr be used as an lvalue?
9846 case "$d_stdstdio$ptr_lval" in
9847 $define$define) val=$define ;;
9850 set d_stdio_ptr_lval
9853 : Can _cnt be used as an lvalue?
9854 case "$d_stdstdio$cnt_lval" in
9855 $define$define) val=$define ;;
9858 set d_stdio_cnt_lval
9861 : see if _base is also standard
9863 case "$d_stdstdio" in
9867 #define FILE_base(fp) $stdio_base
9868 #define FILE_bufsiz(fp) $stdio_bufsiz
9870 FILE *fp = fopen("try.c", "r");
9873 19 <= FILE_bufsiz(fp) &&
9874 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9881 if eval $compile; then
9883 echo "And its _base field acts std."
9886 echo "But its _base field isn't std."
9889 echo "However, it seems to be lacking the _base field."
9897 : see if strcoll exists
9898 set strcoll d_strcoll
9901 : check for structure copying
9903 echo "Checking to see if your C compiler can copy structs..." >&4
9904 $cat >try.c <<'EOCP'
9914 if $cc -c try.c >/dev/null 2>&1 ; then
9919 echo "Nope, it can't."
9925 : see if strerror and/or sys_errlist[] exist
9927 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9928 if set strerror val -f d_strerror; eval $csym; $val; then
9929 echo 'strerror() found.' >&4
9930 d_strerror="$define"
9931 d_strerrm='strerror(e)'
9932 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9933 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9934 d_syserrlst="$define"
9936 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9937 d_syserrlst="$undef"
9939 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9940 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9941 echo 'strerror() found in string header.' >&4
9942 d_strerror="$define"
9943 d_strerrm='strerror(e)'
9944 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9945 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9946 d_syserrlst="$define"
9948 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9949 d_syserrlst="$undef"
9951 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9952 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9954 d_syserrlst="$define"
9955 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9957 echo 'strerror() and sys_errlist[] NOT found.' >&4
9959 d_syserrlst="$undef"
9960 d_strerrm='"unknown"'
9964 : see if strtod exists
9968 : see if strtol exists
9972 : see if strtoul exists
9973 set strtoul d_strtoul
9976 : see if strxfrm exists
9977 set strxfrm d_strxfrm
9980 : see if symlink exists
9981 set symlink d_symlink
9984 : see if syscall exists
9985 set syscall d_syscall
9988 : see if sysconf exists
9989 set sysconf d_sysconf
9992 : see if system exists
9996 : see if tcgetpgrp exists
9997 set tcgetpgrp d_tcgetpgrp
10000 : see if tcsetpgrp exists
10001 set tcsetpgrp d_tcsetpgrp
10004 : see if sys/types.h has to be included
10005 set sys/types.h i_systypes
10008 : see if prototype for telldir is available
10010 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10013 : define an is-a-typedef? function
10014 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10016 "") inclist="sys/types.h";;
10018 eval "varval=\$$var";
10022 for inc in $inclist; do
10023 echo "#include <$inc>" >>temp.c;
10025 echo "#ifdef $type" >> temp.c;
10026 echo "printf(\"We have $type\");" >> temp.c;
10027 echo "#endif" >> temp.c;
10028 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10029 if $contains $type temp.E >/dev/null 2>&1; then
10030 eval "$var=\$type";
10035 *) eval "$var=\$varval";;
10038 : define an is-a-typedef? function that prompts if the type is not available.
10039 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10041 "") inclist="sys/types.h";;
10043 eval "varval=\$$var";
10047 for inc in $inclist; do
10048 echo "#include <$inc>" >>temp.c;
10050 echo "#ifdef $type" >> temp.c;
10051 echo "printf(\"We have $type\");" >> temp.c;
10052 echo "#endif" >> temp.c;
10053 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10055 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10056 if $contains $type temp.E >/dev/null 2>&1; then
10057 echo "$type found." >&4;
10058 eval "$var=\$type";
10060 echo "$type NOT found." >&4;
10066 *) eval "$var=\$varval";;
10069 : see if this is a sys/times.h system
10070 set sys/times.h i_systimes
10073 : see if times exists
10075 if set times val -f d_times; eval $csym; $val; then
10076 echo 'times() found.' >&4
10079 case "$i_systimes" in
10080 "$define") inc='sys/times.h';;
10082 rp="What is the type returned by times() on this system?"
10083 set clock_t clocktype long stdio.h sys/types.h $inc
10086 echo 'times() NOT found, hope that will do.' >&4
10091 : see if truncate exists
10092 set truncate d_truncate
10095 : see if tzname[] exists
10097 if set tzname val -a d_tzname; eval $csym; $val; then
10099 echo 'tzname[] found.' >&4
10102 echo 'tzname[] NOT found.' >&4
10107 : see if umask exists
10111 : backward compatibility for d_hvfork
10112 if test X$d_hvfork != X; then
10113 d_vfork="$d_hvfork"
10116 : see if there is a vfork
10121 : Ok, but do we want to use it. vfork is reportedly unreliable in
10122 : perl on Solaris 2.x, and probably elsewhere.
10126 case "$usevfork" in
10130 rp="Some systems have problems with vfork(). Do you want to use it?"
10135 echo "Ok, we won't use vfork()."
10144 $define) usevfork='true';;
10145 *) usevfork='false';;
10148 : see if this is an sysdir system
10149 set sys/dir.h i_sysdir
10152 : see if this is an sysndir system
10153 set sys/ndir.h i_sysndir
10156 : see if closedir exists
10157 set closedir d_closedir
10160 case "$d_closedir" in
10163 echo "Checking whether closedir() returns a status..." >&4
10164 cat > closedir.c <<EOM
10165 #$i_dirent I_DIRENT /**/
10166 #$i_sysdir I_SYS_DIR /**/
10167 #$i_sysndir I_SYS_NDIR /**/
10168 #$i_systypes I_SYS_TYPES /**/
10170 #if defined(I_SYS_TYPES)
10171 #include <sys/types.h>
10173 #if defined(I_DIRENT)
10174 #include <dirent.h>
10175 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10176 #include <sys/dir.h>
10180 #include <sys/ndir.h>
10184 #include <ndir.h> /* may be wrong in the future */
10186 #include <sys/dir.h>
10191 int main() { return closedir(opendir(".")); }
10194 if eval $compile_ok; then
10195 if ./closedir > /dev/null 2>&1 ; then
10196 echo "Yes, it does."
10199 echo "No, it doesn't."
10203 echo "(I can't seem to compile the test program--assuming it doesn't)"
10211 set d_void_closedir
10214 : check for volatile keyword
10216 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10217 $cat >try.c <<'EOCP'
10220 typedef struct _goo_struct goo_struct;
10221 goo_struct * volatile goo = ((goo_struct *)0);
10222 struct _goo_struct {
10227 typedef unsigned short foo_t;
10228 char *volatile foo;
10230 volatile foo_t blech;
10234 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10236 echo "Yup, it does."
10239 echo "Nope, it doesn't."
10245 : see if there is a wait4
10249 : see if waitpid exists
10250 set waitpid d_waitpid
10253 : see if wcstombs exists
10254 set wcstombs d_wcstombs
10257 : see if wctomb exists
10258 set wctomb d_wctomb
10261 : see if writev exists
10262 set writev d_writev
10265 : preserve RCS keywords in files with variable substitution, grrr
10270 Revision='$Revision'
10272 : check for alignment requirements
10274 case "$alignbytes" in
10275 '') echo "Checking alignment constraints..." >&4
10276 $cat >try.c <<'EOCP'
10283 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10287 if eval $compile_ok; then
10291 echo "(I can't seem to compile the test program...)"
10294 *) dflt="$alignbytes"
10297 rp="Doubles must be aligned on a how-many-byte boundary?"
10302 : check for ordering of bytes in a long
10303 case "$byteorder" in
10307 In the following, larger digits indicate more significance. A big-endian
10308 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10309 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10310 machines may have weird orders like 3412. A Cray will report 87654321. If
10311 the test program works the default is probably right.
10312 I'm now running the test program...
10314 $cat >try.c <<'EOCP'
10321 char c[sizeof(long)];
10324 if (sizeof(long) > 4)
10325 u.l = (0x08070605L << 32) | 0x04030201L;
10328 for (i = 0; i < sizeof(long); i++)
10329 printf("%c", u.c[i]+'0');
10336 if eval $compile && ./try > /dev/null; then
10339 [1-4][1-4][1-4][1-4]|12345678|87654321)
10340 echo "(The test program ran ok.)"
10341 echo "byteorder=$dflt"
10344 ????|????????) echo "(The test program ran ok.)" ;;
10345 *) echo "(The test program didn't run right for some reason.)" ;;
10350 (I can't seem to compile the test program. Guessing big-endian...)
10353 case "$xxx_prompt" in
10355 rp="What is the order of bytes in a long?"
10366 : how do we catenate cpp tokens here?
10368 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10369 $cat >cpp_stuff.c <<'EOCP'
10370 #define RCAT(a,b)a/**/b
10371 #define ACAT(a,b)a ## b
10375 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10376 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10377 echo "Oh! Smells like ANSI's been here." >&4
10378 echo "We can catify or stringify, separately or together!"
10380 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10381 echo "Ah, yes! The good old days!" >&4
10382 echo "However, in the good old days we don't know how to stringify and"
10383 echo "catify at the same time."
10387 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10388 to have to edit the values of CAT[2-5] in config.h...
10390 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10394 : see if this is a db.h system
10400 : Check db version.
10402 echo "Checking Berkeley DB version ..." >&4
10408 #include <sys/types.h>
10413 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10414 int Major, Minor, Patch ;
10415 unsigned long Version ;
10416 (void)db_version(&Major, &Minor, &Patch) ;
10417 printf("You have Berkeley DB Version 2 or greater\n");
10419 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10420 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10421 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10422 Major, Minor, Patch) ;
10424 /* check that db.h & libdb are compatible */
10425 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10426 printf("db.h and libdb are incompatible\n") ;
10430 printf("db.h and libdb are compatible\n") ;
10432 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10433 + DB_VERSION_PATCH ;
10435 /* needs to be >= 2.3.4 */
10436 if (Version < 2003004) {
10437 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10438 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10444 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10445 printf("You have Berkeley DB Version 1\n");
10446 exit(0); /* DB version < 2: the coast is clear. */
10448 exit(1); /* <db.h> not Berkeley DB? */
10454 if eval $compile && ./try; then
10455 echo 'Looks OK.' >&4
10457 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10461 : Remove db from list of libraries to use
10462 echo "Removing unusable -ldb from library list" >&4
10463 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10466 echo "libs = $libs" >&4
10476 : Check the return type needed for hash
10478 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10484 #include <sys/types.h>
10487 #ifndef DB_VERSION_MAJOR
10488 u_int32_t hash_cb (ptr, size)
10496 info.hash = hash_cb;
10500 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10501 if $contains warning try.out >>/dev/null 2>&1 ; then
10504 db_hashtype='u_int32_t'
10507 : XXX Maybe we should just give up here.
10508 db_hashtype=u_int32_t
10510 echo "Help: I can't seem to compile the db test program." >&4
10511 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10514 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10516 *) db_hashtype=u_int32_t
10521 : Check the return type needed for prefix
10523 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10529 #include <sys/types.h>
10532 #ifndef DB_VERSION_MAJOR
10533 size_t prefix_cb (key1, key2)
10541 info.prefix = prefix_cb;
10545 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10546 if $contains warning try.out >>/dev/null 2>&1 ; then
10547 db_prefixtype='int'
10549 db_prefixtype='size_t'
10552 db_prefixtype='size_t'
10553 : XXX Maybe we should just give up here.
10555 echo "Help: I can't seem to compile the db test program." >&4
10556 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10559 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10561 *) db_prefixtype='size_t'
10565 : check for void type
10567 echo "Checking to see how well your C compiler groks the void type..." >&4
10568 case "$voidflags" in
10570 $cat >try.c <<'EOCP'
10576 extern void moo(); /* function returning void */
10577 void (*goo)(); /* ptr to func returning void */
10579 void *hue; /* generic ptr */
10592 int main() { sub(); }
10594 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10595 voidflags=$defvoidused
10596 echo "Good. It appears to support void to the level $package wants.">&4
10597 if $contains warning .out >/dev/null 2>&1; then
10598 echo "However, you might get some warnings that look like this:"
10602 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10603 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10604 echo "It supports 1..."
10605 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10606 echo "It also supports 2..."
10607 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10609 echo "And it supports 4 but not 8 definitely."
10611 echo "It doesn't support 4..."
10612 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10614 echo "But it supports 8."
10617 echo "Neither does it support 8."
10621 echo "It does not support 2..."
10622 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10624 echo "But it supports 4 and 8."
10626 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10628 echo "And it supports 4 but has not heard about 8."
10630 echo "However it supports 8 but not 4."
10635 echo "There is no support at all for void."
10640 case "$voidflags" in
10642 *) $cat >&4 <<'EOM'
10643 Support flag bits are:
10644 1: basic void declarations.
10645 2: arrays of pointers to functions returning void.
10646 4: operations between pointers to and addresses of void functions.
10647 8: generic void pointers.
10650 rp="Your void support flags add up to what?"
10658 : How can we generate normalized random numbers ?
10660 echo "Looking for a random number function..." >&4
10661 case "$randfunc" in
10663 if set drand48 val -f; eval $csym; $val; then
10665 echo "Good, found drand48()." >&4
10666 elif set random val -f; eval $csym; $val; then
10668 echo "OK, found random()." >&4
10671 echo "Yick, looks like I have to use rand()." >&4
10682 *-Dmy_rand=*|*-Dmy_srand=*)
10683 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10684 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10685 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10686 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10690 while $test "$cont"; do
10691 rp="Use which function to generate random numbers?"
10693 if $test "$ans" = "$dflt"; then
10699 if set $ans val -f; eval $csym; $val; then
10703 rp="I cannot find function $ans. Use that name anyway?"
10712 case "$randfunc" in
10714 drand01="drand48()"
10720 case "$randbits" in
10722 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10724 #$i_unistd I_UNISTD
10725 #$i_stdlib I_STDLIB
10728 # include <unistd.h>
10731 # include <stdlib.h>
10736 register unsigned long tmp;
10737 register unsigned long max = 0L;
10739 for (i = 1000; i; i--) {
10740 tmp = (unsigned long) $randfunc();
10741 if (tmp > max) max = tmp;
10743 for (i = 0; max; i++)
10749 if eval $compile_ok; then
10753 echo "(I can't seem to compile the test program...)"
10760 rp="How many bits does your $randfunc() function produce?"
10764 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10765 seedfunc="s$randfunc"
10766 randseedtype=unsigned
10770 rp="How many bits does your $randfunc() function produce?"
10773 seedfunc="s$randfunc"
10774 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10775 if set $seedfunc val -f; eval $csym; $val; then
10776 echo "(Using $seedfunc() to seed random generator)"
10778 echo "(Warning: no $seedfunc() to seed random generator)"
10781 randseedtype=unsigned
10789 echo "Determining whether or not we are on an EBCDIC system..." >&4
10790 $cat >tebcdic.c <<'EOM'
10793 if ('M'==0xd4) return 0;
10800 if eval $compile_ok; then
10802 echo "You have EBCDIC." >&4
10805 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10808 echo "I'm unable to compile the test program." >&4
10809 echo "I'll assume ASCII or some ISO Latin." >&4
10811 $rm -f tebcdic.c tebcdic
10815 : see what type file positions are declared as in the library
10816 rp="What is the type for file position used by fsetpos()?"
10817 set fpos_t fpostype long stdio.h sys/types.h
10820 : Store the full pathname to the sed program for use in the C program
10823 : see what type gids are declared as in the kernel
10825 echo "Looking for the type for group ids returned by getgid()."
10826 set gid_t gidtype xxx stdio.h sys/types.h
10830 xxx=`./findhdr sys/user.h`
10831 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10833 unsigned) dflt="$1 $2" ;;
10837 *) dflt="$gidtype";;
10840 gid_t) echo "gid_t found." ;;
10841 *) rp="What is the type for group ids returned by getgid()?"
10847 : see if getgroups exists
10848 set getgroups d_getgrps
10851 : see if setgroups exists
10852 set setgroups d_setgrps
10856 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10858 case "$d_getgrps$d_setgrps" in
10860 case "$groupstype" in
10861 '') dflt="$gidtype" ;;
10862 *) dflt="$groupstype" ;;
10865 What type of pointer is the second argument to getgroups() and setgroups()?
10866 Usually this is the same as group ids, $gidtype, but not always.
10869 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10873 *) groupstype="$gidtype";;
10876 : see what type lseek is declared as in the kernel
10877 rp="What is the type used for lseek's offset on this system?"
10878 set off_t lseektype long stdio.h sys/types.h
10882 $echo $n "Checking to see how big your file offsets are...$c" >&4
10884 #include <sys/types.h>
10888 printf("%d\n", sizeof($lseektype));
10892 if eval $compile_ok; then
10894 $echo " $lseeksize bytes." >&4
10898 echo "(I can't seem to compile the test program. Guessing...)"
10899 rp="What is the size of your file offsets (in bytes)?"
10906 echo "Checking if your $make program sets \$(MAKE)..." >&4
10907 case "$make_set_make" in
10909 $sed 's/^X //' > testmake.mak << 'EOF'
10911 X @echo 'maketemp="$(MAKE)"'
10913 case "`$make -f testmake.mak 2>/dev/null`" in
10914 *maketemp=*) make_set_make='#' ;;
10915 *) make_set_make="MAKE=$make" ;;
10917 $rm -f testmake.mak
10920 case "$make_set_make" in
10921 '#') echo "Yup, it does.";;
10922 *) echo "Nope, it doesn't.";;
10925 : see what type is used for mode_t
10926 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10927 set mode_t modetype int stdio.h sys/types.h
10930 : define a fucntion to check prototypes
10931 $cat > protochk <<EOSH
10934 optimize="$optimize"
10936 prototype="$prototype"
10941 $cat >> protochk <<'EOSH'
10946 while test $# -ge 2; do
10948 $define) echo "#include <$2>" >> try.c ;;
10949 literal) echo "$2" >> try.c ;;
10953 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
10954 cat >> try.c <<'EOCP'
10955 #ifdef CAN_PROTOTYPE
10956 #define _(args) args
10961 echo "$foo" >> try.c
10962 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10963 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10969 $eunicefix protochk
10971 : see what type is used for size_t
10972 rp="What is the type used for the length parameter for string functions?"
10973 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10976 : check for type of arguments to gethostbyaddr.
10977 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10978 case "$d_gethbyaddr" in
10982 Checking to see what type of arguments are accepted by gethostbyaddr().
10984 hdrs="$define sys/types.h
10985 $d_socket sys/socket.h
10986 $i_niin netinet/in.h
10988 $i_unistd unistd.h"
10989 : The first arg can 'char *' or 'void *'
10990 : The second arg is some of integral type
10991 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10992 for yyy in size_t long int; do
10993 case "$netdb_host_type" in
10994 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10995 if ./protochk "$try" $hdrs; then
10996 echo "Your system accepts $xxx for the first arg."
10997 echo "...and $yyy for the second arg."
10998 netdb_host_type="$xxx"
10999 netdb_hlen_type="$yyy"
11005 : In case none of those worked, prompt the user.
11006 case "$netdb_host_type" in
11007 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11010 netdb_host_type=$ans
11011 rp='What is the type for the 2nd argument to gethostbyaddr?'
11014 netdb_hlen_type=$ans
11018 *) : no gethostbyaddr, so pick harmless defaults
11019 netdb_host_type='char *'
11020 netdb_hlen_type="$sizetype"
11023 # Remove the "const" if needed. -- but then we'll have a
11025 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11028 : check for type of argument to gethostbyname.
11029 if test "X$netdb_name_type" = X ; then
11030 case "$d_gethbyname" in
11034 Checking to see what type of argument is accepted by gethostbyname().
11036 hdrs="$define sys/types.h
11037 $d_socket sys/socket.h
11038 $i_niin netinet/in.h
11040 $i_unistd unistd.h"
11041 for xxx in "const char *" "char *"; do
11042 case "$netdb_name_type" in
11043 '') try="extern struct hostent *gethostbyname($xxx);"
11044 if ./protochk "$try" $hdrs; then
11045 echo "Your system accepts $xxx."
11046 netdb_name_type="$xxx"
11051 : In case none of those worked, prompt the user.
11052 case "$netdb_name_type" in
11053 '') rp='What is the type for the 1st argument to gethostbyname?'
11056 netdb_name_type=$ans
11060 *) : no gethostbyname, so pick harmless default
11061 netdb_name_type='char *'
11066 : check for type of 1st argument to getnetbyaddr.
11067 if test "X$netdb_net_type" = X ; then
11068 case "$d_getnbyaddr" in
11072 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11074 hdrs="$define sys/types.h
11075 $d_socket sys/socket.h
11076 $i_niin netinet/in.h
11078 $i_unistd unistd.h"
11079 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11080 case "$netdb_net_type" in
11081 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11082 if ./protochk "$try" $hdrs; then
11083 echo "Your system accepts $xxx."
11084 netdb_net_type="$xxx"
11089 : In case none of those worked, prompt the user.
11090 case "$netdb_net_type" in
11091 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11094 netdb_net_type=$ans
11098 *) : no getnetbyaddr, so pick harmless default
11099 netdb_net_type='long'
11103 : locate the preferred pager for this system
11117 '') dflt=/usr/ucb/more;;
11124 rp='What pager is used on your system?'
11128 : see what type pids are declared as in the kernel
11129 rp="What is the type of process ids on this system?"
11130 set pid_t pidtype int stdio.h sys/types.h
11133 : check for length of pointer
11137 $echo $n "Checking to see how big your pointers are...$c" >&4
11138 if test "$voidflags" -gt 7; then
11139 echo '#define VOID_PTR char *' > try.c
11141 echo '#define VOID_PTR void *' > try.c
11143 $cat >>try.c <<'EOCP'
11147 printf("%d\n", sizeof(VOID_PTR));
11152 if eval $compile_ok; then
11154 $echo " $ptrsize bytes." >&4
11157 echo "(I can't seem to compile the test program. Guessing...)" >&4
11158 rp="What is the size of a pointer (in bytes)?"
11166 : see if ar generates random libraries by itself
11168 echo "Checking how to generate random libraries on your machine..." >&4
11169 echo 'int bar1() { return bar2(); }' > bar1.c
11170 echo 'int bar2() { return 2; }' > bar2.c
11171 $cat > foo.c <<'EOP'
11172 int main() { printf("%d\n", bar1()); exit(0); }
11174 $cc $ccflags -c bar1.c >/dev/null 2>&1
11175 $cc $ccflags -c bar2.c >/dev/null 2>&1
11176 $cc $ccflags -c foo.c >/dev/null 2>&1
11177 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11178 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11179 ./foobar >/dev/null 2>&1; then
11180 echo "$ar appears to generate random libraries itself."
11183 elif $ar ts bar$_a >/dev/null 2>&1 &&
11184 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11185 ./foobar >/dev/null 2>&1; then
11186 echo "a table of contents needs to be added with '$ar ts'."
11193 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11194 $test -f $ranlib || ranlib=''
11197 if $test -n "$ranlib"; then
11198 echo "your system has '$ranlib'; we'll use that."
11201 echo "your system doesn't seem to support random libraries"
11202 echo "so we'll use lorder and tsort to order the libraries."
11209 : check for type of arguments to select.
11210 case "$selecttype" in
11211 '') case "$d_select" in
11214 Checking to see what type of arguments are accepted by select().
11216 hdrs="$define sys/types.h
11217 $i_systime sys/time.h
11218 $i_sysselct sys/select.h
11219 $d_socket sys/socket.h"
11220 : The first arg can be int, unsigned, or size_t
11221 : The last arg may or may not be 'const'
11223 : void pointer has been seen but using that
11224 : breaks the selectminbits test
11225 for xxx in 'fd_set *' 'int *'; do
11226 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11227 for tmo in 'struct timeval *' 'const struct timeval *'; do
11229 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11230 if ./protochk "$try" $hdrs; then
11231 echo "Your system accepts $xxx."
11240 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11241 case "$d_fd_set" in
11242 $define) dflt="fd_set *" ;;
11251 *) : no select, so pick a harmless default
11258 : check for the select 'width'
11259 case "$selectminbits" in
11260 '') case "$d_select" in
11264 Checking to see on how many bits at a time your select() operates...
11267 #include <sys/types.h>
11269 #$i_systime I_SYS_TIME
11270 #$i_systimek I_SYS_TIME_KERNEL
11275 # ifdef I_SYS_TIME_KERNEL
11278 # include <sys/time.h>
11279 # ifdef I_SYS_TIME_KERNEL
11283 #$i_sysselct I_SYS_SELECT
11284 #ifdef I_SYS_SELECT
11285 #include <sys/select.h>
11289 #define S sizeof(*(b))
11291 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11292 #define NBITS (NBYTES * 8)
11301 fp = fopen("try.c", "r");
11307 b = ($selecttype)s;
11308 for (i = 0; i < NBITS; i++)
11312 select(fd + 1, b, 0, 0, &t);
11313 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11314 printf("%d\n", i + 1);
11319 if eval $compile_ok; then
11320 selectminbits=`./try`
11321 case "$selectminbits" in
11323 Cannot figure out on how many bits at a time your select() operates.
11324 I'll play safe and guess it is 32 bits.
11330 *) bits="$selectminbits bits" ;;
11332 echo "Your select() operates on $bits at a time." >&4
11334 rp='What is the minimum number of bits your select() operates on?'
11335 case "$byteorder" in
11336 1234|12345678) dflt=32 ;;
11341 selectminbits="$val"
11345 *) : no select, so pick a harmless default
11352 : Trace out the files included by signal.h, then look for SIGxxx names.
11353 : Remove SIGARRAYSIZE used by HPUX.
11354 : Remove SIGTYP void lines used by OS2.
11355 xxx=`echo '#include <signal.h>' |
11356 $cppstdin $cppminus $cppflags 2>/dev/null |
11357 $grep '^[ ]*#.*include' |
11358 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11359 : Check this list of files to be sure we have parsed the cpp output ok.
11360 : This will also avoid potentially non-existent files, such
11363 for xx in $xxx /dev/null ; do
11364 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11366 : If we have found no files, at least try signal.h
11367 case "$xxxfiles" in
11368 '') xxxfiles=`./findhdr signal.h` ;;
11371 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11372 print substr($2, 4, 20)
11374 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11375 print substr($3, 4, 20)
11377 : Append some common names just in case the awk scan failed.
11378 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11379 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11380 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11381 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11382 : generate a few handy files for later
11383 $cat > signal.c <<'EOCP'
11384 #include <sys/types.h>
11385 #include <signal.h>
11389 /* Strange style to avoid deeply-nested #if/#else/#endif */
11392 # define NSIG (_NSIG)
11398 # define NSIG (SIGMAX+1)
11404 # define NSIG (SIG_MAX+1)
11410 # define NSIG (MAXSIG+1)
11416 # define NSIG (MAX_SIG+1)
11421 # ifdef SIGARRAYSIZE
11422 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11428 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11432 /* Default to some arbitrary number that's big enough to get most
11433 of the common signals.
11439 printf("NSIG %d\n", NSIG);
11445 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11447 printf "#ifdef SIG"; printf $1; printf "\n"
11448 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11449 printf $1; printf ");\n"
11453 printf "#endif /* JUST_NSIG */\n";
11457 $cat >signal.awk <<'EOP'
11458 BEGIN { ndups = 0 }
11459 $1 ~ /^NSIG$/ { nsig = $2 }
11460 ($1 !~ /^NSIG$/) && (NF == 2) {
11461 if ($2 > maxsig) { maxsig = $2 }
11462 if (sig_name[$2]) {
11463 dup_name[ndups] = $1
11464 dup_num[ndups] = $2
11474 if (nsig == 0) { nsig = maxsig + 1 }
11475 for (n = 1; n < nsig; n++) {
11477 printf("%s %d\n", sig_name[n], sig_num[n])
11480 printf("NUM%d %d\n", n, n)
11483 for (n = 0; n < ndups; n++) {
11484 printf("%s %d\n", dup_name[n], dup_num[n])
11488 $cat >signal_cmd <<EOS
11490 if $test -s signal.lst; then
11491 echo "Using your existing signal.lst file"
11496 $cat >>signal_cmd <<'EOS'
11499 if eval $compile_ok; then
11500 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11502 echo "(I can't seem be able to compile the whole test program)" >&4
11503 echo "(I'll try it in little pieces.)" >&4
11504 set signal -DJUST_NSIG
11505 if eval $compile_ok; then
11506 ./signal$_exe > signal.nsg
11509 echo "I can't seem to figure out how many signals you have." >&4
11510 echo "Guessing 50." >&4
11511 echo 'NSIG 50' > signal.nsg
11513 : Now look at all the signal names, one at a time.
11514 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11515 $cat > signal.c <<EOCP
11516 #include <sys/types.h>
11517 #include <signal.h>
11520 printf("$xx %d\n", SIG${xx});
11525 if eval $compile; then
11526 echo "SIG${xx} found."
11527 ./signal$_exe >> signal.ls1
11529 echo "SIG${xx} NOT found."
11532 if $test -s signal.ls1; then
11533 $cat signal.nsg signal.ls1 |
11534 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11538 if $test -s signal.lst; then
11541 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11542 echo 'kill -l' >signal
11543 set X `csh -f <signal`
11547 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11549 echo $@ | $tr ' ' $trnl | \
11550 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11552 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11554 chmod a+x signal_cmd
11555 $eunicefix signal_cmd
11557 : generate list of signal names
11559 case "$sig_name_init" in
11561 *) case "$sig_num_init" in
11562 ''|*,*) doinit=yes ;;
11567 echo "Generating a list of signal names and numbers..." >&4
11569 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11570 sig_name="ZERO $sig_name"
11571 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11572 { printf "\"%s\", ", $1 }
11573 END { printf "0\n" }' signal.lst`
11574 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11575 sig_num="0 $sig_num"
11576 sig_num_init=`$awk 'BEGIN { printf "0, " }
11577 { printf "%d, ", $2}
11578 END { printf "0\n"}' signal.lst`
11581 echo "The following signals are available:"
11583 echo $sig_name | $awk \
11584 'BEGIN { linelen = 0 }
11586 for (i = 1; i <= NF; i++) {
11587 name = "SIG" $i " "
11588 linelen = linelen + length(name)
11589 if (linelen > 70) {
11591 linelen = length(name)
11597 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11599 : see what type is used for signed size_t
11600 set ssize_t ssizetype int stdio.h sys/types.h
11603 $cat > ssize.c <<EOM
11605 #include <sys/types.h>
11606 #define Size_t $sizetype
11607 #define SSize_t $dflt
11610 if (sizeof(Size_t) == sizeof(SSize_t))
11612 else if (sizeof(Size_t) == sizeof(int))
11621 if eval $compile_ok && ./ssize > /dev/null; then
11622 ssizetype=`./ssize`
11623 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11626 Help! I can't compile and run the ssize_t test program: please enlighten me!
11627 (This is probably a misconfiguration in your system or libraries, and
11628 you really ought to fix it. Still, I'll try anyway.)
11630 I need a type that is the same size as $sizetype, but is guaranteed to
11631 be signed. Common values are ssize_t, int and long.
11634 rp="What signed type is the same size as $sizetype?"
11638 $rm -f ssize ssize.*
11640 : see what type of char stdio uses.
11642 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11643 echo "Your stdio uses unsigned chars." >&4
11644 stdchar="unsigned char"
11646 echo "Your stdio uses signed chars." >&4
11650 : see if time exists
11652 if test "X$d_time" = X -o X"$timetype" = X; then
11653 if set time val -f d_time; eval $csym; $val; then
11654 echo 'time() found.' >&4
11656 rp="What is the type returned by time() on this system?"
11657 set time_t timetype long stdio.h sys/types.h
11660 echo 'time() not found, hope that will do.' >&4
11668 : see what type uids are declared as in the kernel
11670 echo "Looking for the type for user ids returned by getuid()."
11671 set uid_t uidtype xxx stdio.h sys/types.h
11675 xxx=`./findhdr sys/user.h`
11676 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11678 unsigned) dflt="$1 $2" ;;
11682 *) dflt="$uidtype";;
11685 uid_t) echo "uid_t found." ;;
11686 *) rp="What is the type for user ids returned by getuid()?"
11692 : see if dbm.h is available
11693 : see if dbmclose exists
11694 set dbmclose d_dbmclose
11697 case "$d_dbmclose" in
11707 *) set rpcsvc/dbm.h i_rpcsvcdbm
11712 *) echo "We won't be including <dbm.h>"
11722 : see if this is a sys/file.h system
11727 : do we need to include sys/file.h ?
11731 if $h_sysfile; then
11733 echo "We'll be including <sys/file.h>." >&4
11736 echo "We won't be including <sys/file.h>." >&4
11746 : see if fcntl.h is there
11751 : see if we can include fcntl.h
11757 echo "We'll be including <fcntl.h>." >&4
11760 if $h_sysfile; then
11761 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11763 echo "We won't be including <fcntl.h>." >&4
11775 : see if locale.h is available
11776 set locale.h i_locale
11779 : see if mach cthreads are available
11780 if test "X$usethreads" = "X$define"; then
11781 set mach/cthreads.h i_machcthr
11784 i_machcthr="$undef"
11789 : see if this is a math.h system
11793 : see if this is a mntent.h system
11794 set mntent.h i_mntent
11797 : see if ndbm.h is available
11802 : see if dbm_open exists
11803 set dbm_open d_dbm_open
11805 case "$d_dbm_open" in
11808 echo "We won't be including <ndbm.h>"
11817 : see if net/errno.h is available
11819 set net/errno.h val
11822 : Unfortunately, it causes problems on some systems. Arrgh.
11825 cat > try.c <<'EOM'
11828 #include <net/errno.h>
11834 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11835 echo "We'll be including <net/errno.h>." >&4
11837 echo "We won't be including <net/errno.h>." >&4
11846 : see if this is a poll.h system
11850 : get C preprocessor symbols handy
11852 $echo $n "Hmm... $c"
11853 echo $al | $tr ' ' $trnl >Cppsym.know
11854 $cat <<EOSS >Cppsym
11862 case "\$list\$#" in
11865 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11867 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11870 unknown="\$unknown \$sym"
11880 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11882 exit 0; _ _ _ _\1\\ \1\\
11885 echo "exit 1; _ _ _" >>Cppsym\$\$
11886 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11888 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11894 $rm -f Cppsym\$\$ Cppsym2\$\$
11899 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11901 : now check the C compiler for additional symbols
11907 for i in \`$cc -v -c tmp.c 2>&1\`
11910 -D*) echo "\$i" | $sed 's/^-D//';;
11911 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11918 ./ccsym > ccsym1.raw
11919 if $test -s ccsym1.raw; then
11920 $sort ccsym1.raw | $uniq >ccsym.raw
11922 mv ccsym1.raw ccsym.raw
11925 $awk '/\=/ { print $0; next }
11926 { print $0"=1" }' ccsym.raw >ccsym.list
11927 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11928 $comm -13 ccsym.true ccsym.list >ccsym.own
11929 $comm -12 ccsym.true ccsym.list >ccsym.com
11930 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11932 if $test -z ccsym.raw; then
11933 echo "Your C compiler doesn't seem to define any symbols!" >&4
11935 echo "However, your C preprocessor defines the following symbols:"
11938 cppsymbols=`$cat Cppsym.true`
11939 cppsymbols=`echo $cppsymbols`
11940 cppccsymbols="$cppsymbols"
11942 if $test -s ccsym.com; then
11943 echo "Your C compiler and pre-processor define these symbols:"
11944 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11947 cppccsymbols=`$cat ccsym.com`
11948 cppccsymbols=`echo $cppccsymbols`
11949 $test "$silent" || sleep 1
11951 if $test -s ccsym.cpp; then
11952 $test "$also" && echo " "
11953 echo "Your C pre-processor ${also}defines the following symbols:"
11954 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11956 cppsymbols=`$cat ccsym.cpp`
11957 cppsymbols=`echo $cppsymbols`
11958 $test "$silent" || sleep 1
11960 if $test -s ccsym.own; then
11961 $test "$also" && echo " "
11962 echo "Your C compiler ${also}defines the following cpp symbols:"
11963 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11964 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11965 ccsymbols=`$cat ccsym.own`
11966 ccsymbols=`echo $ccsymbols`
11967 $test "$silent" || sleep 1
11972 : see if this is a termio system
11976 if $test `./findhdr termios.h`; then
11977 set tcsetattr i_termios
11983 "$define") echo "You have POSIX termios.h... good!" >&4;;
11984 *) if ./Cppsym pyr; then
11985 case "`/bin/universe`" in
11986 ucb) if $test `./findhdr sgtty.h`; then
11988 echo "<sgtty.h> found." >&4
11990 echo "System is pyramid with BSD universe."
11991 echo "<sgtty.h> not found--you could have problems." >&4
11993 *) if $test `./findhdr termio.h`; then
11995 echo "<termio.h> found." >&4
11997 echo "System is pyramid with USG universe."
11998 echo "<termio.h> not found--you could have problems." >&4
12002 if $test `./findhdr termio.h`; then
12003 echo "<termio.h> found." >&4
12005 elif $test `./findhdr sgtty.h`; then
12006 echo "<sgtty.h> found." >&4
12009 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12012 if $test `./findhdr sgtty.h`; then
12013 echo "<sgtty.h> found." >&4
12015 elif $test `./findhdr termio.h`; then
12016 echo "<termio.h> found." >&4
12019 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12023 set i_termio; eval $setvar
12024 val=$val2; set i_sgtty; eval $setvar
12025 val=$val3; set i_termios; eval $setvar
12027 : see if stdarg is available
12029 if $test `./findhdr stdarg.h`; then
12030 echo "<stdarg.h> found." >&4
12033 echo "<stdarg.h> NOT found." >&4
12037 : see if varags is available
12039 if $test `./findhdr varargs.h`; then
12040 echo "<varargs.h> found." >&4
12042 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12045 : set up the varargs testing programs
12046 $cat > varargs.c <<EOP
12048 #include <stdarg.h>
12051 #include <varargs.h>
12055 int f(char *p, ...)
12069 p = va_arg(ap, char *);
12074 $cat > varargs <<EOP
12076 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12085 : now check which varargs header should be included
12090 if `./varargs I_STDARG`; then
12092 elif `./varargs I_VARARGS`; then
12097 if `./varargs I_VARARGS`; then
12104 echo "I could not find the definition for va_dcl... You have problems..." >&4
12105 val="$undef"; set i_stdarg; eval $setvar
12106 val="$undef"; set i_varargs; eval $setvar
12111 case "$i_varhdr" in
12113 val="$define"; set i_stdarg; eval $setvar
12114 val="$undef"; set i_varargs; eval $setvar
12117 val="$undef"; set i_stdarg; eval $setvar
12118 val="$define"; set i_varargs; eval $setvar
12121 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12125 : see if stddef is available
12126 set stddef.h i_stddef
12129 : see if sys/access.h is available
12130 set sys/access.h i_sysaccess
12133 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12134 set sys/filio.h i_sysfilio
12137 if $test `./findhdr sys/ioctl.h`; then
12139 echo '<sys/ioctl.h> found.' >&4
12142 if $test $i_sysfilio = "$define"; then
12143 echo '<sys/ioctl.h> NOT found.' >&4
12145 $test $i_sgtty = "$define" && xxx="sgtty.h"
12146 $test $i_termio = "$define" && xxx="termio.h"
12147 $test $i_termios = "$define" && xxx="termios.h"
12148 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12154 : see if sys/resource.h has to be included
12155 set sys/resource.h i_sysresrc
12158 : see if sys/security.h is available
12159 set sys/security.h i_syssecrt
12162 : see if this is a sys/statvfs.h system
12163 set sys/statvfs.h i_sysstatvfs
12166 : see if this is a sys/un.h system
12167 set sys/un.h i_sysun
12170 : see if this is a syswait system
12171 set sys/wait.h i_syswait
12174 : see if this is an utime system
12175 set utime.h i_utime
12178 : see if this is a values.h system
12179 set values.h i_values
12182 : see if this is a vfork system
12185 set vfork.h i_vfork
12193 : see if gdbm.h is available
12198 : see if gdbm_open exists
12199 set gdbm_open d_gdbm_open
12201 case "$d_gdbm_open" in
12204 echo "We won't be including <gdbm.h>"
12214 echo "Looking for extensions..." >&4
12217 : If we are using the old config.sh, known_extensions may contain
12218 : old or inaccurate or duplicate values.
12219 known_extensions=''
12220 nonxs_extensions=''
12221 : We do not use find because it might not be available.
12222 : We do not just use MANIFEST because the user may have dropped
12223 : some additional extensions into the source tree and expect them
12227 DynaLoader|dynaload) ;;
12228 *) if $test -f $xxx/$xxx.xs; then
12229 known_extensions="$known_extensions $xxx"
12230 elif $test -f $xxx/Makefile.PL; then
12231 nonxs_extensions="$nonxs_extensions $xxx"
12233 if $test -d $xxx; then
12234 # Look for nested extensions, eg. Devel/Dprof.
12237 if $test -f $yyy/$yyy.xs; then
12238 known_extensions="$known_extensions $xxx/$yyy"
12239 elif $test -f $yyy/Makefile.PL; then
12240 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12249 set X $nonxs_extensions
12251 nonxs_extensions="$*"
12252 set X $known_extensions
12254 known_extensions="$*"
12257 : Now see which are supported on this system.
12259 for xxx in $known_extensions ; do
12263 $define) avail_ext="$avail_ext $xxx" ;;
12266 GDBM_File|gdbm_fil)
12268 $define) avail_ext="$avail_ext $xxx" ;;
12271 NDBM_File|ndbm_fil)
12273 $define) avail_ext="$avail_ext $xxx" ;;
12276 ODBM_File|odbm_fil)
12277 case "${i_dbm}${i_rpcsvcdbm}" in
12278 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12282 case "$useposix" in
12283 true|define|y) avail_ext="$avail_ext $xxx" ;;
12287 case "$useopcode" in
12288 true|define|y) avail_ext="$avail_ext $xxx" ;;
12292 case "$d_socket" in
12293 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12297 case "$usethreads" in
12298 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12302 : XXX Do we need a useipcsysv variable here
12303 case "${d_msg}${d_sem}${d_shm}" in
12304 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12307 *) avail_ext="$avail_ext $xxx"
12316 : Now see which nonxs extensions are supported on this system.
12317 : For now assume all are.
12319 for xxx in $nonxs_extensions ; do
12321 *) nonxs_ext="$nonxs_ext $xxx"
12333 A number of extensions are supplied with $package. You may choose to
12334 compile these extensions for dynamic loading (the default), compile
12335 them into the $package executable (static loading), or not include
12336 them at all. Answer "none" to include no extensions.
12337 Note that DynaLoader is always built and need not be mentioned here.
12340 case "$dynamic_ext" in
12341 '') dflt="$avail_ext" ;;
12342 *) dflt="$dynamic_ext"
12343 # Perhaps we are reusing an old out-of-date config.sh.
12346 if test X"$dynamic_ext" != X"$avail_ext"; then
12348 NOTICE: Your previous config.sh list may be incorrect.
12349 The extensions now available to you are
12351 but the default list from your previous config.sh is
12363 rp="What extensions do you wish to load dynamically?"
12366 none) dynamic_ext=' ' ;;
12367 *) dynamic_ext="$ans" ;;
12370 case "$static_ext" in
12372 : Exclude those already listed in dynamic linking
12374 for xxx in $avail_ext; do
12375 case " $dynamic_ext " in
12377 *) dflt="$dflt $xxx" ;;
12384 *) dflt="$static_ext"
12391 rp="What extensions do you wish to load statically?"
12394 none) static_ext=' ' ;;
12395 *) static_ext="$ans" ;;
12400 A number of extensions are supplied with $package. Answer "none"
12401 to include no extensions.
12402 Note that DynaLoader is always built and need not be mentioned here.
12405 case "$static_ext" in
12406 '') dflt="$avail_ext" ;;
12407 *) dflt="$static_ext"
12408 # Perhaps we are reusing an old out-of-date config.sh.
12411 if test X"$static_ext" != X"$avail_ext"; then
12413 NOTICE: Your previous config.sh list may be incorrect.
12414 The extensions now available to you are
12416 but the default list from your previous config.sh is
12425 : Exclude those that are not xs extensions
12429 rp="What extensions do you wish to include?"
12432 none) static_ext=' ' ;;
12433 *) static_ext="$ans" ;;
12438 set X $dynamic_ext $static_ext $nonxs_ext
12442 : Remove build directory name from cppstdin so it can be used from
12443 : either the present location or the final installed location.
12445 : Get out of the UU directory to get correct path name.
12447 case "$cppstdin" in
12449 echo "Stripping down cppstdin path name"
12455 : end of configuration questions
12457 echo "End of configuration questions."
12460 : back to where it started
12461 if test -d ../UU; then
12465 : configuration may be patched via a 'config.over' file
12466 if $test -f config.over; then
12469 rp='I see a config.over file. Do you wish to load it?'
12472 n*) echo "OK, I'll ignore it.";;
12474 echo "Configuration override changes have been loaded."
12479 : in case they want portability, strip down executable paths
12480 case "$d_portable" in
12483 echo "Stripping down executable paths..." >&4
12484 for file in $loclist $trylist; do
12485 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12486 eval $file="\$file"
12492 : create config.sh file
12494 echo "Creating config.sh..." >&4
12495 $spitshell <<EOT >config.sh
12498 # This file was produced by running the Configure script. It holds all the
12499 # definitions figured out by Configure. Should you modify one of these values,
12500 # do not forget to propagate your changes by running "Configure -der". You may
12501 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12504 # Package name : $package
12505 # Source directory : $src
12506 # Configuration time: $cf_time
12507 # Configured by : $cf_by
12508 # Target system : $myuname
12518 Revision='$Revision'
12525 alignbytes='$alignbytes'
12526 ansi2knr='$ansi2knr'
12527 aphostname='$aphostname'
12528 apiversion='$apiversion'
12531 archlibexp='$archlibexp'
12532 archname64='$archname64'
12533 archname='$archname'
12534 archobjs='$archobjs'
12542 byteorder='$byteorder'
12544 castflags='$castflags'
12547 cccdlflags='$cccdlflags'
12548 ccdlflags='$ccdlflags'
12550 ccsymbols='$ccsymbols'
12552 cf_email='$cf_email'
12557 clocktype='$clocktype'
12559 compress='$compress'
12560 contains='$contains'
12564 cpp_stuff='$cpp_stuff'
12565 cppccsymbols='$cppccsymbols'
12566 cppflags='$cppflags'
12568 cppminus='$cppminus'
12570 cppstdin='$cppstdin'
12571 cppsymbols='$cppsymbols'
12572 cryptlib='$cryptlib'
12574 d_Gconvert='$d_Gconvert'
12575 d_access='$d_access'
12576 d_accessx='$d_accessx'
12578 d_archlib='$d_archlib'
12579 d_attribut='$d_attribut'
12583 d_bsdgetpgrp='$d_bsdgetpgrp'
12584 d_bsdsetpgrp='$d_bsdsetpgrp'
12586 d_casti32='$d_casti32'
12587 d_castneg='$d_castneg'
12588 d_charvspr='$d_charvspr'
12590 d_chroot='$d_chroot'
12591 d_chsize='$d_chsize'
12592 d_closedir='$d_closedir'
12593 d_cmsghdr_s='$d_cmsghdr_s'
12597 d_cuserid='$d_cuserid'
12598 d_dbl_dig='$d_dbl_dig'
12599 d_dbmclose64='$d_dbmclose64'
12600 d_dbminit64='$d_dbminit64'
12601 d_delete64='$d_delete64'
12602 d_difftime='$d_difftime'
12603 d_dirent64_s='$d_dirent64_s'
12604 d_dirnamlen='$d_dirnamlen'
12605 d_dlerror='$d_dlerror'
12606 d_dlopen='$d_dlopen'
12607 d_dlsymun='$d_dlsymun'
12608 d_dosuid='$d_dosuid'
12609 d_drand48proto='$d_drand48proto'
12611 d_eaccess='$d_eaccess'
12612 d_endgrent='$d_endgrent'
12613 d_endhent='$d_endhent'
12614 d_endnent='$d_endnent'
12615 d_endpent='$d_endpent'
12616 d_endpwent='$d_endpwent'
12617 d_endsent='$d_endsent'
12618 d_eofnblk='$d_eofnblk'
12619 d_eunice='$d_eunice'
12620 d_fchmod='$d_fchmod'
12621 d_fchown='$d_fchown'
12623 d_fd_macros='$d_fd_macros'
12624 d_fd_set='$d_fd_set'
12625 d_fds_bits='$d_fds_bits'
12626 d_fetch64='$d_fetch64'
12627 d_fgetpos64='$d_fgetpos64'
12628 d_fgetpos='$d_fgetpos'
12629 d_firstkey64='$d_firstkey64'
12630 d_flexfnam='$d_flexfnam'
12631 d_flock64_s='$d_flock64_s'
12633 d_fopen64='$d_fopen64'
12635 d_fpathconf='$d_fpathconf'
12636 d_freopen64='$d_freopen64'
12637 d_fseek64='$d_fseek64'
12638 d_fseeko64='$d_fseeko64'
12639 d_fseeko='$d_fseeko'
12640 d_fsetpos64='$d_fsetpos64'
12641 d_fsetpos='$d_fsetpos'
12642 d_fstat64='$d_fstat64'
12643 d_fstatfs='$d_fstatfs'
12644 d_fstatvfs='$d_fstatvfs'
12645 d_ftell64='$d_ftell64'
12646 d_ftello64='$d_ftello64'
12647 d_ftello='$d_ftello'
12649 d_ftruncate64='$d_ftruncate64'
12650 d_getgrent='$d_getgrent'
12651 d_getgrps='$d_getgrps'
12652 d_gethbyaddr='$d_gethbyaddr'
12653 d_gethbyname='$d_gethbyname'
12654 d_gethent='$d_gethent'
12655 d_gethname='$d_gethname'
12656 d_gethostprotos='$d_gethostprotos'
12657 d_getlogin='$d_getlogin'
12658 d_getnbyaddr='$d_getnbyaddr'
12659 d_getnbyname='$d_getnbyname'
12660 d_getnent='$d_getnent'
12661 d_getnetprotos='$d_getnetprotos'
12662 d_getpbyname='$d_getpbyname'
12663 d_getpbynumber='$d_getpbynumber'
12664 d_getpent='$d_getpent'
12665 d_getpgid='$d_getpgid'
12666 d_getpgrp2='$d_getpgrp2'
12667 d_getpgrp='$d_getpgrp'
12668 d_getppid='$d_getppid'
12669 d_getprior='$d_getprior'
12670 d_getprotoprotos='$d_getprotoprotos'
12671 d_getpwent='$d_getpwent'
12672 d_getsbyname='$d_getsbyname'
12673 d_getsbyport='$d_getsbyport'
12674 d_getsent='$d_getsent'
12675 d_getservprotos='$d_getservprotos'
12676 d_gettimeod='$d_gettimeod'
12677 d_gnulibc='$d_gnulibc'
12678 d_grpasswd='$d_grpasswd'
12681 d_inetaton='$d_inetaton'
12682 d_ino64t='$d_ino64t'
12683 d_int64t='$d_int64t'
12684 d_iovec_s='$d_iovec_s'
12685 d_isascii='$d_isascii'
12686 d_killpg='$d_killpg'
12687 d_lchown='$d_lchown'
12689 d_locconv='$d_locconv'
12690 d_lockf64='$d_lockf64'
12692 d_longdbl='$d_longdbl'
12693 d_longlong='$d_longlong'
12694 d_lseek64='$d_lseek64'
12695 d_lstat64='$d_lstat64'
12697 d_madvise='$d_madvise'
12699 d_mbstowcs='$d_mbstowcs'
12700 d_mbtowc='$d_mbtowc'
12701 d_memcmp='$d_memcmp'
12702 d_memcpy='$d_memcpy'
12703 d_memmove='$d_memmove'
12704 d_memset='$d_memset'
12706 d_mkfifo='$d_mkfifo'
12707 d_mktime='$d_mktime'
12709 d_mprotect='$d_mprotect'
12711 d_msg_ctrunc='$d_msg_ctrunc'
12712 d_msg_dontroute='$d_msg_dontroute'
12713 d_msg_oob='$d_msg_oob'
12714 d_msg_peek='$d_msg_peek'
12715 d_msg_proxy='$d_msg_proxy'
12716 d_msgctl='$d_msgctl'
12717 d_msgget='$d_msgget'
12718 d_msghdr_s='$d_msghdr_s'
12719 d_msgrcv='$d_msgrcv'
12720 d_msgsnd='$d_msgsnd'
12722 d_munmap='$d_munmap'
12723 d_mymalloc='$d_mymalloc'
12724 d_nextkey64='$d_nextkey64'
12726 d_off64t='$d_off64t'
12727 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12728 d_oldpthreads='$d_oldpthreads'
12729 d_oldsock='$d_oldsock'
12731 d_open64='$d_open64'
12732 d_opendir64='$d_opendir64'
12733 d_pathconf='$d_pathconf'
12735 d_phostname='$d_phostname'
12738 d_portable='$d_portable'
12739 d_pthread_yield='$d_pthread_yield'
12741 d_pwchange='$d_pwchange'
12742 d_pwclass='$d_pwclass'
12743 d_pwcomment='$d_pwcomment'
12744 d_pwexpire='$d_pwexpire'
12745 d_pwgecos='$d_pwgecos'
12746 d_pwpasswd='$d_pwpasswd'
12747 d_pwquota='$d_pwquota'
12748 d_readdir64='$d_readdir64'
12749 d_readdir='$d_readdir'
12750 d_readlink='$d_readlink'
12752 d_recvmsg='$d_recvmsg'
12753 d_rename='$d_rename'
12754 d_rewinddir='$d_rewinddir'
12756 d_safebcpy='$d_safebcpy'
12757 d_safemcpy='$d_safemcpy'
12758 d_sanemcmp='$d_sanemcmp'
12759 d_sched_yield='$d_sched_yield'
12760 d_scm_rights='$d_scm_rights'
12761 d_seekdir64='$d_seekdir64'
12762 d_seekdir='$d_seekdir'
12763 d_select='$d_select'
12765 d_semctl='$d_semctl'
12766 d_semctl_semid_ds='$d_semctl_semid_ds'
12767 d_semctl_semun='$d_semctl_semun'
12768 d_semget='$d_semget'
12770 d_sendmsg='$d_sendmsg'
12771 d_setegid='$d_setegid'
12772 d_seteuid='$d_seteuid'
12773 d_setgrent='$d_setgrent'
12774 d_setgrps='$d_setgrps'
12775 d_sethent='$d_sethent'
12776 d_setlinebuf='$d_setlinebuf'
12777 d_setlocale='$d_setlocale'
12778 d_setnent='$d_setnent'
12779 d_setpent='$d_setpent'
12780 d_setpgid='$d_setpgid'
12781 d_setpgrp2='$d_setpgrp2'
12782 d_setpgrp='$d_setpgrp'
12783 d_setprior='$d_setprior'
12784 d_setpwent='$d_setpwent'
12785 d_setregid='$d_setregid'
12786 d_setresgid='$d_setresgid'
12787 d_setresuid='$d_setresuid'
12788 d_setreuid='$d_setreuid'
12789 d_setrgid='$d_setrgid'
12790 d_setruid='$d_setruid'
12791 d_setsent='$d_setsent'
12792 d_setsid='$d_setsid'
12793 d_setvbuf='$d_setvbuf'
12797 d_shmatprototype='$d_shmatprototype'
12798 d_shmctl='$d_shmctl'
12800 d_shmget='$d_shmget'
12801 d_sigaction='$d_sigaction'
12802 d_sigsetjmp='$d_sigsetjmp'
12803 d_socket='$d_socket'
12804 d_sockpair='$d_sockpair'
12805 d_stat64='$d_stat64'
12806 d_statblks='$d_statblks'
12807 d_statfs='$d_statfs'
12808 d_statfsflags='$d_statfsflags'
12809 d_statvfs='$d_statvfs'
12810 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12811 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12812 d_stdiobase='$d_stdiobase'
12813 d_stdstdio='$d_stdstdio'
12814 d_store64='$d_store64'
12815 d_strchr='$d_strchr'
12816 d_strcoll='$d_strcoll'
12817 d_strctcpy='$d_strctcpy'
12818 d_strerrm='$d_strerrm'
12819 d_strerror='$d_strerror'
12820 d_strtod='$d_strtod'
12821 d_strtol='$d_strtol'
12822 d_strtoul='$d_strtoul'
12823 d_strxfrm='$d_strxfrm'
12824 d_suidsafe='$d_suidsafe'
12825 d_symlink='$d_symlink'
12826 d_syscall='$d_syscall'
12827 d_sysconf='$d_sysconf'
12828 d_sysernlst='$d_sysernlst'
12829 d_syserrlst='$d_syserrlst'
12830 d_system='$d_system'
12831 d_tcgetpgrp='$d_tcgetpgrp'
12832 d_tcsetpgrp='$d_tcsetpgrp'
12833 d_telldir64='$d_telldir64'
12834 d_telldir='$d_telldir'
12835 d_telldirproto='$d_telldirproto'
12838 d_tmpfile64='$d_tmpfile64'
12839 d_truncate64='$d_truncate64'
12840 d_truncate='$d_truncate'
12841 d_tzname='$d_tzname'
12844 d_union_semun='$d_union_semun'
12846 d_void_closedir='$d_void_closedir'
12847 d_voidsig='$d_voidsig'
12848 d_voidtty='$d_voidtty'
12849 d_volatile='$d_volatile'
12850 d_vprintf='$d_vprintf'
12852 d_waitpid='$d_waitpid'
12853 d_wcstombs='$d_wcstombs'
12854 d_wctomb='$d_wctomb'
12855 d_writev='$d_writev'
12858 db_hashtype='$db_hashtype'
12859 db_prefixtype='$db_prefixtype'
12860 defvoidused='$defvoidused'
12861 direntrytype='$direntrytype'
12864 doublesize='$doublesize'
12866 dynamic_ext='$dynamic_ext'
12872 eunicefix='$eunicefix'
12875 extensions='$extensions'
12877 firstmakefile='$firstmakefile'
12879 fpostype='$fpostype'
12880 freetype='$freetype'
12881 full_csh='$full_csh'
12882 full_sed='$full_sed'
12883 gccversion='$gccversion'
12887 groupcat='$groupcat'
12888 groupstype='$groupstype'
12891 h_sysfile='$h_sysfile'
12895 i_arpainet='$i_arpainet'
12896 i_bsdioctl='$i_bsdioctl'
12899 i_dirent='$i_dirent'
12906 i_inttypes='$i_inttypes'
12907 i_limits='$i_limits'
12908 i_locale='$i_locale'
12909 i_machcthr='$i_machcthr'
12910 i_malloc='$i_malloc'
12912 i_memory='$i_memory'
12913 i_mntent='$i_mntent'
12916 i_neterrno='$i_neterrno'
12920 i_rpcsvcdbm='$i_rpcsvcdbm'
12923 i_stdarg='$i_stdarg'
12924 i_stddef='$i_stddef'
12925 i_stdlib='$i_stdlib'
12926 i_string='$i_string'
12927 i_sysaccess='$i_sysaccess'
12928 i_sysdir='$i_sysdir'
12929 i_sysfile='$i_sysfile'
12930 i_sysfilio='$i_sysfilio'
12932 i_sysioctl='$i_sysioctl'
12933 i_sysmman='$i_sysmman'
12934 i_sysmount='$i_sysmount'
12935 i_sysndir='$i_sysndir'
12936 i_sysparam='$i_sysparam'
12937 i_sysresrc='$i_sysresrc'
12938 i_syssecrt='$i_syssecrt'
12939 i_sysselct='$i_sysselct'
12940 i_syssockio='$i_syssockio'
12941 i_sysstat='$i_sysstat'
12942 i_sysstatvfs='$i_sysstatvfs'
12943 i_systime='$i_systime'
12944 i_systimek='$i_systimek'
12945 i_systimes='$i_systimes'
12946 i_systypes='$i_systypes'
12947 i_sysuio='$i_sysuio'
12949 i_syswait='$i_syswait'
12950 i_termio='$i_termio'
12951 i_termios='$i_termios'
12953 i_unistd='$i_unistd'
12955 i_values='$i_values'
12956 i_varargs='$i_varargs'
12957 i_varhdr='$i_varhdr'
12959 ignore_versioned_solibs='$ignore_versioned_solibs'
12962 installarchlib='$installarchlib'
12963 installbin='$installbin'
12964 installman1dir='$installman1dir'
12965 installman3dir='$installman3dir'
12966 installprivlib='$installprivlib'
12967 installscript='$installscript'
12968 installsitearch='$installsitearch'
12969 installsitelib='$installsitelib'
12970 installusrbinperl='$installusrbinperl'
12972 known_extensions='$known_extensions'
12976 lddlflags='$lddlflags'
12984 libswanted='$libswanted'
12990 locincpth='$locincpth'
12991 loclibpth='$loclibpth'
12992 longdblsize='$longdblsize'
12993 longlongsize='$longlongsize'
12994 longsize='$longsize'
12998 lseeksize='$lseeksize'
12999 lseektype='$lseektype'
13003 make_set_make='$make_set_make'
13004 mallocobj='$mallocobj'
13005 mallocsrc='$mallocsrc'
13006 malloctype='$malloctype'
13008 man1direxp='$man1direxp'
13011 man3direxp='$man3direxp'
13015 mips_type='$mips_type'
13017 mmaptype='$mmaptype'
13019 modetype='$modetype'
13022 myarchname='$myarchname'
13023 mydomain='$mydomain'
13024 myhostname='$myhostname'
13027 netdb_hlen_type='$netdb_hlen_type'
13028 netdb_host_type='$netdb_host_type'
13029 netdb_name_type='$netdb_name_type'
13030 netdb_net_type='$netdb_net_type'
13033 nm_so_opt='$nm_so_opt'
13034 nonxs_ext='$nonxs_ext'
13036 o_nonblock='$o_nonblock'
13038 old_pthread_create_joinable='$old_pthread_create_joinable'
13039 optimize='$optimize'
13040 orderlib='$orderlib'
13046 patchlevel='$patchlevel'
13047 path_sep='$path_sep'
13049 perladmin='$perladmin'
13050 perlpath='$perlpath'
13052 phostname='$phostname'
13058 prefixexp='$prefixexp'
13060 privlibexp='$privlibexp'
13061 prototype='$prototype'
13063 randbits='$randbits'
13064 randfunc='$randfunc'
13065 randseedtype='$randseedtype'
13067 rd_nodata='$rd_nodata'
13071 sched_yield='$sched_yield'
13072 scriptdir='$scriptdir'
13073 scriptdirexp='$scriptdirexp'
13075 seedfunc='$seedfunc'
13076 selectminbits='$selectminbits'
13077 selecttype='$selecttype'
13078 sendmail='$sendmail'
13081 sharpbang='$sharpbang'
13082 shmattype='$shmattype'
13083 shortsize='$shortsize'
13086 sig_name='$sig_name'
13087 sig_name_init='$sig_name_init'
13089 sig_num_init='$sig_num_init'
13090 signal_t='$signal_t'
13091 sitearch='$sitearch'
13092 sitearchexp='$sitearchexp'
13094 sitelibexp='$sitelibexp'
13095 sizetype='$sizetype'
13100 sockethdr='$sockethdr'
13101 socketlib='$socketlib'
13103 spackage='$spackage'
13104 spitshell='$spitshell'
13107 ssizetype='$ssizetype'
13108 startperl='$startperl'
13110 static_ext='$static_ext'
13112 stdio_base='$stdio_base'
13113 stdio_bufsiz='$stdio_bufsiz'
13114 stdio_cnt='$stdio_cnt'
13115 stdio_filbuf='$stdio_filbuf'
13116 stdio_ptr='$stdio_ptr'
13119 subversion='$subversion'
13126 timeincl='$timeincl'
13127 timetype='$timetype'
13135 use64bits='$use64bits'
13137 usemultiplicity='$usemultiplicity'
13138 usemymalloc='$usemymalloc'
13140 useopcode='$useopcode'
13141 useperlio='$useperlio'
13142 useposix='$useposix'
13144 useshrplib='$useshrplib'
13145 usethreads='$usethreads'
13146 usevfork='$usevfork'
13151 voidflags='$voidflags'
13157 : Add in command line options if available
13158 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13160 : add special variables
13161 $test -f $src/patchlevel.h && \
13162 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13163 echo "CONFIG=true" >>config.sh
13165 : propagate old symbols
13166 if $test -f UU/config.sh; then
13167 <UU/config.sh sort | uniq >UU/oldconfig.sh
13168 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13169 sort | uniq -u >UU/oldsyms
13170 set X `cat UU/oldsyms`
13176 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13178 echo "# Variables propagated from previous config.sh file." >>config.sh
13179 for sym in `cat UU/oldsyms`; do
13180 echo " Propagating $hint variable "'$'"$sym..."
13181 eval 'tmp="$'"${sym}"'"'
13183 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13189 : Finish up by extracting the .SH files
13203 If you'd like to make any changes to the config.sh file before I begin
13204 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13207 rp="Press return or use a shell escape to edit config.sh:"
13212 *) : in case they cannot read
13213 sh 1>&4 -c "$ans";;
13218 : if this fails, just run all the .SH files by hand
13225 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13232 Now you need to generate make dependencies by running "$make depend".
13233 You might prefer to run it in background: "$make depend > makedepend.out &"
13234 It can take a while, so you might not want to run it right now.
13239 rp="Run $make depend now?"
13243 $make depend && echo "Now you must run a $make."
13246 echo "You must run '$make depend' then '$make'."
13249 elif test -f [Mm]akefile; then
13251 echo "Now you must run a $make."
13256 if $test -f Policy.sh; then
13259 If you compile $package on a different machine or from a different object
13260 directory, copy the Policy.sh file from this object directory to the
13261 new one before you run Configure -- this will help you with most of
13262 the policy defaults.
13266 if $test -f config.msg; then
13267 echo "Hmm. I also noted the following information while running:"
13269 $cat config.msg >&4
13272 $rm -f kit*isdone ark*isdone