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 Tue Mar 2 10:22:15 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
425 d_old_pthread_create_joinable=''
426 old_pthread_create_joinable=''
684 ignore_versioned_solibs=''
810 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
813 : We must find out about Eunice early
815 if test -f /etc/unixtovms; then
816 eunicefix=/etc/unixtovms
818 if test -f /etc/unixtovms.exe; then
819 eunicefix=/etc/unixtovms.exe
823 : Possible local include directories to search.
824 : Set locincpth to "" in a hint file to defeat local include searches.
825 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
826 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
828 : no include file wanted by default
831 : list of known cpp symbols, sorted alphabetically
832 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
833 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
834 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
835 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
836 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
837 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
838 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
839 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
840 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
841 al="$al VMS Xenix286"
842 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
843 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
844 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
845 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
846 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
847 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
848 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
849 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
850 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
851 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
852 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
853 al="$al __SVR4_2__ __UMAXV__"
854 al="$al ____386BSD____ __alpha __alpha__ __amiga"
855 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
856 al="$al __host_mips__"
857 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
858 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
859 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
860 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
861 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
862 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
863 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
864 al="$al __mc88100 __mc88100__ __mips __mips__"
865 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
866 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
867 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
868 al="$al _host_mips _mips _unix"
869 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
870 al="$al apollo ardent att386 att3b"
871 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
872 al="$al cadmus clipper concurrent convex cray ctix"
873 al="$al dmert encore gcos gcx gimpel gould"
874 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
875 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
876 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
877 al="$al i186 i286 i386 i486 i8086"
878 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
879 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
880 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
881 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
882 al="$al mc88000 mc88100 merlin mert mips mvs n16"
883 al="$al ncl_el ncl_mr"
884 al="$al news1500 news1700 news1800 news1900 news3700"
885 al="$al news700 news800 news900 ns16000 ns32000"
886 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
887 al="$al parisc pc532 pdp11 plexus posix pyr"
888 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
889 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
890 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
891 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
892 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
893 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
896 : Trailing extension. Override this in a hint file, if needed.
898 : Extra object files, if any, needed on this platform.
901 : change the next line if compiling for Xenix/286 on Xenix/386
902 xlibpth='/usr/lib/386 /lib/386'
904 : Possible local library directories to search.
905 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
906 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
908 : general looking path for locating libraries
909 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
910 glibpth="$glibpth /lib /usr/lib $xlibpth"
911 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
912 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
914 : Private path used by Configure to find libraries. Its value
915 : is prepended to libpth. This variable takes care of special
916 : machines, like the mips. Usually, it should be empty.
919 : default library list
921 : some systems want to use only the non-versioned libso:s
922 ignore_versioned_solibs=''
923 : full support for void wanted by default
926 : set useposix=false in your hint file to disable the POSIX extension.
928 : set useopcode=false in your hint file to disable the Opcode extension.
930 : set usemultiplicity on the Configure command line to enable multiplicity.
931 : set usethreads on the Configure command line to enable threads.
932 : List of libraries we want.
933 : If anyone needs -lnet, put it in a hint file.
934 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
935 libswanted="$libswanted dld ld sun m rt c cposix posix"
936 libswanted="$libswanted ndir dir crypt"
937 libswanted="$libswanted ucb bsd BSD PW x"
938 : We probably want to search /usr/shlib before most other libraries.
939 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
940 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
941 glibpth="/usr/shlib $glibpth"
942 : Do not use vfork unless overridden by a hint file.
945 : Find the basic shell for Bourne shell scripts
949 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
952 if test -f "$xxx"; then
955 : Build up a list and do a single loop so we can 'break' out.
956 pth=`echo $PATH | sed -e "s/$p_/ /g"`
957 for xxx in sh bash ksh pdksh ash; do
959 try="$try ${p}/${xxx}"
963 if test -f "$xxx"; then
966 elif test -f "$xxx.exe"; then
977 $me: Fatal Error: I can't find a Bourne Shell anywhere.
979 Usually it's in /bin/sh. How did you even get this far?
980 Please contact me (Perl Maintainers) at perlbug@perl.com and
981 we'll try to straighten this all out.
987 : see if sh knows # comments
988 if `$sh -c '#' >/dev/null 2>&1`; then
992 test -f $xcat || xcat=/usr/bin/cat
997 if test -s today; then
1000 echo "#! $xcat" > try
1004 if test -s today; then
1012 echo "Your $sh doesn't grok # comments--I will strip them later on."
1015 echo "exec grep -v '^[ ]*#'" >spitshell
1017 $eunicefix spitshell
1018 spitshell=`pwd`/spitshell
1020 echo "I presume that if # doesn't work, #! won't work either!"
1025 : figure out how to guarantee sh startup
1027 '') startsh=${sharpbang}${sh} ;;
1039 : echo "Yup, it does."
1041 echo "Hmm... '$startsh' does not guarantee sh startup..."
1042 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1047 : Save command line options in file UU/cmdline.opt for later use in
1048 : generating config.sh.
1049 cat > cmdline.opt <<EOSH
1050 # Configure command line arguments.
1057 cat >>cmdline.opt <<EOSH
1058 config_arg$argn='$arg'
1060 argn=`expr $argn + 1`
1063 : produce awk script to parse command line options
1064 cat >options.awk <<'EOF'
1066 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1068 len = length(optstr);
1069 for (i = 1; i <= len; i++) {
1070 c = substr(optstr, i, 1);
1071 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1082 if (substr(str, 1, 1) != "-") {
1083 printf("'%s'\n", str);
1087 for (i = 2; i <= len; i++) {
1088 c = substr(str, i, 1);
1090 printf("-%s\n", substr(str, i));
1096 printf("'%s'\n", substr(str, i + 1));
1109 : process the command line options
1110 set X `for arg in "$@"; do echo "X$arg"; done |
1111 sed -e s/X// | awk -f options.awk`
1116 : set up default values
1127 cat >optdef.sh <<EOS
1133 while test $# -gt 0; do
1135 -d) shift; fastread=yes;;
1136 -e) shift; alldone=cont;;
1140 if test -r "$1"; then
1143 echo "$me: cannot read config file $1." >&2
1148 -h) shift; error=true;;
1149 -r) shift; reuseval=true;;
1150 -s) shift; silent=true; realsilent=true;;
1151 -E) shift; alldone=exit;;
1152 -K) shift; knowitall=true;;
1153 -O) shift; override=true;;
1154 -S) shift; silent=true; extractsh=true;;
1159 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1160 echo "$me: ignoring -D $1" >&2
1163 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1164 *) echo "$1='define'" >> optdef.sh;;
1171 *=) echo "$1" >> optdef.sh;;
1173 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1174 echo "$me: ignoring -U $1" >&2
1176 *) echo "$1='undef'" >> optdef.sh;;
1180 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1183 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1191 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1192 [-U symbol] [-U symbol=]
1193 -d : use defaults for all answers.
1194 -e : go on without questioning past the production of config.sh.
1195 -f : specify an alternate default configuration file.
1196 -h : print this help message and exit (with an error status).
1197 -r : reuse C symbols value if possible (skips costly nm extraction).
1198 -s : silent mode, only echoes questions and essential information.
1199 -D : define symbol to have some value:
1200 -D symbol symbol gets the value 'define'
1201 -D symbol=value symbol gets the value 'value'
1202 -E : stop at the end of questions, after having produced config.sh.
1203 -K : do not use unless you know what you are doing.
1204 -O : let -D and -U override definitions from loaded configuration file.
1205 -S : perform variable substitutions on all .SH files (can mix with -f)
1206 -U : undefine symbol:
1207 -U symbol symbol gets the value 'undef'
1208 -U symbol= symbol gets completely empty
1209 -V : print version number and exit (with a zero status).
1216 case "$fastread$alldone" in
1219 if test ! -t 0; then
1220 echo "Say 'sh Configure', not 'sh <Configure'"
1228 true) exec 1>/dev/null;;
1231 : run the defines and the undefines, if any, but leave the file out there...
1237 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1238 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1239 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1240 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1241 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1244 : Some greps do not return status, grrr.
1245 echo "grimblepritz" >grimble
1246 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1248 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1254 : the following should work in any shell
1258 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1259 cat >contains <<'EOSS'
1260 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1265 : Find the path to the source tree
1268 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1279 if test -f $rsrc/Configure && \
1280 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1282 : found it, so we are ok.
1285 for src in . .. ../.. ../../.. ../../../..; do
1286 if test -f ../$src/Configure && \
1287 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1298 Sorry, I can't seem to locate the source dir for $package. Please start
1299 Configure with an explicit path -- i.e. /some/path/Configure.
1307 echo "Sources for $package found in \"$src\"." >&4
1311 : script used to extract .SH files with variable substitutions
1312 cat >extract <<'EOS'
1314 echo "Doing variable substitutions on .SH files..."
1315 if test -f $src/MANIFEST; then
1316 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1318 echo "(Looking for .SH files under the source directory.)"
1319 set x `(cd $src; find . -name "*.SH" -print)`
1323 0) set x `(cd $src; echo *.SH)`; shift;;
1325 if test ! -f $src/$1; then
1331 while test $name; do
1332 if test ! -d "$name"; then
1333 create="$name $create";
1334 name=`echo $name | sed -e "s|^[^/]*$||"`;
1335 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1340 for file in $create; do
1349 dir=`expr X$file : 'X\(.*\)/'`
1350 file=`expr X$file : 'X.*/\(.*\)'`
1351 (cd $dir && . ./$file)
1361 dir=`expr X$file : 'X\(.*\)/'`
1362 file=`expr X$file : 'X.*/\(.*\)'`
1363 (set x $dir; shift; eval $mkdir_p)
1373 if test -f $src/config_h.SH; then
1374 if test ! -f config.h; then
1375 : oops, they left it out of MANIFEST, probably, so do it anyway.
1381 : extract files and exit if asked to do so
1382 case "$extractsh" in
1384 case "$realsilent" in
1388 case "$config_sh" in
1389 '') config_sh='config.sh';;
1392 echo "Fetching answers from $config_sh..."
1395 test "$override" && . ./optdef.sh
1404 : Eunice requires " " instead of "", can you believe it
1407 echo "Beginning of configuration questions for $package."
1409 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1411 : first determine how to suppress newline on echo command
1413 echo "Checking echo to see how to suppress newlines..."
1414 (echo "hi there\c" ; echo " ") >.echotmp
1415 if $contains c .echotmp >/dev/null 2>&1 ; then
1426 echo $n "The star should be here-->$c"
1430 : Now test for existence of everything in MANIFEST
1432 if test -f $rsrc/MANIFEST; then
1433 echo "First let's make sure your kit is complete. Checking..." >&4
1434 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1437 for filelist in x??; do
1438 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1440 if test -s missing; then
1444 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1446 You have the option of continuing the configuration process, despite the
1447 distinct possibility that your kit is damaged, by typing 'y'es. If you
1448 do, don't blame me if something goes wrong. I advise you to type 'n'o
1449 and contact the author (perlbug@perl.com).
1452 echo $n "Continue? [n] $c" >&4
1456 echo "Continuing..." >&4
1460 echo "ABORTING..." >&4
1465 echo "Looks good..."
1468 echo "There is no MANIFEST file. I hope your kit is complete !"
1473 : Find the appropriate value for a newline for tr
1474 if test -n "$DJGPP"; then
1477 if test X"$trnl" = X; then
1478 case "`echo foo|tr '\n' x 2>/dev/null`" in
1482 if test X"$trnl" = X; then
1483 case "`echo foo|tr '\012' x 2>/dev/null`" in
1484 foox) trnl='\012' ;;
1487 if test X"$trnl" = X; then
1490 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1496 : compute the number of columns on the terminal for proper question formatting
1501 : set up the echo used in my read
1502 myecho="case \"\$xxxm\" in
1503 '') echo $n \"\$rp $c\" >&4;;
1505 '') echo $n \"[\$xxxm] $c\";;
1507 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1509 echo $n \"[\$xxxm] $c\" >&4
1511 echo $n \"\$rp [\$xxxm] $c\" >&4
1517 : now set up to do reads with possible shell escape and default assignment
1523 case "\$fastread" in
1524 yes) case "\$dflt" in
1527 case "\$silent-\$rp" in
1532 *) case "\$silent" in
1533 true) case "\$rp" in
1538 while expr "X\$ans" : "X!" >/dev/null; do
1542 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1550 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1559 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1564 echo "(OK, I'll run with -d after this question.)" >&4
1567 echo "*** Sorry, \$1 not supported yet." >&4
1577 echo "*** Substitution done -- please confirm."
1579 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1584 echo "*** Error -- try again."
1591 case "\$ans\$xxxm\$nostick" in
1603 : create .config dir to save info across Configure sessions
1604 test -d ../.config || mkdir ../.config
1605 cat >../.config/README <<EOF
1606 This directory created by Configure to save information that should
1607 persist across sessions for $package.
1609 You may safely delete it if you wish.
1612 : general instructions
1615 user=`(logname) 2>/dev/null`
1617 '') user=`whoami 2>&1`;;
1619 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1622 rp='Would you like to see the instructions?'
1633 This installation shell script will examine your system and ask you questions
1634 to determine how the perl5 package should be installed. If you get
1635 stuck on a question, you may use a ! shell escape to start a subshell or
1636 execute a command. Many of the questions will have default answers in square
1637 brackets; typing carriage return will give you the default.
1639 On some of the questions which ask for file or directory names you are allowed
1640 to use the ~name construct to specify the login directory belonging to "name",
1641 even if you don't have a shell which knows about that. Questions where this is
1642 allowed will be marked "(~name ok)".
1646 dflt='Type carriage return to continue'
1650 The prompter used in this script allows you to use shell variables and
1651 backticks in your answers. You may use $1, $2, etc... to refer to the words
1652 in the default answer, as if the default line was a set of arguments given to a
1653 script shell. This means you may also use $* to repeat the whole default line,
1654 so you do not have to re-type everything to add something to the default.
1656 Everytime there is a substitution, you will have to confirm. If there is an
1657 error (e.g. an unmatched backtick), the default answer will remain unchanged
1658 and you will be prompted again.
1660 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1661 the questions and use the computed defaults (or the previous answers if there
1662 was already a config.sh file). Type 'Configure -h' for a list of options.
1663 You may also start interactively and then answer '& -d' at any prompt to turn
1664 on the non-interactive behaviour for the remainder of the execution.
1670 Much effort has been expended to ensure that this shell script will run on any
1671 Unix system. If despite that it blows up on yours, your best bet is to edit
1672 Configure and run it again. If you can't run Configure for some reason,
1673 you'll have to generate a config.sh file by hand. Whatever problems you
1674 have, let me (perlbug@perl.com) know how I blew it.
1676 This installation script affects things in two ways:
1678 1) it may do direct variable substitutions on some of the files included
1680 2) it builds a config.h file for inclusion in C programs. You may edit
1681 any of these files as the need arises after running this script.
1683 If you make a mistake on a question, there is no easy way to back up to it
1684 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1685 files. Configure will offer to let you do this before it runs the SH files.
1688 dflt='Type carriage return to continue'
1690 case "$firsttime" in
1691 true) echo $user >>../.config/instruct;;
1695 : find out where common programs are
1697 echo "Locating common programs..." >&4
1710 if test -d \$dir/\$thing; then
1716 for thisthing in \$dir/\$thing; do
1717 : just loop through to pick last item
1719 if test -f \$thisthing; then
1722 elif test -f \$dir/\$thing.exe; then
1723 if test -n "$DJGPP"; then
1724 echo \$dir/\$thing.exe
1726 : on Eunice apparently
1777 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1778 pth="$pth /lib /usr/lib"
1779 for file in $loclist; do
1783 if test -f "$xxx"; then
1786 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1787 xxx=`./loc $file $file $pth`
1790 '') xxx=`./loc $file $file $pth`;;
1791 *) xxx=`./loc $xxx $xxx $pth`;;
1797 echo $file is in $xxx.
1800 echo $file is in $xxx.
1803 echo "I don't know where '$file' is, and my life depends on it." >&4
1804 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1810 echo "Don't worry if any of the following aren't found..."
1812 for file in $trylist; do
1816 if test -f "$xxx"; then
1819 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1820 xxx=`./loc $file $file $pth`
1823 '') xxx=`./loc $file $file $pth`;;
1824 *) xxx=`./loc $xxx $xxx $pth`;;
1830 echo $file is in $xxx.
1833 echo $file is in $xxx.
1836 echo "I don't see $file out there, $say."
1843 echo "Substituting grep for egrep."
1849 echo "Substituting cp for ln."
1855 echo "Hopefully test is built into your sh."
1858 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1859 echo "Using the test built into your sh."
1867 echo "Hopefully echo is built into your sh."
1872 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1873 $echo $n "hi there$c" >foo1
1874 echo $n "hi there$c" >foo2
1875 if cmp foo1 foo2 >/dev/null 2>&1; then
1876 echo "They are compatible. In fact, they may be identical."
1883 They are not compatible! You are probably running ksh on a non-USG system.
1884 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1885 have echo built in and we may have to run some Bourne shell scripts. That
1886 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1889 $echo $n "The star should be here-->$c"
1896 : determine whether symbolic links are supported
1899 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1900 echo "Symbolic links are supported." >&4
1903 echo "Symbolic links are NOT supported." >&4
1908 : see whether [:lower:] and [:upper:] are supported character classes
1910 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1912 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1916 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1917 # (0xc9 and 0xd1), therefore that is a nice testing point.
1918 if test "X$up" = X -o "X$low" = X; then
1919 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1925 if test "X$up" = X -o "X$low" = X; then
1926 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1932 if test "X$up" = X -o "X$low" = X; then
1933 case "`echo IJ | od -x 2>/dev/null`" in
1935 echo "Hey, this might be EBCDIC." >&4
1936 if test "X$up" = X -o "X$low" = X; then
1937 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1938 ij) up='[A-IJ-RS-Z]'
1943 if test "X$up" = X -o "X$low" = X; then
1944 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1954 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1956 echo "Using $up and $low to convert case." >&4
1959 echo "I don't know how to translate letters from upper to lower case." >&4
1960 echo "Your tr is not acting any way I know of." >&4
1964 : set up the translation script tr, must be called with ./tr of course
1968 '[A-Z][a-z]') exec $tr '$up' '$low';;
1969 '[a-z][A-Z]') exec $tr '$low' '$up';;
1976 : Try to determine whether config.sh was made on this system
1977 case "$config_sh" in
1979 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1980 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1981 # because the A-Z/a-z are not consecutive.
1982 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1983 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1984 newmyuname="$myuname"
1986 case "$knowitall" in
1988 if test -f ../config.sh; then
1989 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1990 eval "`grep myuname= ../config.sh`"
1992 if test "X$myuname" = "X$newmyuname"; then
2000 : Get old answers from old config file if Configure was run on the
2001 : same system, otherwise use the hints.
2004 if test -f config.sh; then
2006 rp="I see a config.sh file. Shall I use it to set the defaults?"
2009 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2010 *) echo "Fetching default answers from your old config.sh file..." >&4
2018 : Older versions did not always set $sh. Catch re-use of such
2027 if test ! -f config.sh; then
2030 First time through, eh? I have some defaults handy for some systems
2031 that need some extra help getting the Configure answers right:
2034 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2036 : Half the following guesses are probably wrong... If you have better
2037 : tests or hints, please send them to perlbug@perl.com
2038 : The metaconfig authors would also appreciate a copy...
2039 $test -f /irix && osname=irix
2040 $test -f /xenix && osname=sco_xenix
2041 $test -f /dynix && osname=dynix
2042 $test -f /dnix && osname=dnix
2043 $test -f /lynx.os && osname=lynxos
2044 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2045 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2046 $test -f /bin/mips && /bin/mips && osname=mips
2047 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2048 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2049 $test -d /usr/apollo/bin && osname=apollo
2050 $test -f /etc/saf/_sactab && osname=svr4
2051 $test -d /usr/include/minix && osname=minix
2052 if $test -d /MachTen -o -d /MachTen_Folder; then
2054 if $test -x /sbin/version; then
2055 osvers=`/sbin/version | $awk '{print $2}' |
2056 $sed -e 's/[A-Za-z]$//'`
2057 elif $test -x /usr/etc/version; then
2058 osvers=`/usr/etc/version | $awk '{print $2}' |
2059 $sed -e 's/[A-Za-z]$//'`
2064 $test -f /sys/posix.dll &&
2065 $test -f /usr/bin/what &&
2066 set X `/usr/bin/what /sys/posix.dll` &&
2067 $test "$3" = UWIN &&
2070 if $test -f $uname; then
2078 umips) osname=umips ;;
2081 [23]100) osname=mips ;;
2082 next*) osname=next ;;
2084 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2085 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2088 elif $test -f /etc/kconfig; then
2090 if test "$lns" = "ln -s"; then
2092 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2094 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2101 if test -n "$DJGPP"; then
2110 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2112 'not found') osvers="$4"."$3" ;;
2113 '<3240'|'<>3240') osvers=3.2.0 ;;
2114 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2115 '=3250'|'>3250') osvers=3.2.5 ;;
2119 *dc.osx) osname=dcosx
2125 domainos) osname=apollo
2131 dynixptx*) osname=dynixptx
2132 osvers=`echo "$4"|sed 's/^v//'`
2134 freebsd) osname=freebsd
2136 genix) osname=genix ;;
2138 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2154 netbsd*) osname=netbsd
2157 news-os) osvers="$3"
2159 4*) osname=newsos4 ;;
2163 bsd386) osname=bsd386
2166 POSIX-BC | posix-bc ) osname=posix-bc
2169 powerux | power_ux | powermax_os | powermaxos | \
2170 powerunix | power_unix) osname=powerux
2173 next*) osname=next ;;
2174 solaris) osname=solaris
2176 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2183 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2187 titanos) osname=titanos
2196 ultrix) osname=ultrix
2199 osf1|mls+) case "$5" in
2202 osvers=`echo "$3" | sed 's/^[xvt]//'`
2204 hp*) osname=hp_osf1 ;;
2205 mips) osname=mips_osf1 ;;
2214 $2) case "$osname" in
2218 : svr4.x or possibly later
2228 if test -f /stand/boot ; then
2229 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2230 if test -n "$INITPROG" -a -f "$INITPROG"; then
2231 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2232 if test -n "$isesix"; then
2240 *) if test -f /etc/systemid; then
2242 set `echo $3 | $sed 's/\./ /g'` $4
2243 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2245 elif $test -f $src/hints/sco_$1_$2.sh; then
2247 elif $test -f $src/hints/sco_$1.sh; then
2252 '') : Still unknown. Probably a generic Sys V.
2261 *) case "$osname" in
2262 '') : Still unknown. Probably a generic BSD.
2270 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2271 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2272 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2275 $rm -f UU/kernel.what
2276 elif test -d c:/.; then
2283 : Now look for a hint file osname_osvers, unless one has been
2284 : specified already.
2287 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2288 : Also try without trailing minor version numbers.
2289 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2290 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2291 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2292 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2295 *) case "$osvers" in
2298 *) if $test -f $src/hints/$file.sh ; then
2300 elif $test -f $src/hints/$xfile.sh ; then
2302 elif $test -f $src/hints/$xxfile.sh ; then
2304 elif $test -f $src/hints/$xxxfile.sh ; then
2306 elif $test -f $src/hints/$xxxxfile.sh ; then
2308 elif $test -f "$src/hints/${osname}.sh" ; then
2317 if $test -f Policy.sh ; then
2320 none) dflt="Policy" ;;
2321 *) dflt="Policy $dflt" ;;
2326 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2330 if $test -f Policy.sh ; then
2333 There's also a Policy hint file available, which should make the
2334 site-specific (policy) questions easier to answer.
2341 You may give one or more space-separated answers, or "none" if appropriate.
2342 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2343 is a good thing. DO NOT give a wrong version.
2347 rp="Which of these apply, if any?"
2350 for file in $tans; do
2351 if $test X$file = XPolicy -a -f Policy.sh; then
2353 $cat Policy.sh >> UU/config.sh
2354 elif $test -f $src/hints/$file.sh; then
2355 . $src/hints/$file.sh
2356 $cat $src/hints/$file.sh >> UU/config.sh
2357 elif $test X$tans = X -o X$tans = Xnone ; then
2360 : Give one chance to correct a possible typo.
2361 echo "$file.sh does not exist"
2363 rp="hint to use instead?"
2365 for file in $ans; do
2366 if $test -f "$src/hints/$file.sh"; then
2367 . $src/hints/$file.sh
2368 $cat $src/hints/$file.sh >> UU/config.sh
2369 elif $test X$ans = X -o X$ans = Xnone ; then
2372 echo "$file.sh does not exist -- ignored."
2379 : Remember our hint file for later.
2380 if $test -f "$src/hints/$file.sh" ; then
2390 echo "Fetching default answers from $config_sh..." >&4
2394 cp $config_sh config.sh 2>/dev/null
2404 test "$override" && . ./optdef.sh
2405 myuname="$newmyuname"
2407 : Restore computed paths
2408 for file in $loclist $trylist; do
2409 eval $file="\$_$file"
2414 Configure uses the operating system name and version to set some defaults.
2415 The default value is probably right if the name rings a bell. Otherwise,
2416 since spelling matters for me, either accept the default or answer "none"
2423 ''|' '|none) dflt=none ;;
2424 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2427 *) dflt="$osname" ;;
2429 rp="Operating system name?"
2433 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2439 ''|' '|none) dflt=none ;;
2440 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2441 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2443 ''|' ') dflt=none ;;
2448 *) dflt="$osvers" ;;
2450 rp="Operating system version?"
2457 : who configured the system
2458 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2459 cf_by=`(logname) 2>/dev/null`
2462 cf_by=`(whoami) 2>/dev/null`
2464 "") cf_by=unknown ;;
2468 : set up the script used to warn in case of inconsistency
2475 echo "*** WHOA THERE!!! ***" >&4
2476 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2477 rp=" Keep the $hint value?"
2480 y) td=$was; tu=$was;;
2484 : function used to set $1 to $val
2485 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2487 $define$undef) . ./whoa; eval "$var=\$td";;
2488 $undef$define) . ./whoa; eval "$var=\$tu";;
2489 *) eval "$var=$val";;
2494 Perl can be built to take advantage of threads, on some systems.
2495 To do so, Configure must be run with -Dusethreads.
2497 Note that threading is a highly experimental feature, and
2498 some known race conditions still remain. If you choose to try
2499 it, be very sure to not actually deploy it for production
2500 purposes. README.threads has more details, and is required
2501 reading if you enable threads.
2503 case "$usethreads" in
2504 $define|true|[yY]*) dflt='y';;
2507 rp='Build a threading Perl?'
2510 y|Y) val="$define" ;;
2516 case "$d_oldpthreads" in
2517 '') : Configure tests would be welcome here. For now, assume undef.
2519 *) val="$d_oldpthreads" ;;
2525 case "$usethreads" in
2526 "$define"|true|[yY]*)
2527 : Look for a hint-file generated 'call-back-unit'. If the
2528 : user has specified that a threading perl is to be built,
2529 : we may need to set or change some other defaults.
2530 if $test -f usethreads.cbu; then
2534 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2535 # Known thread-capable platforms.
2539 $osname is not known to support threads.
2540 Please let perlbug@perl.com know how to do that.
2542 Cannot continue, aborting.
2552 Perl can be built so that multiple Perl interpreters can coexist
2553 within the same Perl executable. To do so, Configure must be run with
2556 Normally you do not need this and you should answer no.
2559 case "$usemultiplicity" in
2560 $define|true|[yY]*) dflt='y';;
2563 rp='Build Perl for multiplicity?'
2566 y|Y) val="$define" ;;
2574 Perl can be built to take advantage of explicit 64-bit interfaces,
2575 on some systems. To do so, Configure must be run with -Duse64bits.
2577 If this doesn't make any sense to you, just accept the default 'n'.
2579 case "$use64bits" in
2580 $define|true|[yY]*) dflt='y';;
2583 rp='Try to use explicit 64-bit interfaces, if available?'
2596 case "$archname64" in
2597 '') archname64='' ;; # not a typo
2600 case "$use64bits" in
2601 "$define"|true|[yY]*)
2602 : Look for a hint-file generated 'call-back-unit'. If the
2603 : user has specified that a threading perl is to be built,
2604 : we may need to set or change some other defaults.
2605 if $test -f use64bits.cbu; then
2609 dec_osf|hpux|irix|solaris|unicos)
2610 # Known 64-bit capable platforms.
2614 $osname is not known to support 64-bit interfaces.
2615 Please let perlbug@perl.com know how to do that.
2617 Cannot continue, aborting.
2625 : determine the architecture name
2627 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2628 tarch=`arch`"-$osname"
2629 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2630 if uname -m > tmparch 2>&1 ; then
2631 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2632 -e 's/$/'"-$osname/" tmparch`
2640 case "$myarchname" in
2643 echo "(Your architecture name used to be $myarchname.)"
2650 *) dflt="$archname";;
2652 rp='What is your architecture name'
2655 case "$usethreads" in
2657 echo "Threads selected." >&4
2659 *-thread*) echo "...and architecture name already has -thread." >&4
2661 *) archname="$archname-thread"
2662 echo "...setting architecture name to $archname." >&4
2667 case "$usemultiplicity" in
2669 echo "Multiplicity selected." >&4
2671 *-multi*) echo "...and architecture name already has -multi." >&4
2673 *) archname="$archname-multi"
2674 echo "...setting architecture name to $archname." >&4
2679 case "$use64bits" in
2681 echo "Explicit 64-bitness selected." >&4
2682 case "$archname64" in
2687 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2689 *) archname="$archname-$archname64"
2690 echo "...setting architecture name to $archname." >&4
2700 $define|true) afs=true ;;
2701 $undef|false) afs=false ;;
2702 *) if test -d /afs; then
2710 echo "AFS may be running... I'll be extra cautious then..." >&4
2712 echo "AFS does not seem to be running..." >&4
2715 : decide how portable to be. Allow command line overrides.
2716 case "$d_portable" in
2718 *) d_portable="$define" ;;
2721 : set up shell script to do ~ expansion
2727 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2730 if $test -f /bin/csh; then
2731 /bin/csh -f -c "glob \$1"
2736 name=\`$expr x\$1 : '..\([^/]*\)'\`
2737 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2738 if $test ! -d "\$dir"; then
2740 echo "\$me: can't locate home directory for: \$name" >&2
2745 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2761 : now set up to get a file name
2765 cat <<'EOSC' >>getfile
2778 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2779 fn=`echo $fn | sed 's/(.*)//'`
2785 loc_file=`expr $fn : '.*:\(.*\)'`
2786 fn=`expr $fn : '\(.*\):.*'`
2794 */*) fullpath=true;;
2803 *e*) exp_file=true;;
2806 *p*) nopath_ok=true;;
2811 *d*) type='Directory';;
2812 *l*) type='Locate';;
2817 Locate) what='File';;
2822 case "$d_portable" in
2830 while test "$type"; do
2835 true) rp="$rp (~name ok)";;
2838 if test -f UU/getfile.ok && \
2839 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2858 value=`UU/filexp $ans`
2861 if test "$ans" != "$value"; then
2862 echo "(That expands to $value on this system.)"
2876 /*) value="$ansexp" ;;
2881 echo "I shall only accept a full path name, as in /bin/ls." >&4
2882 echo "Use a ! shell escape if you wish to check pathnames." >&4
2885 echo "Please give a full path name, starting with slash." >&4
2888 echo "Note that using ~name is ok provided it expands well." >&4
2901 if test -f "$ansexp"; then
2903 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2905 echo "($value is not a plain file, but that's ok.)"
2910 if test -d "$ansexp"; then
2915 if test -d "$ansexp"; then
2916 echo "(Looking for $loc_file in directory $value.)"
2917 value="$value/$loc_file"
2918 ansexp="$ansexp/$loc_file"
2920 if test -f "$ansexp"; then
2923 case "$nopath_ok" in
2924 true) case "$value" in
2926 *) echo "Assuming $value will be in people's path."
2942 if test "$fastread" = yes; then
2947 rp="$what $value doesn't exist. Use that name anyway?"
2968 : determine root of directory hierarchy where package will be installed.
2971 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2979 By default, $package will be installed in $dflt/bin, manual
2980 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2981 all installation directories. Typically set to /usr/local, but you
2982 may choose /usr if you wish to install $package among your system
2983 binaries. If you wish to have binaries under /bin but manual pages
2984 under /usr/local/man, that's ok: you will be prompted separately
2985 for each of the installation directories, the prefix being only used
2986 to set the defaults.
2990 rp='Installation prefix to use?'
2998 *) oldprefix="$prefix";;
3005 : set the prefixit variable, to compute a suitable default value
3006 prefixit='case "$3" in
3008 case "$oldprefix" in
3009 "") eval "$1=\"\$$2\"";;
3016 ""|" ") eval "$1=\"\$$2\"";;
3022 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3024 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3025 /*-$oldprefix/*|\~*-$oldprefix/*)
3026 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3027 *) eval "$1=\"\$$2\"";;
3031 : set the base revision
3034 : get the patchlevel
3036 echo "Getting the current patchlevel..." >&4
3037 if $test -r $rsrc/patchlevel.h;then
3038 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3039 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3044 $echo $n "(You have $package" $c
3047 *) $echo $n " $baserev" $c ;;
3049 $echo $n " patchlevel $patchlevel" $c
3050 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3053 if test 0 -eq "$subversion"; then
3054 version=`LC_ALL=C; export LC_ALL; \
3055 echo $baserev $patchlevel | \
3056 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3058 version=`LC_ALL=C; export LC_ALL; \
3059 echo $baserev $patchlevel $subversion | \
3060 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3062 : Figure out perl API version. Perhaps this should be in patchlevel.h
3063 if test "$subversion" -lt 50; then
3064 apiversion=`LC_ALL=C; export LC_ALL; \
3065 LANGUAGE=C; export LANGUAGE; \
3066 echo $baserev $patchlevel | \
3067 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3069 apiversion="$version"
3072 : determine where private library files go
3073 : Usual default is /usr/local/lib/perl5/$version.
3074 : Also allow things like /opt/perl/lib/$version, since
3075 : /opt/perl/lib/perl5... would be redundant.
3077 *perl*) set dflt privlib lib/$version ;;
3078 *) set dflt privlib lib/$package/$version ;;
3083 There are some auxiliary files for $package that need to be put into a
3084 private library directory that is accessible by everyone.
3088 rp='Pathname where the private library files will reside?'
3090 if $test "X$privlibexp" != "X$ansexp"; then
3094 privlibexp="$ansexp"
3098 Since you are running AFS, I need to distinguish the directory in which
3099 private files reside from the directory in which they are installed (and from
3100 which they are presumably copied to the former directory by occult means).
3103 case "$installprivlib" in
3104 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3105 *) dflt="$installprivlib";;
3108 rp='Where will private files be installed?'
3110 installprivlib="$ans"
3112 installprivlib="$privlibexp"
3115 : set the prefixup variable, to restore leading tilda escape
3116 prefixup='case "$prefixexp" in
3118 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3121 : determine where public architecture dependent libraries go
3124 : privlib default is /usr/local/lib/$package/$version
3125 : archlib default is /usr/local/lib/$package/$version/$archname
3126 : privlib may have an optional trailing /share.
3127 tdflt=`echo $privlib | $sed 's,/share$,,'`
3128 tdflt=$tdflt/$archname
3137 $spackage contains architecture-dependent library files. If you are
3138 sharing libraries in a heterogeneous environment, you might store
3139 these files in a separate location. Otherwise, you can just include
3140 them with the rest of the public library files.
3144 rp='Where do you want to put the public architecture-dependent libraries?'
3147 archlibexp="$ansexp"
3152 Since you are running AFS, I need to distinguish the directory in
3153 which architecture-dependent library files reside from the directory
3154 in which they are installed (and from which they are presumably copied
3155 to the former directory by occult means).
3158 case "$installarchlib" in
3159 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3160 *) dflt="$installarchlib";;
3163 rp='Where will architecture-dependent library files be installed?'
3165 installarchlib="$ans"
3167 installarchlib="$archlibexp"
3169 if $test X"$archlib" = X"$privlib"; then
3175 : make some quick guesses about what we are up against
3177 $echo $n "Hmm... $c"
3187 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3188 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3190 echo "Looks kind of like an OSF/1 system, but we'll see..."
3192 elif test `echo abc | tr a-z A-Z` = Abc ; then
3193 xxx=`./loc addbib blurfl $pth`
3194 if $test -f $xxx; then
3195 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3199 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3200 echo "Looks kind of like an extended USG system, but we'll see..."
3202 echo "Looks kind of like a USG system, but we'll see..."
3206 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3207 echo "Looks kind of like a BSD system, but we'll see..."
3211 echo "Looks kind of like a Version 7 system, but we'll see..."
3214 case "$eunicefix" in
3217 There is, however, a strange, musty smell in the air that reminds me of
3218 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3222 : it so happens the Eunice I know will not run shell scripts in Unix format
3226 echo "Congratulations. You aren't running Eunice."
3230 : Detect OS2. The p_ variable is set above in the Head.U unit.
3235 I have the feeling something is not exactly right, however...don't tell me...
3236 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3241 if test -f /xenix; then
3242 echo "Actually, this looks more like a XENIX system..."
3247 echo "It's not Xenix..."
3252 if test -f /venix; then
3253 echo "Actually, this looks more like a VENIX system..."
3260 echo "Nor is it Venix..."
3263 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3264 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3267 : see if setuid scripts can be secure
3270 Some kernels have a bug that prevents setuid #! scripts from being
3271 secure. Some sites have disabled setuid #! scripts because of this.
3273 First let's decide if your kernel supports secure setuid #! scripts.
3274 (If setuid #! scripts would be secure but have been disabled anyway,
3275 don't say that they are secure if asked.)
3280 if $test -d /dev/fd; then
3281 echo "#!$ls" >reflect
3282 chmod +x,u+s reflect
3283 ./reflect >flect 2>&1
3284 if $contains "/dev/fd" flect >/dev/null; then
3285 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3289 If you are not sure if they are secure, I can check but I'll need a
3290 username and password different from the one you are using right now.
3291 If you don't have such a username or don't want me to test, simply
3295 rp='Other username to test security of setuid scripts with?'
3300 case "$d_suidsafe" in
3301 '') echo "I'll assume setuid scripts are *not* secure." >&4
3304 echo "Well, the $hint value is *not* secure." >&4
3306 *) echo "Well, the $hint value *is* secure." >&4
3311 $rm -f reflect flect
3312 echo "#!$ls" >reflect
3313 chmod +x,u+s reflect
3316 echo '"su" will (probably) prompt you for '"$ans's password."
3317 su $ans -c './reflect >flect'
3318 if $contains "/dev/fd" flect >/dev/null; then
3319 echo "Okay, it looks like setuid scripts are secure." >&4
3322 echo "I don't think setuid scripts are secure." >&4
3327 rp='Does your kernel have *secure* setuid scripts?'
3330 [yY]*) val="$define";;
3335 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3336 echo "(That's for file descriptors, not floppy disks.)"
3342 $rm -f reflect flect
3344 : now see if they want to do setuid emulation
3347 case "$d_suidsafe" in
3350 echo "No need to emulate SUID scripts since they are secure here." >& 4
3354 Some systems have disabled setuid scripts, especially systems where
3355 setuid scripts cannot be secure. On systems where setuid scripts have
3356 been disabled, the setuid/setgid bits on scripts are currently
3357 useless. It is possible for $package to detect those bits and emulate
3358 setuid/setgid in a secure fashion. This emulation will only work if
3359 setuid scripts have been disabled in your kernel.
3363 "$define") dflt=y ;;
3366 rp="Do you want to do setuid/setgid emulation?"
3369 [yY]*) val="$define";;
3377 : determine where manual pages are on this system
3381 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3382 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3383 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3384 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3385 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3386 sysman=`./loc . /usr/man/man1 $syspath`
3389 if $test -d "$sysman"; then
3390 echo "System manual is in $sysman." >&4
3392 echo "Could not find manual pages in source form." >&4
3395 : see what memory models we can support
3398 $cat >pdp11.c <<'EOP'
3407 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3408 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3409 dflt='unsplit split'
3411 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3414 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3419 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3422 if $test -d /lib/large || $test -d /usr/lib/large; then
3425 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3434 Some systems have different model sizes. On most systems they are called
3435 small, medium, large, and huge. On the PDP11 they are called unsplit and
3436 split. If your system doesn't support different memory models, say "none".
3437 If you wish to force everything to one memory model, say "none" here and
3438 put the appropriate flags later when it asks you for other cc and ld flags.
3439 Venix systems may wish to put "none" and let the compiler figure things out.
3440 (In the following question multiple model names should be space separated.)
3442 The default for most systems is "none".
3445 rp="Which memory models are supported?"
3460 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3461 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3468 rp="What flag indicates separate I and D space?"
3476 *large*|*small*|*medium*|*huge*)
3483 rp="What flag indicates large model?"
3493 *huge*) case "$huge" in
3497 rp="What flag indicates huge model?"
3507 *medium*) case "$medium" in
3511 rp="What flag indicates medium model?"
3518 *) medium="$large";;
3521 *small*) case "$small" in
3525 rp="What flag indicates small model?"
3536 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3539 $rm -f pdp11.* pdp11
3541 : see if we need a special compiler
3549 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3550 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3564 On some older systems the default C compiler will not resolve multiple global
3565 references that happen to have the same name. On some such systems the "Mcc"
3566 command may be used to force these to be resolved. On other systems a "cc -M"
3567 command is required. (Note that the -M flag on other systems indicates a
3568 memory model to use!) If you have the Gnu C compiler, you might wish to use
3574 rp="Use which C compiler?"
3582 rp="Use which C compiler?"
3586 : Look for a hint-file generated 'call-back-unit'. Now that the
3587 : user has specified the compiler, we may need to set or change some
3589 if $test -f cc.cbu; then
3593 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3594 $cat >gccvers.c <<EOM
3599 printf("%s\n", __VERSION__);
3601 printf("%s\n", "1");
3607 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3608 gccversion=`./gccvers`
3609 case "$gccversion" in
3610 '') echo "You are not using GNU cc." ;;
3611 *) echo "You are using GNU cc $gccversion." ;;
3615 echo "*** WHOA THERE!!! ***" >&4
3616 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3617 case "$knowitall" in
3619 echo " You'd better start hunting for one and let me know about it." >&4
3625 case "$gccversion" in
3626 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3629 : What should the include directory be ?
3631 $echo $n "Hmm... $c"
3635 if $test -f /bin/mips && /bin/mips; then
3636 echo "Looks like a MIPS system..."
3637 $cat >usr.c <<'EOCP'
3638 #ifdef SYSTYPE_BSD43
3642 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3643 dflt='/bsd43/usr/include'
3647 mips_type='System V'
3649 $rm -f usr.c usr.out
3650 echo "and you're compiling with the $mips_type compiler and libraries."
3654 echo "Doesn't look like a MIPS system."
3664 case "$xxx_prompt" in
3667 rp='Where are the include files you want to use?'
3675 : see how we invoke the C preprocessor
3677 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3678 cat <<'EOT' >testcpp.c
3684 if test ! -f cppstdin; then
3685 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3687 echo "Keeping your $hint cppstdin wrapper."
3690 wrapper=`pwd`/cppstdin
3694 if $test "X$cppstdin" != "X" && \
3695 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3696 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3698 echo "You used to use $cppstdin $cppminus so we'll use that again."
3700 '') echo "But let's see if we can live without a wrapper..." ;;
3702 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3703 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3705 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3708 echo "(However, $cpprun $cpplast does not work, let's see...)"
3716 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3723 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3724 $cc -E <testcpp.c >testcpp.out 2>&1; \
3725 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3726 echo "Yup, it does."
3729 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3730 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3731 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3732 echo "Yup, it does."
3735 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3736 $cc -P <testcpp.c >testcpp.out 2>&1; \
3737 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3738 echo "Yipee, that works!"
3741 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3742 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3743 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3744 echo "At long last!"
3747 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3748 $cpp <testcpp.c >testcpp.out 2>&1; \
3749 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3753 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3754 $cpp - <testcpp.c >testcpp.out 2>&1; \
3755 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 echo "Hooray, it works! I was beginning to wonder."
3759 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3760 $wrapper <testcpp.c >testcpp.out 2>&1; \
3761 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3767 rp="No dice. I can't find a C preprocessor. Name one:"
3771 $x_cpp <testcpp.c >testcpp.out 2>&1
3772 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3773 echo "OK, that will do." >&4
3775 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3790 echo "Perhaps can we force $cc -E using a wrapper..."
3791 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3792 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3798 echo "Nope, we'll have to live without it..."
3812 "$wrapper"|'cppstdin') ;;
3813 *) $rm -f $wrapper;;
3815 $rm -f testcpp.c testcpp.out
3817 : Set private lib path
3820 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3825 '') dlist="$loclibpth $plibpth $glibpth";;
3826 *) dlist="$libpth";;
3829 : Now check and see which directories actually exist, avoiding duplicates
3833 if $test -d $xxx; then
3836 *) libpth="$libpth $xxx";;
3842 Some systems have incompatible or broken versions of libraries. Among
3843 the directories listed in the question below, please remove any you
3844 know not to be holding relevant libraries, and add any that are needed.
3845 Say "none" for none.
3856 rp="Directories to use for library searches?"
3863 : compute shared library extension
3866 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3876 On some systems, shared libraries may be available. Answer 'none' if
3877 you want to suppress searching of shared libraries for the remaining
3878 of this configuration.
3881 rp='What is the file extension used for shared libraries?'
3885 : Define several unixisms.
3886 : Hints files or command line option can be used to override them.
3887 : The convoluted testing is in case hints files set either the old
3890 '') case "$exe_ext" in
3892 *) _exe="$exe_ext" ;;
3897 '') case "$lib_ext" in
3904 '') case "$obj_ext" in
3911 '') case "$path_sep" in
3922 : Which makefile gets called first. This is used by make depend.
3923 case "$firstmakefile" in
3924 '') firstmakefile='makefile';;
3927 : Looking for optional libraries
3929 echo "Checking for optional libraries..." >&4
3934 case "$libswanted" in
3935 '') libswanted='c_s';;
3937 for thislib in $libswanted; do
3939 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3940 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3941 echo "Found -l$thislib (shared)."
3944 *) dflt="$dflt -l$thislib";;
3946 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3947 echo "Found -l$thislib (shared)."
3950 *) dflt="$dflt -l$thislib";;
3952 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3953 echo "Found -l$thislib."
3956 *) dflt="$dflt -l$thislib";;
3958 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3959 echo "Found -l$thislib."
3962 *) dflt="$dflt -l$thislib";;
3964 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3965 echo "Found -l${thislib}_s."
3968 *) dflt="$dflt -l${thislib}_s";;
3970 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3971 echo "Found -l$thislib."
3974 *) dflt="$dflt -l$thislib";;
3977 echo "No -l$thislib."
3988 ' '|'') dflt='none';;
3993 Some versions of Unix support shared libraries, which make executables smaller
3994 but make load time slightly longer.
3996 On some systems, mostly System V Release 3's, the shared library is included
3997 by putting the option "-lc_s" as the last thing on the cc command line when
3998 linking. Other systems use shared libraries by default. There may be other
3999 libraries needed to compile $package on your machine as well. If your system
4000 needs the "-lc_s" option, include it here. Include any other special libraries
4001 here as well. Say "none" for none.
4005 rp="Any additional libraries?"
4012 : determine optimize, if desired, or use for debug flag also
4014 ' '|$undef) dflt='none';;
4016 *) dflt="$optimize";;
4020 Some C compilers have problems with their optimizers. By default, $package
4021 compiles with the -O flag to use the optimizer. Alternately, you might want
4022 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4023 systems). Either flag can be specified here. To use neither flag, specify
4027 rp="What optimizer/debugger flag should be used?"
4031 'none') optimize=" ";;
4035 : We will not override a previous value, but we might want to
4036 : augment a hint file
4039 case "$gccversion" in
4040 1*) dflt='-fpcc-struct-return' ;;
4043 *-g*) dflt="$dflt -DDEBUGGING";;
4045 case "$gccversion" in
4046 2*) if test -d /etc/conf/kconfig.d &&
4047 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4056 case "$mips_type" in
4057 *BSD*|'') inclwanted="$locincpth $usrinc";;
4058 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4060 for thisincl in $inclwanted; do
4061 if $test -d $thisincl; then
4062 if $test x$thisincl != x$usrinc; then
4065 *) dflt="$dflt -I$thisincl";;
4071 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4073 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4081 *) dflt="$dflt -D$2";;
4085 set signal.h LANGUAGE_C; eval $inctest
4088 none|recommended) dflt="$ccflags $dflt" ;;
4089 *) dflt="$ccflags";;
4097 Your C compiler may want other flags. For this question you should include
4098 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4099 but you should NOT include libraries or ld flags like -lwhatever. If you
4100 want $package to honor its debug switch, you should include -DDEBUGGING here.
4101 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4103 To use no flags, specify the word "none".
4109 rp="Any additional cc flags?"
4116 : the following weeds options from ccflags that are of no interest to cpp
4118 case "$gccversion" in
4119 1*) cppflags="$cppflags -D__GNUC__"
4121 case "$mips_type" in
4123 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4129 echo "Let me guess what the preprocessor flags are..." >&4
4143 *) ftry="$previous $flag";;
4145 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4146 >cpp1.out 2>/dev/null && \
4147 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4148 >cpp2.out 2>/dev/null && \
4149 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4150 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4152 cppflags="$cppflags $ftry"
4162 *-*) echo "They appear to be: $cppflags";;
4164 $rm -f cpp.c cpp?.out
4168 : flags used in final linking phase
4170 '') if ./venix; then
4176 *-posix*) dflt="$dflt -posix" ;;
4179 *) dflt="$ldflags";;
4182 : Try to guess additional flags to pick up local libraries.
4183 for thislibdir in $libpth; do
4184 case " $loclibpth " in
4187 *"-L$thislibdir "*) ;;
4188 *) dflt="$dflt -L$thislibdir" ;;
4200 Your C linker may need flags. For this question you should
4201 include -L/whatever and any other flags used by the C linker, but you
4202 should NOT include libraries like -lwhatever.
4204 Make sure you include the appropriate -L/path flags if your C linker
4205 does not normally search all of the directories you specified above,
4208 To use no flags, specify the word "none".
4212 rp="Any additional ld flags (NOT including libraries)?"
4218 rmlist="$rmlist pdp11"
4222 echo "Checking your choice of C compiler and flags for coherency..." >&4
4223 $cat > try.c <<'EOF'
4225 int main() { printf("Ok\n"); exit(0); }
4227 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4229 $cat >try.msg <<'EOM'
4230 I've tried to compile and run the following simple program:
4233 $cat try.c >> try.msg
4235 $cat >> try.msg <<EOM
4242 and I got the following output:
4246 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4247 if sh -c './try' >>try.msg 2>&1; then
4251 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4254 cat >> try.msg <<'EOQS'
4255 If $libs contains -lsfio, and sfio is mis-configured, then it
4256 sometimes (apparently) runs and exits with a 0 status, but with no
4257 output! It may have to do with sfio's use of _exit vs. exit.
4260 rp="You have a big problem. Shall I abort Configure"
4267 echo "The program compiled OK, but exited with status $?." >>try.msg
4268 rp="You have a problem. Shall I abort Configure"
4272 echo "I can't compile the test program." >>try.msg
4273 rp="You have a BIG problem. Shall I abort Configure"
4279 case "$knowitall" in
4281 echo "(The supplied flags or libraries might be incorrect.)"
4289 *) echo "Ok. Stopping Configure." >&4
4294 n) echo "OK, that should do.";;
4296 $rm -f try try.* core
4298 : determine filename position in cpp output
4300 echo "Computing filename position in cpp output for #include directives..." >&4
4301 echo '#include <stdio.h>' > foo.c
4304 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4305 $grep '^[ ]*#.*stdio\.h' | \
4306 while read cline; do
4309 while $test \$# -gt 0; do
4310 if $test -r \`echo \$1 | $tr -d '"'\`; then
4315 pos=\`expr \$pos + 1\`
4327 *) pos="${fieldn}th";;
4329 echo "Your cpp writes the filename in the $pos field of the line."
4331 : locate header file
4336 if test -f $usrinc/\$wanted; then
4337 echo "$usrinc/\$wanted"
4340 awkprg='{ print \$$fieldn }'
4341 echo "#include <\$wanted>" > foo\$\$.c
4342 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4343 $grep "^[ ]*#.*\$wanted" | \
4344 while read cline; do
4345 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4347 */\$wanted) echo "\$name"; exit 0;;
4358 : define an alternate in-header-list? function
4359 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4360 cont=true; xxf="echo \"<\$1> found.\" >&4";
4361 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4362 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4364 case $# in 4) instead=instead;; *) instead="at last";; esac;
4365 while $test "$cont"; do
4367 var=$2; eval "was=\$$2";
4368 if $test "$xxx" && $test -r "$xxx";
4370 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4373 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4374 set $yyy; shift; shift; yyy=$@;
4375 case $# in 0) cont="";;
4376 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4377 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4378 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4379 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4383 do set $yyy; var=$2; eval "was=\$$2";
4384 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4385 set $yyy; shift; shift; yyy=$@;
4388 : see if this is a malloc.h system
4389 set malloc.h i_malloc
4392 : see if stdlib is available
4393 set stdlib.h i_stdlib
4396 : determine which malloc to compile in
4398 case "$usemymalloc" in
4399 ''|[yY]*|true|$define) dflt='y' ;;
4402 rp="Do you wish to attempt to use the malloc that comes with $package?"
4408 mallocsrc='malloc.c'
4409 mallocobj="malloc$_o"
4410 d_mymalloc="$define"
4413 : Remove malloc from list of libraries to use
4414 echo "Removing unneeded -lmalloc from library list" >&4
4415 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4418 echo "libs = $libs" >&4
4430 : compute the return types of malloc and free
4432 $cat >malloc.c <<END
4436 #include <sys/types.h>
4450 case "$malloctype" in
4452 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4459 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4463 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4470 echo "Your system uses $freetype free(), it would seem." >&4
4472 : Cruising for prototypes
4474 echo "Checking out function prototypes..." >&4
4475 $cat >prototype.c <<'EOCP'
4476 int main(int argc, char *argv[]) {
4479 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4480 echo "Your C compiler appears to support function prototypes."
4483 echo "Your C compiler doesn't seem to understand function prototypes."
4490 case "$prototype" in
4492 *) ansi2knr='ansi2knr'
4497 This version of $package can only be compiled by a compiler that
4498 understands function prototypes. Unfortunately, your C compiler
4500 doesn't seem to understand them. Sorry about that.
4502 If GNU cc is available for your system, perhaps you could try that instead.
4504 Eventually, we hope to support building Perl with pre-ANSI compilers.
4505 If you would like to help in that effort, please contact <perlbug@perl.org>.
4507 Aborting Configure now.
4513 : determine where public executables go
4518 rp='Pathname where the public executables will reside?'
4520 if $test "X$ansexp" != "X$binexp"; then
4528 Since you are running AFS, I need to distinguish the directory in which
4529 executables reside from the directory in which they are installed (and from
4530 which they are presumably copied to the former directory by occult means).
4533 case "$installbin" in
4534 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4535 *) dflt="$installbin";;
4538 rp='Where will public executables be installed?'
4542 installbin="$binexp"
4545 : determine whether to install perl also as /usr/bin/perl
4548 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4550 Many scripts expect to perl to be installed as /usr/bin/perl.
4551 I can install the perl you are about to compile also as /usr/bin/perl
4552 (in addition to $installbin/perl).
4554 case "$installusrbinperl" in
4555 "$undef"|[nN]*) dflt='n';;
4558 rp="Do you want to install perl as /usr/bin/perl?"
4561 [yY]*) val="$define";;
4567 set installusrbinperl
4570 : define a shorthand compile call
4574 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4575 : define a shorthand compile call for compilations that should be ok.
4579 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4582 echo "Checking for GNU C Library..." >&4
4583 cat >gnulibc.c <<EOM
4595 if eval $compile_ok && ./gnulibc; then
4597 echo "You are using the GNU C Library"
4600 echo "You are not using the GNU C Library"
4606 : see if nm is to be used to determine whether a symbol is defined or not
4610 case "$d_gnulibc" in
4613 echo "nm probably won't work on the GNU C Library." >&4
4619 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4621 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4622 echo "'nm' won't be sufficient on this sytem." >&4
4628 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4629 if $test $dflt -gt 20; then
4639 true|$define) dflt=y;;
4646 I can use $nm to extract the symbols from your C libraries. This
4647 is a time consuming task which may generate huge output on the disk (up
4648 to 3 megabytes) but that should make the symbols extraction faster. The
4649 alternative is to skip the 'nm' extraction part and to compile a small
4650 test program instead to determine whether each symbol is present. If
4651 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4652 this may be the best solution.
4654 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4657 rp="Shall I use $nm to extract C symbols from the libraries?"
4660 [Nn]*) usenm=false;;
4669 : nm options which may be necessary
4671 '') if $test -f /mach_boot; then
4673 elif $test -d /usr/ccs/lib; then
4674 nm_opt='-p' # Solaris (and SunOS?)
4675 elif $test -f /dgux; then
4677 elif $test -f /lib64/rld; then
4678 nm_opt='-p' # 64-bit Irix
4684 : nm options which may be necessary for shared libraries but illegal
4685 : for archive libraries. Thank you, Linux.
4686 case "$nm_so_opt" in
4687 '') case "$myuname" in
4689 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4690 nm_so_opt='--dynamic'
4699 : get list of predefined functions in a handy place
4704 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4711 *) for thislib in $libs; do
4714 : Handle C library specially below.
4717 thislib=`echo $thislib | $sed -e 's/^-l//'`
4718 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4720 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4722 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4724 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4726 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4728 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4730 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4735 libnames="$libnames $try"
4737 *) libnames="$libnames $thislib" ;;
4746 for xxx in $libpth; do
4747 $test -r $1 || set $xxx/libc.$so
4748 : The messy sed command sorts on library version numbers.
4750 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4751 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4753 s/[0-9][0-9]*/0000&/g
4754 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4757 sort | $sed -e 's/^.* //'`
4760 $test -r $1 || set /usr/ccs/lib/libc.$so
4761 $test -r $1 || set /lib/libsys_s$_a
4767 if $test -r "$1"; then
4768 echo "Your (shared) C library seems to be in $1."
4770 elif $test -r /lib/libc && $test -r /lib/clib; then
4771 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4773 libc='/lib/clib /lib/libc'
4774 if $test -r /lib/syslib; then
4775 echo "(Your math library is in /lib/syslib.)"
4776 libc="$libc /lib/syslib"
4778 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4779 echo "Your C library seems to be in $libc, as you said before."
4780 elif $test -r $incpath/usr/lib/libc$_a; then
4781 libc=$incpath/usr/lib/libc$_a;
4782 echo "Your C library seems to be in $libc. That's fine."
4783 elif $test -r /lib/libc$_a; then
4785 echo "Your C library seems to be in $libc. You're normal."
4787 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4789 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4790 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4791 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4793 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4795 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4798 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4800 if $test -r "$tans"; then
4801 echo "Your C library seems to be in $tans, of all places."
4807 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4811 If the guess above is wrong (which it might be if you're using a strange
4812 compiler, or your machine supports multiple models), you can override it here.
4817 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4819 I can't seem to find your C library. I've looked in the following places:
4822 $sed 's/^/ /' libpath
4825 None of these seems to contain your C library. I need to get its name...
4830 rp='Where is your C library?'
4835 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4836 set X `cat libnames`
4839 case $# in 1) xxx=file; esac
4840 echo "Extracting names from the following $xxx for later perusal:" >&4
4842 $sed 's/^/ /' libnames >&4
4844 $echo $n "This may take a while...$c" >&4
4848 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4849 *) $nm $nm_opt $file 2>/dev/null;;
4854 $grep fprintf libc.tmp > libc.ptf
4855 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4856 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4858 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4860 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4862 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4864 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4866 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4868 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4872 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4876 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4883 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4885 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4887 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4889 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4891 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4893 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4897 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4899 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4901 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4903 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4905 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4907 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4909 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4911 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4913 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4916 $nm -p $* 2>/dev/null >libc.tmp
4917 $grep fprintf libc.tmp > libc.ptf
4918 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4919 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4925 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4927 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4928 for thisname in $libnames $libc; do
4929 $ar t $thisname >>libc.tmp
4931 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4933 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4934 # Repeat libc to extract forwarders to DLL entries too
4935 for thisname in $libnames $libc; do
4936 $ar tv $thisname >>libc.tmp
4937 # Revision 50 of EMX has bug in $ar.
4938 # it will not extract forwarders to DLL entries
4939 # Use emximp which will extract exactly them.
4940 emximp -o tmp.imp $thisname \
4942 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4943 < tmp.imp >>libc.tmp
4946 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4949 echo "$ar didn't seem to work right." >&4
4950 echo "Maybe this is a Cray...trying bld instead..." >&4
4951 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4953 for thisname in $libnames; do
4955 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4956 $ar t $thisname >>libc.tmp
4960 echo "That didn't work either. Giving up." >&4
4967 if $test -f /lib/syscalls.exp; then
4969 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4970 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4974 $rm -f libnames libpath
4976 : see if dld is available
4980 : is a C symbol defined?
4983 -v) tf=libc.tmp; tc=""; tdc="";;
4984 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4985 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4988 case "$reuseval-$4" in
4990 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4996 if $contains $tlook $tf >/dev/null 2>&1;
5001 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5002 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5010 $define) tval=true;;
5016 : define an is-in-libc? function
5017 inlibc='echo " "; td=$define; tu=$undef;
5018 sym=$1; var=$2; eval "was=\$$2";
5020 case "$reuseval$was" in
5030 echo "$sym() found." >&4;
5031 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5033 echo "$sym() NOT found." >&4;
5034 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5038 $define) echo "$sym() found." >&4;;
5039 *) echo "$sym() NOT found." >&4;;
5043 : see if dlopen exists
5050 : determine which dynamic loading, if any, to compile in
5052 dldir="ext/DynaLoader"
5065 $define) dflt='y' ;;
5068 $define) dflt='y' ;;
5070 : Does a dl_xxx.xs file exist for this operating system
5071 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5074 rp="Do you wish to use dynamic loading?"
5081 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5082 dflt="$dldir/dl_${osname}.xs"
5083 elif $test "$d_dlopen" = "$define" ; then
5084 dflt="$dldir/dl_dlopen.xs"
5085 elif $test "$i_dld" = "$define" ; then
5086 dflt="$dldir/dl_dld.xs"
5091 *) dflt="$dldir/$dlsrc"
5094 echo "The following dynamic loading files are available:"
5095 : Can not go over to $dldir because getfile has path hard-coded in.
5096 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5097 rp="Source file to use for dynamic loading"
5099 # XXX This getfile call will fail the existence check if you try
5100 # building away from $src (this is not supported yet).
5104 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5108 Some systems may require passing special flags to $cc -c to
5109 compile modules that will be used to create a shared library.
5110 To use no flags, say "none".
5113 case "$cccdlflags" in
5114 '') case "$gccversion" in
5115 '') case "$osname" in
5117 next) dflt='none' ;;
5118 irix*) dflt='-KPIC' ;;
5119 svr4*|esix*|solaris) dflt='-KPIC' ;;
5120 sunos) dflt='-pic' ;;
5124 *) case "$osname" in
5125 svr4*|esix*|solaris) dflt='-fPIC' ;;
5130 *) dflt="$cccdlflags" ;;
5132 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5135 none) cccdlflags=' ' ;;
5136 *) cccdlflags="$ans" ;;
5141 Some systems use ld to create libraries that can be dynamically loaded,
5142 while other systems (such as those using ELF) use $cc.
5146 '') $cat >try.c <<'EOM'
5147 /* Test for whether ELF binaries are produced */
5152 int i = open("a.out",O_RDONLY);
5155 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5156 exit(0); /* succeed (yes, it's ELF) */
5161 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5163 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5167 echo "I'll use ld to build dynamic libraries."
5176 rp="What command should be used to create dynamic libraries?"
5182 Some systems may require passing special flags to $ld to create a
5183 library that can be dynamically loaded. If your ld flags include
5184 -L/other/path options to locate libraries outside your loader's normal
5185 search path, you may need to specify those -L options here as well. To
5186 use no flags, say "none".
5189 case "$lddlflags" in
5190 '') case "$osname" in
5191 beos) dflt='-nostart' ;;
5193 linux|irix*) dflt='-shared' ;;
5194 next) dflt='none' ;;
5195 solaris) dflt='-G' ;;
5196 sunos) dflt='-assert nodefinitions' ;;
5197 svr4*|esix*) dflt="-G $ldflags" ;;
5201 *) dflt="$lddlflags" ;;
5204 : Try to guess additional flags to pick up local libraries.
5205 : Be careful not to append to a plain 'none'
5209 for thisflag in $ldflags; do
5214 *) dflt="$dflt $thisflag" ;;
5221 ''|' ') dflt='none' ;;
5224 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5227 none) lddlflags=' ' ;;
5228 *) lddlflags="$ans" ;;
5233 Some systems may require passing special flags to $cc to indicate that
5234 the resulting executable will use dynamic linking. To use no flags,
5238 case "$ccdlflags" in
5239 '') case "$osname" in
5240 hpux) dflt='-Wl,-E' ;;
5241 linux) dflt='-rdynamic' ;;
5242 next) dflt='none' ;;
5243 sunos) dflt='none' ;;
5247 *) dflt="$ccdlflags" ;;
5249 rp="Any special flags to pass to $cc to use dynamic loading?"
5252 none) ccdlflags=' ' ;;
5253 *) ccdlflags="$ans" ;;
5267 # No dynamic loading being used, so don't bother even to prompt.
5270 *) case "$useshrplib" in
5271 '') case "$osname" in
5272 svr4*|dgux|dynixptx|esix|powerux|beos)
5274 also='Building a shared libperl is required for dynamic loading to work on your system.'
5279 also='Building a shared libperl is needed for MAB support.'
5297 The perl executable is normally obtained by linking perlmain.c with
5298 libperl${_a}, any static extensions (usually just DynaLoader), and
5299 any other libraries needed on this system (such as -lm, etc.). Since
5300 your system supports dynamic loading, it is probably possible to build
5301 a shared libperl.$so. If you will have more than one executable linked
5302 to libperl.$so, this will significantly reduce the size of each
5303 executable, but it may have a noticeable affect on performance. The
5304 default is probably sensible for your system.
5308 rp="Build a shared libperl.$so (y/n)"
5313 # Why does next4 have to be so different?
5314 case "${osname}${osvers}" in
5315 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5316 os2*) xxx='' ;; # Nothing special needed.
5318 *) xxx='LD_LIBRARY_PATH' ;;
5320 if test X"$xxx" != "X"; then
5321 $cat <<EOM | $tee -a ../config.msg >&4
5323 To build perl, you must add the current working directory to your
5324 $xxx environment variable before running make. You can do
5326 $xxx=\`pwd\`:\$$xxx; export $xxx
5327 for Bourne-style shells, or
5329 for Csh-style shells. You *MUST* do this before running make.
5334 *) useshrplib='false' ;;
5339 case "$useshrplib" in
5343 # Figure out a good name for libperl.so. Since it gets stored in
5344 # a version-specific architecture-dependent library, the version
5345 # number isn't really that important, except for making cc/ld happy.
5347 # A name such as libperl.so.3.1
5348 majmin="libperl.$so.$patchlevel.$subversion"
5349 # A name such as libperl.so.301
5350 majonly=`echo $patchlevel $subversion |
5351 $awk '{printf "%d%02d", $1, $2}'`
5352 majonly=libperl.$so.$majonly
5353 # I'd prefer to keep the os-specific stuff here to a minimum, and
5354 # rely on figuring it out from the naming of libc.
5355 case "${osname}${osvers}" in
5358 # XXX How handle the --version stuff for MAB?
5360 linux*) # ld won't link with a bare -lperl otherwise.
5363 *) # Try to guess based on whether libc has major.minor.
5365 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5366 *libc.$so.[0-9]*) dflt=$majonly ;;
5367 *) dflt=libperl.$so ;;
5377 I need to select a good name for the shared libperl. If your system uses
5378 library names with major and minor numbers, then you might want something
5379 like $majmin. Alternatively, if your system uses a single version
5380 number for shared libraries, then you might want to use $majonly.
5381 Or, your system might be quite happy with a simple libperl.$so.
5383 Since the shared libperl will get installed into a version-specific
5384 architecture-dependent directory, the version number of the shared perl
5385 library probably isn't important, so the default should be o.k.
5388 rp='What name do you want to give to the shared libperl?'
5391 echo "Ok, I'll use $libperl"
5394 libperl="libperl${_a}"
5398 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5402 WARNING: Use of the shrpdir variable for the installation location of
5403 the shared $libperl is not supported. It was never documented and
5404 will not work in this version. Let me (perlbug@perl.com)
5405 know of any problems this may cause.
5411 But your current setting of $shrpdir is
5412 the default anyway, so it's harmless.
5417 Further, your current attempted setting of $shrpdir
5418 conflicts with the value of $archlibexp/CORE
5419 that installperl will use.
5426 # How will the perl executable find the installed shared $libperl?
5427 # Add $xxx to ccdlflags.
5428 # If we can't figure out a command-line option, use $shrpenv to
5429 # set env LD_RUN_PATH. The main perl makefile uses this.
5430 shrpdir=$archlibexp/CORE
5433 if "$useshrplib"; then
5436 # We'll set it in Makefile.SH...
5442 xxx="-Wl,-R$shrpdir"
5444 linux|irix*|dec_osf)
5445 xxx="-Wl,-rpath,$shrpdir"
5448 # next doesn't like the default...
5451 # beos doesn't like the default, either.
5454 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5460 # Only add $xxx if it isn't already in ccdlflags.
5461 case " $ccdlflags " in
5463 *) ccdlflags="$ccdlflags $xxx"
5466 Adding $xxx to the flags
5467 passed to $ld so that the perl executable will find the
5468 installed shared $libperl.
5476 # Respect a hint or command-line value.
5478 '') shrpenv="$tmp_shrpenv" ;;
5481 : determine where manual pages go
5482 set man1dir man1dir none
5486 $spackage has manual pages available in source form.
5490 echo "However, you don't have nroff, so they're probably useless to you."
5492 '') man1dir="none";;
5495 echo "If you don't want the manual sources installed, answer 'none'."
5500 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5501 lookpath="$lookpath $prefixexp/man/p_man/man1"
5502 lookpath="$lookpath $prefixexp/man/u_man/man1"
5503 lookpath="$lookpath $prefixexp/man/man.1"
5505 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5506 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5516 rp="Where do the main $spackage manual pages (source) go?"
5518 if $test "X$man1direxp" != "X$ansexp"; then
5522 man1direxp="$ansexp"
5530 Since you are running AFS, I need to distinguish the directory in which
5531 manual pages reside from the directory in which they are installed (and from
5532 which they are presumably copied to the former directory by occult means).
5535 case "$installman1dir" in
5536 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5537 *) dflt="$installman1dir";;
5540 rp='Where will man pages be installed?'
5542 installman1dir="$ans"
5544 installman1dir="$man1direxp"
5547 : What suffix to use on installed man pages
5554 rp="What suffix should be used for the main $spackage man pages?"
5556 '') case "$man1dir" in
5570 *) dflt="$man1ext";;
5577 : see if we can have long filenames
5579 rmlist="$rmlist /tmp/cf$$"
5580 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5581 first=123456789abcdef
5582 second=/tmp/cf$$/$first
5583 $rm -f $first $second
5584 if (echo hi >$first) 2>/dev/null; then
5585 if $test -f 123456789abcde; then
5586 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5589 if (echo hi >$second) 2>/dev/null; then
5590 if $test -f /tmp/cf$$/123456789abcde; then
5592 That's peculiar... You can have filenames longer than 14 characters, but only
5593 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5594 I shall consider your system cannot support long filenames at all.
5598 echo 'You can have filenames longer than 14 characters.' >&4
5603 How confusing! Some of your filesystems are sane enough to allow filenames
5604 longer than 14 characters but some others like /tmp can't even think about them.
5605 So, for now on, I shall assume your kernel does not allow them at all.
5612 You can't have filenames longer than 14 chars. You can't even think about them!
5618 $rm -rf /tmp/cf$$ 123456789abcde*
5620 : determine where library module manual pages go
5621 set man3dir man3dir none
5625 $spackage has manual pages for many of the library modules.
5631 However, you don't have nroff, so they're probably useless to you.
5634 '') man3dir="none";;
5638 case "$d_flexfnam" in
5641 However, your system can't handle the long file names like File::Basename.3.
5644 '') man3dir="none";;
5648 echo "If you don't want the manual sources installed, answer 'none'."
5649 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5651 '') case "$prefix" in
5652 *$prog*) dflt=`echo $man1dir |
5653 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5654 *) dflt="$privlib/man/man3" ;;
5658 *) dflt="$man3dir" ;;
5663 rp="Where do the $package library man pages (source) go?"
5665 if test "X$man3direxp" != "X$ansexp"; then
5670 man3direxp="$ansexp"
5678 Since you are running AFS, I need to distinguish the directory in which
5679 manual pages reside from the directory in which they are installed (and from
5680 which they are presumably copied to the former directory by occult means).
5683 case "$installman3dir" in
5684 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5685 *) dflt="$installman3dir";;
5688 rp='Where will man pages be installed?'
5690 installman3dir="$ans"
5692 installman3dir="$man3direxp"
5695 : What suffix to use on installed man pages
5702 rp="What suffix should be used for the $package library man pages?"
5704 '') case "$man3dir" in
5718 *) dflt="$man3ext";;
5725 : see if we have to deal with yellow pages, now NIS.
5726 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5727 if $test -f /usr/etc/nibindd; then
5729 echo "I'm fairly confident you're on a NeXT."
5731 rp='Do you get the hosts file via NetInfo?'
5740 y*) hostcat='nidump hosts .';;
5741 *) case "$hostcat" in
5742 nidump*) hostcat='';;
5752 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5760 rp='Are you getting the hosts file via yellow pages?'
5763 y*) hostcat='ypcat hosts';;
5764 *) hostcat='cat /etc/hosts';;
5770 '') hostcat='cat /etc/hosts';;
5773 '') groupcat='cat /etc/group';;
5776 '') passcat='cat /etc/passwd';;
5779 : now get the host name
5781 echo "Figuring out host name..." >&4
5782 case "$myhostname" in
5784 echo 'Maybe "hostname" will work...'
5785 if tans=`sh -c hostname 2>&1` ; then
5793 if $test "$cont"; then
5795 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5796 if tans=`cat /etc/systemid 2>&1` ; then
5798 phostname='cat /etc/systemid'
5799 echo "Whadyaknow. Xenix always was a bit strange..."
5802 elif $test -r /etc/systemid; then
5803 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5806 if $test "$cont"; then
5807 echo 'No, maybe "uuname -l" will work...'
5808 if tans=`sh -c 'uuname -l' 2>&1` ; then
5810 phostname='uuname -l'
5812 echo 'Strange. Maybe "uname -n" will work...'
5813 if tans=`sh -c 'uname -n' 2>&1` ; then
5815 phostname='uname -n'
5817 echo 'Oh well, maybe I can mine it out of whoami.h...'
5818 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5819 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5820 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5822 case "$myhostname" in
5823 '') echo "Does this machine have an identity crisis or something?"
5826 echo "Well, you said $myhostname before..."
5827 phostname='echo $myhostname';;
5833 : you do not want to know about this
5838 if $test "$myhostname" ; then
5840 rp='Your host name appears to be "'$myhostname'".'" Right?"
5848 : bad guess or no guess
5849 while $test "X$myhostname" = X ; do
5851 rp="Please type the (one word) name of your host:"
5856 : translate upper to lower if necessary
5857 case "$myhostname" in
5859 echo "(Normalizing case in your host name)"
5860 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5864 case "$myhostname" in
5866 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5867 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5868 echo "(Trimming domain name from host name--host name is now $myhostname)"
5870 *) case "$mydomain" in
5873 test "X$hostcat" = "Xypcat hosts" &&
5874 ypmatch "$myhostname" hosts 2>/dev/null |\
5875 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5878 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5879 /[ ]$myhostname[ . ]/p" > hosts
5882 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5883 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5884 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5885 hosts | $sort | $uniq | \
5886 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5887 case `$echo X$dflt` in
5888 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5891 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5896 tans=`./loc resolv.conf X /etc /usr/etc`
5897 if $test -f "$tans"; then
5898 echo "(Attempting domain name extraction from $tans)"
5899 dflt=.`$sed -n -e 's/ / /g' \
5900 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5901 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5903 .) dflt=.`$sed -n -e 's/ / /g' \
5904 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5905 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5912 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5913 dflt=.`sh -c domainname 2>/dev/null`
5916 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5921 .) echo "(Lost all hope -- silly guess then)"
5927 *) dflt="$mydomain";;
5931 rp="What is your domain name?"
5941 : translate upper to lower if necessary
5944 echo "(Normalizing case in your domain name)"
5945 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5949 : a little sanity check here
5950 case "$phostname" in
5953 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5954 $myhostname$mydomain|$myhostname) ;;
5956 case "$phostname" in
5958 echo "(That doesn't agree with your whoami.h file, by the way.)"
5961 echo "(That doesn't agree with your $phostname command, by the way.)"
5971 I need to get your e-mail address in Internet format if possible, i.e.
5972 something like user@host.domain. Please answer accurately since I have
5973 no easy means to double check it. The default value provided below
5974 is most probably close to the reality but may not be valid from outside
5975 your organization...
5979 while test "$cont"; do
5981 '') dflt="$cf_by@$myhostname$mydomain";;
5982 *) dflt="$cf_email";;
5984 rp='What is your e-mail address?'
5990 rp='Address does not look like an Internet one. Use it anyway?'
6006 If you or somebody else will be maintaining perl at your site, please
6007 fill in the correct e-mail address here so that they may be contacted
6008 if necessary. Currently, the "perlbug" program included with perl
6009 will send mail to this address in addition to perlbug@perl.com. You may
6010 enter "none" for no administrator.
6013 case "$perladmin" in
6014 '') dflt="$cf_email";;
6015 *) dflt="$perladmin";;
6017 rp='Perl administrator e-mail address'
6021 : figure out how to guarantee perl startup
6022 case "$startperl" in
6024 case "$sharpbang" in
6028 I can use the #! construct to start perl on your system. This will
6029 make startup of perl scripts faster, but may cause problems if you
6030 want to share those scripts and perl is not in a standard place
6031 ($binexp/perl) on all your platforms. The alternative is to force
6032 a shell by starting the script with a single ':' character.
6036 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6039 none) startperl=": # use perl";;
6040 *) startperl="#!$ans"
6041 if $test 30 -lt `echo "$ans" | wc -c`; then
6044 WARNING: Some systems limit the #! command to 32 characters.
6045 If you experience difficulty running Perl scripts with #!, try
6046 installing Perl in a directory with a shorter pathname.
6052 *) startperl=": # use perl"
6057 echo "I'll use $startperl to start perl scripts."
6059 : figure best path for perl in scripts
6062 perlpath="$binexp/perl"
6063 case "$startperl" in
6068 I will use the "eval 'exec'" idiom to start Perl on your system.
6069 I can use the full path of your Perl binary for this purpose, but
6070 doing so may cause problems if you want to share those scripts and
6071 Perl is not always in a standard place ($binexp/perl).
6075 rp="What path shall I use in \"eval 'exec'\"?"
6082 case "$startperl" in
6084 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6087 : determine where public executable scripts go
6088 set scriptdir scriptdir
6090 case "$scriptdir" in
6093 : guess some guesses
6094 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6095 $test -d /usr/share/bin && dflt=/usr/share/bin
6096 $test -d /usr/local/script && dflt=/usr/local/script
6097 $test -d $prefixexp/script && dflt=$prefixexp/script
6101 *) dflt="$scriptdir"
6106 Some installations have a separate directory just for executable scripts so
6107 that they can mount it across multiple architectures but keep the scripts in
6108 one spot. You might, for example, have a subdirectory of /usr/share for this.
6109 Or you might just lump your scripts in with all your other executables.
6113 rp='Where do you keep publicly executable scripts?'
6115 if $test "X$ansexp" != "X$scriptdirexp"; then
6119 scriptdirexp="$ansexp"
6123 Since you are running AFS, I need to distinguish the directory in which
6124 scripts reside from the directory in which they are installed (and from
6125 which they are presumably copied to the former directory by occult means).
6128 case "$installscript" in
6129 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6130 *) dflt="$installscript";;
6133 rp='Where will public scripts be installed?'
6135 installscript="$ans"
6137 installscript="$scriptdirexp"
6140 : determine where site specific libraries go.
6141 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6142 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6144 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6145 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6150 The installation process will also create a directory for
6151 site-specific extensions and modules. Some users find it convenient
6152 to place all site-specific files in this directory rather than in the
6153 main distribution directory.
6157 rp='Pathname for the site-specific library files?'
6159 if $test "X$sitelibexp" != "X$ansexp"; then
6163 sitelibexp="$ansexp"
6167 Since you are running AFS, I need to distinguish the directory in
6168 which site-specific files reside from the directory in which they are
6169 installed (and from which they are presumably copied to the former
6170 directory by occult means).
6173 case "$installsitelib" in
6174 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6175 *) dflt="$installsitelib";;
6178 rp='Where will site-specific files be installed?'
6180 installsitelib="$ans"
6182 installsitelib="$sitelibexp"
6185 : determine where site specific architecture-dependent libraries go.
6186 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6187 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6188 : sitelib may have an optional trailing /share.
6189 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6190 tdflt="$tdflt/$archname"
6191 set sitearch sitearch none
6194 '') dflt="$tdflt" ;;
6195 *) dflt="$sitearch" ;;
6199 The installation process will also create a directory for
6200 architecture-dependent site-specific extensions and modules.
6204 rp='Pathname for the site-specific architecture-dependent library files?'
6206 if $test "X$sitearchexp" != "X$ansexp"; then
6210 sitearchexp="$ansexp"
6214 Since you are running AFS, I need to distinguish the directory in
6215 which site-specific architecture-dependent library files reside from
6216 the directory in which they are installed (and from which they are
6217 presumably copied to the former directory by occult means).
6220 case "$installsitearch" in
6221 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6222 *) dflt="$installsitearch";;
6225 rp='Where will site-specific architecture-dependent files be installed?'
6227 installsitearch="$ans"
6229 installsitearch="$sitearchexp"
6234 Previous version of $package used the standard IO mechanisms as defined
6235 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6236 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6237 the default. This abstraction layer can use AT&T's sfio (if you already
6238 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6239 problems with some extension modules. Using PerlIO with stdio is safe,
6240 but it is slower than plain stdio and therefore is not the default.
6242 If this doesn't make any sense to you, just accept the default 'n'.
6244 case "$useperlio" in
6245 $define|true|[yY]*) dflt='y';;
6248 rp='Use the experimental PerlIO abstraction layer?'
6255 echo "Ok, doing things the stdio way"
6262 : Check how to convert floats to strings.
6263 if test "X$d_Gconvert" = X; then
6265 echo "Checking for an efficient way to convert floats to strings."
6268 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6269 char *myname = "gconvert";
6272 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6273 char *myname = "gcvt";
6276 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6277 char *myname = "sprintf";
6283 checkit(expect, got)
6287 if (strcmp(expect, got)) {
6288 printf("%s oddity: Expected %s, got %s\n",
6289 myname, expect, got);
6299 /* This must be 1st test on (which?) platform */
6300 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6301 Gconvert(0.1, 8, 0, buf);
6302 checkit("0.1", buf);
6304 Gconvert(1.0, 8, 0, buf);
6307 Gconvert(0.0, 8, 0, buf);
6310 Gconvert(-1.0, 8, 0, buf);
6313 /* Some Linux gcvt's give 1.e+5 here. */
6314 Gconvert(100000.0, 8, 0, buf);
6315 checkit("100000", buf);
6317 /* Some Linux gcvt's give -1.e+5 here. */
6318 Gconvert(-100000.0, 8, 0, buf);
6319 checkit("-100000", buf);
6324 case "$d_Gconvert" in
6325 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6326 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6327 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6328 *) xxx_list='gconvert gcvt sprintf' ;;
6331 for xxx_convert in $xxx_list; do
6332 echo "Trying $xxx_convert"
6334 set try -DTRY_$xxx_convert
6335 if eval $compile; then
6336 echo "$xxx_convert" found. >&4
6338 echo "I'll use $xxx_convert to convert floats into a string." >&4
6341 echo "...But $xxx_convert didn't work as I expected."
6344 echo "$xxx_convert NOT found." >&4
6348 case "$xxx_convert" in
6349 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6350 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6351 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6355 : Initialize h_fcntl
6358 : Initialize h_sysfile
6361 : access call always available on UNIX
6365 : locate the flags for 'access()'
6369 $cat >access.c <<'EOCP'
6370 #include <sys/types.h>
6375 #include <sys/file.h>
6384 : check sys/file.h first, no particular reason here
6385 if $test `./findhdr sys/file.h` && \
6386 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6388 echo "<sys/file.h> defines the *_OK access constants." >&4
6389 elif $test `./findhdr fcntl.h` && \
6390 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6392 echo "<fcntl.h> defines the *_OK access constants." >&4
6393 elif $test `./findhdr unistd.h` && \
6394 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6395 echo "<unistd.h> defines the *_OK access constants." >&4
6397 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6403 : see if accessx exists
6404 set accessx d_accessx
6407 : see if alarm exists
6411 : Look for GNU-cc style attribute checking
6413 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6414 $cat >attrib.c <<'EOCP'
6416 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6418 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6419 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6420 echo "Your C compiler doesn't fully support __attribute__."
6423 echo "Your C compiler supports __attribute__."
6427 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6434 : see if bcmp exists
6438 : see if bcopy exists
6442 : see if this is a unistd.h system
6443 set unistd.h i_unistd
6446 : see if getpgrp exists
6447 set getpgrp d_getpgrp
6450 case "$d_getpgrp" in
6453 echo "Checking to see which flavor of getpgrp is in use..."
6456 #include <sys/types.h>
6458 # include <unistd.h>
6462 if (getuid() == 0) {
6463 printf("(I see you are running Configure as super-user...)\n");
6467 if (getpgrp(1) == 0)
6476 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6477 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6479 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6480 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6483 echo "I can't seem to compile and run the test program."
6485 xxx="a USG one, i.e. you use getpgrp()."
6487 # SVR4 systems can appear rather BSD-ish.
6490 xxx="a BSD one, i.e. you use getpgrp(pid)."
6494 xxx="probably a USG one, i.e. you use getpgrp()."
6499 echo "Assuming your getpgrp is $xxx" >&4
6508 : see if setpgrp exists
6509 set setpgrp d_setpgrp
6512 case "$d_setpgrp" in
6515 echo "Checking to see which flavor of setpgrp is in use..."
6518 #include <sys/types.h>
6520 # include <unistd.h>
6524 if (getuid() == 0) {
6525 printf("(I see you are running Configure as super-user...)\n");
6529 if (-1 == setpgrp(1, 1))
6532 if (setpgrp() != -1)
6538 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6539 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6541 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6542 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6545 echo "(I can't seem to compile and run the test program.)"
6547 xxx="a USG one, i.e. you use setpgrp()."
6549 # SVR4 systems can appear rather BSD-ish.
6552 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6556 xxx="probably a USG one, i.e. you use setpgrp()."
6561 echo "Assuming your setpgrp is $xxx" >&4
6569 : see if bzero exists
6573 : check for lengths of integral types
6577 echo "Checking to see how big your integers are..." >&4
6578 $cat >intsize.c <<'EOCP'
6582 printf("intsize=%d;\n", sizeof(int));
6583 printf("longsize=%d;\n", sizeof(long));
6584 printf("shortsize=%d;\n", sizeof(short));
6589 if eval $compile_ok && ./intsize > /dev/null; then
6591 echo "Your integers are $intsize bytes long."
6592 echo "Your long integers are $longsize bytes long."
6593 echo "Your short integers are $shortsize bytes long."
6597 Help! I can't compile and run the intsize test program: please enlighten me!
6598 (This is probably a misconfiguration in your system or libraries, and
6599 you really ought to fix it. Still, I'll try anyway.)
6603 rp="What is the size of an integer (in bytes)?"
6607 rp="What is the size of a long integer (in bytes)?"
6611 rp="What is the size of a short integer (in bytes)?"
6617 $rm -f intsize intsize.*
6619 : see if signal is declared as pointer to function returning int or void
6621 xxx=`./findhdr signal.h`
6622 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6623 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6624 echo "You have int (*signal())() instead of void." >&4
6626 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6627 echo "You have void (*signal())()." >&4
6629 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6630 echo "You have int (*signal())() instead of void." >&4
6632 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6633 echo "You have void (*signal())()." >&4
6636 case "$d_voidsig" in
6638 echo "I can't determine whether signal handler returns void or int..." >&4
6640 rp="What type does your signal handler return?"
6647 echo "As you already told me, signal handler returns void." >&4
6650 *) echo "As you already told me, signal handler returns int." >&4
6657 case "$d_voidsig" in
6658 "$define") signal_t="void";;
6663 : check for ability to cast large floats to 32-bit ints.
6665 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6666 if $test "$intsize" -ge 4; then
6673 #include <sys/types.h>
6675 $signal_t blech(s) int s; { exit(3); }
6682 signal(SIGFPE, blech);
6684 /* Don't let compiler optimize the test away. Store the number
6685 in a writable string for gcc to pass to sscanf under HP/UX.
6687 sprintf(str, "2147483647");
6688 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6692 /* x86 processors will probably give 0x8000 0000, which is a
6693 sign change. We don't want that. We want to mimic SPARC
6694 behavior here, which is to preserve the sign and give
6697 if (i32 != ($xxx) f)
6703 if eval $compile_ok; then
6707 echo "(I can't seem to compile the test program--assuming it can't)"
6715 echo "Nope, it can't."
6722 : check for ability to cast negative floats to unsigned
6724 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6727 #include <sys/types.h>
6729 $signal_t blech(s) int s; { exit(7); }
6730 $signal_t blech_in_list(s) int s; { exit(4); }
6731 unsigned long dummy_long(p) unsigned long p; { return p; }
6732 unsigned int dummy_int(p) unsigned int p; { return p; }
6733 unsigned short dummy_short(p) unsigned short p; { return p; }
6737 unsigned long along;
6739 unsigned short ashort;
6743 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6744 a direct f = -123. assignment. gcc-2.8.0 reportedly
6745 optimized the whole file away
6747 /* Store the number in a writable string for gcc to pass to
6750 sprintf(str, "-123");
6751 sscanf(str, "%lf", &f); /* f = -123.; */
6753 signal(SIGFPE, blech);
6754 along = (unsigned long)f;
6755 aint = (unsigned int)f;
6756 ashort = (unsigned short)f;
6757 if (along != (unsigned long)-123)
6759 if (aint != (unsigned int)-123)
6761 if (ashort != (unsigned short)-123)
6763 sprintf(str, "1073741824.");
6764 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6767 along = (unsigned long)f;
6768 if (along != 0x80000000)
6772 along = (unsigned long)f;
6773 if (along != 0x7fffffff)
6777 along = (unsigned long)f;
6778 if (along != 0x80000001)
6782 signal(SIGFPE, blech_in_list);
6783 sprintf(str, "123.");
6784 sscanf(str, "%lf", &f); /* f = 123.; */
6785 along = dummy_long((unsigned long)f);
6786 aint = dummy_int((unsigned int)f);
6787 ashort = dummy_short((unsigned short)f);
6788 if (along != (unsigned long)123)
6790 if (aint != (unsigned int)123)
6792 if (ashort != (unsigned short)123)
6799 if eval $compile_ok; then
6803 echo "(I can't seem to compile the test program--assuming it can't)"
6806 case "$castflags" in
6811 echo "Nope, it can't."
6818 : see if vprintf exists
6820 if set vprintf val -f d_vprintf; eval $csym; $val; then
6821 echo 'vprintf() found.' >&4
6823 $cat >vprintf.c <<'EOF'
6824 #include <varargs.h>
6826 int main() { xxx("foo"); }
6835 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6839 if eval $compile && ./vprintf; then
6840 echo "Your vsprintf() returns (int)." >&4
6843 echo "Your vsprintf() returns (char*)." >&4
6847 echo 'vprintf() NOT found.' >&4
6857 : see if chown exists
6861 : see if chroot exists
6865 : see if chsize exists
6869 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6870 while $test $# -ge 2; do
6872 $define) echo "#include <$2>";;
6876 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6877 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6886 : see if this is a sys/uio.h system
6887 set sys/uio.h i_sysuio
6890 echo "Checking to see if your system supports struct iovec..." >&4
6891 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6893 case "$d_iovec_s" in
6894 "$define") echo "Yup, it does." >&4
6896 *) echo "Nope, it doesn't." >&4
6902 : see whether socket exists
6904 $echo $n "Hmm... $c" >&4
6905 if set socket val -f d_socket; eval $csym; $val; then
6906 echo "Looks like you have Berkeley networking support." >&4
6908 if set setsockopt val -f; eval $csym; $val; then
6911 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6915 if $contains socklib libc.list >/dev/null 2>&1; then
6916 echo "Looks like you have Berkeley networking support." >&4
6918 : we will have to assume that it supports the 4.2 BSD interface
6921 echo "You don't have Berkeley networking in libc$_a..." >&4
6922 if test "X$d_socket" = "X$define"; then
6923 echo "...but you seem to believe that you have sockets." >&4
6925 for net in net socket
6927 if test -f /usr/lib/lib$net$_a; then
6928 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6929 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6930 if $contains socket libc.list >/dev/null 2>&1; then
6935 echo "...but the Wollongong group seems to have hacked it in." >&4
6936 sockethdr="-I/usr/netinclude"
6939 echo "Found Berkeley sockets interface in lib$net." >& 4
6940 if $contains setsockopt libc.list >/dev/null 2>&1; then
6943 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6950 if test "X$d_socket" != "X$define"; then
6951 echo "or anywhere else I see." >&4
6959 : see if socketpair exists
6960 set socketpair d_sockpair
6965 echo "Checking the availability of certain socket constants..." >& 4
6966 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6967 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6969 #include <sys/types.h>
6970 #include <sys/socket.h>
6976 set try; if eval $compile; then
6979 set d_${enum}; eval $setvar
6983 set sendmsg d_sendmsg
6986 set recvmsg d_recvmsg
6990 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6991 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6993 case "$d_msghdr_s" in
6994 "$define") echo "Yup, it does." >&4
6996 *) echo "Nope, it doesn't." >&4
7000 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7001 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7003 case "$d_cmsghdr_s" in
7004 "$define") echo "Yup, it does." >&4
7006 *) echo "Nope, it doesn't." >&4
7010 : check for const keyword
7012 echo 'Checking to see if your C compiler knows about "const"...' >&4
7013 $cat >const.c <<'EOCP'
7014 typedef struct spug { int drokk; } spug;
7021 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7023 echo "Yup, it does."
7026 echo "Nope, it doesn't."
7031 : see if crypt exists
7033 if set crypt val -f d_crypt; eval $csym; $val; then
7034 echo 'crypt() found.' >&4
7038 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7039 if $test -z "$cryptlib"; then
7040 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7044 if $test -z "$cryptlib"; then
7045 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7049 if $test -z "$cryptlib"; then
7050 cryptlib=`./loc libcrypt$_a "" $libpth`
7054 if $test -z "$cryptlib"; then
7055 echo 'crypt() NOT found.' >&4
7064 : get csh whereabouts
7066 'csh') val="$undef" ;;
7071 : Respect a hint or command line value for full_csh.
7073 '') full_csh=$csh ;;
7076 : see if cuserid exists
7077 set cuserid d_cuserid
7080 : see if this is a limits.h system
7081 set limits.h i_limits
7084 : see if this is a float.h system
7088 : See if number of significant digits in a double precision number is known
7090 $cat >dbl_dig.c <<EOM
7100 printf("Contains DBL_DIG");
7103 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7104 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7105 echo "DBL_DIG found." >&4
7108 echo "DBL_DIG NOT found." >&4
7116 if $test X"$use64bits" = X"$define"; then
7117 : see if dbminit64 exists
7118 set dbminit64 d_dbminit64
7121 : see if dbmclose64 exists
7122 set dbmclose64 d_dbmclose64
7125 : see if fetch64 exists
7126 set fetch64 d_fetch64
7129 : see if store64 exists
7130 set store64 d_store64
7133 : see if delete64 exists
7134 set delete64 d_delete64
7137 : see if firstkey64 exists
7138 set firstkey64 d_firstkey64
7141 : see if nextkey64 exists
7142 set nextkey64 d_nextkey64
7146 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7153 : see if difftime exists
7154 set difftime d_difftime
7157 : see if sys/stat.h is available
7158 set sys/stat.h i_sysstat
7161 : see if this is a dirent system
7163 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7165 echo "<dirent.h> found." >&4
7168 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7169 echo "<sys/dir.h> found." >&4
7172 xinc=`./findhdr sys/ndir.h`
7174 echo "<dirent.h> NOT found." >&4
7179 : Look for type of directory structure.
7181 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7183 case "$direntrytype" in
7186 $define) guess1='struct dirent' ;;
7187 *) guess1='struct direct' ;;
7190 *) guess1="$direntrytype"
7195 'struct dirent') guess2='struct direct' ;;
7196 *) guess2='struct dirent' ;;
7199 if $contains "$guess1" try.c >/dev/null 2>&1; then
7200 direntrytype="$guess1"
7201 echo "Your directory entries are $direntrytype." >&4
7202 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7203 direntrytype="$guess2"
7204 echo "Your directory entries seem to be $direntrytype." >&4
7206 echo "I don't recognize your system's directory entries." >&4
7207 rp="What type is used for directory entries on this system?"
7215 : see if the directory entry stores field length
7217 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7218 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7219 echo "Good, your directory entry keeps length information in d_namlen." >&4
7222 echo "Your directory entry does not know about the d_namlen field." >&4
7230 if $test X"$use64bits" = X"$define"; then
7231 : see if fstat64 exists
7232 set fstat64 d_fstat64
7235 : see if ftruncate64 exists
7236 set ftruncate64 d_ftruncate64
7239 : see if lockf64 exists
7240 set lockf64 d_lockf64
7243 : see if lseek64 exists
7244 set lseek64 d_lseek64
7247 : see if lstat64 exists
7248 set lstat64 d_lstat64
7251 : see if open64 exists
7255 : see if opendir64 exists
7256 set opendir64 d_opendir64
7259 : see if readdir64 exists
7260 set readdir64 d_readdir64
7263 : see if seekdir64 exists
7264 set seekdir64 d_seekdir64
7267 : see if stat64 exists
7271 : see if telldir64 exists
7272 set telldir64 d_telldir64
7275 : see if truncate64 exists
7276 set truncate64 d_truncate64
7281 echo $n "Checking to see if your system supports off64_t...$c" >&4
7283 #include <sys/types.h>
7284 off64_t foo() { off64_t x; x = 7; return x; }'
7286 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7288 echo " Yup, it does." >&4
7291 echo " Nope, it doesn't." >&4
7299 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7301 case "$i_sysstat" in
7304 #include <sys/types.h>
7305 #include <sys/stat.h>
7306 ino64_t foo() { ino64_t x; x = 7; return x; }'
7308 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7314 if $test "X$val" = X"$define"; then
7315 echo " Yup, it does." >&4
7317 echo " Nope, it doesn't." >&4
7322 : check for struct flock64
7324 echo "Checking to see if your system supports struct flock64..." >&4
7326 set d_flock64_s flock64 l_len define fcntl.h
7333 case "$d_flock64_s" in
7334 "$define") echo "Yup, it does." >&4
7336 *) echo "Nope, it doesn't." >&4
7340 : check for struct dirent64
7342 echo "Checking to see if your system supports struct dirent64..." >&4
7343 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7345 case "$d_dirent64_s" in
7346 "$define") echo "Yup, it does." >&4
7348 *) echo "Nope, it doesn't." >&4
7354 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
7361 : see if dlerror exists
7364 set dlerror d_dlerror
7368 : see if dlfcn is available
7376 On a few systems, the dynamically loaded modules that perl generates and uses
7377 will need a different extension than shared libs. The default will probably
7385 rp='What is the extension of dynamically loaded modules'
7394 : Check if dlsym need a leading underscore
7400 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7401 $cat >dyna.c <<'EOM'
7410 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7412 #include <sys/types.h>
7426 int mode = RTLD_LAZY ;
7428 handle = dlopen("./dyna.$dlext", mode) ;
7429 if (handle == NULL) {
7434 symbol = dlsym(handle, "fred") ;
7435 if (symbol == NULL) {
7436 /* try putting a leading underscore */
7437 symbol = dlsym(handle, "_fred") ;
7438 if (symbol == NULL) {
7451 : Call the object file tmp-dyna.o in case dlext=o.
7452 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7453 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7454 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7455 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7458 1) echo "Test program failed using dlopen." >&4
7459 echo "Perhaps you should not use dynamic loading." >&4;;
7460 2) echo "Test program failed using dlsym." >&4
7461 echo "Perhaps you should not use dynamic loading." >&4;;
7462 3) echo "dlsym needs a leading underscore" >&4
7464 4) echo "dlsym doesn't need a leading underscore." >&4;;
7467 echo "I can't compile and run the test program." >&4
7472 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7477 hasproto='varname=$1; func=$2; shift; shift;
7478 while $test $# -ge 2; do
7480 $define) echo "#include <$2>";;
7484 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7485 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7486 echo "$func() prototype found.";
7489 echo "$func() prototype NOT found.";
7494 $rm -f try.c tryout.c'
7496 : see if prototype for drand48 is available
7498 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7501 : see if dup2 exists
7505 : see if eaccess exists
7506 set eaccess d_eaccess
7509 : see if endgrent exists
7510 set endgrent d_endgrent
7513 : see if endhostent exists
7514 set endhostent d_endhent
7517 : see if endnetent exists
7518 set endnetent d_endnent
7521 : see if endprotoent exists
7522 set endprotoent d_endpent
7525 : see if endpwent exists
7526 set endpwent d_endpwent
7529 : see if endservent exists
7530 set endservent d_endsent
7533 : Locate the flags for 'open()'
7535 $cat >open3.c <<'EOCP'
7536 #include <sys/types.h>
7541 #include <sys/file.h>
7552 : check sys/file.h first to get FREAD on Sun
7553 if $test `./findhdr sys/file.h` && \
7554 set open3 -DI_SYS_FILE && eval $compile; then
7556 echo "<sys/file.h> defines the O_* constants..." >&4
7558 echo "and you have the 3 argument form of open()." >&4
7561 echo "but not the 3 argument form of open(). Oh, well." >&4
7564 elif $test `./findhdr fcntl.h` && \
7565 set open3 -DI_FCNTL && eval $compile; then
7567 echo "<fcntl.h> defines the O_* constants..." >&4
7569 echo "and you have the 3 argument form of open()." >&4
7572 echo "but not the 3 argument form of open(). Oh, well." >&4
7577 echo "I can't find the O_* constant definitions! You got problems." >&4
7583 : check for non-blocking I/O stuff
7584 case "$h_sysfile" in
7585 true) echo "#include <sys/file.h>" > head.c;;
7588 true) echo "#include <fcntl.h>" > head.c;;
7589 *) echo "#include <sys/fcntl.h>" > head.c;;
7594 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7595 case "$o_nonblock" in
7598 $cat >>try.c <<'EOCP'
7601 printf("O_NONBLOCK\n");
7605 printf("O_NDELAY\n");
7609 printf("FNDELAY\n");
7616 if eval $compile_ok; then
7618 case "$o_nonblock" in
7619 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7620 *) echo "Seems like we can use $o_nonblock.";;
7623 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7626 *) echo "Using $hint value $o_nonblock.";;
7628 $rm -f try try.* .out core
7631 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7637 #include <sys/types.h>
7639 #define MY_O_NONBLOCK $o_nonblock
7640 #ifndef errno /* XXX need better Configure test */
7643 $signal_t blech(x) int x; { exit(3); }
7645 $cat >> try.c <<'EOCP'
7653 pipe(pd); /* Down: child -> parent */
7654 pipe(pu); /* Up: parent -> child */
7657 close(pd[1]); /* Parent reads from pd[0] */
7658 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7659 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7661 signal(SIGALRM, blech);
7663 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7665 sprintf(string, "%d\n", ret);
7666 write(2, string, strlen(string));
7669 if (errno == EAGAIN) {
7675 if (errno == EWOULDBLOCK)
7676 printf("EWOULDBLOCK\n");
7679 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7680 sleep(2); /* Give it time to close our pipe */
7682 ret = read(pd[0], buf, 1); /* Should read EOF */
7684 sprintf(string, "%d\n", ret);
7685 write(3, string, strlen(string));
7689 close(pd[0]); /* We write to pd[1] */
7690 close(pu[1]); /* We read from pu[0] */
7691 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7692 close(pd[1]); /* Pipe pd is now fully closed! */
7693 exit(0); /* Bye bye, thank you for playing! */
7697 if eval $compile_ok; then
7698 echo "$startsh" >mtry
7699 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7701 ./mtry >/dev/null 2>&1
7703 0) eagain=`$cat try.out`;;
7704 1) echo "Could not perform non-blocking setting!";;
7705 2) echo "I did a successful read() for something that was not there!";;
7706 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7707 *) echo "Something terribly wrong happened during testing.";;
7709 rd_nodata=`$cat try.ret`
7710 echo "A read() system call with no data present returns $rd_nodata."
7711 case "$rd_nodata" in
7714 echo "(That's peculiar, fixing that to be -1.)"
7720 echo "Forcing errno EAGAIN on read() with no data available."
7724 echo "Your read() sets errno to $eagain when no data is available."
7727 status=`$cat try.err`
7729 0) echo "And it correctly returns 0 to signal EOF.";;
7730 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7731 *) echo "However, your read() returns '$status' on EOF??";;
7734 if test "$status" = "$rd_nodata"; then
7735 echo "WARNING: you can't distinguish between EOF and no data!"
7739 echo "I can't compile the test program--assuming errno EAGAIN will do."
7746 echo "Using $hint value $eagain."
7747 echo "Your read() returns $rd_nodata when no data is present."
7748 case "$d_eofnblk" in
7749 "$define") echo "And you can see EOF because read() returns 0.";;
7750 "$undef") echo "But you can't see EOF status from read() returned value.";;
7752 echo "(Assuming you can't see EOF status from read anyway.)"
7758 $rm -f try try.* .out core head.c mtry
7760 : see if fchmod exists
7764 : see if fchown exists
7768 : see if this is an fcntl system
7772 : see if sys/select.h has to be included
7773 set sys/select.h i_sysselct
7776 : see if we should include time.h, sys/time.h, or both
7778 if test "X$timeincl" = X; then
7779 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7780 $echo $n "I'm now running the test program...$c"
7781 $cat >try.c <<'EOCP'
7782 #include <sys/types.h>
7787 #ifdef SYSTIMEKERNEL
7790 #include <sys/time.h>
7793 #include <sys/select.h>
7802 struct timezone tzp;
7804 if (foo.tm_sec == foo.tm_sec)
7807 if (bar.tv_sec == bar.tv_sec)
7814 for s_timezone in '-DS_TIMEZONE' ''; do
7816 for s_timeval in '-DS_TIMEVAL' ''; do
7817 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7818 for i_time in '' '-DI_TIME'; do
7819 for i_systime in '-DI_SYSTIME' ''; do
7822 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7823 if eval $compile; then
7824 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7828 $echo $n "Succeeded with $flags$c"
7840 *SYSTIMEKERNEL*) i_systimek="$define"
7841 timeincl=`./findhdr sys/time.h`
7842 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7843 *) i_systimek="$undef";;
7846 *I_TIME*) i_time="$define"
7847 timeincl=`./findhdr time.h`" $timeincl"
7848 echo "We'll include <time.h>." >&4;;
7849 *) i_time="$undef";;
7852 *I_SYSTIME*) i_systime="$define"
7853 timeincl=`./findhdr sys/time.h`" $timeincl"
7854 echo "We'll include <sys/time.h>." >&4;;
7855 *) i_systime="$undef";;
7860 : check for fd_set items
7863 Checking to see how well your C compiler handles fd_set and friends ...
7865 $cat >fd_set.c <<EOCP
7866 #$i_systime I_SYS_TIME
7867 #$i_sysselct I_SYS_SELECT
7868 #$d_socket HAS_SOCKET
7869 #include <sys/types.h>
7871 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7874 #include <sys/time.h>
7877 #include <sys/select.h>
7886 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7893 set fd_set -DTRYBITS
7894 if eval $compile; then
7895 d_fds_bits="$define"
7897 echo "Well, your system knows about the normal fd_set typedef..." >&4
7899 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7900 d_fd_macros="$define"
7903 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7905 d_fd_macros="$undef"
7909 Hmm, your compiler has some difficulty with fd_set. Checking further...
7912 if eval $compile; then
7915 echo "Well, your system has some sort of fd_set available..." >&4
7917 echo "and you have the normal fd_set macros." >&4
7918 d_fd_macros="$define"
7921 but not the normal fd_set macros! Gross! More work for me...
7923 d_fd_macros="$undef"
7926 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7929 d_fd_macros="$undef"
7934 : see if fgetpos exists
7935 set fgetpos d_fgetpos
7939 if $test X"$use64bits" = X"$define"; then
7940 : see if fgetpos64 exists
7941 set fgetpos64 d_fgetpos64
7944 : see if fopen64 exists
7945 set freopen64 d_fopen64
7948 : see if freopen64 exists
7949 set freopen64 d_freopen64
7952 : see if fseek64 exists
7953 set fseek64 d_fseek64
7956 : see if fseeko64 exists
7957 set fseeko64 d_fseeko64
7960 : see if fsetpos64 exists
7961 set fsetpos64 d_fsetpos64
7964 : see if ftell64 exists
7965 set ftell64 d_ftell64
7968 : see if ftello64 exists
7969 set ftello64 d_ftello64
7972 : see if tmpfile64 exists
7973 set tmpfile64 d_tmpfile64
7977 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7984 : see if flock exists
7988 : see if fork exists
7992 : see if pathconf exists
7993 set pathconf d_pathconf
7996 : see if fpathconf exists
7997 set fpathconf d_fpathconf
8000 : see if fseeko exists
8004 : see if fsetpos exists
8005 set fsetpos d_fsetpos
8008 : see if this is a sys/param system
8009 set sys/param.h i_sysparam
8012 : see if this is a sys/mount.h system
8013 set sys/mount.h i_sysmount
8017 : see if statfs exists
8021 : see if fstatfs exists
8022 set fstatfs d_fstatfs
8025 : see if statfs knows about mount flags
8026 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8030 : see if statvfs exists
8031 set statvfs d_statvfs
8034 : see if fstatvfs exists
8035 set fstatvfs d_fstatvfs
8039 : see if ftello exists
8043 : see if getgrent exists
8044 set getgrent d_getgrent
8047 : see if gethostbyaddr exists
8048 set gethostbyaddr d_gethbyaddr
8051 : see if gethostbyname exists
8052 set gethostbyname d_gethbyname
8055 : see if gethostent exists
8056 set gethostent d_gethent
8059 : see how we will look up host name
8062 : dummy stub to allow use of elif
8063 elif set gethostname val -f d_gethname; eval $csym; $val; then
8064 echo 'gethostname() found.' >&4
8065 d_gethname="$define"
8067 elif set uname val -f d_uname; eval $csym; $val; then
8070 uname() was found, but you're running xenix, and older versions of xenix
8071 have a broken uname(). If you don't really know whether your xenix is old
8072 enough to have a broken system call, use the default answer.
8079 rp='Is your uname() broken?'
8082 n*) d_uname="$define"; call=uname;;
8085 echo 'uname() found.' >&4
8090 case "$d_gethname" in
8091 '') d_gethname="$undef";;
8094 '') d_uname="$undef";;
8096 case "$d_uname$d_gethname" in
8101 Every now and then someone has a $call() that lies about the hostname
8102 but can't be fixed for political or economic reasons. If you wish, I can
8103 pretend $call() isn't there and maybe compute hostname at run-time
8104 thanks to the '$phostname' command.
8107 rp="Shall I ignore $call() from now on?"
8110 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8113 case "$phostname" in
8115 *) case "$aphostname" in
8121 file=`./loc $file $file $pth`
8122 aphostname=`echo $file $*`
8127 case "$d_uname$d_gethname" in
8130 case "$phostname" in
8132 echo "There will be no way for $package to get your hostname." >&4;;
8134 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8138 case "$d_phostname" in
8139 '') d_phostname="$undef";;
8142 : see if this is a netdb.h system
8146 : see if prototypes for various gethostxxx netdb.h functions are available
8148 set d_gethostprotos gethostent $i_netdb netdb.h
8151 : see if getlogin exists
8152 set getlogin d_getlogin
8155 : see if getmntent exists
8156 set getmntent d_getmntent
8159 : see if getnetbyaddr exists
8160 set getnetbyaddr d_getnbyaddr
8163 : see if getnetbyname exists
8164 set getnetbyname d_getnbyname
8167 : see if getnetent exists
8168 set getnetent d_getnent
8171 : see if prototypes for various getnetxxx netdb.h functions are available
8173 set d_getnetprotos getnetent $i_netdb netdb.h
8177 : see if getprotobyname exists
8178 set getprotobyname d_getpbyname
8181 : see if getprotobynumber exists
8182 set getprotobynumber d_getpbynumber
8185 : see if getprotoent exists
8186 set getprotoent d_getpent
8189 : see if getpgid exists
8190 set getpgid d_getpgid
8193 : see if getpgrp2 exists
8194 set getpgrp2 d_getpgrp2
8197 : see if getppid exists
8198 set getppid d_getppid
8201 : see if getpriority exists
8202 set getpriority d_getprior
8205 : see if prototypes for various getprotoxxx netdb.h functions are available
8207 set d_getprotoprotos getprotoent $i_netdb netdb.h
8210 : see if getpwent exists
8211 set getpwent d_getpwent
8215 : see if getservbyname exists
8216 set getservbyname d_getsbyname
8219 : see if getservbyport exists
8220 set getservbyport d_getsbyport
8223 : see if getservent exists
8224 set getservent d_getsent
8227 : see if prototypes for various getservxxx netdb.h functions are available
8229 set d_getservprotos getservent $i_netdb netdb.h
8232 : see if gettimeofday or ftime exists
8233 set gettimeofday d_gettimeod
8235 case "$d_gettimeod" in
8241 val="$undef"; set d_ftime; eval $setvar
8244 case "$d_gettimeod$d_ftime" in
8247 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8251 : see if this is an grp system
8257 xxx=`./findhdr grp.h`
8258 $cppstdin $cppflags $cppminus < $xxx >$$.h
8260 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8272 set d_grpasswd; eval $setvar
8276 : see if hasmntopt exists
8277 set hasmntopt d_hasmntopt
8280 : see if this is a netinet/in.h or sys/in.h system
8281 set netinet/in.h i_niin sys/in.h i_sysin
8284 : see if arpa/inet.h has to be included
8285 set arpa/inet.h i_arpainet
8288 : see if htonl --and friends-- exists
8293 : Maybe they are macros.
8298 #include <sys/types.h>
8299 #$i_niin I_NETINET_IN
8301 #$i_arpainet I_ARPA_INET
8303 #include <netinet/in.h>
8309 #include <arpa/inet.h>
8312 printf("Defined as a macro.");
8315 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8316 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8318 echo "But it seems to be defined as a macro." >&4
8326 : see which of string.h or strings.h is needed
8328 strings=`./findhdr string.h`
8329 if $test "$strings" && $test -r "$strings"; then
8330 echo "Using <string.h> instead of <strings.h>." >&4
8334 strings=`./findhdr strings.h`
8335 if $test "$strings" && $test -r "$strings"; then
8336 echo "Using <strings.h> instead of <string.h>." >&4
8338 echo "No string header found -- You'll surely have problems." >&4
8344 "$undef") strings=`./findhdr strings.h`;;
8345 *) strings=`./findhdr string.h`;;
8350 if set index val -f; eval $csym; $val; then
8351 if set strchr val -f d_strchr; eval $csym; $val; then
8352 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8355 echo "strchr() found." >&4
8359 echo "index() found." >&4
8364 echo "index() found." >&4
8367 if set strchr val -f d_strchr; eval $csym; $val; then
8370 echo "strchr() found." >&4
8372 echo "No index() or strchr() found!" >&4
8377 set d_strchr; eval $setvar
8379 set d_index; eval $setvar
8381 : check whether inet_aton exists
8382 set inet_aton d_inetaton
8385 : see if inttypes.h is available
8386 : we want a real compile instead of Inhdr because some systems
8387 : have an inttypes.h which includes non-existent headers
8390 #include <inttypes.h>
8392 static int32_t foo32 = 0x12345678;
8396 if eval $compile; then
8397 echo "<inttypes.h> found." >&4
8400 echo "<inttypes.h> NOT found." >&4
8408 case "$use64bits" in
8411 echo $n "Checking to see if your system supports int64_t...$c" >&4
8413 #include <sys/types.h>
8414 #$i_inttypes I_INTTYPES
8416 #include <inttypes.h>
8418 int64_t foo() { int64_t x; x = 7; return x; }
8420 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8422 echo " Yup, it does." >&4
8425 echo " Nope, it doesn't." >&4
8438 $cat >isascii.c <<'EOCP'
8450 if eval $compile; then
8451 echo "isascii() found." >&4
8454 echo "isascii() NOT found." >&4
8461 : see if killpg exists
8465 : see if lchown exists
8467 $cat > try.c <<'EOCP'
8468 /* System header to define __stub macros and hopefully few prototypes,
8469 which can conflict with char lchown(); below. */
8471 /* Override any gcc2 internal prototype to avoid an error. */
8472 /* We use char because int might match the return type of a gcc2
8473 builtin and then its argument prototype would still apply. */
8476 /* The GNU C library defines this for functions which it implements
8477 to always fail with ENOSYS. Some functions are actually named
8478 something starting with __ and the normal name is an alias. */
8479 #if defined (__stub_lchown) || defined (__stub___lchown)
8487 if eval $compile; then
8488 $echo "lchown() found." >&4
8491 $echo "lchown() NOT found." >&4
8497 : see if link exists
8501 : see if localeconv exists
8502 set localeconv d_locconv
8505 : see if lockf exists
8509 : check for length of double
8511 case "$doublesize" in
8513 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8514 $cat >try.c <<'EOCP'
8518 printf("%d\n", sizeof(double));
8522 if eval $compile_ok; then
8524 $echo " $doublesize bytes." >&4
8527 echo "(I can't seem to compile the test program. Guessing...)"
8528 rp="What is the size of a double precision number (in bytes)?"
8536 : check for long doubles
8538 echo $n "Checking to see if your system supports long doubles...$c" >&4
8539 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8540 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8542 echo " Yup, it does." >&4
8545 echo " Nope, it doesn't." >&4
8551 : check for length of long double
8552 case "${d_longdbl}${longdblsize}" in
8555 $echo $n "Checking to see how big your long doubles are...$c" >&4
8556 $cat >try.c <<'EOCP'
8560 printf("%d\n", sizeof(long double));
8564 if eval $compile; then
8566 $echo " $longdblsize bytes." >&4
8570 echo "(I can't seem to compile the test program. Guessing...)" >&4
8571 rp="What is the size of a long double (in bytes)?"
8575 if $test "X$doublesize" = "X$longdblsize"; then
8576 echo "(That isn't any different from an ordinary double.)"
8582 : check for long long
8584 echo $n "Checking to see if your system supports long long...$c" >&4
8585 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8586 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8588 echo " Yup, it does." >&4
8591 echo " Nope, it doesn't." >&4
8597 : check for length of long long
8598 case "${d_longlong}${longlongsize}" in
8601 $echo $n "Checking to see how big your long longs are...$c" >&4
8602 $cat >try.c <<'EOCP'
8606 printf("%d\n", sizeof(long long));
8610 if eval $compile_ok; then
8611 longlongsize=`./try`
8612 $echo " $longlongsize bytes." >&4
8616 echo "(I can't seem to compile the test program. Guessing...)"
8617 rp="What is the size of a long long (in bytes)?"
8621 if $test "X$longsize" = "X$longlongsize"; then
8622 echo "(That isn't any different from an ordinary long.)"
8628 : see if lstat exists
8632 : see if madvise exists
8633 set madvise d_madvise
8636 : see if mblen exists
8640 : see if mbstowcs exists
8641 set mbstowcs d_mbstowcs
8644 : see if mbtowc exists
8648 : see if memcmp exists
8652 : see if memcpy exists
8656 : see if memmove exists
8657 set memmove d_memmove
8660 : see if memset exists
8664 : see if mkdir exists
8668 : see if mkfifo exists
8672 : see if mktime exists
8676 : see if this is a sys/mman.h system
8677 set sys/mman.h i_sysmman
8680 : see if mmap exists
8683 : see what shmat returns
8684 : default to something harmless
8686 case "$i_sysmman$d_mmap" in
8688 $cat >mmap.c <<'END'
8689 #include <sys/mman.h>
8692 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8697 echo "and it returns ($mmaptype)." >&4
8703 : see if mprotect exists
8704 set mprotect d_mprotect
8707 : see if msgctl exists
8711 : see if msgget exists
8715 : see if msgsnd exists
8719 : see if msgrcv exists
8723 : see how much of the 'msg*(2)' library is present.
8726 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8727 *"$undef"*) h_msg=false;;
8731 case "`ipcs 2>&1`" in
8732 "SVID messages"*"not configured"*)
8733 echo "Your $osname does not have the msg*(2) configured." >&4
8748 : we could also check for sys/ipc.h ...
8749 if $h_msg && $test `./findhdr sys/msg.h`; then
8750 echo "You have the full msg*(2) library." >&4
8753 echo "You don't have the full msg*(2) library." >&4
8759 : see if msync exists
8763 : see if munmap exists
8767 : see if nice exists
8771 : how to create joinable pthreads
8772 if test "X$usethreads" = "X$define"; then
8774 echo "Checking what constant to use for creating joinable pthreads..." >&4
8775 $cat >try.c <<'EOCP'
8776 #include <pthread.h>
8778 int detachstate = JOINABLE;
8781 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8782 if eval $compile; then
8783 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8784 val="$undef" # Yes, undef.
8785 set d_old_pthread_create_joinable
8788 set old_pthread_create_joinable
8791 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8792 if eval $compile; then
8793 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8795 set d_old_pthread_create_joinable
8797 val=PTHREAD_CREATE_UNDETACHED
8798 set old_pthread_create_joinable
8801 set try -DJOINABLE=__UNDETACHED
8802 if eval $compile; then
8803 echo "You seem to use __UNDETACHED." >&4
8805 set d_old_pthread_create_joinable
8808 set old_pthread_create_joinable
8811 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
8813 set d_old_pthread_create_joinable
8816 set old_pthread_create_joinable
8823 d_old_pthread_create_joinable="$undef"
8824 old_pthread_create_joinable=""
8827 : see if pause exists
8831 : see if pipe exists
8835 : see if poll exists
8840 : see whether the various POSIXish _yields exist
8842 #include <pthread.h>
8848 #ifdef PTHREAD_YIELD
8851 #ifdef PTHREAD_YIELD_NULL
8852 pthread_yield(NULL);
8858 : see if sched_yield exists
8859 set try -DSCHED_YIELD
8860 if eval $compile; then
8862 sched_yield='sched_yield()'
8866 case "$usethreads" in
8869 $define) echo 'sched_yield() found.' >&4 ;;
8870 *) echo 'sched_yield() NOT found.' >&4 ;;
8876 : see if pthread_yield exists
8877 set try -DPTHREAD_YIELD
8878 if eval $compile; then
8880 case "$sched_yield" in
8881 '') sched_yield='pthread_yield()' ;;
8884 set try -DPTHREAD_YIELD_NULL
8885 if eval $compile; then
8887 case "$sched_yield" in
8888 '') sched_yield='pthread_yield(NULL)' ;;
8894 case "$usethreads" in
8897 $define) echo 'pthread_yield() found.' >&4 ;;
8898 *) echo 'pthread_yield() NOT found.' >&4 ;;
8905 case "$sched_yield" in
8906 '') sched_yield=undef ;;
8911 : see if this is a pwd.h system
8917 xxx=`./findhdr pwd.h`
8918 $cppstdin $cppflags $cppminus < $xxx >$$.h
8920 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8928 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8936 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8944 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8952 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8960 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8968 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8976 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8988 set d_pwquota; eval $setvar
8989 set d_pwage; eval $setvar
8990 set d_pwchange; eval $setvar
8991 set d_pwclass; eval $setvar
8992 set d_pwexpire; eval $setvar
8993 set d_pwcomment; eval $setvar
8994 set d_pwgecos; eval $setvar
8995 set d_pwpasswd; eval $setvar
8999 : see if readdir and friends exist
9000 set readdir d_readdir
9002 set seekdir d_seekdir
9004 set telldir d_telldir
9006 set rewinddir d_rewinddir
9009 : see if readlink exists
9010 set readlink d_readlink
9013 : see if readv exists
9017 : see if rename exists
9021 : see if rmdir exists
9025 : see if memory.h is available.
9030 : See if it conflicts with string.h
9036 $cppstdin $cppflags $cppminus < $strings > mem.h
9037 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9039 echo "We won't be including <memory.h>."
9049 : can bcopy handle overlapping blocks?
9054 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9061 $cat >>try.c <<'EOCP'
9064 # include <memory.h>
9067 # include <stdlib.h>
9070 # include <string.h>
9072 # include <strings.h>
9075 # include <unistd.h> /* Needed for NetBSD */
9079 char buf[128], abc[128];
9085 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9087 for (align = 7; align >= 0; align--) {
9088 for (len = 36; len; len--) {
9091 for (off = 1; off <= len; off++) {
9092 bcopy(b, b+off, len);
9093 bcopy(b+off, b, len);
9094 if (bcmp(b, abc, len))
9103 if eval $compile_ok; then
9104 if ./try 2>/dev/null; then
9108 echo "It can't, sorry."
9109 case "$d_memmove" in
9110 "$define") echo "But that's Ok since you have memmove()." ;;
9114 echo "(I can't compile the test program, so we'll assume not...)"
9115 case "$d_memmove" in
9116 "$define") echo "But that's Ok since you have memmove()." ;;
9121 $rm -f try.* try core
9125 : can memcpy handle overlapping blocks?
9130 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9137 $cat >>try.c <<'EOCP'
9140 # include <memory.h>
9143 # include <stdlib.h>
9146 # include <string.h>
9148 # include <strings.h>
9151 # include <unistd.h> /* Needed for NetBSD */
9155 char buf[128], abc[128];
9161 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9162 try to store the string in read-only memory. */
9163 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9165 for (align = 7; align >= 0; align--) {
9166 for (len = 36; len; len--) {
9168 memcpy(b, abc, len);
9169 for (off = 1; off <= len; off++) {
9170 memcpy(b+off, b, len);
9171 memcpy(b, b+off, len);
9172 if (memcmp(b, abc, len))
9181 if eval $compile_ok; then
9182 if ./try 2>/dev/null; then
9186 echo "It can't, sorry."
9187 case "$d_memmove" in
9188 "$define") echo "But that's Ok since you have memmove()." ;;
9192 echo "(I can't compile the test program, so we'll assume not...)"
9193 case "$d_memmove" in
9194 "$define") echo "But that's Ok since you have memmove()." ;;
9199 $rm -f try.* try core
9203 : can memcmp be trusted to compare relative magnitude?
9208 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9215 $cat >>try.c <<'EOCP'
9218 # include <memory.h>
9221 # include <stdlib.h>
9224 # include <string.h>
9226 # include <strings.h>
9229 # include <unistd.h> /* Needed for NetBSD */
9235 if ((a < b) && memcmp(&a, &b, 1) < 0)
9241 if eval $compile_ok; then
9242 if ./try 2>/dev/null; then
9246 echo "No, it can't (it uses signed chars)."
9249 echo "(I can't compile the test program, so we'll assume not...)"
9253 $rm -f try.* try core
9257 : see if select exists
9261 : see if semctl exists
9265 : see if semget exists
9269 : see if semop exists
9273 : see how much of the 'sem*(2)' library is present.
9276 case "$d_semctl$d_semget$d_semop" in
9277 *"$undef"*) h_sem=false;;
9281 case "`ipcs 2>&1`" in
9282 "SVID messages"*"not configured"*)
9283 echo "Your $osname does not have the sem*(2) configured." >&4
9296 : we could also check for sys/ipc.h ...
9297 if $h_sem && $test `./findhdr sys/sem.h`; then
9298 echo "You have the full sem*(2) library." >&4
9301 echo "You don't have the full sem*(2) library." >&4
9307 : see whether sys/sem.h defines union semun
9309 $cat > try.c <<'END'
9310 #include <sys/types.h>
9311 #include <sys/ipc.h>
9312 #include <sys/sem.h>
9313 int main () { union semun semun; semun.buf = 0; }
9316 if eval $compile; then
9317 echo "You have union semun in <sys/sem.h>." >&4
9320 echo "You do not have union semun in <sys/sem.h>." >&4
9323 $rm -f try try.c try.h
9327 : see how to do semctl IPC_STAT
9330 : see whether semctl IPC_STAT can use union semun
9335 # define S_IRUSR S_IREAD
9336 # define S_IWUSR S_IWRITE
9337 # define S_IXUSR S_IEXEC
9339 # define S_IRUSR 0400
9340 # define S_IWUSR 0200
9341 # define S_IXUSR 0100
9343 # define S_IRGRP (S_IRUSR>>3)
9344 # define S_IWGRP (S_IWUSR>>3)
9345 # define S_IXGRP (S_IXUSR>>3)
9346 # define S_IROTH (S_IRUSR>>6)
9347 # define S_IWOTH (S_IWUSR>>6)
9348 # define S_IXOTH (S_IXUSR>>6)
9351 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9352 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9353 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9358 #include <sys/types.h>
9359 #include <sys/ipc.h>
9360 #include <sys/sem.h>
9361 #include <sys/stat.h>
9368 #$d_union_semun HAS_UNION_SEMUN
9371 #ifndef HAS_UNION_SEMUN
9374 struct semid_ds *buf;
9375 unsigned short *array;
9381 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9382 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9384 struct semid_ds argbuf;
9387 st = semctl(sem, 0, IPC_STAT, arg);
9391 # endif /* IPC_STAT */
9392 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9394 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9395 # endif /* IPC_RMID */
9396 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9398 #endif /* IPC_PRIVATE && ... */
9399 printf("semget failed: errno = %d\n", errno);
9405 if eval $compile; then
9408 semun) val="$define" ;;
9414 case "$d_semctl_semun" in
9416 echo "You can use union semun for semctl IPC_STAT." >&4
9419 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9424 : see whether semctl IPC_STAT can use struct semid_ds pointer
9425 $cat > try.c <<'END'
9426 #include <sys/types.h>
9427 #include <sys/ipc.h>
9428 #include <sys/sem.h>
9429 #include <sys/stat.h>
9437 struct semid_ds arg;
9440 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9441 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9444 st = semctl(sem, 0, IPC_STAT, &arg);
9446 printf("semid_ds\n");
9448 # endif /* IPC_STAT */
9449 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9451 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9452 # endif /* IPC_RMID */
9453 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9455 #endif /* IPC_PRIVATE && ... */
9456 printf("semget failed: errno = %d\n", errno);
9463 if eval $compile; then
9466 semid_ds) val="$define" ;;
9470 set d_semctl_semid_ds
9472 case "$d_semctl_semid_ds" in
9474 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9476 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9483 # We do not have the full sem*(2) library, so assume we can not
9489 set d_semctl_semid_ds
9494 : see if setegid exists
9495 set setegid d_setegid
9498 : see if seteuid exists
9499 set seteuid d_seteuid
9502 : see if setgrent exists
9503 set setgrent d_setgrent
9506 : see if sethostent exists
9507 set sethostent d_sethent
9510 : see if setlinebuf exists
9511 set setlinebuf d_setlinebuf
9514 : see if setlocale exists
9515 set setlocale d_setlocale
9518 : see if setnetent exists
9519 set setnetent d_setnent
9522 : see if setprotoent exists
9523 set setprotoent d_setpent
9526 : see if setpgid exists
9527 set setpgid d_setpgid
9530 : see if setpgrp2 exists
9531 set setpgrp2 d_setpgrp2
9534 : see if setpriority exists
9535 set setpriority d_setprior
9538 : see if setpwent exists
9539 set setpwent d_setpwent
9542 : see if setregid exists
9543 set setregid d_setregid
9545 set setresgid d_setresgid
9548 : see if setreuid exists
9549 set setreuid d_setreuid
9551 set setresuid d_setresuid
9554 : see if setrgid exists
9555 set setrgid d_setrgid
9558 : see if setruid exists
9559 set setruid d_setruid
9562 : see if setservent exists
9563 set setservent d_setsent
9566 : see if setsid exists
9570 : see if setvbuf exists
9571 set setvbuf d_setvbuf
9574 : see if sfio.h is available
9579 : see if sfio library is available
9590 : Ok, but do we want to use it.
9594 true|$define|[yY]*) dflt='y';;
9597 echo "$package can use the sfio library, but it is experimental."
9598 rp="You seem to have sfio available, do you want to try using it?"
9602 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9604 : Remove sfio from list of libraries to use
9605 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9608 echo "libs = $libs" >&4
9612 *) case "$usesfio" in
9614 echo "Sorry, cannot find sfio on this machine" >&4
9615 echo "Ignoring your setting of usesfio=$usesfio" >&4
9623 $define) usesfio='true';;
9624 *) usesfio='false';;
9627 : see if shmctl exists
9631 : see if shmget exists
9635 : see if shmat exists
9638 : see what shmat returns
9641 $cat >shmat.c <<'END'
9642 #include <sys/shm.h>
9645 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9650 echo "and it returns ($shmattype)." >&4
9651 : see if a prototype for shmat is available
9652 xxx=`./findhdr sys/shm.h`
9653 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9654 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9665 set d_shmatprototype
9668 : see if shmdt exists
9672 : see how much of the 'shm*(2)' library is present.
9675 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9676 *"$undef"*) h_shm=false;;
9680 case "`ipcs 2>&1`" in
9681 "SVID shared memory"*"not configured"*)
9682 echo "Your $osname does not have the shm*(2) configured." >&4
9697 : we could also check for sys/ipc.h ...
9698 if $h_shm && $test `./findhdr sys/shm.h`; then
9699 echo "You have the full shm*(2) library." >&4
9702 echo "You don't have the full shm*(2) library." >&4
9709 : see if we have sigaction
9710 if set sigaction val -f d_sigaction; eval $csym; $val; then
9711 echo 'sigaction() found.' >&4
9712 $cat > try.c <<'EOP'
9714 #include <sys/types.h>
9718 struct sigaction act, oact;
9722 if eval $compile_ok; then
9725 echo "But you don't seem to have a useable struct sigaction." >&4
9729 echo 'sigaction NOT found.' >&4
9732 set d_sigaction; eval $setvar
9733 $rm -f try try$_o try.c
9735 : see if sigsetjmp exists
9737 case "$d_sigsetjmp" in
9745 if (sigsetjmp(env,1))
9753 if eval $compile; then
9754 if ./try >/dev/null 2>&1; then
9755 echo "POSIX sigsetjmp found." >&4
9759 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9765 echo "sigsetjmp not found." >&4
9769 *) val="$d_sigsetjmp"
9770 case "$d_sigsetjmp" in
9771 $define) echo "POSIX sigsetjmp found." >&4;;
9772 $undef) echo "sigsetjmp not found." >&4;;
9780 : see if stat knows about block sizes
9782 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9785 : see if _ptr and _cnt from stdio act std
9787 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9788 echo "(Looks like you have stdio.h from Linux.)"
9789 case "$stdio_ptr" in
9790 '') stdio_ptr='((fp)->_IO_read_ptr)'
9793 *) ptr_lval=$d_stdio_ptr_lval;;
9795 case "$stdio_cnt" in
9796 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9799 *) cnt_lval=$d_stdio_cnt_lval;;
9801 case "$stdio_base" in
9802 '') stdio_base='((fp)->_IO_read_base)';;
9804 case "$stdio_bufsiz" in
9805 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9808 case "$stdio_ptr" in
9809 '') stdio_ptr='((fp)->_ptr)'
9812 *) ptr_lval=$d_stdio_ptr_lval;;
9814 case "$stdio_cnt" in
9815 '') stdio_cnt='((fp)->_cnt)'
9818 *) cnt_lval=$d_stdio_cnt_lval;;
9820 case "$stdio_base" in
9821 '') stdio_base='((fp)->_base)';;
9823 case "$stdio_bufsiz" in
9824 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9827 : test whether _ptr and _cnt really work
9828 echo "Checking how std your stdio is..." >&4
9831 #define FILE_ptr(fp) $stdio_ptr
9832 #define FILE_cnt(fp) $stdio_cnt
9834 FILE *fp = fopen("try.c", "r");
9837 18 <= FILE_cnt(fp) &&
9838 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9846 if eval $compile; then
9848 echo "Your stdio acts pretty std."
9851 echo "Your stdio isn't very std."
9854 echo "Your stdio doesn't appear very std."
9860 : Can _ptr be used as an lvalue?
9861 case "$d_stdstdio$ptr_lval" in
9862 $define$define) val=$define ;;
9865 set d_stdio_ptr_lval
9868 : Can _cnt be used as an lvalue?
9869 case "$d_stdstdio$cnt_lval" in
9870 $define$define) val=$define ;;
9873 set d_stdio_cnt_lval
9876 : see if _base is also standard
9878 case "$d_stdstdio" in
9882 #define FILE_base(fp) $stdio_base
9883 #define FILE_bufsiz(fp) $stdio_bufsiz
9885 FILE *fp = fopen("try.c", "r");
9888 19 <= FILE_bufsiz(fp) &&
9889 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9896 if eval $compile; then
9898 echo "And its _base field acts std."
9901 echo "But its _base field isn't std."
9904 echo "However, it seems to be lacking the _base field."
9912 : see if strcoll exists
9913 set strcoll d_strcoll
9916 : check for structure copying
9918 echo "Checking to see if your C compiler can copy structs..." >&4
9919 $cat >try.c <<'EOCP'
9929 if $cc -c try.c >/dev/null 2>&1 ; then
9934 echo "Nope, it can't."
9940 : see if strerror and/or sys_errlist[] exist
9942 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9943 if set strerror val -f d_strerror; eval $csym; $val; then
9944 echo 'strerror() found.' >&4
9945 d_strerror="$define"
9946 d_strerrm='strerror(e)'
9947 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9948 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9949 d_syserrlst="$define"
9951 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9952 d_syserrlst="$undef"
9954 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9955 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9956 echo 'strerror() found in string header.' >&4
9957 d_strerror="$define"
9958 d_strerrm='strerror(e)'
9959 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9960 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9961 d_syserrlst="$define"
9963 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9964 d_syserrlst="$undef"
9966 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9967 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9969 d_syserrlst="$define"
9970 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9972 echo 'strerror() and sys_errlist[] NOT found.' >&4
9974 d_syserrlst="$undef"
9975 d_strerrm='"unknown"'
9979 : see if strtod exists
9983 : see if strtol exists
9987 : see if strtoul exists
9988 set strtoul d_strtoul
9991 : see if strxfrm exists
9992 set strxfrm d_strxfrm
9995 : see if symlink exists
9996 set symlink d_symlink
9999 : see if syscall exists
10000 set syscall d_syscall
10003 : see if sysconf exists
10004 set sysconf d_sysconf
10007 : see if system exists
10008 set system d_system
10011 : see if tcgetpgrp exists
10012 set tcgetpgrp d_tcgetpgrp
10015 : see if tcsetpgrp exists
10016 set tcsetpgrp d_tcsetpgrp
10019 : see if sys/types.h has to be included
10020 set sys/types.h i_systypes
10023 : see if prototype for telldir is available
10025 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10028 : define an is-a-typedef? function
10029 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10031 "") inclist="sys/types.h";;
10033 eval "varval=\$$var";
10037 for inc in $inclist; do
10038 echo "#include <$inc>" >>temp.c;
10040 echo "#ifdef $type" >> temp.c;
10041 echo "printf(\"We have $type\");" >> temp.c;
10042 echo "#endif" >> temp.c;
10043 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10044 if $contains $type temp.E >/dev/null 2>&1; then
10045 eval "$var=\$type";
10050 *) eval "$var=\$varval";;
10053 : define an is-a-typedef? function that prompts if the type is not available.
10054 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10056 "") inclist="sys/types.h";;
10058 eval "varval=\$$var";
10062 for inc in $inclist; do
10063 echo "#include <$inc>" >>temp.c;
10065 echo "#ifdef $type" >> temp.c;
10066 echo "printf(\"We have $type\");" >> temp.c;
10067 echo "#endif" >> temp.c;
10068 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10070 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10071 if $contains $type temp.E >/dev/null 2>&1; then
10072 echo "$type found." >&4;
10073 eval "$var=\$type";
10075 echo "$type NOT found." >&4;
10081 *) eval "$var=\$varval";;
10084 : see if this is a sys/times.h system
10085 set sys/times.h i_systimes
10088 : see if times exists
10090 if set times val -f d_times; eval $csym; $val; then
10091 echo 'times() found.' >&4
10094 case "$i_systimes" in
10095 "$define") inc='sys/times.h';;
10097 rp="What is the type returned by times() on this system?"
10098 set clock_t clocktype long stdio.h sys/types.h $inc
10101 echo 'times() NOT found, hope that will do.' >&4
10106 : see if truncate exists
10107 set truncate d_truncate
10110 : see if tzname[] exists
10112 if set tzname val -a d_tzname; eval $csym; $val; then
10114 echo 'tzname[] found.' >&4
10117 echo 'tzname[] NOT found.' >&4
10122 : see if umask exists
10126 : backward compatibility for d_hvfork
10127 if test X$d_hvfork != X; then
10128 d_vfork="$d_hvfork"
10131 : see if there is a vfork
10136 : Ok, but do we want to use it. vfork is reportedly unreliable in
10137 : perl on Solaris 2.x, and probably elsewhere.
10141 case "$usevfork" in
10145 rp="Some systems have problems with vfork(). Do you want to use it?"
10150 echo "Ok, we won't use vfork()."
10159 $define) usevfork='true';;
10160 *) usevfork='false';;
10163 : see if this is an sysdir system
10164 set sys/dir.h i_sysdir
10167 : see if this is an sysndir system
10168 set sys/ndir.h i_sysndir
10171 : see if closedir exists
10172 set closedir d_closedir
10175 case "$d_closedir" in
10178 echo "Checking whether closedir() returns a status..." >&4
10179 cat > closedir.c <<EOM
10180 #$i_dirent I_DIRENT /**/
10181 #$i_sysdir I_SYS_DIR /**/
10182 #$i_sysndir I_SYS_NDIR /**/
10183 #$i_systypes I_SYS_TYPES /**/
10185 #if defined(I_SYS_TYPES)
10186 #include <sys/types.h>
10188 #if defined(I_DIRENT)
10189 #include <dirent.h>
10190 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10191 #include <sys/dir.h>
10195 #include <sys/ndir.h>
10199 #include <ndir.h> /* may be wrong in the future */
10201 #include <sys/dir.h>
10206 int main() { return closedir(opendir(".")); }
10209 if eval $compile_ok; then
10210 if ./closedir > /dev/null 2>&1 ; then
10211 echo "Yes, it does."
10214 echo "No, it doesn't."
10218 echo "(I can't seem to compile the test program--assuming it doesn't)"
10226 set d_void_closedir
10229 : check for volatile keyword
10231 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10232 $cat >try.c <<'EOCP'
10235 typedef struct _goo_struct goo_struct;
10236 goo_struct * volatile goo = ((goo_struct *)0);
10237 struct _goo_struct {
10242 typedef unsigned short foo_t;
10243 char *volatile foo;
10245 volatile foo_t blech;
10249 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10251 echo "Yup, it does."
10254 echo "Nope, it doesn't."
10260 : see if there is a wait4
10264 : see if waitpid exists
10265 set waitpid d_waitpid
10268 : see if wcstombs exists
10269 set wcstombs d_wcstombs
10272 : see if wctomb exists
10273 set wctomb d_wctomb
10276 : see if writev exists
10277 set writev d_writev
10280 : preserve RCS keywords in files with variable substitution, grrr
10285 Revision='$Revision'
10287 case "$crosscompile" in
10288 ''|[nN]*) crosscompile="$undef" ;;
10292 next) multiarch="$define" ;;
10294 case "$multiarch" in
10295 ''|[nN]*) multiarch="$undef" ;;
10298 : check for alignment requirements
10300 case "$crosscompile$multiarch" in
10303 You seem to be either cross-compiling or doing a multiarchitecture build,
10304 skipping the memory alignment check.
10307 case "$alignbytes" in
10308 '') alignbytes=8 ;;
10312 case "$alignbytes" in
10313 '') echo "Checking alignment constraints..." >&4
10314 $cat >try.c <<'EOCP'
10321 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10325 if eval $compile_ok; then
10329 echo "(I can't seem to compile the test program...)"
10332 *) dflt="$alignbytes"
10335 rp="Doubles must be aligned on a how-many-byte boundary?"
10343 : check for ordering of bytes in a long
10345 case "$crosscompile$multiarch" in
10348 You seem to be either cross-compiling or doing a multiarchitecture build,
10349 skipping the byteorder check.
10355 case "$byteorder" in
10358 In the following, larger digits indicate more significance. A big-endian
10359 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10360 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10361 machines may have weird orders like 3412. A Cray will report 87654321. If
10362 the test program works the default is probably right.
10363 I'm now running the test program...
10365 $cat >try.c <<'EOCP'
10372 char c[sizeof(long)];
10375 if (sizeof(long) > 4)
10376 u.l = (0x08070605L << 32) | 0x04030201L;
10379 for (i = 0; i < sizeof(long); i++)
10380 printf("%c", u.c[i]+'0');
10387 if eval $compile && ./try > /dev/null; then
10390 [1-4][1-4][1-4][1-4]|12345678|87654321)
10391 echo "(The test program ran ok.)"
10392 echo "byteorder=$dflt"
10395 ????|????????) echo "(The test program ran ok.)" ;;
10396 *) echo "(The test program didn't run right for some reason.)" ;;
10401 (I can't seem to compile the test program. Guessing big-endian...)
10404 case "$xxx_prompt" in
10406 rp="What is the order of bytes in a long?"
10420 : how do we catenate cpp tokens here?
10422 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10423 $cat >cpp_stuff.c <<'EOCP'
10424 #define RCAT(a,b)a/**/b
10425 #define ACAT(a,b)a ## b
10429 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10430 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10431 echo "Oh! Smells like ANSI's been here." >&4
10432 echo "We can catify or stringify, separately or together!"
10434 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10435 echo "Ah, yes! The good old days!" >&4
10436 echo "However, in the good old days we don't know how to stringify and"
10437 echo "catify at the same time."
10441 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10442 to have to edit the values of CAT[2-5] in config.h...
10444 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10448 : see if this is a db.h system
10454 : Check db version.
10456 echo "Checking Berkeley DB version ..." >&4
10462 #include <sys/types.h>
10467 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10468 int Major, Minor, Patch ;
10469 unsigned long Version ;
10470 (void)db_version(&Major, &Minor, &Patch) ;
10471 printf("You have Berkeley DB Version 2 or greater\n");
10473 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10474 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10475 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10476 Major, Minor, Patch) ;
10478 /* check that db.h & libdb are compatible */
10479 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10480 printf("db.h and libdb are incompatible\n") ;
10484 printf("db.h and libdb are compatible\n") ;
10486 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10487 + DB_VERSION_PATCH ;
10489 /* needs to be >= 2.3.4 */
10490 if (Version < 2003004) {
10491 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10492 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10498 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10499 printf("You have Berkeley DB Version 1\n");
10500 exit(0); /* DB version < 2: the coast is clear. */
10502 exit(1); /* <db.h> not Berkeley DB? */
10508 if eval $compile && ./try; then
10509 echo 'Looks OK.' >&4
10511 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10515 : Remove db from list of libraries to use
10516 echo "Removing unusable -ldb from library list" >&4
10517 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10520 echo "libs = $libs" >&4
10530 : Check the return type needed for hash
10532 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10538 #include <sys/types.h>
10541 #ifndef DB_VERSION_MAJOR
10542 u_int32_t hash_cb (ptr, size)
10550 info.hash = hash_cb;
10554 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10555 if $contains warning try.out >>/dev/null 2>&1 ; then
10558 db_hashtype='u_int32_t'
10561 : XXX Maybe we should just give up here.
10562 db_hashtype=u_int32_t
10564 echo "Help: I can't seem to compile the db test program." >&4
10565 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10568 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10570 *) db_hashtype=u_int32_t
10575 : Check the return type needed for prefix
10577 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10583 #include <sys/types.h>
10586 #ifndef DB_VERSION_MAJOR
10587 size_t prefix_cb (key1, key2)
10595 info.prefix = prefix_cb;
10599 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10600 if $contains warning try.out >>/dev/null 2>&1 ; then
10601 db_prefixtype='int'
10603 db_prefixtype='size_t'
10606 db_prefixtype='size_t'
10607 : XXX Maybe we should just give up here.
10609 echo "Help: I can't seem to compile the db test program." >&4
10610 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10613 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10615 *) db_prefixtype='size_t'
10619 : check for void type
10621 echo "Checking to see how well your C compiler groks the void type..." >&4
10622 case "$voidflags" in
10624 $cat >try.c <<'EOCP'
10630 extern void moo(); /* function returning void */
10631 void (*goo)(); /* ptr to func returning void */
10633 void *hue; /* generic ptr */
10646 int main() { sub(); }
10648 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10649 voidflags=$defvoidused
10650 echo "Good. It appears to support void to the level $package wants.">&4
10651 if $contains warning .out >/dev/null 2>&1; then
10652 echo "However, you might get some warnings that look like this:"
10656 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10657 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10658 echo "It supports 1..."
10659 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10660 echo "It also supports 2..."
10661 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10663 echo "And it supports 4 but not 8 definitely."
10665 echo "It doesn't support 4..."
10666 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10668 echo "But it supports 8."
10671 echo "Neither does it support 8."
10675 echo "It does not support 2..."
10676 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10678 echo "But it supports 4 and 8."
10680 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10682 echo "And it supports 4 but has not heard about 8."
10684 echo "However it supports 8 but not 4."
10689 echo "There is no support at all for void."
10694 case "$voidflags" in
10696 *) $cat >&4 <<'EOM'
10697 Support flag bits are:
10698 1: basic void declarations.
10699 2: arrays of pointers to functions returning void.
10700 4: operations between pointers to and addresses of void functions.
10701 8: generic void pointers.
10704 rp="Your void support flags add up to what?"
10712 : How can we generate normalized random numbers ?
10714 echo "Looking for a random number function..." >&4
10715 case "$randfunc" in
10717 if set drand48 val -f; eval $csym; $val; then
10719 echo "Good, found drand48()." >&4
10720 elif set random val -f; eval $csym; $val; then
10722 echo "OK, found random()." >&4
10725 echo "Yick, looks like I have to use rand()." >&4
10736 *-Dmy_rand=*|*-Dmy_srand=*)
10737 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10738 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10739 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10740 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10744 while $test "$cont"; do
10745 rp="Use which function to generate random numbers?"
10747 if $test "$ans" = "$dflt"; then
10753 if set $ans val -f; eval $csym; $val; then
10757 rp="I cannot find function $ans. Use that name anyway?"
10766 case "$randfunc" in
10768 drand01="drand48()"
10774 case "$randbits" in
10776 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10778 #$i_unistd I_UNISTD
10779 #$i_stdlib I_STDLIB
10782 # include <unistd.h>
10785 # include <stdlib.h>
10790 register unsigned long tmp;
10791 register unsigned long max = 0L;
10793 for (i = 1000; i; i--) {
10794 tmp = (unsigned long) $randfunc();
10795 if (tmp > max) max = tmp;
10797 for (i = 0; max; i++)
10803 if eval $compile_ok; then
10807 echo "(I can't seem to compile the test program...)"
10814 rp="How many bits does your $randfunc() function produce?"
10818 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10819 seedfunc="s$randfunc"
10820 randseedtype=unsigned
10824 rp="How many bits does your $randfunc() function produce?"
10827 seedfunc="s$randfunc"
10828 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10829 if set $seedfunc val -f; eval $csym; $val; then
10830 echo "(Using $seedfunc() to seed random generator)"
10832 echo "(Warning: no $seedfunc() to seed random generator)"
10835 randseedtype=unsigned
10843 echo "Determining whether or not we are on an EBCDIC system..." >&4
10844 $cat >tebcdic.c <<'EOM'
10847 if ('M'==0xd4) return 0;
10854 if eval $compile_ok; then
10856 echo "You have EBCDIC." >&4
10859 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10862 echo "I'm unable to compile the test program." >&4
10863 echo "I'll assume ASCII or some ISO Latin." >&4
10865 $rm -f tebcdic.c tebcdic
10869 : see what type file positions are declared as in the library
10870 rp="What is the type for file position used by fsetpos()?"
10871 set fpos_t fpostype long stdio.h sys/types.h
10874 : Store the full pathname to the ar program for use in the C program
10875 : Respect a hint or command line value for full_ar.
10880 : Store the full pathname to the sed program for use in the C program
10883 : see what type gids are declared as in the kernel
10885 echo "Looking for the type for group ids returned by getgid()."
10886 set gid_t gidtype xxx stdio.h sys/types.h
10890 xxx=`./findhdr sys/user.h`
10891 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10893 unsigned) dflt="$1 $2" ;;
10897 *) dflt="$gidtype";;
10900 gid_t) echo "gid_t found." ;;
10901 *) rp="What is the type for group ids returned by getgid()?"
10907 : see if getgroups exists
10908 set getgroups d_getgrps
10911 : see if setgroups exists
10912 set setgroups d_setgrps
10916 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10918 case "$d_getgrps$d_setgrps" in
10920 case "$groupstype" in
10921 '') dflt="$gidtype" ;;
10922 *) dflt="$groupstype" ;;
10925 What type of pointer is the second argument to getgroups() and setgroups()?
10926 Usually this is the same as group ids, $gidtype, but not always.
10929 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10933 *) groupstype="$gidtype";;
10936 : see what type lseek is declared as in the kernel
10937 rp="What is the type used for lseek's offset on this system?"
10938 set off_t lseektype long stdio.h sys/types.h
10942 $echo $n "Checking to see how big your file offsets are...$c" >&4
10944 #include <sys/types.h>
10948 printf("%d\n", sizeof($lseektype));
10952 if eval $compile_ok; then
10954 $echo " $lseeksize bytes." >&4
10958 echo "(I can't seem to compile the test program. Guessing...)"
10959 rp="What is the size of your file offsets (in bytes)?"
10966 echo "Checking if your $make program sets \$(MAKE)..." >&4
10967 case "$make_set_make" in
10969 $sed 's/^X //' > testmake.mak << 'EOF'
10971 X @echo 'maketemp="$(MAKE)"'
10973 case "`$make -f testmake.mak 2>/dev/null`" in
10974 *maketemp=*) make_set_make='#' ;;
10975 *) make_set_make="MAKE=$make" ;;
10977 $rm -f testmake.mak
10980 case "$make_set_make" in
10981 '#') echo "Yup, it does.";;
10982 *) echo "Nope, it doesn't.";;
10985 : see what type is used for mode_t
10986 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10987 set mode_t modetype int stdio.h sys/types.h
10990 : define a fucntion to check prototypes
10991 $cat > protochk <<EOSH
10994 optimize="$optimize"
10996 prototype="$prototype"
11001 $cat >> protochk <<'EOSH'
11006 while test $# -ge 2; do
11008 $define) echo "#include <$2>" >> try.c ;;
11009 literal) echo "$2" >> try.c ;;
11013 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11014 cat >> try.c <<'EOCP'
11015 #ifdef CAN_PROTOTYPE
11016 #define _(args) args
11021 echo "$foo" >> try.c
11022 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11023 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11029 $eunicefix protochk
11031 : see what type is used for size_t
11032 rp="What is the type used for the length parameter for string functions?"
11033 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11036 : check for type of arguments to gethostbyaddr.
11037 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11038 case "$d_gethbyaddr" in
11042 Checking to see what type of arguments are accepted by gethostbyaddr().
11044 hdrs="$define sys/types.h
11045 $d_socket sys/socket.h
11046 $i_niin netinet/in.h
11048 $i_unistd unistd.h"
11049 : The first arg can 'char *' or 'void *'
11050 : The second arg is some of integral type
11051 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11052 for yyy in size_t long int; do
11053 case "$netdb_host_type" in
11054 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11055 if ./protochk "$try" $hdrs; then
11056 echo "Your system accepts $xxx for the first arg."
11057 echo "...and $yyy for the second arg."
11058 netdb_host_type="$xxx"
11059 netdb_hlen_type="$yyy"
11065 : In case none of those worked, prompt the user.
11066 case "$netdb_host_type" in
11067 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11070 netdb_host_type=$ans
11071 rp='What is the type for the 2nd argument to gethostbyaddr?'
11074 netdb_hlen_type=$ans
11078 *) : no gethostbyaddr, so pick harmless defaults
11079 netdb_host_type='char *'
11080 netdb_hlen_type="$sizetype"
11083 # Remove the "const" if needed. -- but then we'll have a
11085 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11088 : check for type of argument to gethostbyname.
11089 if test "X$netdb_name_type" = X ; then
11090 case "$d_gethbyname" in
11094 Checking to see what type of argument is accepted by gethostbyname().
11096 hdrs="$define sys/types.h
11097 $d_socket sys/socket.h
11098 $i_niin netinet/in.h
11100 $i_unistd unistd.h"
11101 for xxx in "const char *" "char *"; do
11102 case "$netdb_name_type" in
11103 '') try="extern struct hostent *gethostbyname($xxx);"
11104 if ./protochk "$try" $hdrs; then
11105 echo "Your system accepts $xxx."
11106 netdb_name_type="$xxx"
11111 : In case none of those worked, prompt the user.
11112 case "$netdb_name_type" in
11113 '') rp='What is the type for the 1st argument to gethostbyname?'
11116 netdb_name_type=$ans
11120 *) : no gethostbyname, so pick harmless default
11121 netdb_name_type='char *'
11126 : check for type of 1st argument to getnetbyaddr.
11127 if test "X$netdb_net_type" = X ; then
11128 case "$d_getnbyaddr" in
11132 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11134 hdrs="$define sys/types.h
11135 $d_socket sys/socket.h
11136 $i_niin netinet/in.h
11138 $i_unistd unistd.h"
11139 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11140 case "$netdb_net_type" in
11141 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11142 if ./protochk "$try" $hdrs; then
11143 echo "Your system accepts $xxx."
11144 netdb_net_type="$xxx"
11149 : In case none of those worked, prompt the user.
11150 case "$netdb_net_type" in
11151 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11154 netdb_net_type=$ans
11158 *) : no getnetbyaddr, so pick harmless default
11159 netdb_net_type='long'
11163 : locate the preferred pager for this system
11177 '') dflt=/usr/ucb/more;;
11184 rp='What pager is used on your system?'
11188 : see what type pids are declared as in the kernel
11189 rp="What is the type of process ids on this system?"
11190 set pid_t pidtype int stdio.h sys/types.h
11193 : check for length of pointer
11197 $echo $n "Checking to see how big your pointers are...$c" >&4
11198 if test "$voidflags" -gt 7; then
11199 echo '#define VOID_PTR char *' > try.c
11201 echo '#define VOID_PTR void *' > try.c
11203 $cat >>try.c <<'EOCP'
11207 printf("%d\n", sizeof(VOID_PTR));
11212 if eval $compile_ok; then
11214 $echo " $ptrsize bytes." >&4
11217 echo "(I can't seem to compile the test program. Guessing...)" >&4
11218 rp="What is the size of a pointer (in bytes)?"
11226 : see if ar generates random libraries by itself
11228 echo "Checking how to generate random libraries on your machine..." >&4
11229 echo 'int bar1() { return bar2(); }' > bar1.c
11230 echo 'int bar2() { return 2; }' > bar2.c
11231 $cat > foo.c <<'EOP'
11232 int main() { printf("%d\n", bar1()); exit(0); }
11234 $cc $ccflags -c bar1.c >/dev/null 2>&1
11235 $cc $ccflags -c bar2.c >/dev/null 2>&1
11236 $cc $ccflags -c foo.c >/dev/null 2>&1
11237 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11238 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11239 ./foobar >/dev/null 2>&1; then
11240 echo "$ar appears to generate random libraries itself."
11243 elif $ar ts bar$_a >/dev/null 2>&1 &&
11244 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11245 ./foobar >/dev/null 2>&1; then
11246 echo "a table of contents needs to be added with '$ar ts'."
11253 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11254 $test -f $ranlib || ranlib=''
11257 if $test -n "$ranlib"; then
11258 echo "your system has '$ranlib'; we'll use that."
11261 echo "your system doesn't seem to support random libraries"
11262 echo "so we'll use lorder and tsort to order the libraries."
11269 : check for type of arguments to select.
11270 case "$selecttype" in
11271 '') case "$d_select" in
11274 Checking to see what type of arguments are accepted by select().
11276 hdrs="$define sys/types.h
11277 $i_systime sys/time.h
11278 $i_sysselct sys/select.h
11279 $d_socket sys/socket.h"
11280 : The first arg can be int, unsigned, or size_t
11281 : The last arg may or may not be 'const'
11283 : void pointer has been seen but using that
11284 : breaks the selectminbits test
11285 for xxx in 'fd_set *' 'int *'; do
11286 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11287 for tmo in 'struct timeval *' 'const struct timeval *'; do
11289 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11290 if ./protochk "$try" $hdrs; then
11291 echo "Your system accepts $xxx."
11300 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11301 case "$d_fd_set" in
11302 $define) dflt="fd_set *" ;;
11311 *) : no select, so pick a harmless default
11318 : check for the select 'width'
11319 case "$selectminbits" in
11320 '') case "$d_select" in
11324 Checking to see on how many bits at a time your select() operates...
11327 #include <sys/types.h>
11329 #$i_systime I_SYS_TIME
11330 #$i_systimek I_SYS_TIME_KERNEL
11335 # ifdef I_SYS_TIME_KERNEL
11338 # include <sys/time.h>
11339 # ifdef I_SYS_TIME_KERNEL
11343 #$i_sysselct I_SYS_SELECT
11344 #ifdef I_SYS_SELECT
11345 #include <sys/select.h>
11349 #define S sizeof(*(b))
11351 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11352 #define NBITS (NBYTES * 8)
11361 fp = fopen("try.c", "r");
11367 b = ($selecttype)s;
11368 for (i = 0; i < NBITS; i++)
11372 select(fd + 1, b, 0, 0, &t);
11373 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11374 printf("%d\n", i + 1);
11379 if eval $compile_ok; then
11380 selectminbits=`./try`
11381 case "$selectminbits" in
11383 Cannot figure out on how many bits at a time your select() operates.
11384 I'll play safe and guess it is 32 bits.
11390 *) bits="$selectminbits bits" ;;
11392 echo "Your select() operates on $bits at a time." >&4
11394 rp='What is the minimum number of bits your select() operates on?'
11395 case "$byteorder" in
11396 1234|12345678) dflt=32 ;;
11401 selectminbits="$val"
11405 *) : no select, so pick a harmless default
11412 : Trace out the files included by signal.h, then look for SIGxxx names.
11413 : Remove SIGARRAYSIZE used by HPUX.
11414 : Remove SIGTYP void lines used by OS2.
11415 xxx=`echo '#include <signal.h>' |
11416 $cppstdin $cppminus $cppflags 2>/dev/null |
11417 $grep '^[ ]*#.*include' |
11418 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11419 : Check this list of files to be sure we have parsed the cpp output ok.
11420 : This will also avoid potentially non-existent files, such
11423 for xx in $xxx /dev/null ; do
11424 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11426 : If we have found no files, at least try signal.h
11427 case "$xxxfiles" in
11428 '') xxxfiles=`./findhdr signal.h` ;;
11431 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11432 print substr($2, 4, 20)
11434 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11435 print substr($3, 4, 20)
11437 : Append some common names just in case the awk scan failed.
11438 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11439 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11440 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11441 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11442 : generate a few handy files for later
11443 $cat > signal.c <<'EOCP'
11444 #include <sys/types.h>
11445 #include <signal.h>
11449 /* Strange style to avoid deeply-nested #if/#else/#endif */
11452 # define NSIG (_NSIG)
11458 # define NSIG (SIGMAX+1)
11464 # define NSIG (SIG_MAX+1)
11470 # define NSIG (MAXSIG+1)
11476 # define NSIG (MAX_SIG+1)
11481 # ifdef SIGARRAYSIZE
11482 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11488 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11492 /* Default to some arbitrary number that's big enough to get most
11493 of the common signals.
11499 printf("NSIG %d\n", NSIG);
11505 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11507 printf "#ifdef SIG"; printf $1; printf "\n"
11508 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11509 printf $1; printf ");\n"
11513 printf "#endif /* JUST_NSIG */\n";
11517 $cat >signal.awk <<'EOP'
11518 BEGIN { ndups = 0 }
11519 $1 ~ /^NSIG$/ { nsig = $2 }
11520 ($1 !~ /^NSIG$/) && (NF == 2) {
11521 if ($2 > maxsig) { maxsig = $2 }
11522 if (sig_name[$2]) {
11523 dup_name[ndups] = $1
11524 dup_num[ndups] = $2
11534 if (nsig == 0) { nsig = maxsig + 1 }
11535 for (n = 1; n < nsig; n++) {
11537 printf("%s %d\n", sig_name[n], sig_num[n])
11540 printf("NUM%d %d\n", n, n)
11543 for (n = 0; n < ndups; n++) {
11544 printf("%s %d\n", dup_name[n], dup_num[n])
11548 $cat >signal_cmd <<EOS
11550 if $test -s signal.lst; then
11551 echo "Using your existing signal.lst file"
11556 $cat >>signal_cmd <<'EOS'
11559 if eval $compile_ok; then
11560 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11562 echo "(I can't seem be able to compile the whole test program)" >&4
11563 echo "(I'll try it in little pieces.)" >&4
11564 set signal -DJUST_NSIG
11565 if eval $compile_ok; then
11566 ./signal$_exe > signal.nsg
11569 echo "I can't seem to figure out how many signals you have." >&4
11570 echo "Guessing 50." >&4
11571 echo 'NSIG 50' > signal.nsg
11573 : Now look at all the signal names, one at a time.
11574 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11575 $cat > signal.c <<EOCP
11576 #include <sys/types.h>
11577 #include <signal.h>
11580 printf("$xx %d\n", SIG${xx});
11585 if eval $compile; then
11586 echo "SIG${xx} found."
11587 ./signal$_exe >> signal.ls1
11589 echo "SIG${xx} NOT found."
11592 if $test -s signal.ls1; then
11593 $cat signal.nsg signal.ls1 |
11594 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11598 if $test -s signal.lst; then
11601 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11602 echo 'kill -l' >signal
11603 set X `csh -f <signal`
11607 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11609 echo $@ | $tr ' ' $trnl | \
11610 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11612 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11614 chmod a+x signal_cmd
11615 $eunicefix signal_cmd
11617 : generate list of signal names
11619 case "$sig_name_init" in
11621 *) case "$sig_num_init" in
11622 ''|*,*) doinit=yes ;;
11627 echo "Generating a list of signal names and numbers..." >&4
11629 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11630 sig_name="ZERO $sig_name"
11631 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11632 { printf "\"%s\", ", $1 }
11633 END { printf "0\n" }' signal.lst`
11634 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11635 sig_num="0 $sig_num"
11636 sig_num_init=`$awk 'BEGIN { printf "0, " }
11637 { printf "%d, ", $2}
11638 END { printf "0\n"}' signal.lst`
11641 echo "The following signals are available:"
11643 echo $sig_name | $awk \
11644 'BEGIN { linelen = 0 }
11646 for (i = 1; i <= NF; i++) {
11647 name = "SIG" $i " "
11648 linelen = linelen + length(name)
11649 if (linelen > 70) {
11651 linelen = length(name)
11657 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11659 : see what type is used for signed size_t
11660 set ssize_t ssizetype int stdio.h sys/types.h
11663 $cat > ssize.c <<EOM
11665 #include <sys/types.h>
11666 #define Size_t $sizetype
11667 #define SSize_t $dflt
11670 if (sizeof(Size_t) == sizeof(SSize_t))
11672 else if (sizeof(Size_t) == sizeof(int))
11681 if eval $compile_ok && ./ssize > /dev/null; then
11682 ssizetype=`./ssize`
11683 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11686 Help! I can't compile and run the ssize_t test program: please enlighten me!
11687 (This is probably a misconfiguration in your system or libraries, and
11688 you really ought to fix it. Still, I'll try anyway.)
11690 I need a type that is the same size as $sizetype, but is guaranteed to
11691 be signed. Common values are ssize_t, int and long.
11694 rp="What signed type is the same size as $sizetype?"
11698 $rm -f ssize ssize.*
11700 : see what type of char stdio uses.
11702 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11703 echo "Your stdio uses unsigned chars." >&4
11704 stdchar="unsigned char"
11706 echo "Your stdio uses signed chars." >&4
11710 : see if time exists
11712 if test "X$d_time" = X -o X"$timetype" = X; then
11713 if set time val -f d_time; eval $csym; $val; then
11714 echo 'time() found.' >&4
11716 rp="What is the type returned by time() on this system?"
11717 set time_t timetype long stdio.h sys/types.h
11720 echo 'time() not found, hope that will do.' >&4
11728 : see what type uids are declared as in the kernel
11730 echo "Looking for the type for user ids returned by getuid()."
11731 set uid_t uidtype xxx stdio.h sys/types.h
11735 xxx=`./findhdr sys/user.h`
11736 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11738 unsigned) dflt="$1 $2" ;;
11742 *) dflt="$uidtype";;
11745 uid_t) echo "uid_t found." ;;
11746 *) rp="What is the type for user ids returned by getuid()?"
11752 : see if dbm.h is available
11753 : see if dbmclose exists
11754 set dbmclose d_dbmclose
11757 case "$d_dbmclose" in
11767 *) set rpcsvc/dbm.h i_rpcsvcdbm
11772 *) echo "We won't be including <dbm.h>"
11782 : see if this is a sys/file.h system
11787 : do we need to include sys/file.h ?
11791 if $h_sysfile; then
11793 echo "We'll be including <sys/file.h>." >&4
11796 echo "We won't be including <sys/file.h>." >&4
11806 : see if fcntl.h is there
11811 : see if we can include fcntl.h
11817 echo "We'll be including <fcntl.h>." >&4
11820 if $h_sysfile; then
11821 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11823 echo "We won't be including <fcntl.h>." >&4
11835 : see if locale.h is available
11836 set locale.h i_locale
11839 : see if mach cthreads are available
11840 if test "X$usethreads" = "X$define"; then
11841 set mach/cthreads.h i_machcthr
11844 i_machcthr="$undef"
11849 : see if this is a math.h system
11853 : see if this is a mntent.h system
11854 set mntent.h i_mntent
11857 : see if ndbm.h is available
11862 : see if dbm_open exists
11863 set dbm_open d_dbm_open
11865 case "$d_dbm_open" in
11868 echo "We won't be including <ndbm.h>"
11877 : see if net/errno.h is available
11879 set net/errno.h val
11882 : Unfortunately, it causes problems on some systems. Arrgh.
11885 cat > try.c <<'EOM'
11888 #include <net/errno.h>
11894 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11895 echo "We'll be including <net/errno.h>." >&4
11897 echo "We won't be including <net/errno.h>." >&4
11906 : see if this is a poll.h system
11910 : get C preprocessor symbols handy
11912 $echo $n "Hmm... $c"
11913 echo $al | $tr ' ' $trnl >Cppsym.know
11914 $cat <<EOSS >Cppsym
11922 case "\$list\$#" in
11925 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11927 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11930 unknown="\$unknown \$sym"
11940 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11942 exit 0; _ _ _ _\1\\ \1\\
11945 echo "exit 1; _ _ _" >>Cppsym\$\$
11946 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11948 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11954 $rm -f Cppsym\$\$ Cppsym2\$\$
11959 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11961 : now check the C compiler for additional symbols
11967 for i in \`$cc -v -c tmp.c 2>&1\`
11970 -D*) echo "\$i" | $sed 's/^-D//';;
11971 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11978 ./ccsym > ccsym1.raw
11979 if $test -s ccsym1.raw; then
11980 $sort ccsym1.raw | $uniq >ccsym.raw
11982 mv ccsym1.raw ccsym.raw
11985 $awk '/\=/ { print $0; next }
11986 { print $0"=1" }' ccsym.raw >ccsym.list
11987 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11988 $comm -13 ccsym.true ccsym.list >ccsym.own
11989 $comm -12 ccsym.true ccsym.list >ccsym.com
11990 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11992 if $test -z ccsym.raw; then
11993 echo "Your C compiler doesn't seem to define any symbols!" >&4
11995 echo "However, your C preprocessor defines the following symbols:"
11998 cppsymbols=`$cat Cppsym.true`
11999 cppsymbols=`echo $cppsymbols`
12000 cppccsymbols="$cppsymbols"
12002 if $test -s ccsym.com; then
12003 echo "Your C compiler and pre-processor define these symbols:"
12004 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12007 cppccsymbols=`$cat ccsym.com`
12008 cppccsymbols=`echo $cppccsymbols`
12009 $test "$silent" || sleep 1
12011 if $test -s ccsym.cpp; then
12012 $test "$also" && echo " "
12013 echo "Your C pre-processor ${also}defines the following symbols:"
12014 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12016 cppsymbols=`$cat ccsym.cpp`
12017 cppsymbols=`echo $cppsymbols`
12018 $test "$silent" || sleep 1
12020 if $test -s ccsym.own; then
12021 $test "$also" && echo " "
12022 echo "Your C compiler ${also}defines the following cpp symbols:"
12023 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12024 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12025 ccsymbols=`$cat ccsym.own`
12026 ccsymbols=`echo $ccsymbols`
12027 $test "$silent" || sleep 1
12032 : see if this is a termio system
12036 if $test `./findhdr termios.h`; then
12037 set tcsetattr i_termios
12043 "$define") echo "You have POSIX termios.h... good!" >&4;;
12044 *) if ./Cppsym pyr; then
12045 case "`/bin/universe`" in
12046 ucb) if $test `./findhdr sgtty.h`; then
12048 echo "<sgtty.h> found." >&4
12050 echo "System is pyramid with BSD universe."
12051 echo "<sgtty.h> not found--you could have problems." >&4
12053 *) if $test `./findhdr termio.h`; then
12055 echo "<termio.h> found." >&4
12057 echo "System is pyramid with USG universe."
12058 echo "<termio.h> not found--you could have problems." >&4
12062 if $test `./findhdr termio.h`; then
12063 echo "<termio.h> found." >&4
12065 elif $test `./findhdr sgtty.h`; then
12066 echo "<sgtty.h> found." >&4
12069 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12072 if $test `./findhdr sgtty.h`; then
12073 echo "<sgtty.h> found." >&4
12075 elif $test `./findhdr termio.h`; then
12076 echo "<termio.h> found." >&4
12079 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12083 set i_termio; eval $setvar
12084 val=$val2; set i_sgtty; eval $setvar
12085 val=$val3; set i_termios; eval $setvar
12087 : see if stdarg is available
12089 if $test `./findhdr stdarg.h`; then
12090 echo "<stdarg.h> found." >&4
12093 echo "<stdarg.h> NOT found." >&4
12097 : see if varags is available
12099 if $test `./findhdr varargs.h`; then
12100 echo "<varargs.h> found." >&4
12102 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12105 : set up the varargs testing programs
12106 $cat > varargs.c <<EOP
12108 #include <stdarg.h>
12111 #include <varargs.h>
12115 int f(char *p, ...)
12129 p = va_arg(ap, char *);
12134 $cat > varargs <<EOP
12136 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12145 : now check which varargs header should be included
12150 if `./varargs I_STDARG`; then
12152 elif `./varargs I_VARARGS`; then
12157 if `./varargs I_VARARGS`; then
12164 echo "I could not find the definition for va_dcl... You have problems..." >&4
12165 val="$undef"; set i_stdarg; eval $setvar
12166 val="$undef"; set i_varargs; eval $setvar
12171 case "$i_varhdr" in
12173 val="$define"; set i_stdarg; eval $setvar
12174 val="$undef"; set i_varargs; eval $setvar
12177 val="$undef"; set i_stdarg; eval $setvar
12178 val="$define"; set i_varargs; eval $setvar
12181 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12185 : see if stddef is available
12186 set stddef.h i_stddef
12189 : see if sys/access.h is available
12190 set sys/access.h i_sysaccess
12193 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12194 set sys/filio.h i_sysfilio
12197 if $test `./findhdr sys/ioctl.h`; then
12199 echo '<sys/ioctl.h> found.' >&4
12202 if $test $i_sysfilio = "$define"; then
12203 echo '<sys/ioctl.h> NOT found.' >&4
12205 $test $i_sgtty = "$define" && xxx="sgtty.h"
12206 $test $i_termio = "$define" && xxx="termio.h"
12207 $test $i_termios = "$define" && xxx="termios.h"
12208 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12214 : see if sys/resource.h has to be included
12215 set sys/resource.h i_sysresrc
12218 : see if sys/security.h is available
12219 set sys/security.h i_syssecrt
12222 : see if this is a sys/statvfs.h system
12223 set sys/statvfs.h i_sysstatvfs
12226 : see if this is a sys/un.h system
12227 set sys/un.h i_sysun
12230 : see if this is a syswait system
12231 set sys/wait.h i_syswait
12234 : see if this is an utime system
12235 set utime.h i_utime
12238 : see if this is a values.h system
12239 set values.h i_values
12242 : see if this is a vfork system
12245 set vfork.h i_vfork
12253 : see if gdbm.h is available
12258 : see if gdbm_open exists
12259 set gdbm_open d_gdbm_open
12261 case "$d_gdbm_open" in
12264 echo "We won't be including <gdbm.h>"
12274 echo "Looking for extensions..." >&4
12277 : If we are using the old config.sh, known_extensions may contain
12278 : old or inaccurate or duplicate values.
12279 known_extensions=''
12280 nonxs_extensions=''
12281 : We do not use find because it might not be available.
12282 : We do not just use MANIFEST because the user may have dropped
12283 : some additional extensions into the source tree and expect them
12287 DynaLoader|dynaload) ;;
12288 *) if $test -f $xxx/$xxx.xs; then
12289 known_extensions="$known_extensions $xxx"
12290 elif $test -f $xxx/Makefile.PL; then
12291 nonxs_extensions="$nonxs_extensions $xxx"
12293 if $test -d $xxx; then
12294 # Look for nested extensions, eg. Devel/Dprof.
12297 if $test -f $yyy/$yyy.xs; then
12298 known_extensions="$known_extensions $xxx/$yyy"
12299 elif $test -f $yyy/Makefile.PL; then
12300 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12309 set X $nonxs_extensions
12311 nonxs_extensions="$*"
12312 set X $known_extensions
12314 known_extensions="$*"
12317 : Now see which are supported on this system.
12319 for xxx in $known_extensions ; do
12323 $define) avail_ext="$avail_ext $xxx" ;;
12326 GDBM_File|gdbm_fil)
12328 $define) avail_ext="$avail_ext $xxx" ;;
12331 NDBM_File|ndbm_fil)
12333 $define) avail_ext="$avail_ext $xxx" ;;
12336 ODBM_File|odbm_fil)
12337 case "${i_dbm}${i_rpcsvcdbm}" in
12338 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12342 case "$useposix" in
12343 true|define|y) avail_ext="$avail_ext $xxx" ;;
12347 case "$useopcode" in
12348 true|define|y) avail_ext="$avail_ext $xxx" ;;
12352 case "$d_socket" in
12353 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12357 case "$usethreads" in
12358 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12362 : XXX Do we need a useipcsysv variable here
12363 case "${d_msg}${d_sem}${d_shm}" in
12364 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12367 *) avail_ext="$avail_ext $xxx"
12376 : Now see which nonxs extensions are supported on this system.
12377 : For now assume all are.
12379 for xxx in $nonxs_extensions ; do
12381 *) nonxs_ext="$nonxs_ext $xxx"
12393 A number of extensions are supplied with $package. You may choose to
12394 compile these extensions for dynamic loading (the default), compile
12395 them into the $package executable (static loading), or not include
12396 them at all. Answer "none" to include no extensions.
12397 Note that DynaLoader is always built and need not be mentioned here.
12400 case "$dynamic_ext" in
12401 '') dflt="$avail_ext" ;;
12402 *) dflt="$dynamic_ext"
12403 # Perhaps we are reusing an old out-of-date config.sh.
12406 if test X"$dynamic_ext" != X"$avail_ext"; then
12408 NOTICE: Your previous config.sh list may be incorrect.
12409 The extensions now available to you are
12411 but the default list from your previous config.sh is
12423 rp="What extensions do you wish to load dynamically?"
12426 none) dynamic_ext=' ' ;;
12427 *) dynamic_ext="$ans" ;;
12430 case "$static_ext" in
12432 : Exclude those already listed in dynamic linking
12434 for xxx in $avail_ext; do
12435 case " $dynamic_ext " in
12437 *) dflt="$dflt $xxx" ;;
12444 *) dflt="$static_ext"
12451 rp="What extensions do you wish to load statically?"
12454 none) static_ext=' ' ;;
12455 *) static_ext="$ans" ;;
12460 A number of extensions are supplied with $package. Answer "none"
12461 to include no extensions.
12462 Note that DynaLoader is always built and need not be mentioned here.
12465 case "$static_ext" in
12466 '') dflt="$avail_ext" ;;
12467 *) dflt="$static_ext"
12468 # Perhaps we are reusing an old out-of-date config.sh.
12471 if test X"$static_ext" != X"$avail_ext"; then
12473 NOTICE: Your previous config.sh list may be incorrect.
12474 The extensions now available to you are
12476 but the default list from your previous config.sh is
12485 : Exclude those that are not xs extensions
12489 rp="What extensions do you wish to include?"
12492 none) static_ext=' ' ;;
12493 *) static_ext="$ans" ;;
12498 set X $dynamic_ext $static_ext $nonxs_ext
12502 : Remove build directory name from cppstdin so it can be used from
12503 : either the present location or the final installed location.
12505 : Get out of the UU directory to get correct path name.
12507 case "$cppstdin" in
12509 echo "Stripping down cppstdin path name"
12515 : end of configuration questions
12517 echo "End of configuration questions."
12520 : back to where it started
12521 if test -d ../UU; then
12525 : configuration may be patched via a 'config.over' file
12526 if $test -f config.over; then
12529 rp='I see a config.over file. Do you wish to load it?'
12532 n*) echo "OK, I'll ignore it.";;
12534 echo "Configuration override changes have been loaded."
12539 : in case they want portability, strip down executable paths
12540 case "$d_portable" in
12543 echo "Stripping down executable paths..." >&4
12544 for file in $loclist $trylist; do
12545 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12546 eval $file="\$file"
12552 : create config.sh file
12554 echo "Creating config.sh..." >&4
12555 $spitshell <<EOT >config.sh
12558 # This file was produced by running the Configure script. It holds all the
12559 # definitions figured out by Configure. Should you modify one of these values,
12560 # do not forget to propagate your changes by running "Configure -der". You may
12561 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12564 # Package name : $package
12565 # Source directory : $src
12566 # Configuration time: $cf_time
12567 # Configured by : $cf_by
12568 # Target system : $myuname
12578 Revision='$Revision'
12585 alignbytes='$alignbytes'
12586 ansi2knr='$ansi2knr'
12587 aphostname='$aphostname'
12588 apiversion='$apiversion'
12591 archlibexp='$archlibexp'
12592 archname64='$archname64'
12593 archname='$archname'
12594 archobjs='$archobjs'
12602 byteorder='$byteorder'
12604 castflags='$castflags'
12607 cccdlflags='$cccdlflags'
12608 ccdlflags='$ccdlflags'
12610 ccsymbols='$ccsymbols'
12612 cf_email='$cf_email'
12617 clocktype='$clocktype'
12619 compress='$compress'
12620 contains='$contains'
12624 cpp_stuff='$cpp_stuff'
12625 cppccsymbols='$cppccsymbols'
12626 cppflags='$cppflags'
12628 cppminus='$cppminus'
12630 cppstdin='$cppstdin'
12631 cppsymbols='$cppsymbols'
12632 crosscompile='$crosscompile'
12633 cryptlib='$cryptlib'
12635 d_Gconvert='$d_Gconvert'
12636 d_access='$d_access'
12637 d_accessx='$d_accessx'
12639 d_archlib='$d_archlib'
12640 d_attribut='$d_attribut'
12644 d_bsdgetpgrp='$d_bsdgetpgrp'
12645 d_bsdsetpgrp='$d_bsdsetpgrp'
12647 d_casti32='$d_casti32'
12648 d_castneg='$d_castneg'
12649 d_charvspr='$d_charvspr'
12651 d_chroot='$d_chroot'
12652 d_chsize='$d_chsize'
12653 d_closedir='$d_closedir'
12654 d_cmsghdr_s='$d_cmsghdr_s'
12658 d_cuserid='$d_cuserid'
12659 d_dbl_dig='$d_dbl_dig'
12660 d_dbmclose64='$d_dbmclose64'
12661 d_dbminit64='$d_dbminit64'
12662 d_delete64='$d_delete64'
12663 d_difftime='$d_difftime'
12664 d_dirent64_s='$d_dirent64_s'
12665 d_dirnamlen='$d_dirnamlen'
12666 d_dlerror='$d_dlerror'
12667 d_dlopen='$d_dlopen'
12668 d_dlsymun='$d_dlsymun'
12669 d_dosuid='$d_dosuid'
12670 d_drand48proto='$d_drand48proto'
12672 d_eaccess='$d_eaccess'
12673 d_endgrent='$d_endgrent'
12674 d_endhent='$d_endhent'
12675 d_endnent='$d_endnent'
12676 d_endpent='$d_endpent'
12677 d_endpwent='$d_endpwent'
12678 d_endsent='$d_endsent'
12679 d_eofnblk='$d_eofnblk'
12680 d_eunice='$d_eunice'
12681 d_fchmod='$d_fchmod'
12682 d_fchown='$d_fchown'
12684 d_fd_macros='$d_fd_macros'
12685 d_fd_set='$d_fd_set'
12686 d_fds_bits='$d_fds_bits'
12687 d_fetch64='$d_fetch64'
12688 d_fgetpos64='$d_fgetpos64'
12689 d_fgetpos='$d_fgetpos'
12690 d_firstkey64='$d_firstkey64'
12691 d_flexfnam='$d_flexfnam'
12692 d_flock64_s='$d_flock64_s'
12694 d_fopen64='$d_fopen64'
12696 d_fpathconf='$d_fpathconf'
12697 d_freopen64='$d_freopen64'
12698 d_fseek64='$d_fseek64'
12699 d_fseeko64='$d_fseeko64'
12700 d_fseeko='$d_fseeko'
12701 d_fsetpos64='$d_fsetpos64'
12702 d_fsetpos='$d_fsetpos'
12703 d_fstat64='$d_fstat64'
12704 d_fstatfs='$d_fstatfs'
12705 d_fstatvfs='$d_fstatvfs'
12706 d_ftell64='$d_ftell64'
12707 d_ftello64='$d_ftello64'
12708 d_ftello='$d_ftello'
12710 d_ftruncate64='$d_ftruncate64'
12711 d_getgrent='$d_getgrent'
12712 d_getgrps='$d_getgrps'
12713 d_gethbyaddr='$d_gethbyaddr'
12714 d_gethbyname='$d_gethbyname'
12715 d_gethent='$d_gethent'
12716 d_gethname='$d_gethname'
12717 d_gethostprotos='$d_gethostprotos'
12718 d_getlogin='$d_getlogin'
12719 d_getmntent='$d_getmntent'
12720 d_getnbyaddr='$d_getnbyaddr'
12721 d_getnbyname='$d_getnbyname'
12722 d_getnent='$d_getnent'
12723 d_getnetprotos='$d_getnetprotos'
12724 d_getpbyname='$d_getpbyname'
12725 d_getpbynumber='$d_getpbynumber'
12726 d_getpent='$d_getpent'
12727 d_getpgid='$d_getpgid'
12728 d_getpgrp2='$d_getpgrp2'
12729 d_getpgrp='$d_getpgrp'
12730 d_getppid='$d_getppid'
12731 d_getprior='$d_getprior'
12732 d_getprotoprotos='$d_getprotoprotos'
12733 d_getpwent='$d_getpwent'
12734 d_getsbyname='$d_getsbyname'
12735 d_getsbyport='$d_getsbyport'
12736 d_getsent='$d_getsent'
12737 d_getservprotos='$d_getservprotos'
12738 d_gettimeod='$d_gettimeod'
12739 d_gnulibc='$d_gnulibc'
12740 d_grpasswd='$d_grpasswd'
12741 d_hasmntopt='$d_hasmntopt'
12744 d_inetaton='$d_inetaton'
12745 d_ino64t='$d_ino64t'
12746 d_int64t='$d_int64t'
12747 d_iovec_s='$d_iovec_s'
12748 d_isascii='$d_isascii'
12749 d_killpg='$d_killpg'
12750 d_lchown='$d_lchown'
12752 d_locconv='$d_locconv'
12753 d_lockf64='$d_lockf64'
12755 d_longdbl='$d_longdbl'
12756 d_longlong='$d_longlong'
12757 d_lseek64='$d_lseek64'
12758 d_lstat64='$d_lstat64'
12760 d_madvise='$d_madvise'
12762 d_mbstowcs='$d_mbstowcs'
12763 d_mbtowc='$d_mbtowc'
12764 d_memcmp='$d_memcmp'
12765 d_memcpy='$d_memcpy'
12766 d_memmove='$d_memmove'
12767 d_memset='$d_memset'
12769 d_mkfifo='$d_mkfifo'
12770 d_mktime='$d_mktime'
12772 d_mprotect='$d_mprotect'
12774 d_msg_ctrunc='$d_msg_ctrunc'
12775 d_msg_dontroute='$d_msg_dontroute'
12776 d_msg_oob='$d_msg_oob'
12777 d_msg_peek='$d_msg_peek'
12778 d_msg_proxy='$d_msg_proxy'
12779 d_msgctl='$d_msgctl'
12780 d_msgget='$d_msgget'
12781 d_msghdr_s='$d_msghdr_s'
12782 d_msgrcv='$d_msgrcv'
12783 d_msgsnd='$d_msgsnd'
12785 d_munmap='$d_munmap'
12786 d_mymalloc='$d_mymalloc'
12787 d_nextkey64='$d_nextkey64'
12789 d_off64t='$d_off64t'
12790 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12791 d_oldpthreads='$d_oldpthreads'
12792 d_oldsock='$d_oldsock'
12794 d_open64='$d_open64'
12795 d_opendir64='$d_opendir64'
12796 d_pathconf='$d_pathconf'
12798 d_phostname='$d_phostname'
12801 d_portable='$d_portable'
12802 d_pthread_yield='$d_pthread_yield'
12804 d_pwchange='$d_pwchange'
12805 d_pwclass='$d_pwclass'
12806 d_pwcomment='$d_pwcomment'
12807 d_pwexpire='$d_pwexpire'
12808 d_pwgecos='$d_pwgecos'
12809 d_pwpasswd='$d_pwpasswd'
12810 d_pwquota='$d_pwquota'
12811 d_readdir64='$d_readdir64'
12812 d_readdir='$d_readdir'
12813 d_readlink='$d_readlink'
12815 d_recvmsg='$d_recvmsg'
12816 d_rename='$d_rename'
12817 d_rewinddir='$d_rewinddir'
12819 d_safebcpy='$d_safebcpy'
12820 d_safemcpy='$d_safemcpy'
12821 d_sanemcmp='$d_sanemcmp'
12822 d_sched_yield='$d_sched_yield'
12823 d_scm_rights='$d_scm_rights'
12824 d_seekdir64='$d_seekdir64'
12825 d_seekdir='$d_seekdir'
12826 d_select='$d_select'
12828 d_semctl='$d_semctl'
12829 d_semctl_semid_ds='$d_semctl_semid_ds'
12830 d_semctl_semun='$d_semctl_semun'
12831 d_semget='$d_semget'
12833 d_sendmsg='$d_sendmsg'
12834 d_setegid='$d_setegid'
12835 d_seteuid='$d_seteuid'
12836 d_setgrent='$d_setgrent'
12837 d_setgrps='$d_setgrps'
12838 d_sethent='$d_sethent'
12839 d_setlinebuf='$d_setlinebuf'
12840 d_setlocale='$d_setlocale'
12841 d_setnent='$d_setnent'
12842 d_setpent='$d_setpent'
12843 d_setpgid='$d_setpgid'
12844 d_setpgrp2='$d_setpgrp2'
12845 d_setpgrp='$d_setpgrp'
12846 d_setprior='$d_setprior'
12847 d_setpwent='$d_setpwent'
12848 d_setregid='$d_setregid'
12849 d_setresgid='$d_setresgid'
12850 d_setresuid='$d_setresuid'
12851 d_setreuid='$d_setreuid'
12852 d_setrgid='$d_setrgid'
12853 d_setruid='$d_setruid'
12854 d_setsent='$d_setsent'
12855 d_setsid='$d_setsid'
12856 d_setvbuf='$d_setvbuf'
12860 d_shmatprototype='$d_shmatprototype'
12861 d_shmctl='$d_shmctl'
12863 d_shmget='$d_shmget'
12864 d_sigaction='$d_sigaction'
12865 d_sigsetjmp='$d_sigsetjmp'
12866 d_socket='$d_socket'
12867 d_sockpair='$d_sockpair'
12868 d_stat64='$d_stat64'
12869 d_statblks='$d_statblks'
12870 d_statfs='$d_statfs'
12871 d_statfsflags='$d_statfsflags'
12872 d_statvfs='$d_statvfs'
12873 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12874 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12875 d_stdiobase='$d_stdiobase'
12876 d_stdstdio='$d_stdstdio'
12877 d_store64='$d_store64'
12878 d_strchr='$d_strchr'
12879 d_strcoll='$d_strcoll'
12880 d_strctcpy='$d_strctcpy'
12881 d_strerrm='$d_strerrm'
12882 d_strerror='$d_strerror'
12883 d_strtod='$d_strtod'
12884 d_strtol='$d_strtol'
12885 d_strtoul='$d_strtoul'
12886 d_strxfrm='$d_strxfrm'
12887 d_suidsafe='$d_suidsafe'
12888 d_symlink='$d_symlink'
12889 d_syscall='$d_syscall'
12890 d_sysconf='$d_sysconf'
12891 d_sysernlst='$d_sysernlst'
12892 d_syserrlst='$d_syserrlst'
12893 d_system='$d_system'
12894 d_tcgetpgrp='$d_tcgetpgrp'
12895 d_tcsetpgrp='$d_tcsetpgrp'
12896 d_telldir64='$d_telldir64'
12897 d_telldir='$d_telldir'
12898 d_telldirproto='$d_telldirproto'
12901 d_tmpfile64='$d_tmpfile64'
12902 d_truncate64='$d_truncate64'
12903 d_truncate='$d_truncate'
12904 d_tzname='$d_tzname'
12907 d_union_semun='$d_union_semun'
12909 d_void_closedir='$d_void_closedir'
12910 d_voidsig='$d_voidsig'
12911 d_voidtty='$d_voidtty'
12912 d_volatile='$d_volatile'
12913 d_vprintf='$d_vprintf'
12915 d_waitpid='$d_waitpid'
12916 d_wcstombs='$d_wcstombs'
12917 d_wctomb='$d_wctomb'
12918 d_writev='$d_writev'
12921 db_hashtype='$db_hashtype'
12922 db_prefixtype='$db_prefixtype'
12923 defvoidused='$defvoidused'
12924 direntrytype='$direntrytype'
12927 doublesize='$doublesize'
12929 dynamic_ext='$dynamic_ext'
12935 eunicefix='$eunicefix'
12938 extensions='$extensions'
12940 firstmakefile='$firstmakefile'
12942 fpostype='$fpostype'
12943 freetype='$freetype'
12945 full_csh='$full_csh'
12946 full_sed='$full_sed'
12947 gccversion='$gccversion'
12951 groupcat='$groupcat'
12952 groupstype='$groupstype'
12955 h_sysfile='$h_sysfile'
12959 i_arpainet='$i_arpainet'
12960 i_bsdioctl='$i_bsdioctl'
12963 i_dirent='$i_dirent'
12970 i_inttypes='$i_inttypes'
12971 i_limits='$i_limits'
12972 i_locale='$i_locale'
12973 i_machcthr='$i_machcthr'
12974 i_malloc='$i_malloc'
12976 i_memory='$i_memory'
12977 i_mntent='$i_mntent'
12980 i_neterrno='$i_neterrno'
12984 i_rpcsvcdbm='$i_rpcsvcdbm'
12987 i_stdarg='$i_stdarg'
12988 i_stddef='$i_stddef'
12989 i_stdlib='$i_stdlib'
12990 i_string='$i_string'
12991 i_sysaccess='$i_sysaccess'
12992 i_sysdir='$i_sysdir'
12993 i_sysfile='$i_sysfile'
12994 i_sysfilio='$i_sysfilio'
12996 i_sysioctl='$i_sysioctl'
12997 i_sysmman='$i_sysmman'
12998 i_sysmount='$i_sysmount'
12999 i_sysndir='$i_sysndir'
13000 i_sysparam='$i_sysparam'
13001 i_sysresrc='$i_sysresrc'
13002 i_syssecrt='$i_syssecrt'
13003 i_sysselct='$i_sysselct'
13004 i_syssockio='$i_syssockio'
13005 i_sysstat='$i_sysstat'
13006 i_sysstatvfs='$i_sysstatvfs'
13007 i_systime='$i_systime'
13008 i_systimek='$i_systimek'
13009 i_systimes='$i_systimes'
13010 i_systypes='$i_systypes'
13011 i_sysuio='$i_sysuio'
13013 i_syswait='$i_syswait'
13014 i_termio='$i_termio'
13015 i_termios='$i_termios'
13017 i_unistd='$i_unistd'
13019 i_values='$i_values'
13020 i_varargs='$i_varargs'
13021 i_varhdr='$i_varhdr'
13023 ignore_versioned_solibs='$ignore_versioned_solibs'
13026 installarchlib='$installarchlib'
13027 installbin='$installbin'
13028 installman1dir='$installman1dir'
13029 installman3dir='$installman3dir'
13030 installprivlib='$installprivlib'
13031 installscript='$installscript'
13032 installsitearch='$installsitearch'
13033 installsitelib='$installsitelib'
13034 installusrbinperl='$installusrbinperl'
13036 known_extensions='$known_extensions'
13040 lddlflags='$lddlflags'
13048 libswanted='$libswanted'
13054 locincpth='$locincpth'
13055 loclibpth='$loclibpth'
13056 longdblsize='$longdblsize'
13057 longlongsize='$longlongsize'
13058 longsize='$longsize'
13062 lseeksize='$lseeksize'
13063 lseektype='$lseektype'
13067 make_set_make='$make_set_make'
13068 mallocobj='$mallocobj'
13069 mallocsrc='$mallocsrc'
13070 malloctype='$malloctype'
13072 man1direxp='$man1direxp'
13075 man3direxp='$man3direxp'
13079 mips_type='$mips_type'
13081 mmaptype='$mmaptype'
13083 modetype='$modetype'
13085 multiarch='$multiarch'
13087 myarchname='$myarchname'
13088 mydomain='$mydomain'
13089 myhostname='$myhostname'
13092 netdb_hlen_type='$netdb_hlen_type'
13093 netdb_host_type='$netdb_host_type'
13094 netdb_name_type='$netdb_name_type'
13095 netdb_net_type='$netdb_net_type'
13098 nm_so_opt='$nm_so_opt'
13099 nonxs_ext='$nonxs_ext'
13101 o_nonblock='$o_nonblock'
13103 old_pthread_create_joinable='$old_pthread_create_joinable'
13104 optimize='$optimize'
13105 orderlib='$orderlib'
13111 patchlevel='$patchlevel'
13112 path_sep='$path_sep'
13114 perladmin='$perladmin'
13115 perlpath='$perlpath'
13117 phostname='$phostname'
13123 prefixexp='$prefixexp'
13125 privlibexp='$privlibexp'
13126 prototype='$prototype'
13128 randbits='$randbits'
13129 randfunc='$randfunc'
13130 randseedtype='$randseedtype'
13132 rd_nodata='$rd_nodata'
13136 sched_yield='$sched_yield'
13137 scriptdir='$scriptdir'
13138 scriptdirexp='$scriptdirexp'
13140 seedfunc='$seedfunc'
13141 selectminbits='$selectminbits'
13142 selecttype='$selecttype'
13143 sendmail='$sendmail'
13146 sharpbang='$sharpbang'
13147 shmattype='$shmattype'
13148 shortsize='$shortsize'
13151 sig_name='$sig_name'
13152 sig_name_init='$sig_name_init'
13154 sig_num_init='$sig_num_init'
13155 signal_t='$signal_t'
13156 sitearch='$sitearch'
13157 sitearchexp='$sitearchexp'
13159 sitelibexp='$sitelibexp'
13160 sizetype='$sizetype'
13165 sockethdr='$sockethdr'
13166 socketlib='$socketlib'
13168 spackage='$spackage'
13169 spitshell='$spitshell'
13172 ssizetype='$ssizetype'
13173 startperl='$startperl'
13175 static_ext='$static_ext'
13177 stdio_base='$stdio_base'
13178 stdio_bufsiz='$stdio_bufsiz'
13179 stdio_cnt='$stdio_cnt'
13180 stdio_filbuf='$stdio_filbuf'
13181 stdio_ptr='$stdio_ptr'
13184 subversion='$subversion'
13191 timeincl='$timeincl'
13192 timetype='$timetype'
13200 use64bits='$use64bits'
13202 usemultiplicity='$usemultiplicity'
13203 usemymalloc='$usemymalloc'
13205 useopcode='$useopcode'
13206 useperlio='$useperlio'
13207 useposix='$useposix'
13209 useshrplib='$useshrplib'
13210 usethreads='$usethreads'
13211 usevfork='$usevfork'
13216 voidflags='$voidflags'
13222 : Add in command line options if available
13223 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13225 : add special variables
13226 $test -f $src/patchlevel.h && \
13227 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13228 echo "CONFIG=true" >>config.sh
13230 : propagate old symbols
13231 if $test -f UU/config.sh; then
13232 <UU/config.sh sort | uniq >UU/oldconfig.sh
13233 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13234 sort | uniq -u >UU/oldsyms
13235 set X `cat UU/oldsyms`
13241 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13243 echo "# Variables propagated from previous config.sh file." >>config.sh
13244 for sym in `cat UU/oldsyms`; do
13245 echo " Propagating $hint variable "'$'"$sym..."
13246 eval 'tmp="$'"${sym}"'"'
13248 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13254 : Finish up by extracting the .SH files
13268 If you'd like to make any changes to the config.sh file before I begin
13269 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13272 rp="Press return or use a shell escape to edit config.sh:"
13277 *) : in case they cannot read
13278 sh 1>&4 -c "$ans";;
13283 : if this fails, just run all the .SH files by hand
13290 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13297 Now you need to generate make dependencies by running "$make depend".
13298 You might prefer to run it in background: "$make depend > makedepend.out &"
13299 It can take a while, so you might not want to run it right now.
13304 rp="Run $make depend now?"
13308 $make depend && echo "Now you must run a $make."
13311 echo "You must run '$make depend' then '$make'."
13314 elif test -f [Mm]akefile; then
13316 echo "Now you must run a $make."
13321 if $test -f Policy.sh; then
13324 If you compile $package on a different machine or from a different object
13325 directory, copy the Policy.sh file from this object directory to the
13326 new one before you run Configure -- this will help you with most of
13327 the policy defaults.
13331 if $test -f config.msg; then
13332 echo "Hmm. I also noted the following information while running:"
13334 $cat config.msg >&4
13337 $rm -f kit*isdone ark*isdone