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 Sun Jan 16 18:22:25 EET 2000 [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 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
440 d_old_pthread_create_joinable=''
441 old_pthread_create_joinable=''
692 ignore_versioned_solibs=''
849 d_stdio_stream_array=''
850 stdio_stream_array=''
894 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
897 : We must find out about Eunice early
899 if test -f /etc/unixtovms; then
900 eunicefix=/etc/unixtovms
902 if test -f /etc/unixtovms.exe; then
903 eunicefix=/etc/unixtovms.exe
907 : list of known cpp symbols, sorted alphabetically
908 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
909 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
910 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
911 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
912 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
913 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
914 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4 SVR5"
915 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
916 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
917 al="$al VMS Xenix286"
918 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
919 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
920 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
921 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
922 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
923 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
924 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
925 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
926 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
927 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
928 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
929 al="$al __SVR4_2__ __UMAXV__"
930 al="$al ____386BSD____ __alpha __alpha__ __amiga"
931 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
932 al="$al __host_mips__"
933 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
934 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
935 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
936 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
937 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
938 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
939 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
940 al="$al __mc88100 __mc88100__ __mips __mips__"
941 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
942 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
943 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
944 al="$al _host_mips _mips _unix"
945 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
946 al="$al apollo ardent att386 att3b"
947 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
948 al="$al cadmus clipper concurrent convex cray ctix"
949 al="$al dmert encore gcos gcx gimpel gould"
950 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
951 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
952 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
953 al="$al i186 i286 i386 i486 i8086"
954 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
955 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
956 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
957 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
958 al="$al mc88000 mc88100 merlin mert mips mvs n16"
959 al="$al ncl_el ncl_mr"
960 al="$al news1500 news1700 news1800 news1900 news3700"
961 al="$al news700 news800 news900 ns16000 ns32000"
962 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
963 al="$al parisc pc532 pdp11 plexus posix pyr"
964 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
965 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
966 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
967 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
968 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
969 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
972 : set useposix=false in your hint file to disable the POSIX extension.
974 : set useopcode=false in your hint file to disable the Opcode extension.
976 : Trailing extension. Override this in a hint file, if needed.
978 : Extra object files, if any, needed on this platform.
980 : Possible local include directories to search.
981 : Set locincpth to "" in a hint file to defeat local include searches.
982 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
983 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985 : no include file wanted by default
989 : change the next line if compiling for Xenix/286 on Xenix/386
990 xlibpth='/usr/lib/386 /lib/386'
992 : Possible local library directories to search.
993 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
996 : general looking path for locating libraries
997 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
998 glibpth="$glibpth /lib /usr/lib $xlibpth"
999 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
1000 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1002 : Private path used by Configure to find libraries. Its value
1003 : is prepended to libpth. This variable takes care of special
1004 : machines, like the mips. Usually, it should be empty.
1007 : default library list
1009 : some systems want to use only the non-versioned libso:s
1010 ignore_versioned_solibs=''
1011 : set usemultiplicity on the Configure command line to enable multiplicity.
1012 : set usesocks on the Configure command line to enable socks.
1013 : set usethreads on the Configure command line to enable threads.
1014 : full support for void wanted by default
1017 : List of libraries we want.
1018 : If anyone needs -lnet, put it in a hint file.
1019 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
1020 libswanted="$libswanted dld ld sun m c cposix posix"
1021 libswanted="$libswanted ndir dir crypt sec"
1022 libswanted="$libswanted ucb bsd BSD PW x"
1023 : We probably want to search /usr/shlib before most other libraries.
1024 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1025 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1026 glibpth="/usr/shlib $glibpth"
1027 : Do not use vfork unless overridden by a hint file.
1030 : Find the basic shell for Bourne shell scripts
1034 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1037 if test -f "$xxx"; then
1040 : Build up a list and do a single loop so we can 'break' out.
1041 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1042 for xxx in sh bash ksh pdksh ash; do
1044 try="$try ${p}/${xxx}"
1048 if test -f "$xxx"; then
1051 elif test -f "$xxx.exe"; then
1062 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1064 Usually it's in /bin/sh. How did you even get this far?
1065 Please contact me (Perl Maintainers) at perlbug@perl.com and
1066 we'll try to straighten this all out.
1072 : see if sh knows # comments
1073 if `$sh -c '#' >/dev/null 2>&1`; then
1077 test -f $xcat || xcat=/usr/bin/cat
1082 if test -s today; then
1085 echo "#! $xcat" > try
1089 if test -s today; then
1097 echo "Your $sh doesn't grok # comments--I will strip them later on."
1100 echo "exec grep -v '^[ ]*#'" >spitshell
1102 $eunicefix spitshell
1103 spitshell=`pwd`/spitshell
1105 echo "I presume that if # doesn't work, #! won't work either!"
1110 : figure out how to guarantee sh startup
1112 '') startsh=${sharpbang}${sh} ;;
1124 : echo "Yup, it does."
1126 echo "Hmm... '$startsh' does not guarantee sh startup..."
1127 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1132 : Save command line options in file UU/cmdline.opt for later use in
1133 : generating config.sh.
1134 cat > cmdline.opt <<EOSH
1135 # Configure command line arguments.
1142 cat >>cmdline.opt <<EOSH
1143 config_arg$argn='$arg'
1145 argn=`expr $argn + 1`
1148 : produce awk script to parse command line options
1149 cat >options.awk <<'EOF'
1151 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1153 len = length(optstr);
1154 for (i = 1; i <= len; i++) {
1155 c = substr(optstr, i, 1);
1156 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1167 if (substr(str, 1, 1) != "-") {
1168 printf("'%s'\n", str);
1172 for (i = 2; i <= len; i++) {
1173 c = substr(str, i, 1);
1175 printf("-%s\n", substr(str, i));
1181 printf("'%s'\n", substr(str, i + 1));
1194 : process the command line options
1195 set X `for arg in "$@"; do echo "X$arg"; done |
1196 sed -e s/X// | awk -f options.awk`
1201 : set up default values
1211 rm -f optdef.sh posthint.sh
1212 cat >optdef.sh <<EOS
1218 while test $# -gt 0; do
1220 -d) shift; fastread=yes;;
1221 -e) shift; alldone=cont;;
1225 if test -r "$1"; then
1228 echo "$me: cannot read config file $1." >&2
1233 -h) shift; error=true;;
1234 -r) shift; reuseval=true;;
1235 -s) shift; silent=true; realsilent=true;;
1236 -E) shift; alldone=exit;;
1237 -K) shift; knowitall=true;;
1238 -O) shift; override=true;;
1239 -S) shift; silent=true; extractsh=true;;
1244 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1245 echo "$me: ignoring -D $1" >&2
1248 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1249 *) echo "$1='define'" >> optdef.sh;;
1256 *=) echo "$1" >> optdef.sh;;
1258 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1259 echo "$me: ignoring -U $1" >&2
1261 *) echo "$1='undef'" >> optdef.sh;;
1272 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1276 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1277 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1283 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1284 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1285 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1286 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1287 *) xxx=`echo $yyy|sed 's!:.*!!'`
1288 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1294 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1296 echo "$yyy=''" >> posthint.sh ;;
1301 echo "$yyy='$zzz'" >> posthint.sh ;;
1303 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1305 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1310 echo "$yyy=$zzz" >> posthint.sh ;;
1311 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1314 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1317 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1325 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1326 [-U symbol] [-U symbol=] [-A command:symbol...]
1327 -d : use defaults for all answers.
1328 -e : go on without questioning past the production of config.sh.
1329 -f : specify an alternate default configuration file.
1330 -h : print this help message and exit (with an error status).
1331 -r : reuse C symbols value if possible (skips costly nm extraction).
1332 -s : silent mode, only echoes questions and essential information.
1333 -D : define symbol to have some value:
1334 -D symbol symbol gets the value 'define'
1335 -D symbol=value symbol gets the value 'value'
1336 -E : stop at the end of questions, after having produced config.sh.
1337 -K : do not use unless you know what you are doing.
1338 -O : let -D and -U override definitions from loaded configuration file.
1339 -S : perform variable substitutions on all .SH files (can mix with -f)
1340 -U : undefine symbol:
1341 -U symbol symbol gets the value 'undef'
1342 -U symbol= symbol gets completely empty
1343 -A : manipulate symbol after the platform specific hints have been applied:
1344 -A symbol=value append " "value to symbol
1345 -A append:symbol=value append value to symbol
1346 -A define:symbol=value define symbol to have value
1347 -A clear:symbol define symbol to be ''
1348 -A define:symbol define symbol to be 'define'
1349 -A eval:symbol=value define symbol to be eval of value
1350 -A prepend:symbol=value prepend value to symbol
1351 -A undef:symbol define symbol to be 'undef'
1352 -A undef:symbol= define symbol to be ''
1353 -V : print version number and exit (with a zero status).
1360 case "$fastread$alldone" in
1363 if test ! -t 0; then
1364 echo "Say 'sh Configure', not 'sh <Configure'"
1372 true) exec 1>/dev/null;;
1375 : run the defines and the undefines, if any, but leave the file out there...
1378 : create the posthint manipulation script and leave the file out there...
1383 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1384 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1385 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1386 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1387 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1390 : Some greps do not return status, grrr.
1391 echo "grimblepritz" >grimble
1392 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1394 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1400 : the following should work in any shell
1404 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1405 cat >contains <<'EOSS'
1406 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1411 : Find the path to the source tree
1414 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1417 *) src=`cd ../$src && pwd` ;;
1430 if test -f $rsrc/Configure && \
1431 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1433 : found it, so we are ok.
1436 for src in . .. ../.. ../../.. ../../../..; do
1437 if test -f ../$src/Configure && \
1438 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1449 Sorry, I can't seem to locate the source dir for $package. Please start
1450 Configure with an explicit path -- i.e. /some/path/Configure.
1458 echo "Sources for $package found in \"$src\"." >&4
1462 : script used to extract .SH files with variable substitutions
1463 cat >extract <<'EOS'
1465 echo "Doing variable substitutions on .SH files..."
1466 if test -f $src/MANIFEST; then
1467 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1469 echo "(Looking for .SH files under the source directory.)"
1470 set x `(cd $src; find . -name "*.SH" -print)`
1474 0) set x `(cd $src; echo *.SH)`; shift;;
1476 if test ! -f $src/$1; then
1482 while test $name; do
1483 if test ! -d "$name"; then
1484 create="$name $create";
1485 name=`echo $name | sed -e "s|^[^/]*$||"`;
1486 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1491 for file in $create; do
1500 dir=`expr X$file : 'X\(.*\)/'`
1501 file=`expr X$file : 'X.*/\(.*\)'`
1502 (cd $dir && . ./$file)
1512 dir=`expr X$file : 'X\(.*\)/'`
1513 file=`expr X$file : 'X.*/\(.*\)'`
1514 (set x $dir; shift; eval $mkdir_p)
1524 if test -f $src/config_h.SH; then
1525 if test ! -f config.h; then
1526 : oops, they left it out of MANIFEST, probably, so do it anyway.
1532 : extract files and exit if asked to do so
1533 case "$extractsh" in
1535 case "$realsilent" in
1539 case "$config_sh" in
1540 '') config_sh='config.sh';;
1543 echo "Fetching answers from $config_sh..."
1546 test "$override" && . ./optdef.sh
1555 : Eunice requires " " instead of "", can you believe it
1558 echo "Beginning of configuration questions for $package."
1560 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1562 : first determine how to suppress newline on echo command
1564 echo "Checking echo to see how to suppress newlines..."
1565 (echo "hi there\c" ; echo " ") >.echotmp
1566 if $contains c .echotmp >/dev/null 2>&1 ; then
1577 echo $n "The star should be here-->$c"
1581 : Now test for existence of everything in MANIFEST
1583 if test -f $rsrc/MANIFEST; then
1584 echo "First let's make sure your kit is complete. Checking..." >&4
1585 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1588 for filelist in x??; do
1589 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1591 if test -s missing; then
1595 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1597 You have the option of continuing the configuration process, despite the
1598 distinct possibility that your kit is damaged, by typing 'y'es. If you
1599 do, don't blame me if something goes wrong. I advise you to type 'n'o
1600 and contact the author (perlbug@perl.com).
1603 echo $n "Continue? [n] $c" >&4
1607 echo "Continuing..." >&4
1611 echo "ABORTING..." >&4
1616 echo "Looks good..."
1619 echo "There is no MANIFEST file. I hope your kit is complete !"
1624 : Find the appropriate value for a newline for tr
1625 if test -n "$DJGPP"; then
1628 if test X"$trnl" = X; then
1629 case "`echo foo|tr '\n' x 2>/dev/null`" in
1633 if test X"$trnl" = X; then
1634 case "`echo foo|tr '\012' x 2>/dev/null`" in
1635 foox) trnl='\012' ;;
1638 if test X"$trnl" = X; then
1641 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1647 : compute the number of columns on the terminal for proper question formatting
1652 : set up the echo used in my read
1653 myecho="case \"\$xxxm\" in
1654 '') echo $n \"\$rp $c\" >&4;;
1656 '') echo $n \"[\$xxxm] $c\";;
1658 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1660 echo $n \"[\$xxxm] $c\" >&4
1662 echo $n \"\$rp [\$xxxm] $c\" >&4
1668 : now set up to do reads with possible shell escape and default assignment
1674 case "\$fastread" in
1675 yes) case "\$dflt" in
1678 case "\$silent-\$rp" in
1683 *) case "\$silent" in
1684 true) case "\$rp" in
1689 while expr "X\$ans" : "X!" >/dev/null; do
1693 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1701 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1710 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1715 echo "(OK, I'll run with -d after this question.)" >&4
1718 echo "*** Sorry, \$1 not supported yet." >&4
1728 echo "*** Substitution done -- please confirm."
1730 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1735 echo "*** Error -- try again."
1742 case "\$ans\$xxxm\$nostick" in
1754 : create .config dir to save info across Configure sessions
1755 test -d ../.config || mkdir ../.config
1756 cat >../.config/README <<EOF
1757 This directory created by Configure to save information that should
1758 persist across sessions for $package.
1760 You may safely delete it if you wish.
1763 : general instructions
1766 user=`(logname) 2>/dev/null`
1768 '') user=`whoami 2>&1`;;
1770 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1773 rp='Would you like to see the instructions?'
1784 This installation shell script will examine your system and ask you questions
1785 to determine how the perl5 package should be installed. If you get
1786 stuck on a question, you may use a ! shell escape to start a subshell or
1787 execute a command. Many of the questions will have default answers in square
1788 brackets; typing carriage return will give you the default.
1790 On some of the questions which ask for file or directory names you are allowed
1791 to use the ~name construct to specify the login directory belonging to "name",
1792 even if you don't have a shell which knows about that. Questions where this is
1793 allowed will be marked "(~name ok)".
1797 dflt='Type carriage return to continue'
1801 The prompter used in this script allows you to use shell variables and
1802 backticks in your answers. You may use $1, $2, etc... to refer to the words
1803 in the default answer, as if the default line was a set of arguments given to a
1804 script shell. This means you may also use $* to repeat the whole default line,
1805 so you do not have to re-type everything to add something to the default.
1807 Everytime there is a substitution, you will have to confirm. If there is an
1808 error (e.g. an unmatched backtick), the default answer will remain unchanged
1809 and you will be prompted again.
1811 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1812 the questions and use the computed defaults (or the previous answers if there
1813 was already a config.sh file). Type 'Configure -h' for a list of options.
1814 You may also start interactively and then answer '& -d' at any prompt to turn
1815 on the non-interactive behaviour for the remainder of the execution.
1821 Much effort has been expended to ensure that this shell script will run on any
1822 Unix system. If despite that it blows up on yours, your best bet is to edit
1823 Configure and run it again. If you can't run Configure for some reason,
1824 you'll have to generate a config.sh file by hand. Whatever problems you
1825 have, let me (perlbug@perl.com) know how I blew it.
1827 This installation script affects things in two ways:
1829 1) it may do direct variable substitutions on some of the files included
1831 2) it builds a config.h file for inclusion in C programs. You may edit
1832 any of these files as the need arises after running this script.
1834 If you make a mistake on a question, there is no easy way to back up to it
1835 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1836 files. Configure will offer to let you do this before it runs the SH files.
1839 dflt='Type carriage return to continue'
1841 case "$firsttime" in
1842 true) echo $user >>../.config/instruct;;
1846 : find out where common programs are
1848 echo "Locating common programs..." >&4
1861 if test -d \$dir/\$thing; then
1867 for thisthing in \$dir/\$thing; do
1868 : just loop through to pick last item
1870 if test -f \$thisthing; then
1873 elif test -f \$dir/\$thing.exe; then
1874 if test -n "$DJGPP"; then
1875 echo \$dir/\$thing.exe
1877 : on Eunice apparently
1928 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1929 pth="$pth /lib /usr/lib"
1930 for file in $loclist; do
1934 if test -f "$xxx"; then
1937 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1938 xxx=`./loc $file $file $pth`
1941 '') xxx=`./loc $file $file $pth`;;
1942 *) xxx=`./loc $xxx $xxx $pth`;;
1948 echo $file is in $xxx.
1951 echo $file is in $xxx.
1954 echo "I don't know where '$file' is, and my life depends on it." >&4
1955 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1961 echo "Don't worry if any of the following aren't found..."
1963 for file in $trylist; do
1967 if test -f "$xxx"; then
1970 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1971 xxx=`./loc $file $file $pth`
1974 '') xxx=`./loc $file $file $pth`;;
1975 *) xxx=`./loc $xxx $xxx $pth`;;
1981 echo $file is in $xxx.
1984 echo $file is in $xxx.
1987 echo "I don't see $file out there, $say."
1994 echo "Substituting grep for egrep."
2000 echo "Substituting cp for ln."
2006 echo "Hopefully test is built into your sh."
2009 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2010 echo "Using the test built into your sh."
2018 echo "Hopefully echo is built into your sh."
2023 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2024 $echo $n "hi there$c" >foo1
2025 echo $n "hi there$c" >foo2
2026 if cmp foo1 foo2 >/dev/null 2>&1; then
2027 echo "They are compatible. In fact, they may be identical."
2034 They are not compatible! You are probably running ksh on a non-USG system.
2035 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2036 have echo built in and we may have to run some Bourne shell scripts. That
2037 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2040 $echo $n "The star should be here-->$c"
2047 : determine whether symbolic links are supported
2050 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2051 echo "Symbolic links are supported." >&4
2054 echo "Symbolic links are NOT supported." >&4
2059 : see whether [:lower:] and [:upper:] are supported character classes
2061 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2063 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2067 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2068 # (0xc9 and 0xd1), therefore that is a nice testing point.
2069 if test "X$up" = X -o "X$low" = X; then
2070 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2076 if test "X$up" = X -o "X$low" = X; then
2077 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2083 if test "X$up" = X -o "X$low" = X; then
2084 case "`echo IJ | od -x 2>/dev/null`" in
2086 echo "Hey, this might be EBCDIC." >&4
2087 if test "X$up" = X -o "X$low" = X; then
2088 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2089 ij) up='[A-IJ-RS-Z]'
2094 if test "X$up" = X -o "X$low" = X; then
2095 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2105 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2107 echo "Using $up and $low to convert case." >&4
2110 echo "I don't know how to translate letters from upper to lower case." >&4
2111 echo "Your tr is not acting any way I know of." >&4
2115 : set up the translation script tr, must be called with ./tr of course
2119 '[A-Z][a-z]') exec $tr '$up' '$low';;
2120 '[a-z][A-Z]') exec $tr '$low' '$up';;
2127 : Try to determine whether config.sh was made on this system
2128 case "$config_sh" in
2130 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2131 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2132 # because the A-Z/a-z are not consecutive.
2133 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2134 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2135 newmyuname="$myuname"
2137 case "$knowitall" in
2139 if test -f ../config.sh; then
2140 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2141 eval "`grep myuname= ../config.sh`"
2143 if test "X$myuname" = "X$newmyuname"; then
2151 : Get old answers from old config file if Configure was run on the
2152 : same system, otherwise use the hints.
2155 if test -f config.sh; then
2157 rp="I see a config.sh file. Shall I use it to set the defaults?"
2160 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2161 *) echo "Fetching default answers from your old config.sh file..." >&4
2169 : Older versions did not always set $sh. Catch re-use of such
2178 if test ! -f config.sh; then
2181 First time through, eh? I have some defaults handy for some systems
2182 that need some extra help getting the Configure answers right:
2185 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2187 : Half the following guesses are probably wrong... If you have better
2188 : tests or hints, please send them to perlbug@perl.com
2189 : The metaconfig authors would also appreciate a copy...
2190 $test -f /irix && osname=irix
2191 $test -f /xenix && osname=sco_xenix
2192 $test -f /dynix && osname=dynix
2193 $test -f /dnix && osname=dnix
2194 $test -f /lynx.os && osname=lynxos
2195 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2196 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2197 $test -f /bin/mips && /bin/mips && osname=mips
2198 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2199 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2200 $test -d /usr/apollo/bin && osname=apollo
2201 $test -f /etc/saf/_sactab && osname=svr4
2202 $test -d /usr/include/minix && osname=minix
2203 if $test -d /MachTen -o -d /MachTen_Folder; then
2205 if $test -x /sbin/version; then
2206 osvers=`/sbin/version | $awk '{print $2}' |
2207 $sed -e 's/[A-Za-z]$//'`
2208 elif $test -x /usr/etc/version; then
2209 osvers=`/usr/etc/version | $awk '{print $2}' |
2210 $sed -e 's/[A-Za-z]$//'`
2216 $test -f /sys/posix.dll &&
2217 $test -f /usr/bin/what &&
2218 set X `/usr/bin/what /sys/posix.dll` &&
2219 $test "$3" = UWIN &&
2223 if $test -f $uname; then
2231 umips) osname=umips ;;
2234 [23]100) osname=mips ;;
2235 next*) osname=next ;;
2237 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2238 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2241 elif $test -f /etc/kconfig; then
2243 if test "$lns" = "$ln -s"; then
2245 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2247 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2254 if test -n "$DJGPP"; then
2263 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2265 'not found') osvers="$4"."$3" ;;
2266 '<3240'|'<>3240') osvers=3.2.0 ;;
2267 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2268 '=3250'|'>3250') osvers=3.2.5 ;;
2272 bsd386) osname=bsd386
2275 cygwin*) osname=cygwin
2278 *dc.osx) osname=dcosx
2284 domainos) osname=apollo
2290 dynixptx*) osname=dynixptx
2291 osvers=`echo "$4"|sed 's/^v//'`
2293 freebsd) osname=freebsd
2295 genix) osname=genix ;;
2297 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2313 netbsd*) osname=netbsd
2316 news-os) osvers="$3"
2318 4*) osname=newsos4 ;;
2322 next*) osname=next ;;
2323 POSIX-BC | posix-bc ) osname=posix-bc
2326 powerux | power_ux | powermax_os | powermaxos | \
2327 powerunix | power_unix) osname=powerux
2333 solaris) osname=solaris
2335 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2342 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2346 titanos) osname=titanos
2355 ultrix) osname=ultrix
2358 osf1|mls+) case "$5" in
2361 osvers=`echo "$3" | sed 's/^[xvt]//'`
2363 hp*) osname=hp_osf1 ;;
2364 mips) osname=mips_osf1 ;;
2367 unixware) osname=svr5
2373 $2) case "$osname" in
2377 : svr4.x or possibly later
2387 if test -f /stand/boot ; then
2388 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2389 if test -n "$INITPROG" -a -f "$INITPROG"; then
2390 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2391 if test -n "$isesix"; then
2399 *) if test -f /etc/systemid; then
2401 set `echo $3 | $sed 's/\./ /g'` $4
2402 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2404 elif $test -f $src/hints/sco_$1_$2.sh; then
2406 elif $test -f $src/hints/sco_$1.sh; then
2411 '') : Still unknown. Probably a generic Sys V.
2420 *) case "$osname" in
2421 '') : Still unknown. Probably a generic BSD.
2429 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2430 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2431 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2434 $rm -f UU/kernel.what
2435 elif test -d c:/.; then
2442 : Now look for a hint file osname_osvers, unless one has been
2443 : specified already.
2446 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2447 : Also try without trailing minor version numbers.
2448 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2449 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2450 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2451 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2454 *) case "$osvers" in
2457 *) if $test -f $src/hints/$file.sh ; then
2459 elif $test -f $src/hints/$xfile.sh ; then
2461 elif $test -f $src/hints/$xxfile.sh ; then
2463 elif $test -f $src/hints/$xxxfile.sh ; then
2465 elif $test -f $src/hints/$xxxxfile.sh ; then
2467 elif $test -f "$src/hints/${osname}.sh" ; then
2476 if $test -f Policy.sh ; then
2479 none) dflt="Policy" ;;
2480 *) dflt="Policy $dflt" ;;
2485 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2489 if $test -f Policy.sh ; then
2492 There's also a Policy hint file available, which should make the
2493 site-specific (policy) questions easier to answer.
2500 You may give one or more space-separated answers, or "none" if appropriate.
2501 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2502 is a good thing. DO NOT give a wrong version or a wrong OS.
2506 rp="Which of these apply, if any?"
2509 for file in $tans; do
2510 if $test X$file = XPolicy -a -f Policy.sh; then
2512 $cat Policy.sh >> UU/config.sh
2513 elif $test -f $src/hints/$file.sh; then
2514 . $src/hints/$file.sh
2515 $cat $src/hints/$file.sh >> UU/config.sh
2516 elif $test X$tans = X -o X$tans = Xnone ; then
2519 : Give one chance to correct a possible typo.
2520 echo "$file.sh does not exist"
2522 rp="hint to use instead?"
2524 for file in $ans; do
2525 if $test -f "$src/hints/$file.sh"; then
2526 . $src/hints/$file.sh
2527 $cat $src/hints/$file.sh >> UU/config.sh
2528 elif $test X$ans = X -o X$ans = Xnone ; then
2531 echo "$file.sh does not exist -- ignored."
2538 : Remember our hint file for later.
2539 if $test -f "$src/hints/$file.sh" ; then
2549 echo "Fetching default answers from $config_sh..." >&4
2553 cp $config_sh config.sh 2>/dev/null
2563 test "$override" && . ./optdef.sh
2564 myuname="$newmyuname"
2566 : Restore computed paths
2567 for file in $loclist $trylist; do
2568 eval $file="\$_$file"
2573 Configure uses the operating system name and version to set some defaults.
2574 The default value is probably right if the name rings a bell. Otherwise,
2575 since spelling matters for me, either accept the default or answer "none"
2582 ''|' '|none) dflt=none ;;
2583 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2586 *) dflt="$osname" ;;
2588 rp="Operating system name?"
2592 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2598 ''|' '|none) dflt=none ;;
2599 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2600 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2602 ''|' ') dflt=none ;;
2607 *) dflt="$osvers" ;;
2609 rp="Operating system version?"
2619 : who configured the system
2620 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2621 cf_by=`(logname) 2>/dev/null`
2624 cf_by=`(whoami) 2>/dev/null`
2626 "") cf_by=unknown ;;
2630 : set up the script used to warn in case of inconsistency
2637 echo "*** WHOA THERE!!! ***" >&4
2638 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2639 rp=" Keep the $hint value?"
2642 y) td=$was; tu=$was;;
2646 : function used to set $1 to $val
2647 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2649 $define$undef) . ./whoa; eval "$var=\$td";;
2650 $undef$define) . ./whoa; eval "$var=\$tu";;
2651 *) eval "$var=$val";;
2656 Perl can be built to take advantage of threads, on some systems.
2657 To do so, Configure must be run with -Dusethreads.
2659 Note that threading is a highly experimental feature, and
2660 some known race conditions still remain. If you choose to try
2661 it, be very sure to not actually deploy it for production
2662 purposes. README.threads has more details, and is required
2663 reading if you enable threads.
2665 case "$usethreads" in
2666 $define|true|[yY]*) dflt='y';;
2669 rp='Build a threading Perl?'
2672 y|Y) val="$define" ;;
2678 case "$usethreads" in
2682 As of 5.5.640, Perl has two different internal threading implementations,
2683 the 5.005 version (5005threads) and an interpreter-based version
2684 (ithreads) that has one interpreter per thread. Both are very
2685 experimental. This arrangement exists to help developers work out
2686 which one is better.
2688 : Default to ithreads unless overridden on command line or with
2691 case "$use5005threads" in
2692 $define|true|[yY]*) dflt='n';;
2694 case "$useithreads" in
2695 $undef|false|[nN]*) dflt='n';;
2697 rp='Use interpreter-based ithreads?'
2700 y|Y) val="$define" ;;
2705 : Now set use5005threads to the opposite value.
2706 case "$useithreads" in
2707 $define) val="$undef" ;;
2714 useithreads="$undef"
2715 use5005threads="$undef"
2719 case "$d_oldpthreads" in
2720 '') : Configure tests would be welcome here. For now, assume undef.
2722 *) val="$d_oldpthreads" ;;
2728 case "$usethreads" in
2729 "$define"|true|[yY]*)
2730 : Look for a hint-file generated 'call-back-unit'. If the
2731 : user has specified that a threading perl is to be built,
2732 : we may need to set or change some other defaults.
2733 if $test -f usethreads.cbu; then
2734 echo "Your platform has some specific hints for threaded builds, using them..."
2738 (Your platform doesn't have any specific hints for threaded builds.
2739 Assuming POSIX threads, then.)
2747 Perl can be built so that multiple Perl interpreters can coexist
2748 within the same Perl executable.
2751 case "$useithreads" in
2754 This multiple interpreter support is required for interpreter-based threads.
2759 echo 'Normally you do not need this and you should answer no.'
2760 case "$usemultiplicity" in
2761 $define|true|[yY]*) dflt='y';;
2764 rp='Build Perl for multiplicity?'
2767 y|Y) val="$define" ;;
2775 : determine where manual pages are on this system
2779 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2780 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2781 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2782 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2783 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2784 sysman=`./loc . /usr/man/man1 $syspath`
2787 if $test -d "$sysman"; then
2788 echo "System manual is in $sysman." >&4
2790 echo "Could not find manual pages in source form." >&4
2793 : see what memory models we can support
2796 $cat >pdp11.c <<'EOP'
2805 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2806 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2807 dflt='unsplit split'
2809 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2812 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2817 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2820 if $test -d /lib/large || $test -d /usr/lib/large; then
2823 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2832 Some systems have different model sizes. On most systems they are called
2833 small, medium, large, and huge. On the PDP11 they are called unsplit and
2834 split. If your system doesn't support different memory models, say "none".
2835 If you wish to force everything to one memory model, say "none" here and
2836 put the appropriate flags later when it asks you for other cc and ld flags.
2837 Venix systems may wish to put "none" and let the compiler figure things out.
2838 (In the following question multiple model names should be space separated.)
2840 The default for most systems is "none".
2843 rp="Which memory models are supported?"
2858 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2859 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2866 rp="What flag indicates separate I and D space?"
2874 *large*|*small*|*medium*|*huge*)
2881 rp="What flag indicates large model?"
2891 *huge*) case "$huge" in
2895 rp="What flag indicates huge model?"
2905 *medium*) case "$medium" in
2909 rp="What flag indicates medium model?"
2916 *) medium="$large";;
2919 *small*) case "$small" in
2923 rp="What flag indicates small model?"
2934 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2937 $rm -f pdp11.* pdp11
2939 : make some quick guesses about what we are up against
2941 $echo $n "Hmm... $c"
2951 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2952 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2954 echo "Looks kind of like an OSF/1 system, but we'll see..."
2956 elif test `echo abc | tr a-z A-Z` = Abc ; then
2957 xxx=`./loc addbib blurfl $pth`
2958 if $test -f $xxx; then
2959 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2963 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2964 echo "Looks kind of like an extended USG system, but we'll see..."
2966 echo "Looks kind of like a USG system, but we'll see..."
2970 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2971 echo "Looks kind of like a BSD system, but we'll see..."
2975 echo "Looks kind of like a Version 7 system, but we'll see..."
2978 case "$eunicefix" in
2981 There is, however, a strange, musty smell in the air that reminds me of
2982 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2986 : it so happens the Eunice I know will not run shell scripts in Unix format
2990 echo "Congratulations. You aren't running Eunice."
2994 : Detect OS2. The p_ variable is set above in the Head.U unit.
2999 I have the feeling something is not exactly right, however...don't tell me...
3000 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3005 if test -f /xenix; then
3006 echo "Actually, this looks more like a XENIX system..."
3011 echo "It's not Xenix..."
3016 if test -f /venix; then
3017 echo "Actually, this looks more like a VENIX system..."
3024 echo "Nor is it Venix..."
3027 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3028 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3031 : see if we need a special compiler
3039 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3040 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3054 On some older systems the default C compiler will not resolve multiple global
3055 references that happen to have the same name. On some such systems the "Mcc"
3056 command may be used to force these to be resolved. On other systems a "cc -M"
3057 command is required. (Note that the -M flag on other systems indicates a
3058 memory model to use!) If you have the Gnu C compiler, you might wish to use
3064 rp="Use which C compiler?"
3072 rp="Use which C compiler?"
3076 : Look for a hint-file generated 'call-back-unit'. Now that the
3077 : user has specified the compiler, we may need to set or change some
3079 if $test -f cc.cbu; then
3083 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3084 $cat >gccvers.c <<EOM
3089 printf("%s\n", __VERSION__);
3091 printf("%s\n", "1");
3097 if $cc -o gccvers gccvers.c; then
3098 gccversion=`./gccvers`
3099 case "$gccversion" in
3100 '') echo "You are not using GNU cc." ;;
3101 *) echo "You are using GNU cc $gccversion." ;;
3105 echo "*** WHOA THERE!!! ***" >&4
3106 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3107 case "$knowitall" in
3109 echo " You'd better start hunting for one and let me know about it." >&4
3115 case "$gccversion" in
3116 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3119 : see how we invoke the C preprocessor
3121 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3122 cat <<'EOT' >testcpp.c
3128 if test ! -f cppstdin; then
3129 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3130 # AIX cc -E doesn't show the absolute headerfile
3131 # locations but we'll cheat by using the -M flag.
3132 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3134 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3137 echo "Keeping your $hint cppstdin wrapper."
3140 wrapper=`pwd`/cppstdin
3144 if $test "X$cppstdin" != "X" && \
3145 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3146 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3148 echo "You used to use $cppstdin $cppminus so we'll use that again."
3150 '') echo "But let's see if we can live without a wrapper..." ;;
3152 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3153 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3155 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3158 echo "(However, $cpprun $cpplast does not work, let's see...)"
3166 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3173 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3174 $cc -E <testcpp.c >testcpp.out 2>&1; \
3175 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3176 echo "Yup, it does."
3179 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3180 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3181 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3182 echo "Yup, it does."
3185 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3186 $cc -P <testcpp.c >testcpp.out 2>&1; \
3187 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3188 echo "Yipee, that works!"
3191 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3192 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3193 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3194 echo "At long last!"
3197 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3198 $cpp <testcpp.c >testcpp.out 2>&1; \
3199 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3203 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3204 $cpp - <testcpp.c >testcpp.out 2>&1; \
3205 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3206 echo "Hooray, it works! I was beginning to wonder."
3209 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3210 $wrapper <testcpp.c >testcpp.out 2>&1; \
3211 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3217 rp="No dice. I can't find a C preprocessor. Name one:"
3221 $x_cpp <testcpp.c >testcpp.out 2>&1
3222 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3223 echo "OK, that will do." >&4
3225 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3240 echo "Perhaps can we force $cc -E using a wrapper..."
3241 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3242 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3248 echo "Nope, we'll have to live without it..."
3262 "$wrapper"|'cppstdin') ;;
3263 *) $rm -f $wrapper;;
3265 $rm -f testcpp.c testcpp.out
3267 : decide how portable to be. Allow command line overrides.
3268 case "$d_portable" in
3270 *) d_portable="$define" ;;
3273 : set up shell script to do ~ expansion
3279 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3282 if $test -f /bin/csh; then
3283 /bin/csh -f -c "glob \$1"
3288 name=\`$expr x\$1 : '..\([^/]*\)'\`
3289 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3290 if $test ! -d "\$dir"; then
3292 echo "\$me: can't locate home directory for: \$name" >&2
3297 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3313 : now set up to get a file name
3317 cat <<'EOSC' >>getfile
3333 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3334 fn=`echo $fn | sed 's/(.*)//'`
3340 loc_file=`expr $fn : '.*:\(.*\)'`
3341 fn=`expr $fn : '\(.*\):.*'`
3349 */*) fullpath=true;;
3358 *e*) exp_file=true;;
3361 *p*) nopath_ok=true;;
3366 *d*) type='Directory';;
3367 *l*) type='Locate';;
3372 Locate) what='File';;
3377 case "$d_portable" in
3385 while test "$type"; do
3390 true) rp="$rp (~name ok)";;
3393 if test -f UU/getfile.ok && \
3394 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3413 value=`UU/filexp $ans`
3416 if test "$ans" != "$value"; then
3417 echo "(That expands to $value on this system.)"
3431 /*) value="$ansexp" ;;
3436 echo "I shall only accept a full path name, as in /bin/ls." >&4
3437 echo "Use a ! shell escape if you wish to check pathnames." >&4
3440 echo "Please give a full path name, starting with slash." >&4
3443 echo "Note that using ~name is ok provided it expands well." >&4
3456 for fp in $gfpth; do
3457 if test "X$fp" = X.; then
3462 if test -f "$pf"; then
3464 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3466 echo "($value is not a plain file, but that's ok.)"
3469 if test X"$type" = X; then
3476 for fp in $gfpth; do
3477 if test "X$fp" = X.; then
3482 if test -d "$pf"; then
3490 if test -d "$ansexp"; then
3491 echo "(Looking for $loc_file in directory $value.)"
3492 value="$value/$loc_file"
3493 ansexp="$ansexp/$loc_file"
3495 if test -f "$ansexp"; then
3498 case "$nopath_ok" in
3499 true) case "$value" in
3501 *) echo "Assuming $value will be in people's path."
3517 if test "$fastread" = yes; then
3522 rp="$what $value doesn't exist. Use that name anyway?"
3541 test "X$gfpthkeep" != Xy && gfpth=""
3544 : What should the include directory be ?
3546 $echo $n "Hmm... $c"
3550 if $test -f /bin/mips && /bin/mips; then
3551 echo "Looks like a MIPS system..."
3552 $cat >usr.c <<'EOCP'
3553 #ifdef SYSTYPE_BSD43
3557 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3558 dflt='/bsd43/usr/include'
3562 mips_type='System V'
3564 $rm -f usr.c usr.out
3565 echo "and you're compiling with the $mips_type compiler and libraries."
3569 echo "Doesn't look like a MIPS system."
3579 case "$xxx_prompt" in
3582 rp='Where are the include files you want to use?'
3590 : Set private lib path
3593 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3598 '') dlist="$loclibpth $plibpth $glibpth";;
3599 *) dlist="$libpth";;
3602 : Now check and see which directories actually exist, avoiding duplicates
3606 if $test -d $xxx; then
3609 *) libpth="$libpth $xxx";;
3615 Some systems have incompatible or broken versions of libraries. Among
3616 the directories listed in the question below, please remove any you
3617 know not to be holding relevant libraries, and add any that are needed.
3618 Say "none" for none.
3629 rp="Directories to use for library searches?"
3636 : compute shared library extension
3639 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3649 On some systems, shared libraries may be available. Answer 'none' if
3650 you want to suppress searching of shared libraries for the remaining
3651 of this configuration.
3654 rp='What is the file extension used for shared libraries?'
3658 : Define several unixisms.
3659 : Hints files or command line option can be used to override them.
3660 : The convoluted testing is in case hints files set either the old
3663 '') case "$exe_ext" in
3665 *) _exe="$exe_ext" ;;
3670 '') case "$lib_ext" in
3677 '') case "$obj_ext" in
3684 '') case "$path_sep" in
3695 : Which makefile gets called first. This is used by make depend.
3696 case "$firstmakefile" in
3697 '') firstmakefile='makefile';;
3702 Perl can be built to use the SOCKS proxy protocol library. To do so,
3703 Configure must be run with -Dusesocks.
3705 Normally you do not need this and you should answer no.
3709 $define|true|[yY]*) dflt='y';;
3712 rp='Build Perl for SOCKS?'
3715 y|Y) val="$define" ;;
3721 : Looking for optional libraries
3723 echo "Checking for optional libraries..." >&4
3728 case "$libswanted" in
3729 '') libswanted='c_s';;
3733 libswanted="$libswanted socks5 socks5_sh"
3736 for thislib in $libswanted; do
3738 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3739 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3740 echo "Found -l$thislib (shared)."
3743 *) dflt="$dflt -l$thislib";;
3745 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3746 echo "Found -l$thislib (shared)."
3749 *) dflt="$dflt -l$thislib";;
3751 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3752 echo "Found -l$thislib."
3755 *) dflt="$dflt -l$thislib";;
3757 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3758 echo "Found -l$thislib."
3761 *) dflt="$dflt -l$thislib";;
3763 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3764 echo "Found -l${thislib}_s."
3767 *) dflt="$dflt -l${thislib}_s";;
3769 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3770 echo "Found -l$thislib."
3773 *) dflt="$dflt -l$thislib";;
3776 echo "No -l$thislib."
3787 ' '|'') dflt='none';;
3792 In order to compile $package on your machine, a number of libraries
3793 are usually needed. Include any other special libraries here as well.
3794 Say "none" for none. The default list is almost always right.
3798 rp="What libraries to use?"
3805 : determine optimization, if desired, or use for debug flag also
3807 ' '|$undef) dflt='none';;
3809 *) dflt="$optimize";;
3813 By default, $package compiles with the -O flag to use the optimizer.
3814 Alternately, you might want to use the symbolic debugger, which uses
3815 the -g flag (on traditional Unix systems). Either flag can be
3816 specified here. To use neither flag, specify the word "none".
3819 rp="What optimizer/debugger flag should be used?"
3823 'none') optimize=" ";;
3827 : We will not override a previous value, but we might want to
3828 : augment a hint file
3830 default|recommended)
3831 case "$gccversion" in
3832 1*) dflt='-fpcc-struct-return' ;;
3835 *-g*) dflt="$dflt -DDEBUGGING";;
3837 case "$gccversion" in
3838 2*) if test -d /etc/conf/kconfig.d &&
3839 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3845 case "$gccversion" in
3849 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3850 echo 'int main(void) { return 0; }' > gcctest.c
3851 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3852 echo "Yes, it does." 2>&1
3855 echo "Leaving current flags $ccflags alone." 2>&1
3857 *) dflt="$dflt -fno-strict-aliasing" ;;
3860 echo "Nope, it doesn't, but that's ok." 2>&1
3867 case "$mips_type" in
3868 *BSD*|'') inclwanted="$locincpth $usrinc";;
3869 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3871 for thisincl in $inclwanted; do
3872 if $test -d $thisincl; then
3873 if $test x$thisincl != x$usrinc; then
3876 *) dflt="$dflt -I$thisincl";;
3882 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3884 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3892 *) dflt="$dflt -D$2";;
3896 set signal.h LANGUAGE_C; eval $inctest
3900 ccflags="$ccflags -DSOCKS"
3905 default|recommended) dflt="$ccflags $dflt" ;;
3906 *) dflt="$ccflags";;
3914 Your C compiler may want other flags. For this question you should include
3915 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3916 but you should NOT include libraries or ld flags like -lwhatever. If you
3917 want $package to honor its debug switch, you should include -DDEBUGGING here.
3918 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3920 To use no flags, specify the word "none".
3926 rp="Any additional cc flags?"
3933 : the following weeds options from ccflags that are of no interest to cpp
3935 case "$gccversion" in
3936 1*) cppflags="$cppflags -D__GNUC__"
3938 case "$mips_type" in
3940 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3946 echo "Let me guess what the preprocessor flags are..." >&4
3960 *) ftry="$previous $flag";;
3962 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3963 >cpp1.out 2>/dev/null && \
3964 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3965 >cpp2.out 2>/dev/null && \
3966 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3967 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3969 cppflags="$cppflags $ftry"
3979 *-*) echo "They appear to be: $cppflags";;
3981 $rm -f cpp.c cpp?.out
3985 : flags used in final linking phase
3987 '') if ./venix; then
3993 *-posix*) dflt="$dflt -posix" ;;
3996 *) dflt="$ldflags";;
3999 : Try to guess additional flags to pick up local libraries.
4000 for thislibdir in $libpth; do
4001 case " $loclibpth " in
4004 *"-L$thislibdir "*) ;;
4005 *) dflt="$dflt -L$thislibdir" ;;
4017 Your C linker may need flags. For this question you should
4018 include -L/whatever and any other flags used by the C linker, but you
4019 should NOT include libraries like -lwhatever.
4021 Make sure you include the appropriate -L/path flags if your C linker
4022 does not normally search all of the directories you specified above,
4025 To use no flags, specify the word "none".
4029 rp="Any additional ld flags (NOT including libraries)?"
4035 rmlist="$rmlist pdp11"
4039 echo "Checking your choice of C compiler and flags for coherency..." >&4
4040 $cat > try.c <<'EOF'
4042 int main() { printf("Ok\n"); exit(0); }
4044 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4046 $cat >try.msg <<'EOM'
4047 I've tried to compile and run the following simple program:
4050 $cat try.c >> try.msg
4052 $cat >> try.msg <<EOM
4059 and I got the following output:
4063 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4064 if sh -c './try' >>try.msg 2>&1; then
4068 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4071 cat >> try.msg <<'EOQS'
4072 If $libs contains -lsfio, and sfio is mis-configured, then it
4073 sometimes (apparently) runs and exits with a 0 status, but with no
4074 output! It may have to do with sfio's use of _exit vs. exit.
4077 rp="You have a big problem. Shall I abort Configure"
4084 echo "The program compiled OK, but exited with status $?." >>try.msg
4085 rp="You have a problem. Shall I abort Configure"
4089 echo "I can't compile the test program." >>try.msg
4090 rp="You have a BIG problem. Shall I abort Configure"
4096 case "$knowitall" in
4098 echo "(The supplied flags or libraries might be incorrect.)"
4106 *) echo "Ok. Stopping Configure." >&4
4111 n) echo "OK, that should do.";;
4113 $rm -f try try.* core
4115 : define an is-a-typedef? function
4116 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4118 "") inclist="sys/types.h";;
4120 eval "varval=\$$var";
4124 for inc in $inclist; do
4125 echo "#include <$inc>" >>temp.c;
4127 echo "#ifdef $type" >> temp.c;
4128 echo "printf(\"We have $type\");" >> temp.c;
4129 echo "#endif" >> temp.c;
4130 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4131 if $contains $type temp.E >/dev/null 2>&1; then
4137 *) eval "$var=\$varval";;
4140 : define an is-a-typedef? function that prompts if the type is not available.
4141 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4143 "") inclist="sys/types.h";;
4145 eval "varval=\$$var";
4149 for inc in $inclist; do
4150 echo "#include <$inc>" >>temp.c;
4152 echo "#ifdef $type" >> temp.c;
4153 echo "printf(\"We have $type\");" >> temp.c;
4154 echo "#endif" >> temp.c;
4155 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4157 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4158 if $contains $type temp.E >/dev/null 2>&1; then
4159 echo "$type found." >&4;
4162 echo "$type NOT found." >&4;
4168 *) eval "$var=\$varval";;
4171 : define a shorthand compile call
4175 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4176 : define a shorthand compile call for compilations that should be ok.
4180 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4182 : check for lengths of integral types
4186 echo "Checking to see how big your integers are..." >&4
4187 $cat >intsize.c <<'EOCP'
4191 printf("intsize=%d;\n", (int)sizeof(int));
4192 printf("longsize=%d;\n", (int)sizeof(long));
4193 printf("shortsize=%d;\n", (int)sizeof(short));
4198 if eval $compile_ok && ./intsize > /dev/null; then
4200 echo "Your integers are $intsize bytes long."
4201 echo "Your long integers are $longsize bytes long."
4202 echo "Your short integers are $shortsize bytes long."
4206 Help! I can't compile and run the intsize test program: please enlighten me!
4207 (This is probably a misconfiguration in your system or libraries, and
4208 you really ought to fix it. Still, I'll try anyway.)
4212 rp="What is the size of an integer (in bytes)?"
4216 rp="What is the size of a long integer (in bytes)?"
4220 rp="What is the size of a short integer (in bytes)?"
4226 $rm -f intsize intsize.*
4228 : see what type lseek is declared as in the kernel
4229 rp="What is the type used for lseek's offset on this system?"
4230 set off_t lseektype long stdio.h sys/types.h
4234 $echo $n "Checking to see how big your file offsets are...$c" >&4
4236 #include <sys/types.h>
4240 printf("%d\n", (int)sizeof($lseektype));
4245 if eval $compile_ok; then
4247 $echo " $lseeksize bytes." >&4
4251 echo "(I can't seem to compile the test program. Guessing...)"
4252 rp="What is the size of your file offsets (in bytes)?"
4258 : see what type file positions are declared as in the library
4259 rp="What is the type for file position used by fsetpos()?"
4260 set fpos_t fpostype long stdio.h sys/types.h
4265 *_t) zzz="$fpostype" ;;
4268 $echo $n "Checking the size of $zzz...$c" >&4
4270 #include <sys/types.h>
4273 printf("%d\n", (int)sizeof($fpostype));
4278 if eval $compile_ok; then
4283 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4286 echo " $fpossize bytes."
4292 echo "(I can't compile the test program. Guessing...)" >&4
4293 rp="What is the size of your file positions (in bytes)?"
4300 case "$lseeksize:$fpossize" in
4303 You can have files larger than 2 gigabytes.
4308 Perl can be built to understand large files (files larger than 2 gigabytes)
4309 on some systems. To do so, Configure must be run with -Duselargefiles.
4311 If this doesn't make any sense to you, just accept the default 'y'.
4313 case "$uselargefiles" in
4314 "$undef"|false|[nN]*) dflt='n' ;;
4317 rp='Try to understand large files, if available?'
4320 y|Y) val="$define" ;;
4327 case "$uselargefiles" in
4329 : Look for a hint-file generated 'call-back-unit'. If the
4330 : user has specified that a large files perl is to be built,
4331 : we may need to set or change some other defaults.
4332 if $test -f uselfs.cbu; then
4333 echo "Your platform has some specific hints for large file builds, using them..."
4336 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4338 #include <sys/types.h>
4342 printf("%d\n", (int)sizeof($lseektype));
4347 if eval $compile_ok; then
4349 $echo " $lseeksize bytes." >&4
4353 echo "(I can't seem to compile the test program. Guessing...)"
4354 rp="What is the size of your file offsets (in bytes)?"
4359 *_t) zzz="$fpostype" ;;
4362 $echo $n "Rechecking the size of $zzz...$c" >&4
4364 #include <sys/types.h>
4367 printf("%d\n", (int)sizeof($fpostype));
4372 if eval $compile_ok; then
4377 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4380 echo " $fpossize bytes."
4386 echo "(I can't compile the test program. Guessing...)" >&4
4387 rp="What is the size of your file positions (in bytes)?"
4397 case "$usemorebits" in
4398 "$define"|true|[yY]*)
4400 uselongdouble="$define"
4401 usemorebits="$define"
4403 *) usemorebits="$undef"
4408 case "$intsize:$longsize" in
4411 You have natively 64-bit integers.
4416 Perl can be built to take advantage of 64-bit integer types
4417 on some systems. To do so, Configure must be run with -Duse64bits.
4419 If this doesn't make any sense to you, just accept the default.
4421 case "$use64bits" in
4422 $define|true|[yY]*) dflt='y';;
4425 rp='Try to use 64-bit integers, if available?'
4428 y|Y) val="$define" ;;
4436 case "$archname64" in
4437 '') archname64='' ;; # not a typo
4440 case "$use64bits" in
4441 "$define"|true|[yY]*)
4442 : Look for a hint-file generated 'call-back-unit'. If the
4443 : user has specified that a 64-bit perl is to be built,
4444 : we may need to set or change some other defaults.
4445 if $test -f use64bits.cbu; then
4446 echo "Your platform has some specific hints for 64-bit builds, using them..."
4450 (Your platform doesn't have any specific hints for 64-bit builds.)
4452 case "$intsize:$longsize" in
4454 (This is probably okay, as your system is a natively 64-bit system.)
4458 case "$gccversion" in
4460 *) case "$ccflags" in
4461 *-DUSE_LONG_LONG*) ;;
4463 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4464 to the compilation flags.
4466 ccflags="$ccflags -DUSE_LONG_LONG"
4475 : determine the architecture name
4477 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4478 tarch=`arch`"-$osname"
4479 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4480 if uname -m > tmparch 2>&1 ; then
4481 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4482 -e 's/$/'"-$osname/" tmparch`
4490 case "$myarchname" in
4493 echo "(Your architecture name used to be $myarchname.)"
4500 *) dflt="$archname";;
4502 rp='What is your architecture name'
4505 case "$usethreads" in
4507 echo "Threads selected." >&4
4509 *-thread*) echo "...and architecture name already has -thread." >&4
4511 *) archname="$archname-thread"
4512 echo "...setting architecture name to $archname." >&4
4517 case "$usemultiplicity" in
4519 echo "Multiplicity selected." >&4
4521 *-multi*) echo "...and architecture name already has -multi." >&4
4523 *) archname="$archname-multi"
4524 echo "...setting architecture name to $archname." >&4
4529 case "$use64bits" in
4531 case "$archname64" in
4536 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4538 *) archname="$archname-$archname64"
4539 echo "...setting architecture name to $archname." >&4
4546 : determine root of directory hierarchy where package will be installed.
4549 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4557 By default, $package will be installed in $dflt/bin, manual pages
4558 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4559 installation directories. Typically this is something like /usr/local.
4560 If you wish to have binaries under /usr/bin but other parts of the
4561 installation under /usr/local, that's ok: you will be prompted
4562 separately for each of the installation directories, the prefix being
4563 only used to set the defaults.
4567 rp='Installation prefix to use?'
4575 *) oldprefix="$prefix";;
4585 $define|true) afs=true ;;
4586 $undef|false) afs=false ;;
4587 *) if test -d /afs; then
4595 echo "AFS may be running... I'll be extra cautious then..." >&4
4597 echo "AFS does not seem to be running..." >&4
4600 : determine installation prefix for where package is to be installed.
4604 Since you are running AFS, I need to distinguish the directory in which
4605 files will reside from the directory in which they are installed (and from
4606 which they are presumably copied to the former directory by occult means).
4609 case "$installprefix" in
4610 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4611 *) dflt="$installprefix";;
4616 In some special cases, particularly when building $package for distribution,
4617 it is convenient to distinguish between the directory in which files should
4618 be installed from the directory ($prefix) in which they
4619 will eventually reside. For most users, these two directories are the same.
4622 case "$installprefix" in
4624 *) dflt=$installprefix;;
4628 rp='What installation prefix should I use for installing files?'
4630 installprefix="$ans"
4631 installprefixexp="$ansexp"
4633 : set the prefixit variable, to compute a suitable default value
4634 prefixit='case "$3" in
4636 case "$oldprefix" in
4637 "") eval "$1=\"\$$2\"";;
4644 ""|" ") eval "$1=\"\$$2\"";;
4650 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4652 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4653 /*-$oldprefix/*|\~*-$oldprefix/*)
4654 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4655 *) eval "$1=\"\$$2\"";;
4659 : set the base revision
4663 : get the patchlevel
4665 echo "Getting the current patchlevel..." >&4
4666 if $test -r $rsrc/patchlevel.h;then
4667 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4668 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4669 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4670 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4671 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4679 $echo $n "(You have $package" $c
4682 *) $echo $n " $baserev" $c ;;
4684 $echo $n " patchlevel $patchlevel" $c
4685 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4688 dos|cygwin|vms|win32)
4689 : XXX Should be a Configure test for double-dots in filenames.
4690 version=`echo $baserev $patchlevel $subversion | \
4691 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4692 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4693 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4696 version=`echo $baserev $patchlevel $subversion | \
4697 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4698 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4699 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4702 : Special case the 5.005_xx maintenance series, which used 5.005
4703 : without any subversion label as a subdirectory in $sitelib
4704 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4705 api_versionstring='5.005'
4708 : determine installation style
4709 : For now, try to deduce it from prefix unless it is already set.
4710 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4711 case "$installstyle" in
4712 '') case "$prefix" in
4713 *perl*) dflt='lib';;
4714 *) dflt='lib/perl5' ;;
4717 *) dflt='lib/perl5' ;;
4719 : Probably not worth prompting for this since we prompt for all
4720 : the directories individually, and the prompt would be too long and
4724 : determine where private library files go
4725 : Usual default is /usr/local/lib/perl5/$version.
4726 : Also allow things like /opt/perl/lib/$version, since
4727 : /opt/perl/lib/perl5... would be redundant.
4728 : The default "style" setting is made in installstyle.U
4729 case "$installstyle" in
4730 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4731 *) set dflt privlib lib/$version ;;
4736 There are some auxiliary files for $package that need to be put into a
4737 private library directory that is accessible by everyone.
4741 rp='Pathname where the private library files will reside?'
4744 privlibexp="$ansexp"
4745 : Change installation prefix, if necessary.
4746 if $test X"$prefix" != X"$installprefix"; then
4747 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4749 installprivlib="$privlibexp"
4752 : set the prefixup variable, to restore leading tilda escape
4753 prefixup='case "$prefixexp" in
4755 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4758 : determine where public architecture dependent libraries go
4761 : privlib default is /usr/local/lib/$package/$version
4762 : archlib default is /usr/local/lib/$package/$version/$archname
4763 : privlib may have an optional trailing /share.
4764 tdflt=`echo $privlib | $sed 's,/share$,,'`
4765 tdflt=$tdflt/$archname
4774 $spackage contains architecture-dependent library files. If you are
4775 sharing libraries in a heterogeneous environment, you might store
4776 these files in a separate location. Otherwise, you can just include
4777 them with the rest of the public library files.
4781 rp='Where do you want to put the public architecture-dependent libraries?'
4784 archlibexp="$ansexp"
4785 if $test X"$archlib" = X"$privlib"; then
4790 : Change installation prefix, if necessary.
4791 if $test X"$prefix" != X"$installprefix"; then
4792 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4794 installarchlib="$archlibexp"
4798 : Binary compatibility with 5.005 is not possible for builds
4799 : with advanced features
4800 case "$usethreads$usemultiplicity" in
4802 bincompat5005="$undef"
4803 d_bincompat5005="$undef"
4807 Perl 5.006 can be compiled for binary compatibility with 5.005.
4808 If you decide to do so, you will be able to continue using most
4809 of the extensions that were compiled for Perl 5.005.
4812 case "$bincompat5005$d_bincompat5005" in
4813 *"$undef"*) dflt=n ;;
4816 rp='Binary compatibility with Perl 5.005?'
4819 y*) val="$define" ;;
4824 case "$d_bincompat5005" in
4826 bincompat5005="$define"
4828 *) bincompat5005="$undef"
4829 d_bincompat5005="$undef"
4836 : see if setuid scripts can be secure
4839 Some kernels have a bug that prevents setuid #! scripts from being
4840 secure. Some sites have disabled setuid #! scripts because of this.
4842 First let's decide if your kernel supports secure setuid #! scripts.
4843 (If setuid #! scripts would be secure but have been disabled anyway,
4844 don't say that they are secure if asked.)
4849 if $test -d /dev/fd; then
4850 echo "#!$ls" >reflect
4851 chmod +x,u+s reflect
4852 ./reflect >flect 2>&1
4853 if $contains "/dev/fd" flect >/dev/null; then
4854 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4858 If you are not sure if they are secure, I can check but I'll need a
4859 username and password different from the one you are using right now.
4860 If you don't have such a username or don't want me to test, simply
4864 rp='Other username to test security of setuid scripts with?'
4869 case "$d_suidsafe" in
4870 '') echo "I'll assume setuid scripts are *not* secure." >&4
4873 echo "Well, the $hint value is *not* secure." >&4
4875 *) echo "Well, the $hint value *is* secure." >&4
4880 $rm -f reflect flect
4881 echo "#!$ls" >reflect
4882 chmod +x,u+s reflect
4885 echo '"su" will (probably) prompt you for '"$ans's password."
4886 su $ans -c './reflect >flect'
4887 if $contains "/dev/fd" flect >/dev/null; then
4888 echo "Okay, it looks like setuid scripts are secure." >&4
4891 echo "I don't think setuid scripts are secure." >&4
4896 rp='Does your kernel have *secure* setuid scripts?'
4899 [yY]*) val="$define";;
4904 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4905 echo "(That's for file descriptors, not floppy disks.)"
4911 $rm -f reflect flect
4913 : now see if they want to do setuid emulation
4916 case "$d_suidsafe" in
4919 echo "No need to emulate SUID scripts since they are secure here." >& 4
4923 Some systems have disabled setuid scripts, especially systems where
4924 setuid scripts cannot be secure. On systems where setuid scripts have
4925 been disabled, the setuid/setgid bits on scripts are currently
4926 useless. It is possible for $package to detect those bits and emulate
4927 setuid/setgid in a secure fashion. This emulation will only work if
4928 setuid scripts have been disabled in your kernel.
4932 "$define") dflt=y ;;
4935 rp="Do you want to do setuid/setgid emulation?"
4938 [yY]*) val="$define";;
4946 : determine filename position in cpp output
4948 echo "Computing filename position in cpp output for #include directives..." >&4
4949 echo '#include <stdio.h>' > foo.c
4952 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4953 $grep '^[ ]*#.*stdio\.h' | \
4954 while read cline; do
4957 while $test \$# -gt 0; do
4958 if $test -r \`echo \$1 | $tr -d '"'\`; then
4963 pos=\`expr \$pos + 1\`
4975 *) pos="${fieldn}th";;
4977 echo "Your cpp writes the filename in the $pos field of the line."
4979 : locate header file
4984 for usrincdir in $usrinc
4986 if test -f \$usrincdir/\$wanted; then
4987 echo "\$usrincdir/\$wanted"
4991 awkprg='{ print \$$fieldn }'
4992 echo "#include <\$wanted>" > foo\$\$.c
4993 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4994 $grep "^[ ]*#.*\$wanted" | \
4995 while read cline; do
4996 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4998 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4999 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5004 # status = 0: grep returned 0 lines, case statement not executed
5005 # status = 1: headerfile found
5006 # status = 2: while loop executed, no headerfile found
5010 if test \$status -eq 1; then
5017 : define an alternate in-header-list? function
5018 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5019 cont=true; xxf="echo \"<\$1> found.\" >&4";
5020 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5021 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5023 case $# in 4) instead=instead;; *) instead="at last";; esac;
5024 while $test "$cont"; do
5026 var=$2; eval "was=\$$2";
5027 if $test "$xxx" && $test -r "$xxx";
5029 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5032 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5033 set $yyy; shift; shift; yyy=$@;
5034 case $# in 0) cont="";;
5035 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5036 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5037 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5038 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5042 do set $yyy; var=$2; eval "was=\$$2";
5043 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5044 set $yyy; shift; shift; yyy=$@;
5047 : see if this is a malloc.h system
5048 set malloc.h i_malloc
5051 : see if stdlib is available
5052 set stdlib.h i_stdlib
5055 : determine which malloc to compile in
5057 case "$usemymalloc" in
5058 ''|[yY]*|true|$define) dflt='y' ;;
5061 rp="Do you wish to attempt to use the malloc that comes with $package?"
5067 mallocsrc='malloc.c'
5068 mallocobj="malloc$_o"
5069 d_mymalloc="$define"
5072 : Remove malloc from list of libraries to use
5073 echo "Removing unneeded -lmalloc from library list" >&4
5074 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5077 echo "libs = $libs" >&4
5089 : compute the return types of malloc and free
5091 $cat >malloc.c <<END
5095 #include <sys/types.h>
5109 case "$malloctype" in
5111 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5118 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5122 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5129 echo "Your system uses $freetype free(), it would seem." >&4
5133 The installation process will also create a directory for
5134 vendor-supplied add-ons. Vendors who supply perl with their system
5135 may find it convenient to place all vendor-supplied files in this
5136 directory rather than in the main distribution directory. This will
5137 ease upgrades between binary-compatible maintenance versions of perl.
5139 Of course you may also use these directories in whatever way you see
5140 fit. For example, you might use them to access modules shared over a
5141 company-wide network.
5143 The default answer should be fine for most people.
5144 This causes further questions about vendor add-ons to be skipped
5145 and no vendor-specific directories will be configured for perl.
5148 rp='Do you want to configure vendor-specific add-on directories?'
5149 case "$usevendorprefix" in
5150 define|true|[yY]*) dflt=y ;;
5156 rp='Installation prefix to use for vendor-supplied add-ons?'
5157 case "$vendorprefix" in
5159 *) dflt=$vendorprefix ;;
5163 case "$vendorprefix" in
5167 *) oldvendorprefix="$prefix";;
5171 usevendorprefix="$define"
5173 vendorprefixexp="$ansexp"
5175 *) usevendorprefix="$undef"
5181 case "$vendorprefix" in
5182 '') d_vendorlib="$undef"
5186 *) d_vendorlib="$define"
5187 : determine where vendor-supplied modules go.
5188 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5189 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5190 case "$installstyle" in
5191 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5192 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5195 rp='Pathname for the vendor-supplied library files?'
5198 vendorlibexp="$ansexp"
5199 : Change installation prefix, if necessary.
5200 if $test X"$prefix" != X"$installprefix"; then
5201 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5203 installvendorlib="$vendorlibexp"
5208 : Cruising for prototypes
5210 echo "Checking out function prototypes..." >&4
5211 $cat >prototype.c <<'EOCP'
5212 int main(int argc, char *argv[]) {
5215 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5216 echo "Your C compiler appears to support function prototypes."
5219 echo "Your C compiler doesn't seem to understand function prototypes."
5226 case "$prototype" in
5228 *) ansi2knr='ansi2knr'
5233 This version of $package can only be compiled by a compiler that
5234 understands function prototypes. Unfortunately, your C compiler
5236 doesn't seem to understand them. Sorry about that.
5238 If GNU cc is available for your system, perhaps you could try that instead.
5240 Eventually, we hope to support building Perl with pre-ANSI compilers.
5241 If you would like to help in that effort, please contact <perlbug@perl.org>.
5243 Aborting Configure now.
5249 : determine where public executables go
5254 rp='Pathname where the public executables will reside?'
5256 if $test "X$ansexp" != "X$binexp"; then
5261 : Change installation prefix, if necessary.
5262 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5263 if $test X"$prefix" != X"$installprefix"; then
5264 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5266 installbin="$binexp"
5271 After $package is installed, you may wish to install various
5272 add-on modules and utilities. Typically, these add-ons will
5273 be installed under $prefix with the rest
5274 of this package. However, you may wish to install such add-ons
5275 elsewhere under a different prefix.
5277 If you do not wish to put everything under a single prefix, that's
5278 ok. You will be prompted for the individual locations; this siteprefix
5279 is only used to suggest the defaults.
5281 The default should be fine for most people.
5285 rp='Installation prefix to use for add-on modules and utilities?'
5286 : XXX Here might be another good place for an installstyle setting.
5287 case "$siteprefix" in
5289 *) dflt=$siteprefix ;;
5293 case "$siteprefix" in
5298 *) oldsiteprefix="$prefix";;
5303 siteprefixexp="$ansexp"
5305 : determine where site specific libraries go.
5306 : Usual default is /usr/local/lib/perl5/site_perl/$version
5307 : The default "style" setting is made in installstyle.U
5308 : XXX No longer works with Prefixit stuff.
5309 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5310 case "$installstyle" in
5311 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5312 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5316 The installation process will create a directory for
5317 site-specific extensions and modules. Most users find it convenient
5318 to place all site-specific files in this directory rather than in the
5319 main distribution directory.
5323 rp='Pathname for the site-specific library files?'
5326 sitelibexp="$ansexp"
5327 : Change installation prefix, if necessary.
5328 if $test X"$prefix" != X"$installprefix"; then
5329 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5331 installsitelib="$sitelibexp"
5334 : Determine list of previous versions to include in @INC
5335 $cat > getverlist <<EOPL
5338 \$api_versionstring = "$api_versionstring";
5339 \$version = "$version";
5340 \$sitelib = "$sitelib";
5341 \$archname = "$archname";
5343 $cat >> getverlist <<'EOPL'
5344 # Can't have leading @ because metaconfig interprets it as a command!
5345 ;@inc_version_list=();
5346 $stem=dirname($sitelib);
5347 # Redo to do opendir/readdir?
5350 ;@candidates = glob("5.*");
5356 foreach $d (@candidates) {
5357 if ($d lt $version) {
5358 if ($d ge $api_versionstring) {
5359 unshift(@inc_version_list, "$d/$archname", $d);
5361 elsif ($d ge "5.005") {
5362 unshift(@inc_version_list, $d);
5366 # Skip newer version. I.e. don't look in
5367 # 5.7.0 if we're installing 5.6.1.
5371 if (@inc_version_list) {
5373 print join('", "', @inc_version_list);
5377 # Blank space to preserve value for next Configure run.
5382 case "$inc_version_list" in
5383 '') if test -x $perl; then
5384 dflt=`$perl getverlist`
5389 *) dflt="$inc_version_list" ;;
5393 In order to ease the process of upgrading, this version of perl
5394 can be configured to use modules built and installed with earlier
5395 versions of perl that were installed under $prefix. Specify here
5396 the list of earlier versions that this version of perl should check.
5397 If Configure detected no earlier versions of perl installed under
5398 $prefix, then the list will be empty.
5400 The default should almost always be sensible, so if you're not sure,
5401 just accept the default.
5404 rp='list of earlier versions to include in @INC?'
5406 inc_version_list="$ans"
5409 : determine whether to install perl also as /usr/bin/perl
5412 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5414 Many scripts expect to perl to be installed as /usr/bin/perl.
5415 I can install the perl you are about to compile also as /usr/bin/perl
5416 (in addition to $installbin/perl).
5418 case "$installusrbinperl" in
5419 "$undef"|[nN]*) dflt='n';;
5422 rp="Do you want to install perl as /usr/bin/perl?"
5425 [yY]*) val="$define";;
5431 set installusrbinperl
5435 echo "Checking for GNU C Library..." >&4
5436 cat >gnulibc.c <<EOM
5448 if eval $compile_ok && ./gnulibc; then
5450 echo "You are using the GNU C Library"
5453 echo "You are not using the GNU C Library"
5459 : see if nm is to be used to determine whether a symbol is defined or not
5463 case "$d_gnulibc" in
5466 echo "nm probably won't work on the GNU C Library." >&4
5472 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5474 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5475 echo "'nm' won't be sufficient on this sytem." >&4
5481 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5482 if $test $dflt -gt 20; then
5492 true|$define) dflt=y;;
5499 I can use $nm to extract the symbols from your C libraries. This
5500 is a time consuming task which may generate huge output on the disk (up
5501 to 3 megabytes) but that should make the symbols extraction faster. The
5502 alternative is to skip the 'nm' extraction part and to compile a small
5503 test program instead to determine whether each symbol is present. If
5504 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5505 this may be the best solution.
5507 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5510 rp="Shall I use $nm to extract C symbols from the libraries?"
5513 [Nn]*) usenm=false;;
5522 : nm options which may be necessary
5524 '') if $test -f /mach_boot; then
5526 elif $test -d /usr/ccs/lib; then
5527 nm_opt='-p' # Solaris (and SunOS?)
5528 elif $test -f /dgux; then
5530 elif $test -f /lib64/rld; then
5531 nm_opt='-p' # 64-bit Irix
5537 : nm options which may be necessary for shared libraries but illegal
5538 : for archive libraries. Thank you, Linux.
5539 case "$nm_so_opt" in
5540 '') case "$myuname" in
5542 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5543 nm_so_opt='--dynamic'
5552 : get list of predefined functions in a handy place
5557 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5564 *) for thislib in $libs; do
5567 : Handle C library specially below.
5570 thislib=`echo $thislib | $sed -e 's/^-l//'`
5571 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5573 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5575 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5577 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5579 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5581 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5583 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5588 libnames="$libnames $try"
5590 *) libnames="$libnames $thislib" ;;
5599 for xxx in $libpth; do
5600 $test -r $1 || set $xxx/libc.$so
5601 : The messy sed command sorts on library version numbers.
5603 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5604 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5606 s/[0-9][0-9]*/0000&/g
5607 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5610 sort | $sed -e 's/^.* //'`
5613 $test -r $1 || set /usr/ccs/lib/libc.$so
5614 $test -r $1 || set /lib/libsys_s$_a
5620 if $test -r "$1"; then
5621 echo "Your (shared) C library seems to be in $1."
5623 elif $test -r /lib/libc && $test -r /lib/clib; then
5624 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5626 libc='/lib/clib /lib/libc'
5627 if $test -r /lib/syslib; then
5628 echo "(Your math library is in /lib/syslib.)"
5629 libc="$libc /lib/syslib"
5631 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5632 echo "Your C library seems to be in $libc, as you said before."
5633 elif $test -r $incpath/usr/lib/libc$_a; then
5634 libc=$incpath/usr/lib/libc$_a;
5635 echo "Your C library seems to be in $libc. That's fine."
5636 elif $test -r /lib/libc$_a; then
5638 echo "Your C library seems to be in $libc. You're normal."
5640 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5642 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5643 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5644 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5646 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5648 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5651 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5653 if $test -r "$tans"; then
5654 echo "Your C library seems to be in $tans, of all places."
5660 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5664 If the guess above is wrong (which it might be if you're using a strange
5665 compiler, or your machine supports multiple models), you can override it here.
5670 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5672 I can't seem to find your C library. I've looked in the following places:
5675 $sed 's/^/ /' libpath
5678 None of these seems to contain your C library. I need to get its name...
5683 rp='Where is your C library?'
5688 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5689 set X `cat libnames`
5692 case $# in 1) xxx=file; esac
5693 echo "Extracting names from the following $xxx for later perusal:" >&4
5695 $sed 's/^/ /' libnames >&4
5697 $echo $n "This may take a while...$c" >&4
5701 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5702 *) $nm $nm_opt $file 2>/dev/null;;
5707 $grep fprintf libc.tmp > libc.ptf
5708 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5709 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5711 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5713 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5717 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5721 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5725 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5727 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5729 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5733 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5736 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5742 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5746 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5748 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5750 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5752 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5754 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5756 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5758 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5760 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5762 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5764 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5766 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5769 $nm -p $* 2>/dev/null >libc.tmp
5770 $grep fprintf libc.tmp > libc.ptf
5771 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5772 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5778 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5780 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5781 for thisname in $libnames $libc; do
5782 $ar t $thisname >>libc.tmp
5784 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5786 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5787 # Repeat libc to extract forwarders to DLL entries too
5788 for thisname in $libnames $libc; do
5789 $ar tv $thisname >>libc.tmp
5790 # Revision 50 of EMX has bug in $ar.
5791 # it will not extract forwarders to DLL entries
5792 # Use emximp which will extract exactly them.
5793 emximp -o tmp.imp $thisname \
5795 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5796 < tmp.imp >>libc.tmp
5799 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5802 echo "$ar didn't seem to work right." >&4
5803 echo "Maybe this is a Cray...trying bld instead..." >&4
5804 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5806 for thisname in $libnames; do
5808 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5809 $ar t $thisname >>libc.tmp
5813 echo "That didn't work either. Giving up." >&4
5820 if $test -f /lib/syscalls.exp; then
5822 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5823 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5827 $rm -f libnames libpath
5829 : see if dld is available
5833 : is a C symbol defined?
5836 -v) tf=libc.tmp; tc=""; tdc="";;
5837 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5838 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5841 case "$reuseval-$4" in
5843 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5849 if $contains $tlook $tf >/dev/null 2>&1;
5854 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5855 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5863 $define) tval=true;;
5869 : define an is-in-libc? function
5870 inlibc='echo " "; td=$define; tu=$undef;
5871 sym=$1; var=$2; eval "was=\$$2";
5873 case "$reuseval$was" in
5883 echo "$sym() found." >&4;
5884 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5886 echo "$sym() NOT found." >&4;
5887 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5891 $define) echo "$sym() found." >&4;;
5892 *) echo "$sym() NOT found." >&4;;
5896 : see if dlopen exists
5903 : determine which dynamic loading, if any, to compile in
5905 dldir="ext/DynaLoader"
5918 $define) dflt='y' ;;
5921 $define) dflt='y' ;;
5923 : Does a dl_xxx.xs file exist for this operating system
5924 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5927 rp="Do you wish to use dynamic loading?"
5934 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5935 dflt="$dldir/dl_${osname}.xs"
5936 elif $test "$d_dlopen" = "$define" ; then
5937 dflt="$dldir/dl_dlopen.xs"
5938 elif $test "$i_dld" = "$define" ; then
5939 dflt="$dldir/dl_dld.xs"
5944 *) dflt="$dldir/$dlsrc"
5947 echo "The following dynamic loading files are available:"
5948 : Can not go over to $dldir because getfile has path hard-coded in.
5949 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5950 rp="Source file to use for dynamic loading"
5956 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5960 Some systems may require passing special flags to $cc -c to
5961 compile modules that will be used to create a shared library.
5962 To use no flags, say "none".
5965 case "$cccdlflags" in
5966 '') case "$gccversion" in
5967 '') case "$osname" in
5969 next) dflt='none' ;;
5970 irix*) dflt='-KPIC' ;;
5971 svr4*|esix*|solaris) dflt='-KPIC' ;;
5972 sunos) dflt='-pic' ;;
5976 *) case "$osname" in
5977 svr4*|esix*|solaris) dflt='-fPIC' ;;
5982 *) dflt="$cccdlflags" ;;
5984 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5987 none) cccdlflags=' ' ;;
5988 *) cccdlflags="$ans" ;;
5993 Some systems use ld to create libraries that can be dynamically loaded,
5994 while other systems (such as those using ELF) use $cc.
5998 '') $cat >try.c <<'EOM'
5999 /* Test for whether ELF binaries are produced */
6004 int i = open("a.out",O_RDONLY);
6007 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6008 exit(0); /* succeed (yes, it's ELF) */
6013 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6015 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6019 echo "I'll use ld to build dynamic libraries."
6028 rp="What command should be used to create dynamic libraries?"
6034 Some systems may require passing special flags to $ld to create a
6035 library that can be dynamically loaded. If your ld flags include
6036 -L/other/path options to locate libraries outside your loader's normal
6037 search path, you may need to specify those -L options here as well. To
6038 use no flags, say "none".
6041 case "$lddlflags" in
6042 '') case "$osname" in
6043 beos) dflt='-nostart' ;;
6045 linux|irix*) dflt='-shared' ;;
6046 next) dflt='none' ;;
6047 solaris) dflt='-G' ;;
6048 sunos) dflt='-assert nodefinitions' ;;
6049 svr4*|esix*) dflt="-G $ldflags" ;;
6053 *) dflt="$lddlflags" ;;
6056 : Try to guess additional flags to pick up local libraries.
6057 : Be careful not to append to a plain 'none'
6061 for thisflag in $ldflags; do
6066 *) dflt="$dflt $thisflag" ;;
6073 ''|' ') dflt='none' ;;
6076 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6079 none) lddlflags=' ' ;;
6080 *) lddlflags="$ans" ;;
6085 Some systems may require passing special flags to $cc to indicate that
6086 the resulting executable will use dynamic linking. To use no flags,
6090 case "$ccdlflags" in
6091 '') case "$osname" in
6092 hpux) dflt='-Wl,-E' ;;
6093 linux) dflt='-rdynamic' ;;
6094 next) dflt='none' ;;
6095 sunos) dflt='none' ;;
6099 *) dflt="$ccdlflags" ;;
6101 rp="Any special flags to pass to $cc to use dynamic loading?"
6104 none) ccdlflags=' ' ;;
6105 *) ccdlflags="$ans" ;;
6119 # No dynamic loading being used, so don't bother even to prompt.
6122 *) case "$useshrplib" in
6123 '') case "$osname" in
6124 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6126 also='Building a shared libperl is required for dynamic loading to work on your system.'
6131 also='Building a shared libperl is needed for MAB support.'
6149 The perl executable is normally obtained by linking perlmain.c with
6150 libperl${_a}, any static extensions (usually just DynaLoader), and
6151 any other libraries needed on this system (such as -lm, etc.). Since
6152 your system supports dynamic loading, it is probably possible to build
6153 a shared libperl.$so. If you will have more than one executable linked
6154 to libperl.$so, this will significantly reduce the size of each
6155 executable, but it may have a noticeable affect on performance. The
6156 default is probably sensible for your system.
6160 rp="Build a shared libperl.$so (y/n)"
6164 useshrplib='true' ;;
6165 *) useshrplib='false' ;;
6170 case "$useshrplib" in
6174 # Figure out a good name for libperl.so. Since it gets stored in
6175 # a version-specific architecture-dependent library, the version
6176 # number isn't really that important, except for making cc/ld happy.
6178 # A name such as libperl.so.3.1
6179 majmin="libperl.$so.$patchlevel.$subversion"
6180 # A name such as libperl.so.301
6181 majonly=`echo $patchlevel $subversion |
6182 $awk '{printf "%d%02d", $1, $2}'`
6183 majonly=libperl.$so.$majonly
6184 # I'd prefer to keep the os-specific stuff here to a minimum, and
6185 # rely on figuring it out from the naming of libc.
6186 case "${osname}${osvers}" in
6189 # XXX How handle the --version stuff for MAB?
6191 linux*) # ld won't link with a bare -lperl otherwise.
6194 cygwin*) # include version
6195 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6197 *) # Try to guess based on whether libc has major.minor.
6199 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6200 *libc.$so.[0-9]*) dflt=$majonly ;;
6201 *) dflt=libperl.$so ;;
6211 I need to select a good name for the shared libperl. If your system uses
6212 library names with major and minor numbers, then you might want something
6213 like $majmin. Alternatively, if your system uses a single version
6214 number for shared libraries, then you might want to use $majonly.
6215 Or, your system might be quite happy with a simple libperl.$so.
6217 Since the shared libperl will get installed into a version-specific
6218 architecture-dependent directory, the version number of the shared perl
6219 library probably isn't important, so the default should be o.k.
6222 rp='What name do you want to give to the shared libperl?'
6225 echo "Ok, I'll use $libperl"
6228 libperl="libperl${_a}"
6232 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6236 WARNING: Use of the shrpdir variable for the installation location of
6237 the shared $libperl is not supported. It was never documented and
6238 will not work in this version. Let me (perlbug@perl.com)
6239 know of any problems this may cause.
6245 But your current setting of $shrpdir is
6246 the default anyway, so it's harmless.
6251 Further, your current attempted setting of $shrpdir
6252 conflicts with the value of $archlibexp/CORE
6253 that installperl will use.
6260 # How will the perl executable find the installed shared $libperl?
6261 # Add $xxx to ccdlflags.
6262 # If we can't figure out a command-line option, use $shrpenv to
6263 # set env LD_RUN_PATH. The main perl makefile uses this.
6264 shrpdir=$archlibexp/CORE
6267 if "$useshrplib"; then
6270 # We'll set it in Makefile.SH...
6276 xxx="-Wl,-R$shrpdir"
6278 linux|irix*|dec_osf)
6279 xxx="-Wl,-rpath,$shrpdir"
6282 # next doesn't like the default...
6285 # beos doesn't like the default, either.
6288 # hpux doesn't like the default, either.
6289 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6292 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6298 # Only add $xxx if it isn't already in ccdlflags.
6299 case " $ccdlflags " in
6301 *) ccdlflags="$ccdlflags $xxx"
6304 Adding $xxx to the flags
6305 passed to $ld so that the perl executable will find the
6306 installed shared $libperl.
6314 # Fix ccdlflags in AIX for building external extensions.
6315 # (For building Perl itself bare -bE:perl.exp is needed,
6316 # Makefile.SH takes care of this.)
6318 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6320 # Respect a hint or command-line value.
6322 '') shrpenv="$tmp_shrpenv" ;;
6324 case "$ldlibpthname" in
6325 '') ldlibpthname=LD_LIBRARY_PATH ;;
6326 none) ldlibpthname='' ;;
6329 : determine where manual pages go
6330 set man1dir man1dir none
6334 $spackage has manual pages available in source form.
6338 echo "However, you don't have nroff, so they're probably useless to you."
6340 '') man1dir="none";;
6343 echo "If you don't want the manual sources installed, answer 'none'."
6348 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6349 lookpath="$lookpath $prefixexp/man/p_man/man1"
6350 lookpath="$lookpath $prefixexp/man/u_man/man1"
6351 lookpath="$lookpath $prefixexp/man/man.1"
6353 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6354 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6364 rp="Where do the main $spackage manual pages (source) go?"
6366 if $test "X$man1direxp" != "X$ansexp"; then
6370 man1direxp="$ansexp"
6376 : Change installation prefix, if necessary.
6377 if $test X"$prefix" != X"$installprefix"; then
6378 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6380 installman1dir="$man1direxp"
6383 : What suffix to use on installed man pages
6390 rp="What suffix should be used for the main $spackage man pages?"
6392 '') case "$man1dir" in
6406 *) dflt="$man1ext";;
6413 : see if we can have long filenames
6415 rmlist="$rmlist /tmp/cf$$"
6416 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6417 first=123456789abcdef
6418 second=/tmp/cf$$/$first
6419 $rm -f $first $second
6420 if (echo hi >$first) 2>/dev/null; then
6421 if $test -f 123456789abcde; then
6422 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6425 if (echo hi >$second) 2>/dev/null; then
6426 if $test -f /tmp/cf$$/123456789abcde; then
6428 That's peculiar... You can have filenames longer than 14 characters, but only
6429 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6430 I shall consider your system cannot support long filenames at all.
6434 echo 'You can have filenames longer than 14 characters.' >&4
6439 How confusing! Some of your filesystems are sane enough to allow filenames
6440 longer than 14 characters but some others like /tmp can't even think about them.
6441 So, for now on, I shall assume your kernel does not allow them at all.
6448 You can't have filenames longer than 14 chars. You can't even think about them!
6454 $rm -rf /tmp/cf$$ 123456789abcde*
6456 : determine where library module manual pages go
6457 set man3dir man3dir none
6461 $spackage has manual pages for many of the library modules.
6467 However, you don't have nroff, so they're probably useless to you.
6470 '') man3dir="none";;
6474 case "$d_flexfnam" in
6477 However, your system can't handle the long file names like File::Basename.3.
6480 '') man3dir="none";;
6484 echo "If you don't want the manual sources installed, answer 'none'."
6485 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6487 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6488 if $test -d "$privlib/man/man3"; then
6491 WARNING: Previous versions of perl installed man3 pages into
6492 $privlib/man/man3. This version will suggest a
6493 new default of $dflt.
6497 rp='Do you wish to preserve the old behavior?(y/n)'
6500 y*) dflt="$privlib/man/man3" ;;
6506 *) dflt="$man3dir" ;;
6510 rp="Where do the $package library man pages (source) go?"
6513 man3direxp="$ansexp"
6519 : Change installation prefix, if necessary.
6520 if $test X"$prefix" != X"$installprefix"; then
6521 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6523 installman3dir="$man3direxp"
6526 : What suffix to use on installed man pages
6532 rp="What suffix should be used for the $package library man pages?"
6534 '') case "$man3dir" in
6548 *) dflt="$man3ext";;
6555 : see if we have to deal with yellow pages, now NIS.
6556 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6557 if $test -f /usr/etc/nibindd; then
6559 echo "I'm fairly confident you're on a NeXT."
6561 rp='Do you get the hosts file via NetInfo?'
6570 y*) hostcat='nidump hosts .';;
6571 *) case "$hostcat" in
6572 nidump*) hostcat='';;
6582 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6590 rp='Are you getting the hosts file via yellow pages?'
6593 y*) hostcat='ypcat hosts';;
6594 *) hostcat='cat /etc/hosts';;
6600 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6603 '') test -f /etc/group && groupcat='cat /etc/group';;
6606 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6609 : now get the host name
6611 echo "Figuring out host name..." >&4
6612 case "$myhostname" in
6614 echo 'Maybe "hostname" will work...'
6615 if tans=`sh -c hostname 2>&1` ; then
6623 if $test "$cont"; then
6625 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6626 if tans=`cat /etc/systemid 2>&1` ; then
6628 phostname='cat /etc/systemid'
6629 echo "Whadyaknow. Xenix always was a bit strange..."
6632 elif $test -r /etc/systemid; then
6633 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6636 if $test "$cont"; then
6637 echo 'No, maybe "uuname -l" will work...'
6638 if tans=`sh -c 'uuname -l' 2>&1` ; then
6640 phostname='uuname -l'
6642 echo 'Strange. Maybe "uname -n" will work...'
6643 if tans=`sh -c 'uname -n' 2>&1` ; then
6645 phostname='uname -n'
6647 echo 'Oh well, maybe I can mine it out of whoami.h...'
6648 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6649 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6650 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6652 case "$myhostname" in
6653 '') echo "Does this machine have an identity crisis or something?"
6656 echo "Well, you said $myhostname before..."
6657 phostname='echo $myhostname';;
6663 : you do not want to know about this
6668 if $test "$myhostname" ; then
6670 rp='Your host name appears to be "'$myhostname'".'" Right?"
6678 : bad guess or no guess
6679 while $test "X$myhostname" = X ; do
6681 rp="Please type the (one word) name of your host:"
6686 : translate upper to lower if necessary
6687 case "$myhostname" in
6689 echo "(Normalizing case in your host name)"
6690 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6694 case "$myhostname" in
6696 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6697 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6698 echo "(Trimming domain name from host name--host name is now $myhostname)"
6700 *) case "$mydomain" in
6703 test "X$hostcat" = "Xypcat hosts" &&
6704 ypmatch "$myhostname" hosts 2>/dev/null |\
6705 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6708 test "X$hostcat" != "X" &&
6709 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6710 /[ ]$myhostname[ . ]/p" > hosts
6713 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6714 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6715 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6716 hosts | $sort | $uniq | \
6717 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6718 case `$echo X$dflt` in
6719 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6722 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6727 tans=`./loc resolv.conf X /etc /usr/etc`
6728 if $test -f "$tans"; then
6729 echo "(Attempting domain name extraction from $tans)"
6730 dflt=.`$sed -n -e 's/ / /g' \
6731 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6732 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6734 .) dflt=.`$sed -n -e 's/ / /g' \
6735 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6736 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6743 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6744 dflt=.`sh -c domainname 2>/dev/null`
6747 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6752 .) echo "(Lost all hope -- silly guess then)"
6758 *) dflt="$mydomain";;
6762 rp="What is your domain name?"
6772 : translate upper to lower if necessary
6775 echo "(Normalizing case in your domain name)"
6776 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6780 : a little sanity check here
6781 case "$phostname" in
6784 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6785 $myhostname$mydomain|$myhostname) ;;
6787 case "$phostname" in
6789 echo "(That doesn't agree with your whoami.h file, by the way.)"
6792 echo "(That doesn't agree with your $phostname command, by the way.)"
6802 I need to get your e-mail address in Internet format if possible, i.e.
6803 something like user@host.domain. Please answer accurately since I have
6804 no easy means to double check it. The default value provided below
6805 is most probably close to the reality but may not be valid from outside
6806 your organization...
6810 while test "$cont"; do
6812 '') dflt="$cf_by@$myhostname$mydomain";;
6813 *) dflt="$cf_email";;
6815 rp='What is your e-mail address?'
6821 rp='Address does not look like an Internet one. Use it anyway?'
6837 If you or somebody else will be maintaining perl at your site, please
6838 fill in the correct e-mail address here so that they may be contacted
6839 if necessary. Currently, the "perlbug" program included with perl
6840 will send mail to this address in addition to perlbug@perl.com. You may
6841 enter "none" for no administrator.
6844 case "$perladmin" in
6845 '') dflt="$cf_email";;
6846 *) dflt="$perladmin";;
6848 rp='Perl administrator e-mail address'
6852 : figure out how to guarantee perl startup
6853 case "$startperl" in
6855 case "$sharpbang" in
6859 I can use the #! construct to start perl on your system. This will
6860 make startup of perl scripts faster, but may cause problems if you
6861 want to share those scripts and perl is not in a standard place
6862 ($binexp/perl) on all your platforms. The alternative is to force
6863 a shell by starting the script with a single ':' character.
6867 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6870 none) startperl=": # use perl";;
6871 *) startperl="#!$ans"
6872 if $test 30 -lt `echo "$ans" | wc -c`; then
6875 WARNING: Some systems limit the #! command to 32 characters.
6876 If you experience difficulty running Perl scripts with #!, try
6877 installing Perl in a directory with a shorter pathname.
6883 *) startperl=": # use perl"
6888 echo "I'll use $startperl to start perl scripts."
6890 : figure best path for perl in scripts
6893 perlpath="$binexp/perl"
6894 case "$startperl" in
6899 I will use the "eval 'exec'" idiom to start Perl on your system.
6900 I can use the full path of your Perl binary for this purpose, but
6901 doing so may cause problems if you want to share those scripts and
6902 Perl is not always in a standard place ($binexp/perl).
6906 rp="What path shall I use in \"eval 'exec'\"?"
6913 case "$startperl" in
6915 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6918 : determine where public executable scripts go
6919 set scriptdir scriptdir
6921 case "$scriptdir" in
6924 : guess some guesses
6925 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6926 $test -d /usr/share/bin && dflt=/usr/share/bin
6927 $test -d /usr/local/script && dflt=/usr/local/script
6928 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6929 $test -d $prefixexp/script && dflt=$prefixexp/script
6933 *) dflt="$scriptdir"
6938 Some installations have a separate directory just for executable scripts so
6939 that they can mount it across multiple architectures but keep the scripts in
6940 one spot. You might, for example, have a subdirectory of /usr/share for this.
6941 Or you might just lump your scripts in with all your other executables.
6945 rp='Where do you keep publicly executable scripts?'
6947 if $test "X$ansexp" != "X$scriptdirexp"; then
6951 scriptdirexp="$ansexp"
6952 : Change installation prefix, if necessary.
6953 if $test X"$prefix" != X"$installprefix"; then
6954 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6956 installscript="$scriptdirexp"
6959 : determine where site specific architecture-dependent libraries go.
6960 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6961 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6962 : sitelib may have an optional trailing /share.
6963 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6964 tdflt="$tdflt/$archname"
6965 set sitearch sitearch none
6968 '') dflt="$tdflt" ;;
6969 *) dflt="$sitearch" ;;
6973 The installation process will also create a directory for
6974 architecture-dependent site-specific extensions and modules.
6978 rp='Pathname for the site-specific architecture-dependent library files?'
6981 sitearchexp="$ansexp"
6982 : Change installation prefix, if necessary.
6983 if $test X"$prefix" != X"$installprefix"; then
6984 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6986 installsitearch="$sitearchexp"
6989 : determine where add-on public executables go
6991 '') dflt=$siteprefix/bin ;;
6995 rp='Pathname where the add-on public executables should be installed?'
6998 sitebinexp="$ansexp"
6999 : Change installation prefix, if necessary.
7000 if $test X"$prefix" != X"$installprefix"; then
7001 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7003 installsitebin="$sitebinexp"
7008 Perl can be built to take advantage of long doubles which
7009 (if available) may give more accuracy and range for floating point numbers.
7011 If this doesn't make any sense to you, just accept the default 'n'.
7015 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7018 case "$uselongdouble" in
7019 $define|true|[yY]*) dflt='y';;
7022 rp='Try to use long doubles if available?'
7025 y|Y) val="$define" ;;
7031 case "$uselongdouble" in
7032 true|[yY]*) uselongdouble="$define" ;;
7035 case "$uselongdouble" in
7037 : Look for a hint-file generated 'call-back-unit'. If the
7038 : user has specified that long doubles should be used,
7039 : we may need to set or change some other defaults.
7040 if $test -f uselongdouble.cbu; then
7041 echo "Your platform has some specific hints for long doubles, using them..."
7042 . ./uselongdouble.cbu
7045 (Your platform doesn't have any specific hints for long doubles.)
7053 Perl can be built to take advantage of long longs which
7054 (if available) may give more range for integer numbers.
7056 If this doesn't make any sense to you, just accept the default 'n'.
7060 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7063 case "$uselonglong" in
7064 $define|true|[yY]*) dflt='y';;
7067 rp='Try to use long longs if available?'
7070 y|Y) val="$define" ;;
7076 case "$uselonglong" in
7077 true|[yY]*) uselonglong="$define" ;;
7080 case "$uselonglong" in
7082 : Look for a hint-file generated 'call-back-unit'. If the
7083 : user has specified that long longs should be used,
7084 : we may need to set or change some other defaults.
7085 if $test -f uselonglong.cbu; then
7086 echo "Your platform has some specific hints for long longs, using them..."
7090 (Your platform doesn't have any specific hints for long longs.)
7098 Previous version of $package used the standard IO mechanisms as defined
7099 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7100 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7101 the default. This abstraction layer can use AT&T's sfio (if you already
7102 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7103 problems with some extension modules. Using PerlIO with stdio is safe,
7104 but it is slower than plain stdio and therefore is not the default.
7106 If this doesn't make any sense to you, just accept the default 'n'.
7108 case "$useperlio" in
7109 $define|true|[yY]*) dflt='y';;
7112 rp='Use the experimental PerlIO abstraction layer?'
7119 echo "Ok, doing things the stdio way"
7126 case "$vendorprefix" in
7127 '') d_vendorbin="$undef"
7131 *) d_vendorbin="$define"
7132 : determine where vendor-supplied executables go.
7133 dflt=$vendorprefix/bin
7135 rp='Pathname for the vendor-supplied executables directory?'
7138 vendorbinexp="$ansexp"
7139 : Change installation prefix, if necessary.
7140 if $test X"$prefix" != X"$installprefix"; then
7141 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7143 installvendorbin="$vendorbinexp"
7148 : check for length of double
7150 case "$doublesize" in
7152 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7153 $cat >try.c <<'EOCP'
7157 printf("%d\n", (int)sizeof(double));
7162 if eval $compile_ok; then
7164 $echo " $doublesize bytes." >&4
7167 echo "(I can't seem to compile the test program. Guessing...)"
7168 rp="What is the size of a double precision number (in bytes)?"
7176 : check for long doubles
7178 $echo $n "Checking to see if your system supports long double..." $c >&4
7179 echo 'int main() { long double x = 7.0; }' > try.c
7181 if eval $compile; then
7183 echo " Yes, it does." >&4
7186 echo " No, it doesn't." >&4
7192 : check for length of long double
7193 case "${d_longdbl}${longdblsize}" in
7196 $echo $n "Checking to see how big your long doubles are..." $c >&4
7197 $cat >try.c <<'EOCP'
7201 printf("%d\n", sizeof(long double));
7206 if eval $compile; then
7207 longdblsize=`./try$exe_ext`
7208 $echo " $longdblsize bytes." >&4
7212 echo "(I can't seem to compile the test program. Guessing...)" >&4
7213 rp="What is the size of a long double (in bytes)?"
7217 if $test "X$doublesize" = "X$longdblsize"; then
7218 echo "(That isn't any different from an ordinary double.)"
7224 : Check how to convert floats to strings.
7225 if test "X$d_Gconvert" = X; then
7227 echo "Checking for an efficient way to convert floats to strings."
7230 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7231 char *myname = "gconvert";
7234 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7235 char *myname = "gcvt";
7238 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7239 char *myname = "qgcvt";
7240 #define DOUBLETYPE long double
7243 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7244 char *myname = "sprintf";
7248 #define DOUBLETYPE double
7258 checkit(expect, got)
7262 if (strcmp(expect, got)) {
7263 printf("%s oddity: Expected %s, got %s\n",
7264 myname, expect, got);
7274 /* This must be 1st test on (which?) platform */
7275 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7276 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7277 checkit("0.1", buf);
7279 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7282 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7285 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7288 /* Some Linux gcvt's give 1.e+5 here. */
7289 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7290 checkit("100000", buf);
7292 /* Some Linux gcvt's give -1.e+5 here. */
7293 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7294 checkit("-100000", buf);
7299 case "$d_Gconvert" in
7300 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7301 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7302 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7303 *) xxx_list='gconvert gcvt sprintf' ;;
7306 case "$d_longdbl$uselongdouble" in
7307 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7310 for xxx_convert in $xxx_list; do
7311 echo "Trying $xxx_convert..."
7313 set try -DTRY_$xxx_convert
7314 if eval $compile; then
7315 echo "$xxx_convert() found." >&4
7317 echo "I'll use $xxx_convert to convert floats into a string." >&4
7320 echo "...But $xxx_convert didn't work as I expected."
7323 echo "$xxx_convert NOT found." >&4
7327 case "$xxx_convert" in
7328 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7329 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7330 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7331 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7337 if $test X"$d_longdbl" = X"$define"; then
7339 echo "Checking how to print long doubles..." >&4
7341 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7342 $cat >try.c <<'EOCP'
7343 #include <sys/types.h>
7347 printf("%.3f\n", d);
7351 if eval $compile; then
7355 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7356 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7357 echo "We will use %f."
7363 if $test X"$sPRIfldbl" = X; then
7364 $cat >try.c <<'EOCP'
7365 #include <sys/types.h>
7368 long double d = 123.456;
7369 printf("%.3llf\n", d);
7373 if eval $compile; then
7377 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7378 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7379 echo "We will use %llf."
7385 if $test X"$sPRIfldbl" = X; then
7386 $cat >try.c <<'EOCP'
7387 #include <sys/types.h>
7390 long double d = 123.456;
7391 printf("%.3Lf\n", d);
7395 if eval $compile; then
7399 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7400 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7401 echo "We will use %Lf."
7407 if $test X"$sPRIfldbl" = X; then
7408 $cat >try.c <<'EOCP'
7409 #include <sys/types.h>
7412 long double d = 123.456;
7413 printf("%.3lf\n", d);
7417 if eval $compile; then
7421 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7422 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7423 echo "We will use %lf."
7429 if $test X"$sPRIfldbl" = X; then
7430 echo "Cannot figure out how to print long doubles." >&4
7437 case "$sPRIfldbl" in
7438 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7439 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7441 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7442 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7446 : Initialize h_fcntl
7449 : Initialize h_sysfile
7452 : access call always available on UNIX
7456 : locate the flags for 'access()'
7460 $cat >access.c <<'EOCP'
7461 #include <sys/types.h>
7466 #include <sys/file.h>
7475 : check sys/file.h first, no particular reason here
7476 if $test `./findhdr sys/file.h` && \
7477 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7479 echo "<sys/file.h> defines the *_OK access constants." >&4
7480 elif $test `./findhdr fcntl.h` && \
7481 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7483 echo "<fcntl.h> defines the *_OK access constants." >&4
7484 elif $test `./findhdr unistd.h` && \
7485 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7486 echo "<unistd.h> defines the *_OK access constants." >&4
7488 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7494 : see if accessx exists
7495 set accessx d_accessx
7498 : see if alarm exists
7502 : see if atolf exists
7506 : see if atoll exists
7510 : Look for GNU-cc style attribute checking
7512 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7513 $cat >attrib.c <<'EOCP'
7515 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7517 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7518 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7519 echo "Your C compiler doesn't fully support __attribute__."
7522 echo "Your C compiler supports __attribute__."
7526 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7533 : see if bcmp exists
7537 : see if bcopy exists
7541 : see if this is a unistd.h system
7542 set unistd.h i_unistd
7545 : see if getpgrp exists
7546 set getpgrp d_getpgrp
7549 case "$d_getpgrp" in
7552 echo "Checking to see which flavor of getpgrp is in use..."
7555 #include <sys/types.h>
7557 # include <unistd.h>
7561 if (getuid() == 0) {
7562 printf("(I see you are running Configure as super-user...)\n");
7566 if (getpgrp(1) == 0)
7575 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7576 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7578 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7579 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7582 echo "I can't seem to compile and run the test program."
7584 xxx="a USG one, i.e. you use getpgrp()."
7586 # SVR4 systems can appear rather BSD-ish.
7589 xxx="a BSD one, i.e. you use getpgrp(pid)."
7593 xxx="probably a USG one, i.e. you use getpgrp()."
7598 echo "Assuming your getpgrp is $xxx" >&4
7607 : see if setpgrp exists
7608 set setpgrp d_setpgrp
7611 case "$d_setpgrp" in
7614 echo "Checking to see which flavor of setpgrp is in use..."
7617 #include <sys/types.h>
7619 # include <unistd.h>
7623 if (getuid() == 0) {
7624 printf("(I see you are running Configure as super-user...)\n");
7628 if (-1 == setpgrp(1, 1))
7631 if (setpgrp() != -1)
7637 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7638 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7640 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7641 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7644 echo "(I can't seem to compile and run the test program.)"
7646 xxx="a USG one, i.e. you use setpgrp()."
7648 # SVR4 systems can appear rather BSD-ish.
7651 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7655 xxx="probably a USG one, i.e. you use setpgrp()."
7660 echo "Assuming your setpgrp is $xxx" >&4
7668 : see if bzero exists
7672 : see if signal is declared as pointer to function returning int or void
7674 xxx=`./findhdr signal.h`
7675 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7676 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7677 echo "You have int (*signal())() instead of void." >&4
7679 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7680 echo "You have void (*signal())()." >&4
7682 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7683 echo "You have int (*signal())() instead of void." >&4
7685 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7686 echo "You have void (*signal())()." >&4
7689 case "$d_voidsig" in
7691 echo "I can't determine whether signal handler returns void or int..." >&4
7693 rp="What type does your signal handler return?"
7700 echo "As you already told me, signal handler returns void." >&4
7703 *) echo "As you already told me, signal handler returns int." >&4
7710 case "$d_voidsig" in
7711 "$define") signal_t="void";;
7716 : check for ability to cast large floats to 32-bit ints.
7718 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7719 if $test "$intsize" -ge 4; then
7726 #include <sys/types.h>
7728 $signal_t blech(s) int s; { exit(3); }
7735 signal(SIGFPE, blech);
7737 /* Don't let compiler optimize the test away. Store the number
7738 in a writable string for gcc to pass to sscanf under HP/UX.
7740 sprintf(str, "2147483647");
7741 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7745 /* x86 processors will probably give 0x8000 0000, which is a
7746 sign change. We don't want that. We want to mimic SPARC
7747 behavior here, which is to preserve the sign and give
7750 if (i32 != ($xxx) f)
7756 if eval $compile_ok; then
7760 echo "(I can't seem to compile the test program--assuming it can't)"
7768 echo "Nope, it can't."
7775 : check for ability to cast negative floats to unsigned
7777 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7780 #include <sys/types.h>
7782 $signal_t blech(s) int s; { exit(7); }
7783 $signal_t blech_in_list(s) int s; { exit(4); }
7784 unsigned long dummy_long(p) unsigned long p; { return p; }
7785 unsigned int dummy_int(p) unsigned int p; { return p; }
7786 unsigned short dummy_short(p) unsigned short p; { return p; }
7790 unsigned long along;
7792 unsigned short ashort;
7796 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7797 a direct f = -123. assignment. gcc-2.8.0 reportedly
7798 optimized the whole file away
7800 /* Store the number in a writable string for gcc to pass to
7803 sprintf(str, "-123");
7804 sscanf(str, "%lf", &f); /* f = -123.; */
7806 signal(SIGFPE, blech);
7807 along = (unsigned long)f;
7808 aint = (unsigned int)f;
7809 ashort = (unsigned short)f;
7810 if (along != (unsigned long)-123)
7812 if (aint != (unsigned int)-123)
7814 if (ashort != (unsigned short)-123)
7816 sprintf(str, "1073741824.");
7817 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7820 along = (unsigned long)f;
7821 if (along != 0x80000000)
7825 along = (unsigned long)f;
7826 if (along != 0x7fffffff)
7830 along = (unsigned long)f;
7831 if (along != 0x80000001)
7835 signal(SIGFPE, blech_in_list);
7836 sprintf(str, "123.");
7837 sscanf(str, "%lf", &f); /* f = 123.; */
7838 along = dummy_long((unsigned long)f);
7839 aint = dummy_int((unsigned int)f);
7840 ashort = dummy_short((unsigned short)f);
7841 if (along != (unsigned long)123)
7843 if (aint != (unsigned int)123)
7845 if (ashort != (unsigned short)123)
7852 if eval $compile_ok; then
7856 echo "(I can't seem to compile the test program--assuming it can't)"
7859 case "$castflags" in
7864 echo "Nope, it can't."
7871 : see if vprintf exists
7873 if set vprintf val -f d_vprintf; eval $csym; $val; then
7874 echo 'vprintf() found.' >&4
7876 $cat >vprintf.c <<'EOF'
7877 #include <varargs.h>
7879 int main() { xxx("foo"); }
7888 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7892 if eval $compile && ./vprintf; then
7893 echo "Your vsprintf() returns (int)." >&4
7896 echo "Your vsprintf() returns (char*)." >&4
7900 echo 'vprintf() NOT found.' >&4
7910 : see if chown exists
7914 : see if chroot exists
7918 : see if chsize exists
7922 : check for const keyword
7924 echo 'Checking to see if your C compiler knows about "const"...' >&4
7925 $cat >const.c <<'EOCP'
7926 typedef struct spug { int drokk; } spug;
7933 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7935 echo "Yup, it does."
7938 echo "Nope, it doesn't."
7943 : see if crypt exists
7945 if set crypt val -f d_crypt; eval $csym; $val; then
7946 echo 'crypt() found.' >&4
7950 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7951 if $test -z "$cryptlib"; then
7952 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7956 if $test -z "$cryptlib"; then
7957 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7961 if $test -z "$cryptlib"; then
7962 cryptlib=`./loc libcrypt$_a "" $libpth`
7966 if $test -z "$cryptlib"; then
7967 echo 'crypt() NOT found.' >&4
7976 : get csh whereabouts
7978 'csh') val="$undef" ;;
7983 : Respect a hint or command line value for full_csh.
7985 '') full_csh=$csh ;;
7988 : see if cuserid exists
7989 set cuserid d_cuserid
7992 : see if this is a limits.h system
7993 set limits.h i_limits
7996 : see if this is a float.h system
8000 : See if number of significant digits in a double precision number is known
8002 $cat >dbl_dig.c <<EOM
8012 printf("Contains DBL_DIG");
8015 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8016 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8017 echo "DBL_DIG found." >&4
8020 echo "DBL_DIG NOT found." >&4
8027 : see if difftime exists
8028 set difftime d_difftime
8031 : see if this is a dirent system
8033 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8035 echo "<dirent.h> found." >&4
8038 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8039 echo "<sys/dir.h> found." >&4
8042 xinc=`./findhdr sys/ndir.h`
8044 echo "<dirent.h> NOT found." >&4
8049 : Look for type of directory structure.
8051 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8053 case "$direntrytype" in
8056 $define) guess1='struct dirent' ;;
8057 *) guess1='struct direct' ;;
8060 *) guess1="$direntrytype"
8065 'struct dirent') guess2='struct direct' ;;
8066 *) guess2='struct dirent' ;;
8069 if $contains "$guess1" try.c >/dev/null 2>&1; then
8070 direntrytype="$guess1"
8071 echo "Your directory entries are $direntrytype." >&4
8072 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8073 direntrytype="$guess2"
8074 echo "Your directory entries seem to be $direntrytype." >&4
8076 echo "I don't recognize your system's directory entries." >&4
8077 rp="What type is used for directory entries on this system?"
8085 : see if the directory entry stores field length
8087 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8088 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8089 echo "Good, your directory entry keeps length information in d_namlen." >&4
8092 echo "Your directory entry does not know about the d_namlen field." >&4
8099 : see if dlerror exists
8102 set dlerror d_dlerror
8106 : see if dlfcn is available
8114 On a few systems, the dynamically loaded modules that perl generates and uses
8115 will need a different extension than shared libs. The default will probably
8123 rp='What is the extension of dynamically loaded modules'
8132 : Check if dlsym need a leading underscore
8138 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8139 $cat >dyna.c <<'EOM'
8148 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8150 #include <sys/types.h>
8164 int mode = RTLD_LAZY ;
8166 handle = dlopen("./dyna.$dlext", mode) ;
8167 if (handle == NULL) {
8172 symbol = dlsym(handle, "fred") ;
8173 if (symbol == NULL) {
8174 /* try putting a leading underscore */
8175 symbol = dlsym(handle, "_fred") ;
8176 if (symbol == NULL) {
8189 : Call the object file tmp-dyna.o in case dlext=o.
8190 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8191 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8192 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8193 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8196 1) echo "Test program failed using dlopen." >&4
8197 echo "Perhaps you should not use dynamic loading." >&4;;
8198 2) echo "Test program failed using dlsym." >&4
8199 echo "Perhaps you should not use dynamic loading." >&4;;
8200 3) echo "dlsym needs a leading underscore" >&4
8202 4) echo "dlsym doesn't need a leading underscore." >&4;;
8205 echo "I can't compile and run the test program." >&4
8206 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8211 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8216 hasproto='varname=$1; func=$2; shift; shift;
8217 while $test $# -ge 2; do
8219 $define) echo "#include <$2>";;
8223 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8224 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8225 echo "$func() prototype found.";
8228 echo "$func() prototype NOT found.";
8233 $rm -f try.c tryout.c'
8235 : see if prototype for drand48 is available
8237 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8240 : see if dup2 exists
8244 : see if eaccess exists
8245 set eaccess d_eaccess
8248 : see if endgrent exists
8249 set endgrent d_endgrent
8252 : see if endhostent exists
8253 set endhostent d_endhent
8256 : see if endnetent exists
8257 set endnetent d_endnent
8260 : see if endprotoent exists
8261 set endprotoent d_endpent
8264 : see if endpwent exists
8265 set endpwent d_endpwent
8268 : see if endservent exists
8269 set endservent d_endsent
8272 : see if endspent exists
8273 set endspent d_endspent
8276 : Locate the flags for 'open()'
8278 $cat >open3.c <<'EOCP'
8279 #include <sys/types.h>
8284 #include <sys/file.h>
8295 : check sys/file.h first to get FREAD on Sun
8296 if $test `./findhdr sys/file.h` && \
8297 set open3 -DI_SYS_FILE && eval $compile; then
8299 echo "<sys/file.h> defines the O_* constants..." >&4
8301 echo "and you have the 3 argument form of open()." >&4
8304 echo "but not the 3 argument form of open(). Oh, well." >&4
8307 elif $test `./findhdr fcntl.h` && \
8308 set open3 -DI_FCNTL && eval $compile; then
8310 echo "<fcntl.h> defines the O_* constants..." >&4
8312 echo "and you have the 3 argument form of open()." >&4
8315 echo "but not the 3 argument form of open(). Oh, well." >&4
8320 echo "I can't find the O_* constant definitions! You got problems." >&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`;;
8348 : check for non-blocking I/O stuff
8349 case "$h_sysfile" in
8350 true) echo "#include <sys/file.h>" > head.c;;
8353 true) echo "#include <fcntl.h>" > head.c;;
8354 *) echo "#include <sys/fcntl.h>" > head.c;;
8359 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8360 case "$o_nonblock" in
8363 $cat >>try.c <<'EOCP'
8367 printf("O_NONBLOCK\n");
8371 printf("O_NDELAY\n");
8375 printf("FNDELAY\n");
8382 if eval $compile_ok; then
8384 case "$o_nonblock" in
8385 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8386 *) echo "Seems like we can use $o_nonblock.";;
8389 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8392 *) echo "Using $hint value $o_nonblock.";;
8394 $rm -f try try.* .out core
8397 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8403 #include <sys/types.h>
8406 #define MY_O_NONBLOCK $o_nonblock
8407 #ifndef errno /* XXX need better Configure test */
8417 #include <strings.h>
8419 $signal_t blech(x) int x; { exit(3); }
8421 $cat >> try.c <<'EOCP'
8429 pipe(pd); /* Down: child -> parent */
8430 pipe(pu); /* Up: parent -> child */
8433 close(pd[1]); /* Parent reads from pd[0] */
8434 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8435 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8437 signal(SIGALRM, blech);
8439 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8441 sprintf(string, "%d\n", ret);
8442 write(2, string, strlen(string));
8445 if (errno == EAGAIN) {
8451 if (errno == EWOULDBLOCK)
8452 printf("EWOULDBLOCK\n");
8455 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8456 sleep(2); /* Give it time to close our pipe */
8458 ret = read(pd[0], buf, 1); /* Should read EOF */
8460 sprintf(string, "%d\n", ret);
8461 write(3, string, strlen(string));
8465 close(pd[0]); /* We write to pd[1] */
8466 close(pu[1]); /* We read from pu[0] */
8467 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8468 close(pd[1]); /* Pipe pd is now fully closed! */
8469 exit(0); /* Bye bye, thank you for playing! */
8473 if eval $compile_ok; then
8474 echo "$startsh" >mtry
8475 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8477 ./mtry >/dev/null 2>&1
8479 0) eagain=`$cat try.out`;;
8480 1) echo "Could not perform non-blocking setting!";;
8481 2) echo "I did a successful read() for something that was not there!";;
8482 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8483 *) echo "Something terribly wrong happened during testing.";;
8485 rd_nodata=`$cat try.ret`
8486 echo "A read() system call with no data present returns $rd_nodata."
8487 case "$rd_nodata" in
8490 echo "(That's peculiar, fixing that to be -1.)"
8496 echo "Forcing errno EAGAIN on read() with no data available."
8500 echo "Your read() sets errno to $eagain when no data is available."
8503 status=`$cat try.err`
8505 0) echo "And it correctly returns 0 to signal EOF.";;
8506 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8507 *) echo "However, your read() returns '$status' on EOF??";;
8510 if test "$status" = "$rd_nodata"; then
8511 echo "WARNING: you can't distinguish between EOF and no data!"
8515 echo "I can't compile the test program--assuming errno EAGAIN will do."
8522 echo "Using $hint value $eagain."
8523 echo "Your read() returns $rd_nodata when no data is present."
8524 case "$d_eofnblk" in
8525 "$define") echo "And you can see EOF because read() returns 0.";;
8526 "$undef") echo "But you can't see EOF status from read() returned value.";;
8528 echo "(Assuming you can't see EOF status from read anyway.)"
8534 $rm -f try try.* .out core head.c mtry
8536 : see if fchmod exists
8540 : see if fchown exists
8544 : see if this is an fcntl system
8548 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8549 while $test $# -ge 2; do
8551 $define) echo "#include <$2>";;
8555 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8557 if eval $compile; then
8568 : see whether socket exists
8570 $echo $n "Hmm... $c" >&4
8571 if set socket val -f d_socket; eval $csym; $val; then
8572 echo "Looks like you have Berkeley networking support." >&4
8574 if set setsockopt val -f; eval $csym; $val; then
8577 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8581 if $contains socklib libc.list >/dev/null 2>&1; then
8582 echo "Looks like you have Berkeley networking support." >&4
8584 : we will have to assume that it supports the 4.2 BSD interface
8587 echo "You don't have Berkeley networking in libc$_a..." >&4
8588 if test "X$d_socket" = "X$define"; then
8589 echo "...but you seem to believe that you have sockets." >&4
8591 for net in net socket
8593 if test -f /usr/lib/lib$net$_a; then
8594 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8595 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8596 if $contains socket libc.list >/dev/null 2>&1; then
8601 echo "...but the Wollongong group seems to have hacked it in." >&4
8602 sockethdr="-I/usr/netinclude"
8605 echo "Found Berkeley sockets interface in lib$net." >& 4
8606 if $contains setsockopt libc.list >/dev/null 2>&1; then
8609 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8616 if test "X$d_socket" != "X$define"; then
8617 echo "or anywhere else I see." >&4
8625 : see if socketpair exists
8626 set socketpair d_sockpair
8631 echo "Checking the availability of certain socket constants..." >& 4
8632 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8633 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8635 #include <sys/types.h>
8636 #include <sys/socket.h>
8642 set try; if eval $compile; then
8645 set d_${enum}; eval $setvar
8649 : see if sys/select.h has to be included
8650 set sys/select.h i_sysselct
8653 : see if we should include time.h, sys/time.h, or both
8655 if test "X$timeincl" = X; then
8656 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8657 $echo $n "I'm now running the test program...$c"
8658 $cat >try.c <<'EOCP'
8659 #include <sys/types.h>
8664 #ifdef SYSTIMEKERNEL
8667 #include <sys/time.h>
8670 #include <sys/select.h>
8679 struct timezone tzp;
8681 if (foo.tm_sec == foo.tm_sec)
8684 if (bar.tv_sec == bar.tv_sec)
8691 for s_timezone in '-DS_TIMEZONE' ''; do
8693 for s_timeval in '-DS_TIMEVAL' ''; do
8694 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8695 for i_time in '' '-DI_TIME'; do
8696 for i_systime in '-DI_SYSTIME' ''; do
8699 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8700 if eval $compile; then
8701 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8705 $echo $n "Succeeded with $flags$c"
8717 *SYSTIMEKERNEL*) i_systimek="$define"
8718 timeincl=`./findhdr sys/time.h`
8719 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8720 *) i_systimek="$undef";;
8723 *I_TIME*) i_time="$define"
8724 timeincl=`./findhdr time.h`" $timeincl"
8725 echo "We'll include <time.h>." >&4;;
8726 *) i_time="$undef";;
8729 *I_SYSTIME*) i_systime="$define"
8730 timeincl=`./findhdr sys/time.h`" $timeincl"
8731 echo "We'll include <sys/time.h>." >&4;;
8732 *) i_systime="$undef";;
8737 : check for fd_set items
8740 Checking to see how well your C compiler handles fd_set and friends ...
8742 $cat >fd_set.c <<EOCP
8743 #$i_systime I_SYS_TIME
8744 #$i_sysselct I_SYS_SELECT
8745 #$d_socket HAS_SOCKET
8746 #include <sys/types.h>
8748 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8751 #include <sys/time.h>
8754 #include <sys/select.h>
8763 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8770 set fd_set -DTRYBITS
8771 if eval $compile; then
8772 d_fds_bits="$define"
8774 echo "Well, your system knows about the normal fd_set typedef..." >&4
8776 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8777 d_fd_macros="$define"
8780 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8782 d_fd_macros="$undef"
8786 Hmm, your compiler has some difficulty with fd_set. Checking further...
8789 if eval $compile; then
8792 echo "Well, your system has some sort of fd_set available..." >&4
8794 echo "and you have the normal fd_set macros." >&4
8795 d_fd_macros="$define"
8798 but not the normal fd_set macros! Gross! More work for me...
8800 d_fd_macros="$undef"
8803 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8806 d_fd_macros="$undef"
8811 : see if fgetpos exists
8812 set fgetpos d_fgetpos
8815 : see if flock exists
8819 : see if fork exists
8823 : see if pathconf exists
8824 set pathconf d_pathconf
8827 : see if fpathconf exists
8828 set fpathconf d_fpathconf
8834 echo "Checking to see if your system supports off64_t..." >&4
8836 #include <sys/types.h>
8838 int main() { off64_t x = 7; }'
8841 if eval $compile; then
8843 echo "Yes, it does."
8846 echo "No, it doesn't."
8847 case "$lseeksize" in
8848 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8855 : check for fpos64_t
8857 echo "Checking to see if your system supports fpos64_t..." >&4
8859 #include <sys/stdio.h>
8860 int main() { fpos64_t x x = 7; }'
8863 if eval $compile; then
8865 echo "Yes, it does."
8868 echo "No, it doesn't."
8870 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8877 hasstruct='varname=$1; struct=$2; shift; shift;
8878 while $test $# -ge 2; do
8880 $define) echo "#include <$2>";;
8884 echo "int main () { struct $struct foo; }" >> try.c;
8886 if eval $compile; then
8895 : see if this is a sys/param system
8896 set sys/param.h i_sysparam
8899 : see if this is a sys/mount.h system
8900 set sys/mount.h i_sysmount
8903 : see if sys/types.h has to be included
8904 set sys/types.h i_systypes
8909 echo "Checking to see if your system supports struct fs_data..." >&4
8910 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8912 case "$d_fs_data_s" in
8913 "$define") echo "Yes, it does." ;;
8914 *) echo "No, it doesn't." ;;
8917 : see if fseeko exists
8921 8) echo "(Your long is 64 bits, so in a pinch you could use fseek.)" ;;
8924 : see if fsetpos exists
8925 set fsetpos d_fsetpos
8929 : see if fstatfs exists
8930 set fstatfs d_fstatfs
8934 : see if statvfs exists
8935 set statvfs d_statvfs
8938 : see if fstatvfs exists
8939 set fstatvfs d_fstatvfs
8943 : see if ftello exists
8947 8) echo "(Your long is 64 bits, so in a pinch you could use ftell.)" ;;
8950 : see if getgrent exists
8951 set getgrent d_getgrent
8954 : see if gethostbyaddr exists
8955 set gethostbyaddr d_gethbyaddr
8958 : see if gethostbyname exists
8959 set gethostbyname d_gethbyname
8962 : see if gethostent exists
8963 set gethostent d_gethent
8966 : see how we will look up host name
8969 if set gethostname val -f d_gethname; eval $csym; $val; then
8970 echo 'gethostname() found.' >&4
8971 d_gethname="$define"
8974 if set uname val -f d_uname; eval $csym; $val; then
8977 uname() was found, but you're running xenix, and older versions of xenix
8978 have a broken uname(). If you don't really know whether your xenix is old
8979 enough to have a broken system call, use the default answer.
8986 rp='Is your uname() broken?'
8989 n*) d_uname="$define"; call=uname;;
8992 echo 'uname() found.' >&4
8999 case "$d_gethname" in
9000 '') d_gethname="$undef";;
9003 '') d_uname="$undef";;
9005 case "$d_uname$d_gethname" in
9010 Every now and then someone has a $call() that lies about the hostname
9011 but can't be fixed for political or economic reasons. If you wish, I can
9012 pretend $call() isn't there and maybe compute hostname at run-time
9013 thanks to the '$phostname' command.
9016 rp="Shall I ignore $call() from now on?"
9019 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9022 case "$phostname" in
9024 *) case "$aphostname" in
9030 file=`./loc $file $file $pth`
9031 aphostname=`echo $file $*`
9036 case "$d_uname$d_gethname" in
9039 case "$phostname" in
9041 echo "There will be no way for $package to get your hostname." >&4;;
9043 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9047 case "$d_phostname" in
9048 '') d_phostname="$undef";;
9051 : see if this is a netdb.h system
9055 : see if prototypes for various gethostxxx netdb.h functions are available
9057 set d_gethostprotos gethostent $i_netdb netdb.h
9060 : see if getlogin exists
9061 set getlogin d_getlogin
9064 : see if getmnt exists
9068 : see if getmntent exists
9069 set getmntent d_getmntent
9072 : see if getnetbyaddr exists
9073 set getnetbyaddr d_getnbyaddr
9076 : see if getnetbyname exists
9077 set getnetbyname d_getnbyname
9080 : see if getnetent exists
9081 set getnetent d_getnent
9084 : see if prototypes for various getnetxxx netdb.h functions are available
9086 set d_getnetprotos getnetent $i_netdb netdb.h
9090 : see if getprotobyname exists
9091 set getprotobyname d_getpbyname
9094 : see if getprotobynumber exists
9095 set getprotobynumber d_getpbynumber
9098 : see if getprotoent exists
9099 set getprotoent d_getpent
9102 : see if getpgid exists
9103 set getpgid d_getpgid
9106 : see if getpgrp2 exists
9107 set getpgrp2 d_getpgrp2
9110 : see if getppid exists
9111 set getppid d_getppid
9114 : see if getpriority exists
9115 set getpriority d_getprior
9118 : see if prototypes for various getprotoxxx netdb.h functions are available
9120 set d_getprotoprotos getprotoent $i_netdb netdb.h
9123 : see if getpwent exists
9124 set getpwent d_getpwent
9128 : see if getservbyname exists
9129 set getservbyname d_getsbyname
9132 : see if getservbyport exists
9133 set getservbyport d_getsbyport
9136 : see if getservent exists
9137 set getservent d_getsent
9140 : see if prototypes for various getservxxx netdb.h functions are available
9142 set d_getservprotos getservent $i_netdb netdb.h
9145 : see if getspent exists
9146 set getspent d_getspent
9149 : see if getspnam exists
9150 set getspnam d_getspnam
9153 : see if gettimeofday or ftime exists
9154 set gettimeofday d_gettimeod
9156 case "$d_gettimeod" in
9162 val="$undef"; set d_ftime; eval $setvar
9165 case "$d_gettimeod$d_ftime" in
9168 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9172 : see if this is an grp system
9178 xxx=`./findhdr grp.h`
9179 $cppstdin $cppflags $cppminus < $xxx >$$.h
9181 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9193 set d_grpasswd; eval $setvar
9197 : see if hasmntopt exists
9198 set hasmntopt d_hasmntopt
9201 : see if this is a netinet/in.h or sys/in.h system
9202 set netinet/in.h i_niin sys/in.h i_sysin
9205 : see if arpa/inet.h has to be included
9206 set arpa/inet.h i_arpainet
9209 : see if htonl --and friends-- exists
9214 : Maybe they are macros.
9219 #include <sys/types.h>
9220 #$i_niin I_NETINET_IN
9222 #$i_arpainet I_ARPA_INET
9224 #include <netinet/in.h>
9230 #include <arpa/inet.h>
9233 printf("Defined as a macro.");
9236 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9237 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9239 echo "But it seems to be defined as a macro." >&4
9249 if set index val -f; eval $csym; $val; then
9250 if set strchr val -f d_strchr; eval $csym; $val; then
9251 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9254 echo "strchr() found." >&4
9258 echo "index() found." >&4
9263 echo "index() found." >&4
9266 if set strchr val -f d_strchr; eval $csym; $val; then
9269 echo "strchr() found." >&4
9271 echo "No index() or strchr() found!" >&4
9276 set d_strchr; eval $setvar
9278 set d_index; eval $setvar
9280 : check whether inet_aton exists
9281 set inet_aton d_inetaton
9286 $cat >isascii.c <<'EOCP'
9298 if eval $compile; then
9299 echo "isascii() found." >&4
9302 echo "isascii() NOT found." >&4
9309 : see if killpg exists
9313 : see if lchown exists
9315 $cat > try.c <<'EOCP'
9316 /* System header to define __stub macros and hopefully few prototypes,
9317 which can conflict with char lchown(); below. */
9319 /* Override any gcc2 internal prototype to avoid an error. */
9320 /* We use char because int might match the return type of a gcc2
9321 builtin and then its argument prototype would still apply. */
9324 /* The GNU C library defines this for functions which it implements
9325 to always fail with ENOSYS. Some functions are actually named
9326 something starting with __ and the normal name is an alias. */
9327 #if defined (__stub_lchown) || defined (__stub___lchown)
9335 if eval $compile; then
9336 $echo "lchown() found." >&4
9339 $echo "lchown() NOT found." >&4
9345 : See if number of significant digits in a double precision number is known
9347 $cat >ldbl_dig.c <<EOM
9357 printf("Contains LDBL_DIG");
9360 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9361 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9362 echo "LDBL_DIG found." >&4
9365 echo "LDBL_DIG NOT found." >&4
9372 : see if link exists
9376 : see if localeconv exists
9377 set localeconv d_locconv
9380 : see if lockf exists
9384 : check for long long
9386 $echo $n "Checking to see if your system supports long long..." $c >&4
9387 echo 'int main() { long long x = 7; return 0; }' > try.c
9389 if eval $compile; then
9391 echo " Yes, it does." >&4
9394 echo " No, it doesn't." >&4
9400 : check for length of long long
9401 case "${d_longlong}${longlongsize}" in
9404 $echo $n "Checking to see how big your long longs are..." $c >&4
9405 $cat >try.c <<'EOCP'
9409 printf("%d\n", (int)sizeof(long long));
9414 if eval $compile_ok; then
9415 longlongsize=`./try$exe_ext`
9416 $echo " $longlongsize bytes." >&4
9420 echo "(I can't seem to compile the test program. Guessing...)"
9421 rp="What is the size of a long long (in bytes)?"
9425 if $test "X$longsize" = "X$longlongsize"; then
9426 echo "(That isn't any different from an ordinary long.)"
9432 : see if lstat exists
9436 : see if mblen exists
9440 : see if mbstowcs exists
9441 set mbstowcs d_mbstowcs
9444 : see if mbtowc exists
9448 : see if memchr exists
9452 : see if memcmp exists
9456 : see if memcpy exists
9460 : see if memmove exists
9461 set memmove d_memmove
9464 : see if memset exists
9468 : see if mkdir exists
9472 : see if mkfifo exists
9476 : see if mktime exists
9480 : see if msgctl exists
9484 : see if msgget exists
9488 : see if msgsnd exists
9492 : see if msgrcv exists
9496 : see how much of the 'msg*(2)' library is present.
9499 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9500 *"$undef"*) h_msg=false;;
9504 case "`ipcs 2>&1`" in
9505 "SVID messages"*"not configured"*)
9506 echo "Your $osname does not have the msg*(2) configured." >&4
9521 : we could also check for sys/ipc.h ...
9522 if $h_msg && $test `./findhdr sys/msg.h`; then
9523 echo "You have the full msg*(2) library." >&4
9526 echo "You don't have the full msg*(2) library." >&4
9532 : see if nice exists
9536 : see if POSIX threads are available
9537 set pthread.h i_pthread
9543 : how to create joinable pthreads
9544 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9546 echo "Checking what constant to use for creating joinable pthreads..." >&4
9547 $cat >try.c <<'EOCP'
9548 #include <pthread.h>
9550 int detachstate = JOINABLE;
9553 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9554 if eval $compile; then
9555 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9556 val="$undef" # Yes, undef.
9557 set d_old_pthread_create_joinable
9560 set old_pthread_create_joinable
9563 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9564 if eval $compile; then
9565 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9567 set d_old_pthread_create_joinable
9569 val=PTHREAD_CREATE_UNDETACHED
9570 set old_pthread_create_joinable
9573 set try -DJOINABLE=__UNDETACHED
9574 if eval $compile; then
9575 echo "You seem to use __UNDETACHED." >&4
9577 set d_old_pthread_create_joinable
9580 set old_pthread_create_joinable
9583 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9585 set d_old_pthread_create_joinable
9588 set old_pthread_create_joinable
9595 d_old_pthread_create_joinable="$undef"
9596 old_pthread_create_joinable=""
9599 : see if pause exists
9603 : see if pipe exists
9607 : see if poll exists
9612 : see whether the various POSIXish _yields exist
9614 #include <pthread.h>
9620 #ifdef PTHREAD_YIELD
9623 #ifdef PTHREAD_YIELD_NULL
9624 pthread_yield(NULL);
9630 : see if sched_yield exists
9631 set try -DSCHED_YIELD
9632 if eval $compile; then
9634 sched_yield='sched_yield()'
9638 case "$usethreads" in
9641 $define) echo 'sched_yield() found.' >&4 ;;
9642 *) echo 'sched_yield() NOT found.' >&4 ;;
9648 : see if pthread_yield exists
9649 set try -DPTHREAD_YIELD
9650 if eval $compile; then
9652 case "$sched_yield" in
9653 '') sched_yield='pthread_yield()' ;;
9656 set try -DPTHREAD_YIELD_NULL
9657 if eval $compile; then
9659 case "$sched_yield" in
9660 '') sched_yield='pthread_yield(NULL)' ;;
9666 case "$usethreads" in
9669 $define) echo 'pthread_yield() found.' >&4 ;;
9670 *) echo 'pthread_yield() NOT found.' >&4 ;;
9677 case "$sched_yield" in
9678 '') sched_yield=undef ;;
9683 : see if this is a pwd.h system
9689 xxx=`./findhdr pwd.h`
9690 $cppstdin $cppflags $cppminus < $xxx >$$.h
9692 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9700 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9708 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9716 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9724 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9732 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9740 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9748 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9760 set d_pwquota; eval $setvar
9761 set d_pwage; eval $setvar
9762 set d_pwchange; eval $setvar
9763 set d_pwclass; eval $setvar
9764 set d_pwexpire; eval $setvar
9765 set d_pwcomment; eval $setvar
9766 set d_pwgecos; eval $setvar
9767 set d_pwpasswd; eval $setvar
9771 : see if inttypes.h is available
9772 : we want a real compile instead of Inhdr because some systems
9773 : have an inttypes.h which includes non-existent headers
9776 #include <inttypes.h>
9778 static int32_t foo32 = 0x12345678;
9782 if eval $compile; then
9783 echo "<inttypes.h> found." >&4
9786 echo "<inttypes.h> NOT found." >&4
9795 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9797 #include <sys/types.h>
9798 #$i_inttypes I_INTTYPES
9800 #include <inttypes.h>
9802 int main() { int64_t x = 7; }
9805 if eval $compile; then
9807 echo " Yes, it does." >&4
9810 echo " No, it doesn't." >&4
9818 echo "Checking which 64-bit integer type we could use..." >&4
9824 val='"unsigned int"'
9829 *) case "$longsize" in
9833 val='"unsigned long"'
9838 *) case "$uselonglong:$d_longlong:$longlongsize" in
9843 val='"unsigned long long"'
9848 *) case "$d_int64t" in
9867 '') case "$uselonglong:$d_longlong:$longlongsize" in
9869 echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9870 *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9874 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9879 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9884 : see if readdir and friends exist
9885 set readdir d_readdir
9887 set seekdir d_seekdir
9889 set telldir d_telldir
9891 set rewinddir d_rewinddir
9894 : see if readlink exists
9895 set readlink d_readlink
9898 : see if rename exists
9902 : see if rmdir exists
9906 : see if memory.h is available.
9911 : See if it conflicts with string.h
9917 $cppstdin $cppflags $cppminus < $strings > mem.h
9918 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9920 echo "We won't be including <memory.h>."
9930 : can bcopy handle overlapping blocks?
9935 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9942 $cat >>try.c <<'EOCP'
9945 # include <memory.h>
9948 # include <stdlib.h>
9951 # include <string.h>
9953 # include <strings.h>
9956 # include <unistd.h> /* Needed for NetBSD */
9960 char buf[128], abc[128];
9966 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9968 for (align = 7; align >= 0; align--) {
9969 for (len = 36; len; len--) {
9972 for (off = 1; off <= len; off++) {
9973 bcopy(b, b+off, len);
9974 bcopy(b+off, b, len);
9975 if (bcmp(b, abc, len))
9984 if eval $compile_ok; then
9985 if ./try 2>/dev/null; then
9989 echo "It can't, sorry."
9990 case "$d_memmove" in
9991 "$define") echo "But that's Ok since you have memmove()." ;;
9995 echo "(I can't compile the test program, so we'll assume not...)"
9996 case "$d_memmove" in
9997 "$define") echo "But that's Ok since you have memmove()." ;;
10002 $rm -f try.* try core
10006 : can memcpy handle overlapping blocks?
10008 case "$d_memcpy" in
10011 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10013 #$i_memory I_MEMORY
10014 #$i_stdlib I_STDLIB
10015 #$i_string I_STRING
10016 #$i_unistd I_UNISTD
10018 $cat >>try.c <<'EOCP'
10021 # include <memory.h>
10024 # include <stdlib.h>
10027 # include <string.h>
10029 # include <strings.h>
10032 # include <unistd.h> /* Needed for NetBSD */
10036 char buf[128], abc[128];
10042 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10043 try to store the string in read-only memory. */
10044 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10046 for (align = 7; align >= 0; align--) {
10047 for (len = 36; len; len--) {
10049 memcpy(b, abc, len);
10050 for (off = 1; off <= len; off++) {
10051 memcpy(b+off, b, len);
10052 memcpy(b, b+off, len);
10053 if (memcmp(b, abc, len))
10062 if eval $compile_ok; then
10063 if ./try 2>/dev/null; then
10064 echo "Yes, it can."
10067 echo "It can't, sorry."
10068 case "$d_memmove" in
10069 "$define") echo "But that's Ok since you have memmove()." ;;
10073 echo "(I can't compile the test program, so we'll assume not...)"
10074 case "$d_memmove" in
10075 "$define") echo "But that's Ok since you have memmove()." ;;
10080 $rm -f try.* try core
10084 : can memcmp be trusted to compare relative magnitude?
10086 case "$d_memcmp" in
10089 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10091 #$i_memory I_MEMORY
10092 #$i_stdlib I_STDLIB
10093 #$i_string I_STRING
10094 #$i_unistd I_UNISTD
10096 $cat >>try.c <<'EOCP'
10099 # include <memory.h>
10102 # include <stdlib.h>
10105 # include <string.h>
10107 # include <strings.h>
10110 # include <unistd.h> /* Needed for NetBSD */
10116 if ((a < b) && memcmp(&a, &b, 1) < 0)
10122 if eval $compile_ok; then
10123 if ./try 2>/dev/null; then
10124 echo "Yes, it can."
10127 echo "No, it can't (it uses signed chars)."
10130 echo "(I can't compile the test program, so we'll assume not...)"
10134 $rm -f try.* try core
10138 : see if select exists
10139 set select d_select
10142 : see if semctl exists
10143 set semctl d_semctl
10146 : see if semget exists
10147 set semget d_semget
10150 : see if semop exists
10154 : see how much of the 'sem*(2)' library is present.
10157 case "$d_semctl$d_semget$d_semop" in
10158 *"$undef"*) h_sem=false;;
10162 case "`ipcs 2>&1`" in
10163 "SVID messages"*"not configured"*)
10164 echo "Your $osname does not have the sem*(2) configured." >&4
10167 set semctl d_semctl
10169 set semget d_semget
10177 : we could also check for sys/ipc.h ...
10178 if $h_sem && $test `./findhdr sys/sem.h`; then
10179 echo "You have the full sem*(2) library." >&4
10182 echo "You don't have the full sem*(2) library." >&4
10188 : see whether sys/sem.h defines union semun
10190 $cat > try.c <<'END'
10191 #include <sys/types.h>
10192 #include <sys/ipc.h>
10193 #include <sys/sem.h>
10194 int main () { union semun semun; semun.buf = 0; }
10197 if eval $compile; then
10198 echo "You have union semun in <sys/sem.h>." >&4
10201 echo "You do not have union semun in <sys/sem.h>." >&4
10204 $rm -f try try.c try.h
10208 : see how to do semctl IPC_STAT
10211 : see whether semctl IPC_STAT can use union semun
10216 # define S_IRUSR S_IREAD
10217 # define S_IWUSR S_IWRITE
10218 # define S_IXUSR S_IEXEC
10220 # define S_IRUSR 0400
10221 # define S_IWUSR 0200
10222 # define S_IXUSR 0100
10224 # define S_IRGRP (S_IRUSR>>3)
10225 # define S_IWGRP (S_IWUSR>>3)
10226 # define S_IXGRP (S_IXUSR>>3)
10227 # define S_IROTH (S_IRUSR>>6)
10228 # define S_IWOTH (S_IWUSR>>6)
10229 # define S_IXOTH (S_IXUSR>>6)
10232 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10233 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10234 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10239 #include <sys/types.h>
10240 #include <sys/ipc.h>
10241 #include <sys/sem.h>
10242 #include <sys/stat.h>
10249 #$d_union_semun HAS_UNION_SEMUN
10252 #ifndef HAS_UNION_SEMUN
10255 struct semid_ds *buf;
10256 unsigned short *array;
10262 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10263 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10265 struct semid_ds argbuf;
10268 st = semctl(sem, 0, IPC_STAT, arg);
10272 # endif /* IPC_STAT */
10273 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10275 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10276 # endif /* IPC_RMID */
10277 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10279 #endif /* IPC_PRIVATE && ... */
10280 printf("semget failed: errno = %d\n", errno);
10286 if eval $compile; then
10289 semun) val="$define" ;;
10295 case "$d_semctl_semun" in
10297 echo "You can use union semun for semctl IPC_STAT." >&4
10300 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10305 : see whether semctl IPC_STAT can use struct semid_ds pointer
10306 $cat > try.c <<'END'
10307 #include <sys/types.h>
10308 #include <sys/ipc.h>
10309 #include <sys/sem.h>
10310 #include <sys/stat.h>
10318 struct semid_ds arg;
10321 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10322 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10325 st = semctl(sem, 0, IPC_STAT, &arg);
10327 printf("semid_ds\n");
10329 # endif /* IPC_STAT */
10330 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10332 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10333 # endif /* IPC_RMID */
10334 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10336 #endif /* IPC_PRIVATE && ... */
10337 printf("semget failed: errno = %d\n", errno);
10344 if eval $compile; then
10347 semid_ds) val="$define" ;;
10351 set d_semctl_semid_ds
10353 case "$d_semctl_semid_ds" in
10355 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10357 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10364 # We do not have the full sem*(2) library, so assume we can not
10370 set d_semctl_semid_ds
10375 : see if setegid exists
10376 set setegid d_setegid
10379 : see if seteuid exists
10380 set seteuid d_seteuid
10383 : see if setgrent exists
10384 set setgrent d_setgrent
10387 : see if sethostent exists
10388 set sethostent d_sethent
10391 : see if setlinebuf exists
10392 set setlinebuf d_setlinebuf
10395 : see if setlocale exists
10396 set setlocale d_setlocale
10399 : see if setnetent exists
10400 set setnetent d_setnent
10403 : see if setprotoent exists
10404 set setprotoent d_setpent
10407 : see if setpgid exists
10408 set setpgid d_setpgid
10411 : see if setpgrp2 exists
10412 set setpgrp2 d_setpgrp2
10415 : see if setpriority exists
10416 set setpriority d_setprior
10419 : see if setpwent exists
10420 set setpwent d_setpwent
10423 : see if setregid exists
10424 set setregid d_setregid
10426 set setresgid d_setresgid
10429 : see if setreuid exists
10430 set setreuid d_setreuid
10432 set setresuid d_setresuid
10435 : see if setrgid exists
10436 set setrgid d_setrgid
10439 : see if setruid exists
10440 set setruid d_setruid
10443 : see if setservent exists
10444 set setservent d_setsent
10447 : see if setsid exists
10448 set setsid d_setsid
10451 : see if setspent exists
10452 set setspent d_setspent
10455 : see if setvbuf exists
10456 set setvbuf d_setvbuf
10459 : see if sfio.h is available
10464 : see if sfio library is available
10475 : Ok, but do we want to use it.
10479 true|$define|[yY]*) dflt='y';;
10482 echo "$package can use the sfio library, but it is experimental."
10483 rp="You seem to have sfio available, do you want to try using it?"
10487 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10489 : Remove sfio from list of libraries to use
10490 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10493 echo "libs = $libs" >&4
10497 *) case "$usesfio" in
10498 true|$define|[yY]*)
10499 echo "Sorry, cannot find sfio on this machine" >&4
10500 echo "Ignoring your setting of usesfio=$usesfio" >&4
10508 $define) usesfio='true';;
10509 *) usesfio='false';;
10512 : see if shmctl exists
10513 set shmctl d_shmctl
10516 : see if shmget exists
10517 set shmget d_shmget
10520 : see if shmat exists
10523 : see what shmat returns
10526 $cat >shmat.c <<'END'
10527 #include <sys/shm.h>
10530 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10535 echo "and it returns ($shmattype)." >&4
10536 : see if a prototype for shmat is available
10537 xxx=`./findhdr sys/shm.h`
10538 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10539 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10550 set d_shmatprototype
10553 : see if shmdt exists
10557 : see how much of the 'shm*(2)' library is present.
10560 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10561 *"$undef"*) h_shm=false;;
10565 case "`ipcs 2>&1`" in
10566 "SVID shared memory"*"not configured"*)
10567 echo "Your $osname does not have the shm*(2) configured." >&4
10570 set shmctl d_shmctl
10572 set shmget d_shmget
10582 : we could also check for sys/ipc.h ...
10583 if $h_shm && $test `./findhdr sys/shm.h`; then
10584 echo "You have the full shm*(2) library." >&4
10587 echo "You don't have the full shm*(2) library." >&4
10594 : see if we have sigaction
10595 if set sigaction val -f d_sigaction; eval $csym; $val; then
10596 echo 'sigaction() found.' >&4
10597 $cat > try.c <<'EOP'
10599 #include <sys/types.h>
10600 #include <signal.h>
10603 struct sigaction act, oact;
10605 oact.sa_handler = 0;
10606 /* so that act and oact are used */
10607 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10611 if eval $compile_ok; then
10614 echo "But you don't seem to have a useable struct sigaction." >&4
10618 echo 'sigaction NOT found.' >&4
10621 set d_sigaction; eval $setvar
10622 $rm -f try try$_o try.c
10624 : see if sigsetjmp exists
10626 case "$d_sigsetjmp" in
10628 $cat >try.c <<'EOP'
10629 #include <setjmp.h>
10634 if (sigsetjmp(env,1))
10637 siglongjmp(env, 1);
10642 if eval $compile; then
10643 if ./try >/dev/null 2>&1; then
10644 echo "POSIX sigsetjmp found." >&4
10648 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10654 echo "sigsetjmp not found." >&4
10658 *) val="$d_sigsetjmp"
10659 case "$d_sigsetjmp" in
10660 $define) echo "POSIX sigsetjmp found." >&4;;
10661 $undef) echo "sigsetjmp not found." >&4;;
10669 : see if sqrtl exists
10673 : see if sys/stat.h is available
10674 set sys/stat.h i_sysstat
10678 : see if stat knows about block sizes
10680 echo "Checking to see if your struct stat has st_blocks field..." >&4
10681 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10685 : see if this is a sys/vfs.h system
10686 set sys/vfs.h i_sysvfs
10690 : see if this is a sys/statfs.h system
10691 set sys/statfs.h i_sysstatfs
10696 echo "Checking to see if your system supports struct statfs..." >&4
10697 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
10699 case "$d_statfs_s" in
10700 "$define") echo "Yes, it does." ;;
10701 *) echo "No, it doesn't." ;;
10706 : see if struct statfs knows about f_flags
10707 case "$d_statfs_s" in
10710 echo "Checking to see if your struct statfs has f_flags field..." >&4
10711 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
10715 set d_statfs_f_flags
10719 case "$d_statfs_f_flags" in
10720 "$define") echo "Yes, it does." ;;
10721 *) echo "No, it doesn't." ;;
10724 : see if _ptr and _cnt from stdio act std
10726 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10727 echo "(Looks like you have stdio.h from Linux.)"
10728 case "$stdio_ptr" in
10729 '') stdio_ptr='((fp)->_IO_read_ptr)'
10732 *) ptr_lval=$d_stdio_ptr_lval;;
10734 case "$stdio_cnt" in
10735 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10738 *) cnt_lval=$d_stdio_cnt_lval;;
10740 case "$stdio_base" in
10741 '') stdio_base='((fp)->_IO_read_base)';;
10743 case "$stdio_bufsiz" in
10744 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10747 case "$stdio_ptr" in
10748 '') stdio_ptr='((fp)->_ptr)'
10751 *) ptr_lval=$d_stdio_ptr_lval;;
10753 case "$stdio_cnt" in
10754 '') stdio_cnt='((fp)->_cnt)'
10757 *) cnt_lval=$d_stdio_cnt_lval;;
10759 case "$stdio_base" in
10760 '') stdio_base='((fp)->_base)';;
10762 case "$stdio_bufsiz" in
10763 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10766 : test whether _ptr and _cnt really work
10767 echo "Checking how std your stdio is..." >&4
10770 #define FILE_ptr(fp) $stdio_ptr
10771 #define FILE_cnt(fp) $stdio_cnt
10773 FILE *fp = fopen("try.c", "r");
10776 18 <= FILE_cnt(fp) &&
10777 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10785 if eval $compile; then
10787 echo "Your stdio acts pretty std."
10790 echo "Your stdio isn't very std."
10793 echo "Your stdio doesn't appear very std."
10799 : Can _ptr be used as an lvalue?
10800 case "$d_stdstdio$ptr_lval" in
10801 $define$define) val=$define ;;
10804 set d_stdio_ptr_lval
10807 : Can _cnt be used as an lvalue?
10808 case "$d_stdstdio$cnt_lval" in
10809 $define$define) val=$define ;;
10812 set d_stdio_cnt_lval
10815 : see if _base is also standard
10817 case "$d_stdstdio" in
10821 #define FILE_base(fp) $stdio_base
10822 #define FILE_bufsiz(fp) $stdio_bufsiz
10824 FILE *fp = fopen("try.c", "r");
10827 19 <= FILE_bufsiz(fp) &&
10828 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10835 if eval $compile; then
10837 echo "And its _base field acts std."
10840 echo "But its _base field isn't std."
10843 echo "However, it seems to be lacking the _base field."
10852 Checking how to access stdio streams by file descriptor number...
10854 case "$stdio_stream_array" in
10855 '') $cat >try.c <<EOCP
10858 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10862 for s in _iob __iob __sF
10864 set try -DSTDIO_STREAM_ARRAY=$s
10865 if eval $compile; then
10866 case "`./try$exe_ext`" in
10867 yes) stdio_stream_array=$s; break ;;
10871 $rm -f try.* try$exe_ext
10873 case "$stdio_stream_array" in
10875 I can't figure out how to access stdio streams by file descriptor number.
10877 d_stdio_stream_array="$undef"
10880 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10882 d_stdio_stream_array="$define"
10886 : see if strcoll exists
10887 set strcoll d_strcoll
10890 : check for structure copying
10892 echo "Checking to see if your C compiler can copy structs..." >&4
10893 $cat >try.c <<'EOCP'
10903 if $cc -c try.c >/dev/null 2>&1 ; then
10905 echo "Yup, it can."
10908 echo "Nope, it can't."
10914 : see if strerror and/or sys_errlist[] exist
10916 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10917 if set strerror val -f d_strerror; eval $csym; $val; then
10918 echo 'strerror() found.' >&4
10919 d_strerror="$define"
10920 d_strerrm='strerror(e)'
10921 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10922 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10923 d_syserrlst="$define"
10925 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10926 d_syserrlst="$undef"
10928 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10929 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10930 echo 'strerror() found in string header.' >&4
10931 d_strerror="$define"
10932 d_strerrm='strerror(e)'
10933 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10934 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10935 d_syserrlst="$define"
10937 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10938 d_syserrlst="$undef"
10940 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10941 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10942 d_strerror="$undef"
10943 d_syserrlst="$define"
10944 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10946 echo 'strerror() and sys_errlist[] NOT found.' >&4
10947 d_strerror="$undef"
10948 d_syserrlst="$undef"
10949 d_strerrm='"unknown"'
10953 : see if strtod exists
10954 set strtod d_strtod
10957 : see if strtol exists
10958 set strtol d_strtol
10961 : see if strtold exists
10962 set strtold d_strtold
10965 : see if strtoul exists
10966 set strtoul d_strtoul
10969 : see if strtoull exists
10970 set strtoull d_strtoull
10973 : see if strtouq exists
10974 set strtouq d_strtouq
10977 : see if strxfrm exists
10978 set strxfrm d_strxfrm
10981 : see if symlink exists
10982 set symlink d_symlink
10985 : see if syscall exists
10986 set syscall d_syscall
10989 : see if sysconf exists
10990 set sysconf d_sysconf
10993 : see if system exists
10994 set system d_system
10997 : see if tcgetpgrp exists
10998 set tcgetpgrp d_tcgetpgrp
11001 : see if tcsetpgrp exists
11002 set tcsetpgrp d_tcsetpgrp
11005 : see if prototype for telldir is available
11007 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11010 : see if this is a sys/times.h system
11011 set sys/times.h i_systimes
11014 : see if times exists
11016 if set times val -f d_times; eval $csym; $val; then
11017 echo 'times() found.' >&4
11020 case "$i_systimes" in
11021 "$define") inc='sys/times.h';;
11023 rp="What is the type returned by times() on this system?"
11024 set clock_t clocktype long stdio.h sys/types.h $inc
11027 echo 'times() NOT found, hope that will do.' >&4
11032 : see if truncate exists
11033 set truncate d_truncate
11036 : see if tzname[] exists
11038 if set tzname val -a d_tzname; eval $csym; $val; then
11040 echo 'tzname[] found.' >&4
11043 echo 'tzname[] NOT found.' >&4
11048 : see if umask exists
11052 : see if ustat exists
11056 : backward compatibility for d_hvfork
11057 if test X$d_hvfork != X; then
11058 d_vfork="$d_hvfork"
11061 : see if there is a vfork
11066 : Ok, but do we want to use it. vfork is reportedly unreliable in
11067 : perl on Solaris 2.x, and probably elsewhere.
11071 case "$usevfork" in
11077 Perl can only use a vfork() that doesn't suffer from strict
11078 restrictions on calling functions or modifying global data in
11079 the child. For example, glibc-2.1 contains such a vfork()
11080 that is unsuitable. If your system provides a proper fork()
11081 call, chances are that you do NOT want perl to use vfork().
11084 rp="Do you still want to use vfork()?"
11089 echo "Ok, we won't use vfork()."
11098 $define) usevfork='true';;
11099 *) usevfork='false';;
11102 : see if this is an sysdir system
11103 set sys/dir.h i_sysdir
11106 : see if this is an sysndir system
11107 set sys/ndir.h i_sysndir
11110 : see if closedir exists
11111 set closedir d_closedir
11114 case "$d_closedir" in
11117 echo "Checking whether closedir() returns a status..." >&4
11118 cat > closedir.c <<EOM
11119 #$i_dirent I_DIRENT /**/
11120 #$i_sysdir I_SYS_DIR /**/
11121 #$i_sysndir I_SYS_NDIR /**/
11122 #$i_systypes I_SYS_TYPES /**/
11124 #if defined(I_SYS_TYPES)
11125 #include <sys/types.h>
11127 #if defined(I_DIRENT)
11128 #include <dirent.h>
11129 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11130 #include <sys/dir.h>
11134 #include <sys/ndir.h>
11138 #include <ndir.h> /* may be wrong in the future */
11140 #include <sys/dir.h>
11145 int main() { return closedir(opendir(".")); }
11148 if eval $compile_ok; then
11149 if ./closedir > /dev/null 2>&1 ; then
11150 echo "Yes, it does."
11153 echo "No, it doesn't."
11157 echo "(I can't seem to compile the test program--assuming it doesn't)"
11165 set d_void_closedir
11168 : check for volatile keyword
11170 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11171 $cat >try.c <<'EOCP'
11174 typedef struct _goo_struct goo_struct;
11175 goo_struct * volatile goo = ((goo_struct *)0);
11176 struct _goo_struct {
11181 typedef unsigned short foo_t;
11182 char *volatile foo;
11184 volatile foo_t blech;
11188 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11190 echo "Yup, it does."
11193 echo "Nope, it doesn't."
11199 : see if there is a wait4
11203 : see if waitpid exists
11204 set waitpid d_waitpid
11207 : see if wcstombs exists
11208 set wcstombs d_wcstombs
11211 : see if wctomb exists
11212 set wctomb d_wctomb
11215 : preserve RCS keywords in files with variable substitution, grrr
11220 Revision='$Revision'
11222 case "$crosscompile" in
11223 ''|[nN]*) crosscompile="$undef" ;;
11227 next|rhapsody) multiarch="$define" ;;
11229 case "$multiarch" in
11230 ''|[nN]*) multiarch="$undef" ;;
11233 : check for alignment requirements
11235 case "$crosscompile$multiarch" in
11238 You seem to be either cross-compiling or doing a multiarchitecture build,
11239 skipping the memory alignment check.
11242 case "$alignbytes" in
11243 '') alignbytes=8 ;;
11247 case "$alignbytes" in
11248 '') echo "Checking alignment constraints..." >&4
11249 $cat >try.c <<'EOCP'
11257 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11262 if eval $compile_ok; then
11266 echo "(I can't seem to compile the test program...)"
11269 *) dflt="$alignbytes"
11272 rp="Doubles must be aligned on a how-many-byte boundary?"
11280 : check for ordering of bytes in a long
11282 case "$crosscompile$multiarch" in
11285 You seem to be either cross-compiling or doing a multiarchitecture build,
11286 skipping the byteorder check.
11292 case "$byteorder" in
11295 In the following, larger digits indicate more significance. A big-endian
11296 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11297 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11298 machines may have weird orders like 3412. A Cray will report 87654321,
11299 an Alpha will report 12345678. If the test program works the default is
11301 I'm now running the test program...
11303 $cat >try.c <<'EOCP'
11310 char c[sizeof(long)];
11313 if (sizeof(long) > 4)
11314 u.l = (0x08070605L << 32) | 0x04030201L;
11317 for (i = 0; i < sizeof(long); i++)
11318 printf("%c", u.c[i]+'0');
11325 if eval $compile && ./try > /dev/null; then
11328 [1-4][1-4][1-4][1-4]|12345678|87654321)
11329 echo "(The test program ran ok.)"
11330 echo "byteorder=$dflt"
11333 ????|????????) echo "(The test program ran ok.)" ;;
11334 *) echo "(The test program didn't run right for some reason.)" ;;
11339 (I can't seem to compile the test program. Guessing big-endian...)
11342 case "$xxx_prompt" in
11344 rp="What is the order of bytes in a long?"
11358 : how do we catenate cpp tokens here?
11360 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11361 $cat >cpp_stuff.c <<'EOCP'
11362 #define RCAT(a,b)a/**/b
11363 #define ACAT(a,b)a ## b
11367 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11368 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11369 echo "Oh! Smells like ANSI's been here." >&4
11370 echo "We can catify or stringify, separately or together!"
11372 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11373 echo "Ah, yes! The good old days!" >&4
11374 echo "However, in the good old days we don't know how to stringify and"
11375 echo "catify at the same time."
11379 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11380 to have to edit the values of CAT[2-5] in config.h...
11382 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11386 : see if this is a db.h system
11392 : Check db version.
11394 echo "Checking Berkeley DB version ..." >&4
11400 #include <sys/types.h>
11405 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11406 int Major, Minor, Patch ;
11407 unsigned long Version ;
11408 (void)db_version(&Major, &Minor, &Patch) ;
11409 printf("You have Berkeley DB Version 2 or greater\n");
11411 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11412 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11413 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11414 Major, Minor, Patch) ;
11416 /* check that db.h & libdb are compatible */
11417 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11418 printf("db.h and libdb are incompatible\n") ;
11422 printf("db.h and libdb are compatible\n") ;
11424 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11425 + DB_VERSION_PATCH ;
11427 /* needs to be >= 2.3.4 */
11428 if (Version < 2003004) {
11429 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11430 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11436 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11437 printf("You have Berkeley DB Version 1\n");
11438 exit(0); /* DB version < 2: the coast is clear. */
11440 exit(1); /* <db.h> not Berkeley DB? */
11446 if eval $compile_ok && ./try; then
11447 echo 'Looks OK.' >&4
11449 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11453 : Remove db from list of libraries to use
11454 echo "Removing unusable -ldb from library list" >&4
11455 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11458 echo "libs = $libs" >&4
11468 : Check the return type needed for hash
11470 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11476 #include <sys/types.h>
11479 #ifndef DB_VERSION_MAJOR
11480 u_int32_t hash_cb (ptr, size)
11488 info.hash = hash_cb;
11492 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11493 if $contains warning try.out >>/dev/null 2>&1 ; then
11496 db_hashtype='u_int32_t'
11499 : XXX Maybe we should just give up here.
11500 db_hashtype=u_int32_t
11502 echo "Help: I can't seem to compile the db test program." >&4
11503 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11506 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11508 *) db_hashtype=u_int32_t
11513 : Check the return type needed for prefix
11515 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11521 #include <sys/types.h>
11524 #ifndef DB_VERSION_MAJOR
11525 size_t prefix_cb (key1, key2)
11533 info.prefix = prefix_cb;
11537 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11538 if $contains warning try.out >>/dev/null 2>&1 ; then
11539 db_prefixtype='int'
11541 db_prefixtype='size_t'
11544 db_prefixtype='size_t'
11545 : XXX Maybe we should just give up here.
11547 echo "Help: I can't seem to compile the db test program." >&4
11548 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11551 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11553 *) db_prefixtype='size_t'
11557 : check for void type
11559 echo "Checking to see how well your C compiler groks the void type..." >&4
11560 case "$voidflags" in
11562 $cat >try.c <<'EOCP'
11568 extern void moo(); /* function returning void */
11569 void (*goo)(); /* ptr to func returning void */
11571 void *hue; /* generic ptr */
11584 int main() { sub(); }
11586 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11587 voidflags=$defvoidused
11588 echo "Good. It appears to support void to the level $package wants.">&4
11589 if $contains warning .out >/dev/null 2>&1; then
11590 echo "However, you might get some warnings that look like this:"
11594 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11595 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11596 echo "It supports 1..."
11597 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11598 echo "It also supports 2..."
11599 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11601 echo "And it supports 4 but not 8 definitely."
11603 echo "It doesn't support 4..."
11604 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11606 echo "But it supports 8."
11609 echo "Neither does it support 8."
11613 echo "It does not support 2..."
11614 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11616 echo "But it supports 4 and 8."
11618 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11620 echo "And it supports 4 but has not heard about 8."
11622 echo "However it supports 8 but not 4."
11627 echo "There is no support at all for void."
11632 case "$voidflags" in
11634 *) $cat >&4 <<'EOM'
11635 Support flag bits are:
11636 1: basic void declarations.
11637 2: arrays of pointers to functions returning void.
11638 4: operations between pointers to and addresses of void functions.
11639 8: generic void pointers.
11642 rp="Your void support flags add up to what?"
11650 : How can we generate normalized random numbers ?
11652 echo "Looking for a random number function..." >&4
11653 case "$randfunc" in
11655 if set drand48 val -f; eval $csym; $val; then
11657 echo "Good, found drand48()." >&4
11658 elif set random val -f; eval $csym; $val; then
11660 echo "OK, found random()." >&4
11663 echo "Yick, looks like I have to use rand()." >&4
11674 *-Dmy_rand=*|*-Dmy_srand=*)
11675 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11676 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11677 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11678 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11682 while $test "$cont"; do
11683 rp="Use which function to generate random numbers?"
11685 if $test "$ans" = "$dflt"; then
11691 if set $ans val -f; eval $csym; $val; then
11695 rp="I cannot find function $ans. Use that name anyway?"
11704 case "$randfunc" in
11706 drand01="drand48()"
11712 case "$randbits" in
11714 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11716 #$i_unistd I_UNISTD
11717 #$i_stdlib I_STDLIB
11720 # include <unistd.h>
11723 # include <stdlib.h>
11728 register unsigned long tmp;
11729 register unsigned long max = 0L;
11731 for (i = 1000; i; i--) {
11732 tmp = (unsigned long) $randfunc();
11733 if (tmp > max) max = tmp;
11735 for (i = 0; max; i++)
11741 if eval $compile_ok; then
11745 echo "(I can't seem to compile the test program...)"
11752 rp="How many bits does your $randfunc() function produce?"
11756 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11757 seedfunc="s$randfunc"
11758 randseedtype=unsigned
11762 rp="How many bits does your $randfunc() function produce?"
11765 seedfunc="s$randfunc"
11766 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11767 if set $seedfunc val -f; eval $csym; $val; then
11768 echo "(Using $seedfunc() to seed random generator)"
11770 echo "(Warning: no $seedfunc() to seed random generator)"
11773 randseedtype=unsigned
11781 echo "Determining whether or not we are on an EBCDIC system..." >&4
11782 $cat >tebcdic.c <<'EOM'
11785 if ('M'==0xd4) return 0;
11792 if eval $compile_ok; then
11794 echo "You have EBCDIC." >&4
11797 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
11800 echo "I'm unable to compile the test program." >&4
11801 echo "I'll assume ASCII or some ISO Latin." >&4
11803 $rm -f tebcdic.c tebcdic
11809 Checking how to flush all pending stdio output...
11811 # I only know how to find the first 32 possibly open files on SunOS.
11812 # See also hints/sunos_4_1.sh and util.c --AD
11814 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11816 $cat >>try.c <<EOCP
11818 #$i_unistd I_UNISTD
11820 # include <unistd.h>
11822 #$d_sysconf HAS_SYSCONF
11823 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11824 #ifdef HAS_STDIO_STREAM_ARRAY
11825 # define STDIO_STREAM_ARRAY $stdio_stream_array
11828 FILE* p = fopen("try.out", "w");
11832 # ifdef TRY_FPRINTF
11836 #ifdef TRY_FFLUSH_NULL
11839 #ifdef TRY_FFLUSH_ALL
11841 long open_max = -1;
11842 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11843 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11845 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11846 open_max = sysconf(_SC_OPEN_MAX);
11849 open_max = FOPEN_MAX;
11852 open_max = OPEN_MAX;
11861 # ifdef HAS_STDIO_STREAM_ARRAY
11862 if (open_max > 0) {
11864 for (i = 0; i < open_max; i++)
11865 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11866 STDIO_STREAM_ARRAY[i]._file < open_max &&
11867 STDIO_STREAM_ARRAY[i]._flag)
11868 fflush(&STDIO_STREAM_ARRAY[i]);
11876 : first we have to find out how _not_ to flush
11877 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11879 set try -DTRY_FPUTC
11880 if eval $compile; then
11882 ./try$exe_ext 2>/dev/null
11883 if $test ! -s try.out -a "X$?" = X42; then
11889 set try -DTRY_FPRINTF
11891 if eval $compile; then
11893 ./try$exe_ext 2>/dev/null
11894 if $test ! -s try.out -a "X$?" = X42; then
11895 output=-DTRY_FPRINTF
11901 : check for fflush NULL behaviour
11902 case "$fflushNULL" in
11903 '') set try -DTRY_FFLUSH_NULL $output
11904 if eval $compile; then
11906 ./try$exe_ext 2>/dev/null
11908 if $test -s try.out -a "X$code" = X42; then
11909 fflushNULL="`$cat try.out`"
11911 if $test "X$code" != X42; then
11913 (If this test failed, don't worry, we'll try another method shortly.)
11918 $rm -f core try.core core.try.*
11919 case "$fflushNULL" in
11921 Your fflush(NULL) works okay.
11923 fflushNULL="$define"
11926 Your fflush(NULL) isn't working (contrary to ANSI C).
11928 fflushNULL="$undef"
11931 Cannot figure out whether your fflush(NULL) works or not.
11932 I'm assuming it doesn't (contrary to ANSI C).
11934 fflushNULL="$undef"
11938 $define|true|[yY]*)
11939 fflushNULL="$define"
11942 fflushNULL="$undef"
11945 : check explicit looping only if NULL did not work
11946 case "$fflushNULL" in
11948 : check for fflush all behaviour
11949 case "$fflushall" in
11950 '') set try -DTRY_FFLUSH_ALL $output
11951 if eval $compile; then
11953 (Now testing the other method--but note that also this may fail.)
11956 ./try$exe_ext 2>/dev/null
11957 if $test -s try.out -a "X$?" = X42; then
11958 fflushall="`$cat try.out`"
11961 $rm -f core try.core core.try.*
11962 case "$fflushall" in
11964 Whew. Flushing explicitly all the stdio streams works.
11966 fflushall="$define"
11969 Sigh. Flushing explicitly all the stdio streams doesn't work.
11974 Cannot figure out whether flushing stdio streams explicitly works or not.
11975 I'm assuming it doesn't.
11981 "$define"|true|[yY]*)
11982 fflushall="$define"
11989 *) fflushall="$undef"
11992 case "$fflushNULL$fflushall" in
11995 I cannot figure out how to flush pending stdio output.
11999 $rm -f try.* try$exe_ext
12001 : Store the full pathname to the ar program for use in the C program
12002 : Respect a hint or command line value for full_ar.
12007 : Store the full pathname to the sed program for use in the C program
12010 : see what type gids are declared as in the kernel
12012 echo "Looking for the type for group ids returned by getgid()."
12013 set gid_t gidtype xxx stdio.h sys/types.h
12017 xxx=`./findhdr sys/user.h`
12018 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12020 unsigned) dflt="$1 $2" ;;
12024 *) dflt="$gidtype";;
12027 gid_t) echo "gid_t found." ;;
12028 *) rp="What is the type for group ids returned by getgid()?"
12036 *_t) zzz="$gidtype" ;;
12039 echo "Checking the size of $zzz..." >&4
12041 #include <sys/types.h>
12044 printf("%d\n", (int)sizeof($gidtype));
12049 if eval $compile_ok; then
12053 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12056 echo "Your $zzz size is $gidsize bytes."
12061 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12067 *_t) zzz="$gidtype" ;;
12070 echo "Checking the sign of $zzz..." >&4
12072 #include <sys/types.h>
12083 if eval $compile; then
12087 echo "(I can't execute the test program--guessing unsigned.)" >&4
12091 1) echo "Your $zzz is unsigned." ;;
12092 -1) echo "Your $zzz is signed." ;;
12098 echo "(I can't compile the test program--guessing unsigned.)" >&4
12102 : check for length of character
12104 case "$charsize" in
12106 echo "Checking to see how big your characters are (hey, you never know)..." >&4
12107 $cat >try.c <<'EOCP'
12111 printf("%d\n", (int)sizeof(char));
12116 if eval $compile_ok; then
12120 echo "(I can't seem to compile the test program. Guessing...)"
12127 rp="What is the size of a character (in bytes)?"
12134 $echo "Choosing the C types to be used for Perl's internal types..." >&4
12136 case "$use64bits:$d_quad:$quadtype" in
12139 uvtype="$uquadtype"
12144 uvtype="unsigned long"
12150 case "$uselongdouble:$d_longdbl" in
12152 nvtype="long double"
12153 nvsize=$longdblsize
12160 echo "(IV will be "$ivtype", $ivsize bytes)"
12161 echo "(UV will be "$uvtype", $uvsize bytes)"
12162 echo "(NV will be "$nvtype", $nvsize bytes)"
12165 #$i_inttypes I_INTTYPES
12167 #include <inttypes.h>
12172 int8_t i = INT8_MAX;
12173 uint8_t u = UINT8_MAX;
12174 printf("int8_t\n");
12177 int16_t i = INT16_MAX;
12178 uint16_t i = UINT16_MAX;
12179 printf("int16_t\n");
12182 int32_t i = INT32_MAX;
12183 uint32_t u = UINT32_MAX;
12184 printf("int32_t\n");
12190 '') case "$charsize" in
12192 u8type="unsigned char"
12201 if eval $compile; then
12202 case "`./try$exe_ext`" in
12203 int8_t) i8type=int8_t
12213 '') if $test $charsize -ge 1; then
12215 u8type="unsigned char"
12223 '') case "$shortsize" in
12225 u16type="unsigned short"
12233 '') set try -DINT16
12234 if eval $compile; then
12235 case "`./try$exe_ext`" in
12247 '') if $test $shortsize -ge 2; then
12249 u16type="unsigned short"
12257 '') case "$longsize" in
12259 u32type="unsigned long"
12263 *) case "$intsize" in
12265 u32type="unsigned int"
12275 '') set try -DINT32
12276 if eval $compile; then
12277 case "`./try$exe_ext`" in
12289 '') if $test $intsize -ge 4; then
12291 u32type="unsigned int"
12299 '') case "$d_quad:$quadtype" in
12301 i64type="$quadtype"
12302 u64type="$uquadtype"
12314 if $test X"$quadtype" != X; then
12316 echo "Checking how to print 64-bit integers..." >&4
12318 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12319 $cat >try.c <<'EOCP'
12320 #include <sys/types.h>
12323 int q = 12345678901;
12324 printf("%ld\n", q);
12328 if eval $compile; then
12329 yyy=`./try$exe_ext`
12332 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12333 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12334 echo "We will use %d."
12340 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12341 $cat >try.c <<'EOCP'
12342 #include <sys/types.h>
12345 long q = 12345678901;
12346 printf("%ld\n", q);
12350 if eval $compile; then
12351 yyy=`./try$exe_ext`
12354 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12355 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12356 echo "We will use %ld."
12362 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$quadtype" = Xint64_t; then
12363 $cat >try.c <<'EOCP'
12364 #include <sys/types.h>
12365 #include <inttypes.h>
12368 int64_t q = 12345678901;
12369 printf("%" PRId64 "\n", q);
12373 if eval $compile; then
12374 yyy=`./try$exe_ext`
12377 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12378 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12379 echo "We will use the C9X style."
12385 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12386 $cat >try.c <<'EOCP'
12387 #include <sys/types.h>
12390 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12391 printf("%lld\n", q);
12395 if eval $compile; then
12396 yyy=`./try$exe_ext`
12399 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12400 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12401 echo "We will use the %lld style."
12407 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12409 #include <sys/types.h>
12412 $quadtype q = 12345678901;
12413 printf("%Ld\n", q);
12417 if eval $compile; then
12418 yyy=`./try$exe_ext`
12421 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12422 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12423 echo "We will use %Ld."
12429 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12431 #include <sys/types.h>
12434 $quadtype q = 12345678901;
12435 printf("%qd\n", q);
12439 if eval $compile; then
12440 yyy=`./try$exe_ext`
12443 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12444 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12445 echo "We will use %qd."
12451 if $test X"$sPRId64" = X; then
12452 echo "Cannot figure out how to print 64-bit integers." >&4
12460 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12461 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12463 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12464 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12470 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12472 if $test X"$ivsize" = X8; then
12473 ivdformat="$sPRId64"
12474 uvuformat="$sPRIu64"
12475 uvoformat="$sPRIo64"
12476 uvxformat="$sPRIx64"
12478 if $test X"$ivsize" = X"$longsize"; then
12484 if $test X"$ivsize" = X"$intsize"; then
12491 if $test X"$ivsize" = X"$shortsize"; then
12501 case "$ivdformat" in
12502 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12509 $echo "Checking the format string to be used for gids..." >&4
12512 -1) if $test X"$gidsize" = X"$ivsize"; then
12513 gidformat="$ivdformat"
12515 if $test X"$gidsize" = X"$longsize"; then
12518 if $test X"$gidsize" = X"$intsize"; then
12521 if $test X"$gidsize" = X"$shortsize"; then
12528 *) if $test X"$gidsize" = X"$uvsize"; then
12529 gidformat="$uvuformat"
12531 if $test X"$gidsize" = X"$longsize"; then
12534 if $test X"$gidsize" = X"$intsize"; then
12537 if $test X"$gidsize" = X"$shortsize"; then
12546 : see if getgroups exists
12547 set getgroups d_getgrps
12550 : see if setgroups exists
12551 set setgroups d_setgrps
12555 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12557 case "$d_getgrps$d_setgrps" in
12559 case "$groupstype" in
12560 '') dflt="$gidtype" ;;
12561 *) dflt="$groupstype" ;;
12564 What type of pointer is the second argument to getgroups() and setgroups()?
12565 Usually this is the same as group ids, $gidtype, but not always.
12568 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12572 *) groupstype="$gidtype";;
12576 echo "Checking if your $make program sets \$(MAKE)..." >&4
12577 case "$make_set_make" in
12579 $sed 's/^X //' > testmake.mak << 'EOF'
12581 X @echo 'maketemp="$(MAKE)"'
12583 case "`$make -f testmake.mak 2>/dev/null`" in
12584 *maketemp=*) make_set_make='#' ;;
12585 *) make_set_make="MAKE=$make" ;;
12587 $rm -f testmake.mak
12590 case "$make_set_make" in
12591 '#') echo "Yup, it does.";;
12592 *) echo "Nope, it doesn't.";;
12595 : see what type is used for mode_t
12596 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12597 set mode_t modetype int stdio.h sys/types.h
12600 : define a fucntion to check prototypes
12601 $cat > protochk <<EOSH
12604 optimize="$optimize"
12606 prototype="$prototype"
12611 $cat >> protochk <<'EOSH'
12616 while test $# -ge 2; do
12618 $define) echo "#include <$2>" >> try.c ;;
12619 literal) echo "$2" >> try.c ;;
12623 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12624 cat >> try.c <<'EOCP'
12625 #ifdef CAN_PROTOTYPE
12626 #define _(args) args
12631 echo "$foo" >> try.c
12632 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12633 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12639 $eunicefix protochk
12641 : see what type is used for size_t
12642 rp="What is the type used for the length parameter for string functions?"
12643 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12646 : check for type of arguments to gethostbyaddr.
12647 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12648 case "$d_gethbyaddr" in
12652 Checking to see what type of arguments are accepted by gethostbyaddr().
12654 hdrs="$define sys/types.h
12655 $d_socket sys/socket.h
12656 $i_niin netinet/in.h
12658 $i_unistd unistd.h"
12659 : The first arg can 'char *' or 'void *'
12660 : The second arg is some of integral type
12661 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12662 for yyy in size_t long int; do
12663 case "$netdb_host_type" in
12664 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12665 if ./protochk "$try" $hdrs; then
12666 echo "Your system accepts $xxx for the first arg."
12667 echo "...and $yyy for the second arg."
12668 netdb_host_type="$xxx"
12669 netdb_hlen_type="$yyy"
12675 : In case none of those worked, prompt the user.
12676 case "$netdb_host_type" in
12677 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12680 netdb_host_type=$ans
12681 rp='What is the type for the 2nd argument to gethostbyaddr?'
12684 netdb_hlen_type=$ans
12688 *) : no gethostbyaddr, so pick harmless defaults
12689 netdb_host_type='char *'
12690 netdb_hlen_type="$sizetype"
12693 # Remove the "const" if needed. -- but then we'll have a
12695 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12698 : check for type of argument to gethostbyname.
12699 if test "X$netdb_name_type" = X ; then
12700 case "$d_gethbyname" in
12704 Checking to see what type of argument is accepted by gethostbyname().
12706 hdrs="$define sys/types.h
12707 $d_socket sys/socket.h
12708 $i_niin netinet/in.h
12710 $i_unistd unistd.h"
12711 for xxx in "const char *" "char *"; do
12712 case "$netdb_name_type" in
12713 '') try="extern struct hostent *gethostbyname($xxx);"
12714 if ./protochk "$try" $hdrs; then
12715 echo "Your system accepts $xxx."
12716 netdb_name_type="$xxx"
12721 : In case none of those worked, prompt the user.
12722 case "$netdb_name_type" in
12723 '') rp='What is the type for the 1st argument to gethostbyname?'
12726 netdb_name_type=$ans
12730 *) : no gethostbyname, so pick harmless default
12731 netdb_name_type='char *'
12736 : check for type of 1st argument to getnetbyaddr.
12737 if test "X$netdb_net_type" = X ; then
12738 case "$d_getnbyaddr" in
12742 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12744 hdrs="$define sys/types.h
12745 $d_socket sys/socket.h
12746 $i_niin netinet/in.h
12748 $i_unistd unistd.h"
12749 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12750 case "$netdb_net_type" in
12751 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12752 if ./protochk "$try" $hdrs; then
12753 echo "Your system accepts $xxx."
12754 netdb_net_type="$xxx"
12759 : In case none of those worked, prompt the user.
12760 case "$netdb_net_type" in
12761 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12764 netdb_net_type=$ans
12768 *) : no getnetbyaddr, so pick harmless default
12769 netdb_net_type='long'
12773 : locate the preferred pager for this system
12787 '') dflt=/usr/ucb/more;;
12794 rp='What pager is used on your system?'
12798 : see what type pids are declared as in the kernel
12799 rp="What is the type of process ids on this system?"
12800 set pid_t pidtype int stdio.h sys/types.h
12803 : check for length of pointer
12807 $echo $n "Checking to see how big your pointers are...$c" >&4
12808 if test "$voidflags" -gt 7; then
12809 echo '#define VOID_PTR char *' > try.c
12811 echo '#define VOID_PTR void *' > try.c
12813 $cat >>try.c <<'EOCP'
12817 printf("%d\n", (int)sizeof(VOID_PTR));
12822 if eval $compile_ok; then
12824 $echo " $ptrsize bytes." >&4
12827 echo "(I can't seem to compile the test program. Guessing...)" >&4
12828 rp="What is the size of a pointer (in bytes)?"
12836 : see if ar generates random libraries by itself
12838 echo "Checking how to generate random libraries on your machine..." >&4
12839 echo 'int bar1() { return bar2(); }' > bar1.c
12840 echo 'int bar2() { return 2; }' > bar2.c
12841 $cat > foo.c <<'EOP'
12842 int main() { printf("%d\n", bar1()); exit(0); }
12844 $cc $ccflags -c bar1.c >/dev/null 2>&1
12845 $cc $ccflags -c bar2.c >/dev/null 2>&1
12846 $cc $ccflags -c foo.c >/dev/null 2>&1
12847 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12848 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12849 ./foobar >/dev/null 2>&1; then
12850 echo "$ar appears to generate random libraries itself."
12853 elif $ar ts bar$_a >/dev/null 2>&1 &&
12854 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12855 ./foobar >/dev/null 2>&1; then
12856 echo "a table of contents needs to be added with '$ar ts'."
12863 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12864 $test -f $ranlib || ranlib=''
12867 if $test -n "$ranlib"; then
12868 echo "your system has '$ranlib'; we'll use that."
12871 echo "your system doesn't seem to support random libraries"
12872 echo "so we'll use lorder and tsort to order the libraries."
12879 : check for type of arguments to select.
12880 case "$selecttype" in
12881 '') case "$d_select" in
12884 Checking to see what type of arguments are accepted by select().
12886 hdrs="$define sys/types.h
12887 $i_systime sys/time.h
12888 $i_sysselct sys/select.h
12889 $d_socket sys/socket.h"
12890 : The first arg can be int, unsigned, or size_t
12891 : The last arg may or may not be 'const'
12893 : void pointer has been seen but using that
12894 : breaks the selectminbits test
12895 for xxx in 'fd_set *' 'int *'; do
12896 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12897 for tmo in 'struct timeval *' 'const struct timeval *'; do
12899 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12900 if ./protochk "$try" $hdrs; then
12901 echo "Your system accepts $xxx."
12910 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12911 case "$d_fd_set" in
12912 $define) dflt="fd_set *" ;;
12921 *) : no select, so pick a harmless default
12928 : check for the select 'width'
12929 case "$selectminbits" in
12930 '') case "$d_select" in
12934 Checking to see on how many bits at a time your select() operates...
12937 #include <sys/types.h>
12939 #$i_systime I_SYS_TIME
12940 #$i_systimek I_SYS_TIME_KERNEL
12945 # ifdef I_SYS_TIME_KERNEL
12948 # include <sys/time.h>
12949 # ifdef I_SYS_TIME_KERNEL
12953 #$i_sysselct I_SYS_SELECT
12954 #ifdef I_SYS_SELECT
12955 #include <sys/select.h>
12957 #$d_socket HAS_SOCKET
12959 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12963 #define S sizeof(*(b))
12965 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12966 #define NBITS (NBYTES * 8)
12975 fp = fopen("try.c", "r");
12981 b = ($selecttype)s;
12982 for (i = 0; i < NBITS; i++)
12986 select(fd + 1, b, 0, 0, &t);
12987 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12988 printf("%d\n", i + 1);
12993 if eval $compile_ok; then
12994 selectminbits=`./try`
12995 case "$selectminbits" in
12997 Cannot figure out on how many bits at a time your select() operates.
12998 I'll play safe and guess it is 32 bits.
13004 *) bits="$selectminbits bits" ;;
13006 echo "Your select() operates on $bits at a time." >&4
13008 rp='What is the minimum number of bits your select() operates on?'
13009 case "$byteorder" in
13010 1234|12345678) dflt=32 ;;
13015 selectminbits="$val"
13019 *) : no select, so pick a harmless default
13026 : Trace out the files included by signal.h, then look for SIGxxx names.
13027 : Remove SIGARRAYSIZE used by HPUX.
13028 : Remove SIGSTKSIZE used by Linux.
13029 : Remove SIGSTKSZ used by Posix.
13030 : Remove SIGTYP void lines used by OS2.
13031 : Some cpps, like os390, dont give the file name anywhere
13032 if [ "X$fieldn" = X ]; then
13033 : Just make some guesses. We check them later.
13034 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13036 xxx=`echo '#include <signal.h>' |
13037 $cppstdin $cppminus $cppflags 2>/dev/null |
13038 $grep '^[ ]*#.*include' |
13039 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13041 : Check this list of files to be sure we have parsed the cpp output ok.
13042 : This will also avoid potentially non-existent files, such
13045 for xx in $xxx /dev/null ; do
13046 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13048 : If we have found no files, at least try signal.h
13049 case "$xxxfiles" in
13050 '') xxxfiles=`./findhdr signal.h` ;;
13053 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13054 print substr($2, 4, 20)
13056 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13057 print substr($3, 4, 20)
13059 : Append some common names just in case the awk scan failed.
13060 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13061 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13062 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13063 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13064 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13066 : generate a few handy files for later
13067 $cat > signal.c <<'EOCP'
13068 #include <sys/types.h>
13069 #include <signal.h>
13073 /* Strange style to avoid deeply-nested #if/#else/#endif */
13076 # define NSIG (_NSIG)
13082 # define NSIG (SIGMAX+1)
13088 # define NSIG (SIG_MAX+1)
13094 # define NSIG (MAXSIG+1)
13100 # define NSIG (MAX_SIG+1)
13105 # ifdef SIGARRAYSIZE
13106 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13112 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13116 /* Default to some arbitrary number that's big enough to get most
13117 of the common signals.
13123 printf("NSIG %d\n", NSIG);
13129 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13131 printf "#ifdef SIG"; printf $1; printf "\n"
13132 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13133 printf $1; printf ");\n"
13137 printf "#endif /* JUST_NSIG */\n";
13138 printf "exit(0);\n}\n";
13141 $cat >signal.awk <<'EOP'
13142 BEGIN { ndups = 0 }
13143 $1 ~ /^NSIG$/ { nsig = $2 }
13144 ($1 !~ /^NSIG$/) && (NF == 2) {
13145 if ($2 > maxsig) { maxsig = $2 }
13146 if (sig_name[$2]) {
13147 dup_name[ndups] = $1
13148 dup_num[ndups] = $2
13160 printf("NSIG %d\n", nsig);
13161 for (n = 1; n < nsig; n++) {
13163 printf("%s %d\n", sig_name[n], sig_num[n])
13166 printf("NUM%d %d\n", n, n)
13169 for (n = 0; n < ndups; n++) {
13170 printf("%s %d\n", dup_name[n], dup_num[n])
13174 $cat >signal_cmd <<EOS
13176 if $test -s signal.lst; then
13177 echo "Using your existing signal.lst file"
13182 $cat >>signal_cmd <<'EOS'
13185 if eval $compile_ok; then
13186 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13188 echo "(I can't seem be able to compile the whole test program)" >&4
13189 echo "(I'll try it in little pieces.)" >&4
13190 set signal -DJUST_NSIG
13191 if eval $compile_ok; then
13192 ./signal$_exe > signal.nsg
13195 echo "I can't seem to figure out how many signals you have." >&4
13196 echo "Guessing 50." >&4
13197 echo 'NSIG 50' > signal.nsg
13199 : Now look at all the signal names, one at a time.
13200 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13201 $cat > signal.c <<EOCP
13202 #include <sys/types.h>
13203 #include <signal.h>
13206 printf("$xx %d\n", SIG${xx});
13211 if eval $compile; then
13212 echo "SIG${xx} found."
13213 ./signal$_exe >> signal.ls1
13215 echo "SIG${xx} NOT found."
13218 if $test -s signal.ls1; then
13219 $cat signal.nsg signal.ls1 |
13220 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13224 if $test -s signal.lst; then
13227 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13228 echo 'kill -l' >signal
13229 set X `csh -f <signal`
13233 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13235 echo $@ | $tr ' ' $trnl | \
13236 $awk '{ printf "%s %d\n", $1, ++s; }
13237 END { printf "NSIG %d\n", ++s }' >signal.lst
13239 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13241 chmod a+x signal_cmd
13242 $eunicefix signal_cmd
13244 : generate list of signal names
13246 case "$sig_name_init" in
13248 *) case "$sig_num_init" in
13249 ''|*,*) doinit=yes ;;
13254 echo "Generating a list of signal names and numbers..." >&4
13256 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13257 sig_name=`$awk 'BEGIN { printf "ZERO " }
13258 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13259 sig_num=`$awk 'BEGIN { printf "0 " }
13260 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13261 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13262 !/^NSIG/ { printf "\"%s\", ", $1 }
13263 END { printf "0\n" }' signal.lst`
13264 sig_num_init=`$awk 'BEGIN { printf "0, " }
13265 !/^NSIG/ { printf "%d, ", $2}
13266 END { printf "0\n"}' signal.lst`
13269 echo "The following $sig_count signals are available:"
13271 echo $sig_name | $awk \
13272 'BEGIN { linelen = 0 }
13274 for (i = 1; i <= NF; i++) {
13275 name = "SIG" $i " "
13276 linelen = linelen + length(name)
13277 if (linelen > 70) {
13279 linelen = length(name)
13285 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13287 : see what type is used for signed size_t
13288 set ssize_t ssizetype int stdio.h sys/types.h
13291 $cat > ssize.c <<EOM
13293 #include <sys/types.h>
13294 #define Size_t $sizetype
13295 #define SSize_t $dflt
13298 if (sizeof(Size_t) == sizeof(SSize_t))
13300 else if (sizeof(Size_t) == sizeof(int))
13309 if eval $compile_ok && ./ssize > /dev/null; then
13310 ssizetype=`./ssize`
13311 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13314 Help! I can't compile and run the ssize_t test program: please enlighten me!
13315 (This is probably a misconfiguration in your system or libraries, and
13316 you really ought to fix it. Still, I'll try anyway.)
13318 I need a type that is the same size as $sizetype, but is guaranteed to
13319 be signed. Common values are ssize_t, int and long.
13322 rp="What signed type is the same size as $sizetype?"
13326 $rm -f ssize ssize.*
13328 : see what type of char stdio uses.
13330 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13331 echo "Your stdio uses unsigned chars." >&4
13332 stdchar="unsigned char"
13334 echo "Your stdio uses signed chars." >&4
13338 : see if time exists
13340 if test "X$d_time" = X -o X"$timetype" = X; then
13341 if set time val -f d_time; eval $csym; $val; then
13342 echo 'time() found.' >&4
13344 rp="What is the type returned by time() on this system?"
13345 set time_t timetype long stdio.h sys/types.h
13348 echo 'time() not found, hope that will do.' >&4
13356 : see what type uids are declared as in the kernel
13358 echo "Looking for the type for user ids returned by getuid()."
13359 set uid_t uidtype xxx stdio.h sys/types.h
13363 xxx=`./findhdr sys/user.h`
13364 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13366 unsigned) dflt="$1 $2" ;;
13370 *) dflt="$uidtype";;
13373 uid_t) echo "uid_t found." ;;
13374 *) rp="What is the type for user ids returned by getuid()?"
13382 *_t) zzz="$uidtype" ;;
13385 echo "Checking the size of $zzz..." >&4
13387 #include <sys/types.h>
13390 printf("%d\n", (int)sizeof($uidtype));
13395 if eval $compile_ok; then
13399 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13402 echo "Your $zzz size is $uidsize bytes."
13407 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13412 *_t) zzz="$uidtype" ;;
13415 echo "Checking the sign of $zzz..." >&4
13417 #include <sys/types.h>
13428 if eval $compile; then
13432 echo "(I can't execute the test program--guessing unsigned.)" >&4
13436 1) echo "Your $zzz is unsigned." ;;
13437 -1) echo "Your $zzz is signed." ;;
13443 echo "(I can't compile the test program--guessing unsigned.)" >&4
13449 $echo "Checking the format string to be used for uids..." >&4
13452 -1) if $test X"$uidsize" = X"$ivsize"; then
13453 uidformat="$ivdformat"
13455 if $test X"$uidsize" = X"$longsize"; then
13458 if $test X"$uidsize" = X"$intsize"; then
13461 if $test X"$uidsize" = X"$shortsize"; then
13468 *) if $test X"$uidsize" = X"$uvsize"; then
13469 uidformat="$uvuformat"
13471 if $test X"$uidsize" = X"$longsize"; then
13474 if $test X"$uidsize" = X"$intsize"; then
13477 if $test X"$uidsize" = X"$shortsize"; then
13486 : see if dbm.h is available
13487 : see if dbmclose exists
13488 set dbmclose d_dbmclose
13491 case "$d_dbmclose" in
13501 *) set rpcsvc/dbm.h i_rpcsvcdbm
13506 *) echo "We won't be including <dbm.h>"
13516 : see if this is a sys/file.h system
13521 : do we need to include sys/file.h ?
13525 if $h_sysfile; then
13527 echo "We'll be including <sys/file.h>." >&4
13530 echo "We won't be including <sys/file.h>." >&4
13540 : see if fcntl.h is there
13545 : see if we can include fcntl.h
13551 echo "We'll be including <fcntl.h>." >&4
13554 if $h_sysfile; then
13555 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13557 echo "We won't be including <fcntl.h>." >&4
13569 : see if locale.h is available
13570 set locale.h i_locale
13573 : see if mach cthreads are available
13574 if test "X$usethreads" = "X$define"; then
13575 set mach/cthreads.h i_machcthr
13578 i_machcthr="$undef"
13583 : see if this is a math.h system
13587 : see if this is a mntent.h system
13588 set mntent.h i_mntent
13591 : see if ndbm.h is available
13596 : see if dbm_open exists
13597 set dbm_open d_dbm_open
13599 case "$d_dbm_open" in
13602 echo "We won't be including <ndbm.h>"
13611 : see if net/errno.h is available
13613 set net/errno.h val
13616 : Unfortunately, it causes problems on some systems. Arrgh.
13619 cat > try.c <<'EOM'
13622 #include <net/errno.h>
13628 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13629 echo "We'll be including <net/errno.h>." >&4
13631 echo "We won't be including <net/errno.h>." >&4
13640 : see if netinet/tcp.h is available
13641 set netinet/tcp.h i_netinettcp
13644 : see if this is a poll.h system
13648 : get C preprocessor symbols handy
13650 $echo $n "Hmm... $c"
13651 echo $al | $tr ' ' $trnl >Cppsym.know
13652 $cat <<EOSS >Cppsym
13660 case "\$list\$#" in
13663 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
13665 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
13668 unknown="\$unknown \$sym"
13678 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
13680 exit 0; _ _ _ _\1\\ \1\\
13683 echo "exit 1; _ _ _" >>Cppsym\$\$
13684 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
13686 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
13692 $rm -f Cppsym\$\$ Cppsym2\$\$
13697 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
13699 : now check the C compiler for additional symbols
13700 postprocess_cc_v=''
13702 aix) postprocess_cc_v="|$tr , ' '" ;;
13709 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13712 -D*) echo "\$i" | $sed 's/^-D//';;
13713 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13718 postprocess_cc_v=''
13721 ./ccsym > ccsym1.raw
13722 if $test -s ccsym1.raw; then
13723 $sort ccsym1.raw | $uniq >ccsym.raw
13725 mv ccsym1.raw ccsym.raw
13728 $awk '/\=/ { print $0; next }
13729 { print $0"=1" }' ccsym.raw >ccsym.list
13730 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
13731 $comm -13 ccsym.true ccsym.list >ccsym.own
13732 $comm -12 ccsym.true ccsym.list >ccsym.com
13733 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13735 if $test -z ccsym.raw; then
13736 echo "Your C compiler doesn't seem to define any symbols!" >&4
13738 echo "However, your C preprocessor defines the following symbols:"
13741 cppsymbols=`$cat Cppsym.true`
13742 cppsymbols=`echo $cppsymbols`
13743 cppccsymbols="$cppsymbols"
13745 if $test -s ccsym.com; then
13746 echo "Your C compiler and pre-processor define these symbols:"
13747 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13750 cppccsymbols=`$cat ccsym.com`
13751 cppccsymbols=`echo $cppccsymbols`
13752 $test "$silent" || sleep 1
13754 if $test -s ccsym.cpp; then
13755 $test "$also" && echo " "
13756 echo "Your C pre-processor ${also}defines the following symbols:"
13757 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13759 cppsymbols=`$cat ccsym.cpp`
13760 cppsymbols=`echo $cppsymbols`
13761 $test "$silent" || sleep 1
13763 if $test -s ccsym.own; then
13764 $test "$also" && echo " "
13765 echo "Your C compiler ${also}defines the following cpp symbols:"
13766 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13767 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13768 ccsymbols=`$cat ccsym.own`
13769 ccsymbols=`echo $ccsymbols`
13770 $test "$silent" || sleep 1
13775 : see if this is a termio system
13779 if $test `./findhdr termios.h`; then
13780 set tcsetattr i_termios
13786 "$define") echo "You have POSIX termios.h... good!" >&4;;
13787 *) if ./Cppsym pyr; then
13788 case "`/bin/universe`" in
13789 ucb) if $test `./findhdr sgtty.h`; then
13791 echo "<sgtty.h> found." >&4
13793 echo "System is pyramid with BSD universe."
13794 echo "<sgtty.h> not found--you could have problems." >&4
13796 *) if $test `./findhdr termio.h`; then
13798 echo "<termio.h> found." >&4
13800 echo "System is pyramid with USG universe."
13801 echo "<termio.h> not found--you could have problems." >&4
13805 if $test `./findhdr termio.h`; then
13806 echo "<termio.h> found." >&4
13808 elif $test `./findhdr sgtty.h`; then
13809 echo "<sgtty.h> found." >&4
13812 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13815 if $test `./findhdr sgtty.h`; then
13816 echo "<sgtty.h> found." >&4
13818 elif $test `./findhdr termio.h`; then
13819 echo "<termio.h> found." >&4
13822 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13826 set i_termio; eval $setvar
13827 val=$val2; set i_sgtty; eval $setvar
13828 val=$val3; set i_termios; eval $setvar
13830 : see if this is a shadow.h system
13831 set shadow.h i_shadow
13834 : see if this is a socks.h system
13835 set socks.h i_socks
13838 : see if stdarg is available
13840 if $test `./findhdr stdarg.h`; then
13841 echo "<stdarg.h> found." >&4
13844 echo "<stdarg.h> NOT found." >&4
13848 : see if varags is available
13850 if $test `./findhdr varargs.h`; then
13851 echo "<varargs.h> found." >&4
13853 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13856 : set up the varargs testing programs
13857 $cat > varargs.c <<EOP
13859 #include <stdarg.h>
13862 #include <varargs.h>
13866 int f(char *p, ...)
13880 p = va_arg(ap, char *);
13885 $cat > varargs <<EOP
13887 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13896 : now check which varargs header should be included
13901 if `./varargs I_STDARG`; then
13903 elif `./varargs I_VARARGS`; then
13908 if `./varargs I_VARARGS`; then
13915 echo "I could not find the definition for va_dcl... You have problems..." >&4
13916 val="$undef"; set i_stdarg; eval $setvar
13917 val="$undef"; set i_varargs; eval $setvar
13922 case "$i_varhdr" in
13924 val="$define"; set i_stdarg; eval $setvar
13925 val="$undef"; set i_varargs; eval $setvar
13928 val="$undef"; set i_stdarg; eval $setvar
13929 val="$define"; set i_varargs; eval $setvar
13932 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13936 : see if stddef is available
13937 set stddef.h i_stddef
13940 : see if sys/access.h is available
13941 set sys/access.h i_sysaccess
13944 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
13945 set sys/filio.h i_sysfilio
13948 if $test `./findhdr sys/ioctl.h`; then
13950 echo '<sys/ioctl.h> found.' >&4
13953 if $test $i_sysfilio = "$define"; then
13954 echo '<sys/ioctl.h> NOT found.' >&4
13956 $test $i_sgtty = "$define" && xxx="sgtty.h"
13957 $test $i_termio = "$define" && xxx="termio.h"
13958 $test $i_termios = "$define" && xxx="termios.h"
13959 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
13965 : see if sys/resource.h has to be included
13966 set sys/resource.h i_sysresrc
13969 : see if sys/security.h is available
13970 set sys/security.h i_syssecrt
13973 : see if this is a sys/statvfs.h system
13974 set sys/statvfs.h i_sysstatvfs
13977 : see if this is a sys/uio.h system
13978 set sys/uio.h i_sysuio
13981 : see if this is a sys/un.h system
13982 set sys/un.h i_sysun
13985 : see if this is a syswait system
13986 set sys/wait.h i_syswait
13989 : see if this is a ustat.h system
13990 set ustat.h i_ustat
13993 : see if this is an utime system
13994 set utime.h i_utime
13997 : see if this is a values.h system
13998 set values.h i_values
14001 : see if this is a vfork system
14004 set vfork.h i_vfork
14012 : see if gdbm.h is available
14017 : see if gdbm_open exists
14018 set gdbm_open d_gdbm_open
14020 case "$d_gdbm_open" in
14023 echo "We won't be including <gdbm.h>"
14033 echo "Looking for extensions..." >&4
14034 : If we are using the old config.sh, known_extensions may contain
14035 : old or inaccurate or duplicate values.
14036 known_extensions=''
14037 nonxs_extensions=''
14038 : We do not use find because it might not be available.
14039 : We do not just use MANIFEST because the user may have dropped
14040 : some additional extensions into the source tree and expect them
14043 : Function to recursively find available extensions, ignoring DynaLoader
14044 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14048 DynaLoader|dynaload) ;;
14050 if $test -f $xxx/$xxx.xs; then
14051 known_extensions="$known_extensions $1$xxx";
14052 elif $test -f $xxx/Makefile.PL; then
14053 nonxs_extensions="$nonxs_extensions $1$xxx";
14055 if $test -d $xxx -a $# -lt 10; then
14058 eval $find_extensions;
14070 eval $find_extensions
14071 set X $nonxs_extensions
14073 nonxs_extensions="$*"
14074 set X $known_extensions
14076 known_extensions="$*"
14079 : Now see which are supported on this system.
14081 for xxx in $known_extensions ; do
14085 $define) avail_ext="$avail_ext $xxx" ;;
14088 GDBM_File|gdbm_fil)
14090 $define) avail_ext="$avail_ext $xxx" ;;
14093 NDBM_File|ndbm_fil)
14095 $define) avail_ext="$avail_ext $xxx" ;;
14098 ODBM_File|odbm_fil)
14099 case "${i_dbm}${i_rpcsvcdbm}" in
14100 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14104 case "$useposix" in
14105 true|define|y) avail_ext="$avail_ext $xxx" ;;
14109 case "$useopcode" in
14110 true|define|y) avail_ext="$avail_ext $xxx" ;;
14114 case "$d_socket" in
14115 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14119 case "$usethreads" in
14120 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14124 : XXX Do we need a useipcsysv variable here
14125 case "${d_msg}${d_sem}${d_shm}" in
14126 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14129 *) avail_ext="$avail_ext $xxx"
14138 : Now see which nonxs extensions are supported on this system.
14139 : For now assume all are.
14141 for xxx in $nonxs_extensions ; do
14143 *) nonxs_ext="$nonxs_ext $xxx"
14155 A number of extensions are supplied with $package. You may choose to
14156 compile these extensions for dynamic loading (the default), compile
14157 them into the $package executable (static loading), or not include
14158 them at all. Answer "none" to include no extensions.
14159 Note that DynaLoader is always built and need not be mentioned here.
14162 case "$dynamic_ext" in
14163 '') dflt="$avail_ext" ;;
14164 *) dflt="$dynamic_ext"
14165 # Perhaps we are reusing an old out-of-date config.sh.
14168 if test X"$dynamic_ext" != X"$avail_ext"; then
14170 NOTICE: Your previous config.sh list may be incorrect.
14171 The extensions now available to you are
14173 but the default list from your previous config.sh is
14185 rp="What extensions do you wish to load dynamically?"
14188 none) dynamic_ext=' ' ;;
14189 *) dynamic_ext="$ans" ;;
14192 case "$static_ext" in
14194 : Exclude those already listed in dynamic linking
14196 for xxx in $avail_ext; do
14197 case " $dynamic_ext " in
14199 *) dflt="$dflt $xxx" ;;
14206 *) dflt="$static_ext"
14213 rp="What extensions do you wish to load statically?"
14216 none) static_ext=' ' ;;
14217 *) static_ext="$ans" ;;
14222 A number of extensions are supplied with $package. Answer "none"
14223 to include no extensions.
14224 Note that DynaLoader is always built and need not be mentioned here.
14227 case "$static_ext" in
14228 '') dflt="$avail_ext" ;;
14229 *) dflt="$static_ext"
14230 # Perhaps we are reusing an old out-of-date config.sh.
14233 if test X"$static_ext" != X"$avail_ext"; then
14235 NOTICE: Your previous config.sh list may be incorrect.
14236 The extensions now available to you are
14238 but the default list from your previous config.sh is
14247 : Exclude those that are not xs extensions
14251 rp="What extensions do you wish to include?"
14254 none) static_ext=' ' ;;
14255 *) static_ext="$ans" ;;
14260 set X $dynamic_ext $static_ext $nonxs_ext
14264 : Remove build directory name from cppstdin so it can be used from
14265 : either the present location or the final installed location.
14267 : Get out of the UU directory to get correct path name.
14269 case "$cppstdin" in
14271 echo "Stripping down cppstdin path name"
14277 : end of configuration questions
14279 echo "End of configuration questions."
14282 : back to where it started
14283 if test -d ../UU; then
14287 : configuration may be patched via a 'config.over' file
14288 if $test -f config.over; then
14291 rp='I see a config.over file. Do you wish to load it?'
14294 n*) echo "OK, I'll ignore it.";;
14296 echo "Configuration override changes have been loaded."
14301 : in case they want portability, strip down executable paths
14302 case "$d_portable" in
14305 echo "Stripping down executable paths..." >&4
14306 for file in $loclist $trylist; do
14308 eval $file=`basename $temp`
14313 : create config.sh file
14315 echo "Creating config.sh..." >&4
14316 $spitshell <<EOT >config.sh
14319 # This file was produced by running the Configure script. It holds all the
14320 # definitions figured out by Configure. Should you modify one of these values,
14321 # do not forget to propagate your changes by running "Configure -der". You may
14322 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14325 # Package name : $package
14326 # Source directory : $src
14327 # Configuration time: $cf_time
14328 # Configured by : $cf_by
14329 # Target system : $myuname
14339 Revision='$Revision'
14346 alignbytes='$alignbytes'
14347 ansi2knr='$ansi2knr'
14348 aphostname='$aphostname'
14349 api_revision='$api_revision'
14350 api_subversion='$api_subversion'
14351 api_version='$api_version'
14352 api_versionstring='$api_versionstring'
14355 archlibexp='$archlibexp'
14356 archname64='$archname64'
14357 archname='$archname'
14358 archobjs='$archobjs'
14363 bincompat5005='$bincompat5005'
14367 byteorder='$byteorder'
14369 castflags='$castflags'
14372 cccdlflags='$cccdlflags'
14373 ccdlflags='$ccdlflags'
14375 ccsymbols='$ccsymbols'
14377 cf_email='$cf_email'
14379 charsize='$charsize'
14383 clocktype='$clocktype'
14385 compress='$compress'
14386 contains='$contains'
14390 cpp_stuff='$cpp_stuff'
14391 cppccsymbols='$cppccsymbols'
14392 cppflags='$cppflags'
14394 cppminus='$cppminus'
14396 cppstdin='$cppstdin'
14397 cppsymbols='$cppsymbols'
14398 crosscompile='$crosscompile'
14399 cryptlib='$cryptlib'
14401 d_Gconvert='$d_Gconvert'
14402 d_PRIEldbl='$d_PRIEldbl'
14403 d_PRIFldbl='$d_PRIFldbl'
14404 d_PRIGldbl='$d_PRIGldbl'
14405 d_PRIX64='$d_PRIX64'
14406 d_PRId64='$d_PRId64'
14407 d_PRIeldbl='$d_PRIeldbl'
14408 d_PRIfldbl='$d_PRIfldbl'
14409 d_PRIgldbl='$d_PRIgldbl'
14410 d_PRIi64='$d_PRIi64'
14411 d_PRIo64='$d_PRIo64'
14412 d_PRIu64='$d_PRIu64'
14413 d_PRIx64='$d_PRIx64'
14414 d_access='$d_access'
14415 d_accessx='$d_accessx'
14417 d_archlib='$d_archlib'
14420 d_attribut='$d_attribut'
14423 d_bincompat5005='$d_bincompat5005'
14425 d_bsdgetpgrp='$d_bsdgetpgrp'
14426 d_bsdsetpgrp='$d_bsdsetpgrp'
14428 d_casti32='$d_casti32'
14429 d_castneg='$d_castneg'
14430 d_charvspr='$d_charvspr'
14432 d_chroot='$d_chroot'
14433 d_chsize='$d_chsize'
14434 d_closedir='$d_closedir'
14438 d_cuserid='$d_cuserid'
14439 d_dbl_dig='$d_dbl_dig'
14440 d_difftime='$d_difftime'
14441 d_dirnamlen='$d_dirnamlen'
14442 d_dlerror='$d_dlerror'
14443 d_dlopen='$d_dlopen'
14444 d_dlsymun='$d_dlsymun'
14445 d_dosuid='$d_dosuid'
14446 d_drand48proto='$d_drand48proto'
14448 d_eaccess='$d_eaccess'
14449 d_endgrent='$d_endgrent'
14450 d_endhent='$d_endhent'
14451 d_endnent='$d_endnent'
14452 d_endpent='$d_endpent'
14453 d_endpwent='$d_endpwent'
14454 d_endsent='$d_endsent'
14455 d_endspent='$d_endspent'
14456 d_eofnblk='$d_eofnblk'
14457 d_eunice='$d_eunice'
14458 d_fchmod='$d_fchmod'
14459 d_fchown='$d_fchown'
14461 d_fd_macros='$d_fd_macros'
14462 d_fd_set='$d_fd_set'
14463 d_fds_bits='$d_fds_bits'
14464 d_fgetpos='$d_fgetpos'
14465 d_flexfnam='$d_flexfnam'
14468 d_fpathconf='$d_fpathconf'
14469 d_fpos64_t='$d_fpos64_t'
14470 d_fs_data_s='$d_fs_data_s'
14471 d_fseeko='$d_fseeko'
14472 d_fsetpos='$d_fsetpos'
14473 d_fstatfs='$d_fstatfs'
14474 d_fstatvfs='$d_fstatvfs'
14475 d_ftello='$d_ftello'
14477 d_getgrent='$d_getgrent'
14478 d_getgrps='$d_getgrps'
14479 d_gethbyaddr='$d_gethbyaddr'
14480 d_gethbyname='$d_gethbyname'
14481 d_gethent='$d_gethent'
14482 d_gethname='$d_gethname'
14483 d_gethostprotos='$d_gethostprotos'
14484 d_getlogin='$d_getlogin'
14485 d_getmnt='$d_getmnt'
14486 d_getmntent='$d_getmntent'
14487 d_getnbyaddr='$d_getnbyaddr'
14488 d_getnbyname='$d_getnbyname'
14489 d_getnent='$d_getnent'
14490 d_getnetprotos='$d_getnetprotos'
14491 d_getpbyname='$d_getpbyname'
14492 d_getpbynumber='$d_getpbynumber'
14493 d_getpent='$d_getpent'
14494 d_getpgid='$d_getpgid'
14495 d_getpgrp2='$d_getpgrp2'
14496 d_getpgrp='$d_getpgrp'
14497 d_getppid='$d_getppid'
14498 d_getprior='$d_getprior'
14499 d_getprotoprotos='$d_getprotoprotos'
14500 d_getpwent='$d_getpwent'
14501 d_getsbyname='$d_getsbyname'
14502 d_getsbyport='$d_getsbyport'
14503 d_getsent='$d_getsent'
14504 d_getservprotos='$d_getservprotos'
14505 d_getspent='$d_getspent'
14506 d_getspnam='$d_getspnam'
14507 d_gettimeod='$d_gettimeod'
14508 d_gnulibc='$d_gnulibc'
14509 d_grpasswd='$d_grpasswd'
14510 d_hasmntopt='$d_hasmntopt'
14513 d_inetaton='$d_inetaton'
14514 d_int64t='$d_int64t'
14515 d_isascii='$d_isascii'
14516 d_killpg='$d_killpg'
14517 d_lchown='$d_lchown'
14518 d_ldbl_dig='$d_ldbl_dig'
14520 d_locconv='$d_locconv'
14522 d_longdbl='$d_longdbl'
14523 d_longlong='$d_longlong'
14526 d_mbstowcs='$d_mbstowcs'
14527 d_mbtowc='$d_mbtowc'
14528 d_memchr='$d_memchr'
14529 d_memcmp='$d_memcmp'
14530 d_memcpy='$d_memcpy'
14531 d_memmove='$d_memmove'
14532 d_memset='$d_memset'
14534 d_mkfifo='$d_mkfifo'
14535 d_mktime='$d_mktime'
14537 d_msg_ctrunc='$d_msg_ctrunc'
14538 d_msg_dontroute='$d_msg_dontroute'
14539 d_msg_oob='$d_msg_oob'
14540 d_msg_peek='$d_msg_peek'
14541 d_msg_proxy='$d_msg_proxy'
14542 d_msgctl='$d_msgctl'
14543 d_msgget='$d_msgget'
14544 d_msgrcv='$d_msgrcv'
14545 d_msgsnd='$d_msgsnd'
14546 d_mymalloc='$d_mymalloc'
14548 d_off64_t='$d_off64_t'
14549 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14550 d_oldpthreads='$d_oldpthreads'
14551 d_oldsock='$d_oldsock'
14553 d_pathconf='$d_pathconf'
14555 d_phostname='$d_phostname'
14558 d_portable='$d_portable'
14559 d_pthread_yield='$d_pthread_yield'
14561 d_pwchange='$d_pwchange'
14562 d_pwclass='$d_pwclass'
14563 d_pwcomment='$d_pwcomment'
14564 d_pwexpire='$d_pwexpire'
14565 d_pwgecos='$d_pwgecos'
14566 d_pwpasswd='$d_pwpasswd'
14567 d_pwquota='$d_pwquota'
14569 d_readdir='$d_readdir'
14570 d_readlink='$d_readlink'
14571 d_rename='$d_rename'
14572 d_rewinddir='$d_rewinddir'
14574 d_safebcpy='$d_safebcpy'
14575 d_safemcpy='$d_safemcpy'
14576 d_sanemcmp='$d_sanemcmp'
14577 d_sched_yield='$d_sched_yield'
14578 d_scm_rights='$d_scm_rights'
14579 d_seekdir='$d_seekdir'
14580 d_select='$d_select'
14582 d_semctl='$d_semctl'
14583 d_semctl_semid_ds='$d_semctl_semid_ds'
14584 d_semctl_semun='$d_semctl_semun'
14585 d_semget='$d_semget'
14587 d_setegid='$d_setegid'
14588 d_seteuid='$d_seteuid'
14589 d_setgrent='$d_setgrent'
14590 d_setgrps='$d_setgrps'
14591 d_sethent='$d_sethent'
14592 d_setlinebuf='$d_setlinebuf'
14593 d_setlocale='$d_setlocale'
14594 d_setnent='$d_setnent'
14595 d_setpent='$d_setpent'
14596 d_setpgid='$d_setpgid'
14597 d_setpgrp2='$d_setpgrp2'
14598 d_setpgrp='$d_setpgrp'
14599 d_setprior='$d_setprior'
14600 d_setpwent='$d_setpwent'
14601 d_setregid='$d_setregid'
14602 d_setresgid='$d_setresgid'
14603 d_setresuid='$d_setresuid'
14604 d_setreuid='$d_setreuid'
14605 d_setrgid='$d_setrgid'
14606 d_setruid='$d_setruid'
14607 d_setsent='$d_setsent'
14608 d_setsid='$d_setsid'
14609 d_setspent='$d_setspent'
14610 d_setvbuf='$d_setvbuf'
14614 d_shmatprototype='$d_shmatprototype'
14615 d_shmctl='$d_shmctl'
14617 d_shmget='$d_shmget'
14618 d_sigaction='$d_sigaction'
14619 d_sigsetjmp='$d_sigsetjmp'
14620 d_socket='$d_socket'
14621 d_sockpair='$d_sockpair'
14623 d_statblks='$d_statblks'
14624 d_statfs_f_flags='$d_statfs_f_flags'
14625 d_statfs_s='$d_statfs_s'
14626 d_statvfs='$d_statvfs'
14627 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14628 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14629 d_stdio_stream_array='$d_stdio_stream_array'
14630 d_stdiobase='$d_stdiobase'
14631 d_stdstdio='$d_stdstdio'
14632 d_strchr='$d_strchr'
14633 d_strcoll='$d_strcoll'
14634 d_strctcpy='$d_strctcpy'
14635 d_strerrm='$d_strerrm'
14636 d_strerror='$d_strerror'
14637 d_strtod='$d_strtod'
14638 d_strtol='$d_strtol'
14639 d_strtold='$d_strtold'
14640 d_strtoul='$d_strtoul'
14641 d_strtoull='$d_strtoull'
14642 d_strtouq='$d_strtouq'
14643 d_strxfrm='$d_strxfrm'
14644 d_suidsafe='$d_suidsafe'
14645 d_symlink='$d_symlink'
14646 d_syscall='$d_syscall'
14647 d_sysconf='$d_sysconf'
14648 d_sysernlst='$d_sysernlst'
14649 d_syserrlst='$d_syserrlst'
14650 d_system='$d_system'
14651 d_tcgetpgrp='$d_tcgetpgrp'
14652 d_tcsetpgrp='$d_tcsetpgrp'
14653 d_telldir='$d_telldir'
14654 d_telldirproto='$d_telldirproto'
14657 d_truncate='$d_truncate'
14658 d_tzname='$d_tzname'
14661 d_union_semun='$d_union_semun'
14663 d_vendorbin='$d_vendorbin'
14664 d_vendorlib='$d_vendorlib'
14666 d_void_closedir='$d_void_closedir'
14667 d_voidsig='$d_voidsig'
14668 d_voidtty='$d_voidtty'
14669 d_volatile='$d_volatile'
14670 d_vprintf='$d_vprintf'
14672 d_waitpid='$d_waitpid'
14673 d_wcstombs='$d_wcstombs'
14674 d_wctomb='$d_wctomb'
14677 db_hashtype='$db_hashtype'
14678 db_prefixtype='$db_prefixtype'
14679 defvoidused='$defvoidused'
14680 direntrytype='$direntrytype'
14683 doublesize='$doublesize'
14685 dynamic_ext='$dynamic_ext'
14691 eunicefix='$eunicefix'
14694 extensions='$extensions'
14695 fflushNULL='$fflushNULL'
14696 fflushall='$fflushall'
14698 firstmakefile='$firstmakefile'
14700 fpossize='$fpossize'
14701 fpostype='$fpostype'
14702 freetype='$freetype'
14704 full_csh='$full_csh'
14705 full_sed='$full_sed'
14706 gccversion='$gccversion'
14707 gidformat='$gidformat'
14713 groupcat='$groupcat'
14714 groupstype='$groupstype'
14717 h_sysfile='$h_sysfile'
14729 i_arpainet='$i_arpainet'
14730 i_bsdioctl='$i_bsdioctl'
14733 i_dirent='$i_dirent'
14740 i_inttypes='$i_inttypes'
14741 i_limits='$i_limits'
14742 i_locale='$i_locale'
14743 i_machcthr='$i_machcthr'
14744 i_malloc='$i_malloc'
14746 i_memory='$i_memory'
14747 i_mntent='$i_mntent'
14750 i_neterrno='$i_neterrno'
14751 i_netinettcp='$i_netinettcp'
14754 i_pthread='$i_pthread'
14756 i_rpcsvcdbm='$i_rpcsvcdbm'
14759 i_shadow='$i_shadow'
14761 i_stdarg='$i_stdarg'
14762 i_stddef='$i_stddef'
14763 i_stdlib='$i_stdlib'
14764 i_string='$i_string'
14765 i_sysaccess='$i_sysaccess'
14766 i_sysdir='$i_sysdir'
14767 i_sysfile='$i_sysfile'
14768 i_sysfilio='$i_sysfilio'
14770 i_sysioctl='$i_sysioctl'
14771 i_sysmount='$i_sysmount'
14772 i_sysndir='$i_sysndir'
14773 i_sysparam='$i_sysparam'
14774 i_sysresrc='$i_sysresrc'
14775 i_syssecrt='$i_syssecrt'
14776 i_sysselct='$i_sysselct'
14777 i_syssockio='$i_syssockio'
14778 i_sysstat='$i_sysstat'
14779 i_sysstatfs='$i_sysstatfs'
14780 i_sysstatvfs='$i_sysstatvfs'
14781 i_systime='$i_systime'
14782 i_systimek='$i_systimek'
14783 i_systimes='$i_systimes'
14784 i_systypes='$i_systypes'
14785 i_sysuio='$i_sysuio'
14787 i_sysvfs='$i_sysvfs'
14788 i_syswait='$i_syswait'
14789 i_termio='$i_termio'
14790 i_termios='$i_termios'
14792 i_unistd='$i_unistd'
14795 i_values='$i_values'
14796 i_varargs='$i_varargs'
14797 i_varhdr='$i_varhdr'
14799 ignore_versioned_solibs='$ignore_versioned_solibs'
14800 inc_version_list='$inc_version_list'
14803 installarchlib='$installarchlib'
14804 installbin='$installbin'
14805 installman1dir='$installman1dir'
14806 installman3dir='$installman3dir'
14807 installprefix='$installprefix'
14808 installprefixexp='$installprefixexp'
14809 installprivlib='$installprivlib'
14810 installscript='$installscript'
14811 installsitearch='$installsitearch'
14812 installsitebin='$installsitebin'
14813 installsitelib='$installsitelib'
14814 installstyle='$installstyle'
14815 installusrbinperl='$installusrbinperl'
14816 installvendorbin='$installvendorbin'
14817 installvendorlib='$installvendorlib'
14819 ivdformat='$ivdformat'
14822 known_extensions='$known_extensions'
14826 lddlflags='$lddlflags'
14828 ldlibpthname='$ldlibpthname'
14835 libswanted='$libswanted'
14841 locincpth='$locincpth'
14842 loclibpth='$loclibpth'
14843 longdblsize='$longdblsize'
14844 longlongsize='$longlongsize'
14845 longsize='$longsize'
14849 lseeksize='$lseeksize'
14850 lseektype='$lseektype'
14854 make_set_make='$make_set_make'
14855 mallocobj='$mallocobj'
14856 mallocsrc='$mallocsrc'
14857 malloctype='$malloctype'
14859 man1direxp='$man1direxp'
14862 man3direxp='$man3direxp'
14865 mips_type='$mips_type'
14868 modetype='$modetype'
14870 multiarch='$multiarch'
14872 myarchname='$myarchname'
14873 mydomain='$mydomain'
14874 myhostname='$myhostname'
14877 netdb_hlen_type='$netdb_hlen_type'
14878 netdb_host_type='$netdb_host_type'
14879 netdb_name_type='$netdb_name_type'
14880 netdb_net_type='$netdb_net_type'
14883 nm_so_opt='$nm_so_opt'
14884 nonxs_ext='$nonxs_ext'
14888 o_nonblock='$o_nonblock'
14890 old_pthread_create_joinable='$old_pthread_create_joinable'
14891 optimize='$optimize'
14892 orderlib='$orderlib'
14898 patchlevel='$patchlevel'
14899 path_sep='$path_sep'
14901 perladmin='$perladmin'
14902 perlpath='$perlpath'
14904 phostname='$phostname'
14910 prefixexp='$prefixexp'
14912 privlibexp='$privlibexp'
14913 prototype='$prototype'
14915 quadkind='$quadkind'
14916 quadtype='$quadtype'
14917 randbits='$randbits'
14918 randfunc='$randfunc'
14919 randseedtype='$randseedtype'
14921 rd_nodata='$rd_nodata'
14925 sPRIEldbl='$sPRIEldbl'
14926 sPRIFldbl='$sPRIFldbl'
14927 sPRIGldbl='$sPRIGldbl'
14930 sPRIeldbl='$sPRIeldbl'
14931 sPRIfldbl='$sPRIfldbl'
14932 sPRIgldbl='$sPRIgldbl'
14937 sched_yield='$sched_yield'
14938 scriptdir='$scriptdir'
14939 scriptdirexp='$scriptdirexp'
14941 seedfunc='$seedfunc'
14942 selectminbits='$selectminbits'
14943 selecttype='$selecttype'
14944 sendmail='$sendmail'
14947 sharpbang='$sharpbang'
14948 shmattype='$shmattype'
14949 shortsize='$shortsize'
14952 sig_count='$sig_count'
14953 sig_name='$sig_name'
14954 sig_name_init='$sig_name_init'
14956 sig_num_init='$sig_num_init'
14957 signal_t='$signal_t'
14958 sitearch='$sitearch'
14959 sitearchexp='$sitearchexp'
14961 sitebinexp='$sitebinexp'
14963 sitelibexp='$sitelibexp'
14964 siteprefix='$siteprefix'
14965 siteprefixexp='$siteprefixexp'
14966 sizetype='$sizetype'
14971 sockethdr='$sockethdr'
14972 socketlib='$socketlib'
14974 spackage='$spackage'
14975 spitshell='$spitshell'
14978 ssizetype='$ssizetype'
14979 startperl='$startperl'
14981 static_ext='$static_ext'
14983 stdio_base='$stdio_base'
14984 stdio_bufsiz='$stdio_bufsiz'
14985 stdio_cnt='$stdio_cnt'
14986 stdio_filbuf='$stdio_filbuf'
14987 stdio_ptr='$stdio_ptr'
14988 stdio_stream_array='$stdio_stream_array'
14991 subversion='$subversion'
14998 timeincl='$timeincl'
14999 timetype='$timetype'
15012 uidformat='$uidformat'
15018 uquadtype='$uquadtype'
15019 use5005threads='$use5005threads'
15020 use64bits='$use64bits'
15022 useithreads='$useithreads'
15023 uselargefiles='$uselargefiles'
15024 uselongdouble='$uselongdouble'
15025 uselonglong='$uselonglong'
15026 usemorebits='$usemorebits'
15027 usemultiplicity='$usemultiplicity'
15028 usemymalloc='$usemymalloc'
15030 useopcode='$useopcode'
15031 useperlio='$useperlio'
15032 useposix='$useposix'
15034 useshrplib='$useshrplib'
15035 usesocks='$usesocks'
15036 usethreads='$usethreads'
15037 usevendorprefix='$usevendorprefix'
15038 usevfork='$usevfork'
15041 uvoformat='$uvoformat'
15044 uvuformat='$uvuformat'
15045 uvxformat='$uvxformat'
15046 vendorbin='$vendorbin'
15047 vendorbinexp='$vendorbinexp'
15048 vendorlib='$vendorlib'
15049 vendorlibexp='$vendorlibexp'
15050 vendorprefix='$vendorprefix'
15051 vendorprefixexp='$vendorprefixexp'
15054 voidflags='$voidflags'
15060 : Add in command line options if available
15061 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15063 : add special variables
15064 $test -f $src/patchlevel.h && \
15065 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15066 echo "CONFIGDOTSH=true" >>config.sh
15068 : propagate old symbols
15069 if $test -f UU/config.sh; then
15070 <UU/config.sh sort | uniq >UU/oldconfig.sh
15071 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15072 sort | uniq -u >UU/oldsyms
15073 set X `cat UU/oldsyms`
15079 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15081 echo "# Variables propagated from previous config.sh file." >>config.sh
15082 for sym in `cat UU/oldsyms`; do
15083 echo " Propagating $hint variable "'$'"$sym..."
15084 eval 'tmp="$'"${sym}"'"'
15086 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15092 : Finish up by extracting the .SH files
15106 If you'd like to make any changes to the config.sh file before I begin
15107 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15110 rp="Press return or use a shell escape to edit config.sh:"
15115 *) : in case they cannot read
15116 sh 1>&4 -c "$ans";;
15121 : if this fails, just run all the .SH files by hand
15128 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15135 Now you need to generate make dependencies by running "$make depend".
15136 You might prefer to run it in background: "$make depend > makedepend.out &"
15137 It can take a while, so you might not want to run it right now.
15142 rp="Run $make depend now?"
15146 $make depend && echo "Now you must run a $make."
15149 echo "You must run '$make depend' then '$make'."
15152 elif test -f [Mm]akefile; then
15154 echo "Now you must run a $make."
15159 if $test -f Policy.sh; then
15162 If you compile $package on a different machine or from a different object
15163 directory, copy the Policy.sh file from this object directory to the
15164 new one before you run Configure -- this will help you with most of
15165 the policy defaults.
15169 if $test -f config.msg; then
15170 echo "Hmm. I also noted the following information while running:"
15172 $cat config.msg >&4
15175 $rm -f kit*isdone ark*isdone