3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Fri Oct 29 17:37:33 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 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
438 d_old_pthread_create_joinable=''
439 old_pthread_create_joinable=''
687 ignore_versioned_solibs=''
814 d_stdio_stream_array=''
815 stdio_stream_array=''
859 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
862 : We must find out about Eunice early
864 if test -f /etc/unixtovms; then
865 eunicefix=/etc/unixtovms
867 if test -f /etc/unixtovms.exe; then
868 eunicefix=/etc/unixtovms.exe
872 : Possible local include directories to search.
873 : Set locincpth to "" in a hint file to defeat local include searches.
874 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
875 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
877 : no include file wanted by default
880 : list of known cpp symbols, sorted alphabetically
881 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
882 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
883 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
884 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
885 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
886 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
887 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4 SVR5"
888 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
889 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
890 al="$al VMS Xenix286"
891 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
892 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
893 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
894 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
895 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
896 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
897 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
898 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
899 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
900 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
901 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
902 al="$al __SVR4_2__ __UMAXV__"
903 al="$al ____386BSD____ __alpha __alpha__ __amiga"
904 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
905 al="$al __host_mips__"
906 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
907 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
908 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
909 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
910 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
911 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
912 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
913 al="$al __mc88100 __mc88100__ __mips __mips__"
914 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
915 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
916 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
917 al="$al _host_mips _mips _unix"
918 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
919 al="$al apollo ardent att386 att3b"
920 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
921 al="$al cadmus clipper concurrent convex cray ctix"
922 al="$al dmert encore gcos gcx gimpel gould"
923 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
924 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
925 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
926 al="$al i186 i286 i386 i486 i8086"
927 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
928 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
929 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
930 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
931 al="$al mc88000 mc88100 merlin mert mips mvs n16"
932 al="$al ncl_el ncl_mr"
933 al="$al news1500 news1700 news1800 news1900 news3700"
934 al="$al news700 news800 news900 ns16000 ns32000"
935 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
936 al="$al parisc pc532 pdp11 plexus posix pyr"
937 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
938 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
939 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
940 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
941 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
942 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
945 : Trailing extension. Override this in a hint file, if needed.
947 : Extra object files, if any, needed on this platform.
950 : change the next line if compiling for Xenix/286 on Xenix/386
951 xlibpth='/usr/lib/386 /lib/386'
953 : Possible local library directories to search.
954 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
955 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
957 : general looking path for locating libraries
958 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
959 glibpth="$glibpth /lib /usr/lib $xlibpth"
960 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
961 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
963 : Private path used by Configure to find libraries. Its value
964 : is prepended to libpth. This variable takes care of special
965 : machines, like the mips. Usually, it should be empty.
968 : default library list
970 : some systems want to use only the non-versioned libso:s
971 ignore_versioned_solibs=''
972 : full support for void wanted by default
975 : set useposix=false in your hint file to disable the POSIX extension.
977 : set useopcode=false in your hint file to disable the Opcode extension.
979 : set usemultiplicity on the Configure command line to enable multiplicity.
980 : set usesocks on the Configure command line to enable socks.
981 : set usethreads on the Configure command line to enable threads.
982 : List of libraries we want.
983 : If anyone needs -lnet, put it in a hint file.
984 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
985 libswanted="$libswanted dld ld sun m c cposix posix"
986 libswanted="$libswanted ndir dir crypt sec"
987 libswanted="$libswanted ucb bsd BSD PW x"
988 : We probably want to search /usr/shlib before most other libraries.
989 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
990 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
991 glibpth="/usr/shlib $glibpth"
992 : Do not use vfork unless overridden by a hint file.
995 : Find the basic shell for Bourne shell scripts
999 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1002 if test -f "$xxx"; then
1005 : Build up a list and do a single loop so we can 'break' out.
1006 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1007 for xxx in sh bash ksh pdksh ash; do
1009 try="$try ${p}/${xxx}"
1013 if test -f "$xxx"; then
1016 elif test -f "$xxx.exe"; then
1027 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1029 Usually it's in /bin/sh. How did you even get this far?
1030 Please contact me (Perl Maintainers) at perlbug@perl.com and
1031 we'll try to straighten this all out.
1037 : see if sh knows # comments
1038 if `$sh -c '#' >/dev/null 2>&1`; then
1042 test -f $xcat || xcat=/usr/bin/cat
1047 if test -s today; then
1050 echo "#! $xcat" > try
1054 if test -s today; then
1062 echo "Your $sh doesn't grok # comments--I will strip them later on."
1065 echo "exec grep -v '^[ ]*#'" >spitshell
1067 $eunicefix spitshell
1068 spitshell=`pwd`/spitshell
1070 echo "I presume that if # doesn't work, #! won't work either!"
1075 : figure out how to guarantee sh startup
1077 '') startsh=${sharpbang}${sh} ;;
1089 : echo "Yup, it does."
1091 echo "Hmm... '$startsh' does not guarantee sh startup..."
1092 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1097 : Save command line options in file UU/cmdline.opt for later use in
1098 : generating config.sh.
1099 cat > cmdline.opt <<EOSH
1100 # Configure command line arguments.
1107 cat >>cmdline.opt <<EOSH
1108 config_arg$argn='$arg'
1110 argn=`expr $argn + 1`
1113 : produce awk script to parse command line options
1114 cat >options.awk <<'EOF'
1116 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1118 len = length(optstr);
1119 for (i = 1; i <= len; i++) {
1120 c = substr(optstr, i, 1);
1121 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1132 if (substr(str, 1, 1) != "-") {
1133 printf("'%s'\n", str);
1137 for (i = 2; i <= len; i++) {
1138 c = substr(str, i, 1);
1140 printf("-%s\n", substr(str, i));
1146 printf("'%s'\n", substr(str, i + 1));
1159 : process the command line options
1160 set X `for arg in "$@"; do echo "X$arg"; done |
1161 sed -e s/X// | awk -f options.awk`
1166 : set up default values
1176 rm -f optdef.sh posthint.sh
1177 cat >optdef.sh <<EOS
1183 while test $# -gt 0; do
1185 -d) shift; fastread=yes;;
1186 -e) shift; alldone=cont;;
1190 if test -r "$1"; then
1193 echo "$me: cannot read config file $1." >&2
1198 -h) shift; error=true;;
1199 -r) shift; reuseval=true;;
1200 -s) shift; silent=true; realsilent=true;;
1201 -E) shift; alldone=exit;;
1202 -K) shift; knowitall=true;;
1203 -O) shift; override=true;;
1204 -S) shift; silent=true; extractsh=true;;
1209 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1210 echo "$me: ignoring -D $1" >&2
1213 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1214 *) echo "$1='define'" >> optdef.sh;;
1221 *=) echo "$1" >> optdef.sh;;
1223 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1224 echo "$me: ignoring -U $1" >&2
1226 *) echo "$1='undef'" >> optdef.sh;;
1237 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1241 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1242 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1248 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1249 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1250 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1251 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1252 *) xxx=`echo $yyy|sed 's!:.*!!'`
1253 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1259 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1261 echo "$yyy=''" >> posthint.sh ;;
1266 echo "$yyy='$zzz'" >> posthint.sh ;;
1268 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1270 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1275 echo "$yyy=$zzz" >> posthint.sh ;;
1276 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1279 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1282 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1290 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1291 [-U symbol] [-U symbol=] [-A command:symbol...]
1292 -d : use defaults for all answers.
1293 -e : go on without questioning past the production of config.sh.
1294 -f : specify an alternate default configuration file.
1295 -h : print this help message and exit (with an error status).
1296 -r : reuse C symbols value if possible (skips costly nm extraction).
1297 -s : silent mode, only echoes questions and essential information.
1298 -D : define symbol to have some value:
1299 -D symbol symbol gets the value 'define'
1300 -D symbol=value symbol gets the value 'value'
1301 -E : stop at the end of questions, after having produced config.sh.
1302 -K : do not use unless you know what you are doing.
1303 -O : let -D and -U override definitions from loaded configuration file.
1304 -S : perform variable substitutions on all .SH files (can mix with -f)
1305 -U : undefine symbol:
1306 -U symbol symbol gets the value 'undef'
1307 -U symbol= symbol gets completely empty
1308 -A : manipulate symbol after the platform specific hints have been applied:
1309 -A symbol=value append " "value to symbol
1310 -A append:symbol=value append value to symbol
1311 -A define:symbol=value define symbol to have value
1312 -A clear:symbol define symbol to be ''
1313 -A define:symbol define symbol to be 'define'
1314 -A eval:symbol=value define symbol to be eval of value
1315 -A prepend:symbol=value prepend value to symbol
1316 -A undef:symbol define symbol to be 'undef'
1317 -A undef:symbol= define symbol to be ''
1318 -V : print version number and exit (with a zero status).
1325 case "$fastread$alldone" in
1328 if test ! -t 0; then
1329 echo "Say 'sh Configure', not 'sh <Configure'"
1337 true) exec 1>/dev/null;;
1340 : run the defines and the undefines, if any, but leave the file out there...
1343 : create the posthint manipulation script and leave the file out there...
1348 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1349 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1350 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1351 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1352 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1355 : Some greps do not return status, grrr.
1356 echo "grimblepritz" >grimble
1357 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1359 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1365 : the following should work in any shell
1369 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1370 cat >contains <<'EOSS'
1371 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1376 : Find the path to the source tree
1379 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1382 *) src=`cd ../$src && pwd` ;;
1395 if test -f $rsrc/Configure && \
1396 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1398 : found it, so we are ok.
1401 for src in . .. ../.. ../../.. ../../../..; do
1402 if test -f ../$src/Configure && \
1403 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1414 Sorry, I can't seem to locate the source dir for $package. Please start
1415 Configure with an explicit path -- i.e. /some/path/Configure.
1423 echo "Sources for $package found in \"$src\"." >&4
1427 : script used to extract .SH files with variable substitutions
1428 cat >extract <<'EOS'
1430 echo "Doing variable substitutions on .SH files..."
1431 if test -f $src/MANIFEST; then
1432 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1434 echo "(Looking for .SH files under the source directory.)"
1435 set x `(cd $src; find . -name "*.SH" -print)`
1439 0) set x `(cd $src; echo *.SH)`; shift;;
1441 if test ! -f $src/$1; then
1447 while test $name; do
1448 if test ! -d "$name"; then
1449 create="$name $create";
1450 name=`echo $name | sed -e "s|^[^/]*$||"`;
1451 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1456 for file in $create; do
1465 dir=`expr X$file : 'X\(.*\)/'`
1466 file=`expr X$file : 'X.*/\(.*\)'`
1467 (cd $dir && . ./$file)
1477 dir=`expr X$file : 'X\(.*\)/'`
1478 file=`expr X$file : 'X.*/\(.*\)'`
1479 (set x $dir; shift; eval $mkdir_p)
1489 if test -f $src/config_h.SH; then
1490 if test ! -f config.h; then
1491 : oops, they left it out of MANIFEST, probably, so do it anyway.
1497 : extract files and exit if asked to do so
1498 case "$extractsh" in
1500 case "$realsilent" in
1504 case "$config_sh" in
1505 '') config_sh='config.sh';;
1508 echo "Fetching answers from $config_sh..."
1511 test "$override" && . ./optdef.sh
1520 : Eunice requires " " instead of "", can you believe it
1523 echo "Beginning of configuration questions for $package."
1525 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1527 : first determine how to suppress newline on echo command
1529 echo "Checking echo to see how to suppress newlines..."
1530 (echo "hi there\c" ; echo " ") >.echotmp
1531 if $contains c .echotmp >/dev/null 2>&1 ; then
1542 echo $n "The star should be here-->$c"
1546 : Now test for existence of everything in MANIFEST
1548 if test -f $rsrc/MANIFEST; then
1549 echo "First let's make sure your kit is complete. Checking..." >&4
1550 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1553 for filelist in x??; do
1554 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1556 if test -s missing; then
1560 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1562 You have the option of continuing the configuration process, despite the
1563 distinct possibility that your kit is damaged, by typing 'y'es. If you
1564 do, don't blame me if something goes wrong. I advise you to type 'n'o
1565 and contact the author (perlbug@perl.com).
1568 echo $n "Continue? [n] $c" >&4
1572 echo "Continuing..." >&4
1576 echo "ABORTING..." >&4
1581 echo "Looks good..."
1584 echo "There is no MANIFEST file. I hope your kit is complete !"
1589 : Find the appropriate value for a newline for tr
1590 if test -n "$DJGPP"; then
1593 if test X"$trnl" = X; then
1594 case "`echo foo|tr '\n' x 2>/dev/null`" in
1598 if test X"$trnl" = X; then
1599 case "`echo foo|tr '\012' x 2>/dev/null`" in
1600 foox) trnl='\012' ;;
1603 if test X"$trnl" = X; then
1606 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1612 : compute the number of columns on the terminal for proper question formatting
1617 : set up the echo used in my read
1618 myecho="case \"\$xxxm\" in
1619 '') echo $n \"\$rp $c\" >&4;;
1621 '') echo $n \"[\$xxxm] $c\";;
1623 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1625 echo $n \"[\$xxxm] $c\" >&4
1627 echo $n \"\$rp [\$xxxm] $c\" >&4
1633 : now set up to do reads with possible shell escape and default assignment
1639 case "\$fastread" in
1640 yes) case "\$dflt" in
1643 case "\$silent-\$rp" in
1648 *) case "\$silent" in
1649 true) case "\$rp" in
1654 while expr "X\$ans" : "X!" >/dev/null; do
1658 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1666 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1675 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1680 echo "(OK, I'll run with -d after this question.)" >&4
1683 echo "*** Sorry, \$1 not supported yet." >&4
1693 echo "*** Substitution done -- please confirm."
1695 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1700 echo "*** Error -- try again."
1707 case "\$ans\$xxxm\$nostick" in
1719 : create .config dir to save info across Configure sessions
1720 test -d ../.config || mkdir ../.config
1721 cat >../.config/README <<EOF
1722 This directory created by Configure to save information that should
1723 persist across sessions for $package.
1725 You may safely delete it if you wish.
1728 : general instructions
1731 user=`(logname) 2>/dev/null`
1733 '') user=`whoami 2>&1`;;
1735 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1738 rp='Would you like to see the instructions?'
1749 This installation shell script will examine your system and ask you questions
1750 to determine how the perl5 package should be installed. If you get
1751 stuck on a question, you may use a ! shell escape to start a subshell or
1752 execute a command. Many of the questions will have default answers in square
1753 brackets; typing carriage return will give you the default.
1755 On some of the questions which ask for file or directory names you are allowed
1756 to use the ~name construct to specify the login directory belonging to "name",
1757 even if you don't have a shell which knows about that. Questions where this is
1758 allowed will be marked "(~name ok)".
1762 dflt='Type carriage return to continue'
1766 The prompter used in this script allows you to use shell variables and
1767 backticks in your answers. You may use $1, $2, etc... to refer to the words
1768 in the default answer, as if the default line was a set of arguments given to a
1769 script shell. This means you may also use $* to repeat the whole default line,
1770 so you do not have to re-type everything to add something to the default.
1772 Everytime there is a substitution, you will have to confirm. If there is an
1773 error (e.g. an unmatched backtick), the default answer will remain unchanged
1774 and you will be prompted again.
1776 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1777 the questions and use the computed defaults (or the previous answers if there
1778 was already a config.sh file). Type 'Configure -h' for a list of options.
1779 You may also start interactively and then answer '& -d' at any prompt to turn
1780 on the non-interactive behaviour for the remainder of the execution.
1786 Much effort has been expended to ensure that this shell script will run on any
1787 Unix system. If despite that it blows up on yours, your best bet is to edit
1788 Configure and run it again. If you can't run Configure for some reason,
1789 you'll have to generate a config.sh file by hand. Whatever problems you
1790 have, let me (perlbug@perl.com) know how I blew it.
1792 This installation script affects things in two ways:
1794 1) it may do direct variable substitutions on some of the files included
1796 2) it builds a config.h file for inclusion in C programs. You may edit
1797 any of these files as the need arises after running this script.
1799 If you make a mistake on a question, there is no easy way to back up to it
1800 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1801 files. Configure will offer to let you do this before it runs the SH files.
1804 dflt='Type carriage return to continue'
1806 case "$firsttime" in
1807 true) echo $user >>../.config/instruct;;
1811 : find out where common programs are
1813 echo "Locating common programs..." >&4
1826 if test -d \$dir/\$thing; then
1832 for thisthing in \$dir/\$thing; do
1833 : just loop through to pick last item
1835 if test -f \$thisthing; then
1838 elif test -f \$dir/\$thing.exe; then
1839 if test -n "$DJGPP"; then
1840 echo \$dir/\$thing.exe
1842 : on Eunice apparently
1892 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1893 pth="$pth /lib /usr/lib"
1894 for file in $loclist; do
1898 if test -f "$xxx"; then
1901 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1902 xxx=`./loc $file $file $pth`
1905 '') xxx=`./loc $file $file $pth`;;
1906 *) xxx=`./loc $xxx $xxx $pth`;;
1912 echo $file is in $xxx.
1915 echo $file is in $xxx.
1918 echo "I don't know where '$file' is, and my life depends on it." >&4
1919 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1925 echo "Don't worry if any of the following aren't found..."
1927 for file in $trylist; do
1931 if test -f "$xxx"; then
1934 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1935 xxx=`./loc $file $file $pth`
1938 '') xxx=`./loc $file $file $pth`;;
1939 *) xxx=`./loc $xxx $xxx $pth`;;
1945 echo $file is in $xxx.
1948 echo $file is in $xxx.
1951 echo "I don't see $file out there, $say."
1958 echo "Substituting grep for egrep."
1964 echo "Substituting cp for ln."
1970 echo "Hopefully test is built into your sh."
1973 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1974 echo "Using the test built into your sh."
1982 echo "Hopefully echo is built into your sh."
1987 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1988 $echo $n "hi there$c" >foo1
1989 echo $n "hi there$c" >foo2
1990 if cmp foo1 foo2 >/dev/null 2>&1; then
1991 echo "They are compatible. In fact, they may be identical."
1998 They are not compatible! You are probably running ksh on a non-USG system.
1999 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2000 have echo built in and we may have to run some Bourne shell scripts. That
2001 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2004 $echo $n "The star should be here-->$c"
2011 : determine whether symbolic links are supported
2014 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2015 echo "Symbolic links are supported." >&4
2018 echo "Symbolic links are NOT supported." >&4
2023 : see whether [:lower:] and [:upper:] are supported character classes
2025 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2027 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2031 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2032 # (0xc9 and 0xd1), therefore that is a nice testing point.
2033 if test "X$up" = X -o "X$low" = X; then
2034 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2040 if test "X$up" = X -o "X$low" = X; then
2041 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2047 if test "X$up" = X -o "X$low" = X; then
2048 case "`echo IJ | od -x 2>/dev/null`" in
2050 echo "Hey, this might be EBCDIC." >&4
2051 if test "X$up" = X -o "X$low" = X; then
2052 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2053 ij) up='[A-IJ-RS-Z]'
2058 if test "X$up" = X -o "X$low" = X; then
2059 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2069 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2071 echo "Using $up and $low to convert case." >&4
2074 echo "I don't know how to translate letters from upper to lower case." >&4
2075 echo "Your tr is not acting any way I know of." >&4
2079 : set up the translation script tr, must be called with ./tr of course
2083 '[A-Z][a-z]') exec $tr '$up' '$low';;
2084 '[a-z][A-Z]') exec $tr '$low' '$up';;
2091 : Try to determine whether config.sh was made on this system
2092 case "$config_sh" in
2094 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2095 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2096 # because the A-Z/a-z are not consecutive.
2097 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2098 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2099 newmyuname="$myuname"
2101 case "$knowitall" in
2103 if test -f ../config.sh; then
2104 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2105 eval "`grep myuname= ../config.sh`"
2107 if test "X$myuname" = "X$newmyuname"; then
2115 : Get old answers from old config file if Configure was run on the
2116 : same system, otherwise use the hints.
2119 if test -f config.sh; then
2121 rp="I see a config.sh file. Shall I use it to set the defaults?"
2124 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2125 *) echo "Fetching default answers from your old config.sh file..." >&4
2133 : Older versions did not always set $sh. Catch re-use of such
2142 if test ! -f config.sh; then
2145 First time through, eh? I have some defaults handy for some systems
2146 that need some extra help getting the Configure answers right:
2149 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2151 : Half the following guesses are probably wrong... If you have better
2152 : tests or hints, please send them to perlbug@perl.com
2153 : The metaconfig authors would also appreciate a copy...
2154 $test -f /irix && osname=irix
2155 $test -f /xenix && osname=sco_xenix
2156 $test -f /dynix && osname=dynix
2157 $test -f /dnix && osname=dnix
2158 $test -f /lynx.os && osname=lynxos
2159 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2160 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2161 $test -f /bin/mips && /bin/mips && osname=mips
2162 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2163 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2164 $test -d /usr/apollo/bin && osname=apollo
2165 $test -f /etc/saf/_sactab && osname=svr4
2166 $test -d /usr/include/minix && osname=minix
2167 if $test -d /MachTen -o -d /MachTen_Folder; then
2169 if $test -x /sbin/version; then
2170 osvers=`/sbin/version | $awk '{print $2}' |
2171 $sed -e 's/[A-Za-z]$//'`
2172 elif $test -x /usr/etc/version; then
2173 osvers=`/usr/etc/version | $awk '{print $2}' |
2174 $sed -e 's/[A-Za-z]$//'`
2179 $test -f /sys/posix.dll &&
2180 $test -f /usr/bin/what &&
2181 set X `/usr/bin/what /sys/posix.dll` &&
2182 $test "$3" = UWIN &&
2185 if $test -f $uname; then
2193 umips) osname=umips ;;
2196 [23]100) osname=mips ;;
2197 next*) osname=next ;;
2199 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2200 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2203 elif $test -f /etc/kconfig; then
2205 if test "$lns" = "$ln -s"; then
2207 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2209 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2216 if test -n "$DJGPP"; then
2225 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2227 'not found') osvers="$4"."$3" ;;
2228 '<3240'|'<>3240') osvers=3.2.0 ;;
2229 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2230 '=3250'|'>3250') osvers=3.2.5 ;;
2234 *dc.osx) osname=dcosx
2240 domainos) osname=apollo
2246 dynixptx*) osname=dynixptx
2247 osvers=`echo "$4"|sed 's/^v//'`
2249 freebsd) osname=freebsd
2251 genix) osname=genix ;;
2253 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2269 netbsd*) osname=netbsd
2272 news-os) osvers="$3"
2274 4*) osname=newsos4 ;;
2278 bsd386) osname=bsd386
2281 POSIX-BC | posix-bc ) osname=posix-bc
2284 powerux | power_ux | powermax_os | powermaxos | \
2285 powerunix | power_unix) osname=powerux
2288 next*) osname=next ;;
2289 solaris) osname=solaris
2291 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2298 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2302 titanos) osname=titanos
2311 ultrix) osname=ultrix
2314 osf1|mls+) case "$5" in
2317 osvers=`echo "$3" | sed 's/^[xvt]//'`
2319 hp*) osname=hp_osf1 ;;
2320 mips) osname=mips_osf1 ;;
2323 unixware) osname=svr5
2332 $2) case "$osname" in
2336 : svr4.x or possibly later
2346 if test -f /stand/boot ; then
2347 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2348 if test -n "$INITPROG" -a -f "$INITPROG"; then
2349 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2350 if test -n "$isesix"; then
2358 *) if test -f /etc/systemid; then
2360 set `echo $3 | $sed 's/\./ /g'` $4
2361 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2363 elif $test -f $src/hints/sco_$1_$2.sh; then
2365 elif $test -f $src/hints/sco_$1.sh; then
2370 '') : Still unknown. Probably a generic Sys V.
2379 *) case "$osname" in
2380 '') : Still unknown. Probably a generic BSD.
2388 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2389 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2390 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2393 $rm -f UU/kernel.what
2394 elif test -d c:/.; then
2401 : Now look for a hint file osname_osvers, unless one has been
2402 : specified already.
2405 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2406 : Also try without trailing minor version numbers.
2407 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2408 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2409 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2410 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2413 *) case "$osvers" in
2416 *) if $test -f $src/hints/$file.sh ; then
2418 elif $test -f $src/hints/$xfile.sh ; then
2420 elif $test -f $src/hints/$xxfile.sh ; then
2422 elif $test -f $src/hints/$xxxfile.sh ; then
2424 elif $test -f $src/hints/$xxxxfile.sh ; then
2426 elif $test -f "$src/hints/${osname}.sh" ; then
2435 if $test -f Policy.sh ; then
2438 none) dflt="Policy" ;;
2439 *) dflt="Policy $dflt" ;;
2444 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2448 if $test -f Policy.sh ; then
2451 There's also a Policy hint file available, which should make the
2452 site-specific (policy) questions easier to answer.
2459 You may give one or more space-separated answers, or "none" if appropriate.
2460 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2461 is a good thing. DO NOT give a wrong version or a wrong OS.
2465 rp="Which of these apply, if any?"
2468 for file in $tans; do
2469 if $test X$file = XPolicy -a -f Policy.sh; then
2471 $cat Policy.sh >> UU/config.sh
2472 elif $test -f $src/hints/$file.sh; then
2473 . $src/hints/$file.sh
2474 $cat $src/hints/$file.sh >> UU/config.sh
2475 elif $test X$tans = X -o X$tans = Xnone ; then
2478 : Give one chance to correct a possible typo.
2479 echo "$file.sh does not exist"
2481 rp="hint to use instead?"
2483 for file in $ans; do
2484 if $test -f "$src/hints/$file.sh"; then
2485 . $src/hints/$file.sh
2486 $cat $src/hints/$file.sh >> UU/config.sh
2487 elif $test X$ans = X -o X$ans = Xnone ; then
2490 echo "$file.sh does not exist -- ignored."
2497 : Remember our hint file for later.
2498 if $test -f "$src/hints/$file.sh" ; then
2508 echo "Fetching default answers from $config_sh..." >&4
2512 cp $config_sh config.sh 2>/dev/null
2522 test "$override" && . ./optdef.sh
2523 myuname="$newmyuname"
2525 : Restore computed paths
2526 for file in $loclist $trylist; do
2527 eval $file="\$_$file"
2532 Configure uses the operating system name and version to set some defaults.
2533 The default value is probably right if the name rings a bell. Otherwise,
2534 since spelling matters for me, either accept the default or answer "none"
2541 ''|' '|none) dflt=none ;;
2542 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2545 *) dflt="$osname" ;;
2547 rp="Operating system name?"
2551 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2557 ''|' '|none) dflt=none ;;
2558 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2559 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2561 ''|' ') dflt=none ;;
2566 *) dflt="$osvers" ;;
2568 rp="Operating system version?"
2578 : who configured the system
2579 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2580 cf_by=`(logname) 2>/dev/null`
2583 cf_by=`(whoami) 2>/dev/null`
2585 "") cf_by=unknown ;;
2589 : set up the script used to warn in case of inconsistency
2596 echo "*** WHOA THERE!!! ***" >&4
2597 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2598 rp=" Keep the $hint value?"
2601 y) td=$was; tu=$was;;
2605 : function used to set $1 to $val
2606 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2608 $define$undef) . ./whoa; eval "$var=\$td";;
2609 $undef$define) . ./whoa; eval "$var=\$tu";;
2610 *) eval "$var=$val";;
2615 Perl can be built to take advantage of threads, on some systems.
2616 To do so, Configure must be run with -Dusethreads.
2618 Note that threading is a highly experimental feature, and
2619 some known race conditions still remain. If you choose to try
2620 it, be very sure to not actually deploy it for production
2621 purposes. README.threads has more details, and is required
2622 reading if you enable threads.
2624 case "$usethreads" in
2625 $define|true|[yY]*) dflt='y';;
2628 rp='Build a threading Perl?'
2631 y|Y) val="$define" ;;
2637 case "$d_oldpthreads" in
2638 '') : Configure tests would be welcome here. For now, assume undef.
2640 *) val="$d_oldpthreads" ;;
2646 case "$usethreads" in
2647 "$define"|true|[yY]*)
2648 : Look for a hint-file generated 'call-back-unit'. If the
2649 : user has specified that a threading perl is to be built,
2650 : we may need to set or change some other defaults.
2651 if $test -f usethreads.cbu; then
2652 echo "Your platform has some specific hints for threaded builds, using them..."
2656 (Your platform doesn't have any specific hints for threaded builds.
2657 Assuming POSIX threads, then.)
2665 Perl can be built so that multiple Perl interpreters can coexist
2666 within the same Perl executable. To do so, Configure must be run with
2669 Normally you do not need this and you should answer no.
2672 case "$usemultiplicity" in
2673 $define|true|[yY]*) dflt='y';;
2676 rp='Build Perl for multiplicity?'
2679 y|Y) val="$define" ;;
2685 : determine where manual pages are on this system
2689 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2690 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2691 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2692 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2693 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2694 sysman=`./loc . /usr/man/man1 $syspath`
2697 if $test -d "$sysman"; then
2698 echo "System manual is in $sysman." >&4
2700 echo "Could not find manual pages in source form." >&4
2703 : see what memory models we can support
2706 $cat >pdp11.c <<'EOP'
2715 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2716 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2717 dflt='unsplit split'
2719 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2722 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2727 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2730 if $test -d /lib/large || $test -d /usr/lib/large; then
2733 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2742 Some systems have different model sizes. On most systems they are called
2743 small, medium, large, and huge. On the PDP11 they are called unsplit and
2744 split. If your system doesn't support different memory models, say "none".
2745 If you wish to force everything to one memory model, say "none" here and
2746 put the appropriate flags later when it asks you for other cc and ld flags.
2747 Venix systems may wish to put "none" and let the compiler figure things out.
2748 (In the following question multiple model names should be space separated.)
2750 The default for most systems is "none".
2753 rp="Which memory models are supported?"
2768 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2769 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2776 rp="What flag indicates separate I and D space?"
2784 *large*|*small*|*medium*|*huge*)
2791 rp="What flag indicates large model?"
2801 *huge*) case "$huge" in
2805 rp="What flag indicates huge model?"
2815 *medium*) case "$medium" in
2819 rp="What flag indicates medium model?"
2826 *) medium="$large";;
2829 *small*) case "$small" in
2833 rp="What flag indicates small model?"
2844 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2847 $rm -f pdp11.* pdp11
2849 : make some quick guesses about what we are up against
2851 $echo $n "Hmm... $c"
2861 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2862 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2864 echo "Looks kind of like an OSF/1 system, but we'll see..."
2866 elif test `echo abc | tr a-z A-Z` = Abc ; then
2867 xxx=`./loc addbib blurfl $pth`
2868 if $test -f $xxx; then
2869 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2873 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2874 echo "Looks kind of like an extended USG system, but we'll see..."
2876 echo "Looks kind of like a USG system, but we'll see..."
2880 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2881 echo "Looks kind of like a BSD system, but we'll see..."
2885 echo "Looks kind of like a Version 7 system, but we'll see..."
2888 case "$eunicefix" in
2891 There is, however, a strange, musty smell in the air that reminds me of
2892 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2896 : it so happens the Eunice I know will not run shell scripts in Unix format
2900 echo "Congratulations. You aren't running Eunice."
2904 : Detect OS2. The p_ variable is set above in the Head.U unit.
2909 I have the feeling something is not exactly right, however...don't tell me...
2910 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2915 if test -f /xenix; then
2916 echo "Actually, this looks more like a XENIX system..."
2921 echo "It's not Xenix..."
2926 if test -f /venix; then
2927 echo "Actually, this looks more like a VENIX system..."
2934 echo "Nor is it Venix..."
2937 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2938 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2941 : see if we need a special compiler
2949 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2950 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2964 On some older systems the default C compiler will not resolve multiple global
2965 references that happen to have the same name. On some such systems the "Mcc"
2966 command may be used to force these to be resolved. On other systems a "cc -M"
2967 command is required. (Note that the -M flag on other systems indicates a
2968 memory model to use!) If you have the Gnu C compiler, you might wish to use
2974 rp="Use which C compiler?"
2982 rp="Use which C compiler?"
2986 : Look for a hint-file generated 'call-back-unit'. Now that the
2987 : user has specified the compiler, we may need to set or change some
2989 if $test -f cc.cbu; then
2993 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2994 $cat >gccvers.c <<EOM
2999 printf("%s\n", __VERSION__);
3001 printf("%s\n", "1");
3007 if $cc -o gccvers gccvers.c; then
3008 gccversion=`./gccvers`
3009 case "$gccversion" in
3010 '') echo "You are not using GNU cc." ;;
3011 *) echo "You are using GNU cc $gccversion." ;;
3015 echo "*** WHOA THERE!!! ***" >&4
3016 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3017 case "$knowitall" in
3019 echo " You'd better start hunting for one and let me know about it." >&4
3025 case "$gccversion" in
3026 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3030 case "$usemorebits" in
3031 "$define"|true|[yY]*)
3033 uselongdouble="$define"
3034 usemorebits="$define"
3036 *) usemorebits="$undef"
3043 Perl can be built to understand large files (files larger than 2 gigabytes)
3044 on some systems. To do so, Configure must be run with -Duselargefiles.
3046 If this doesn't make any sense to you, just accept the default.
3048 case "$uselargefiles" in
3049 "$define"|true|[yY]*) dflt='y' ;;
3052 rp='Try to understand large files?'
3055 y|Y) val="$define" ;;
3060 case "$uselargefiles" in
3061 "$define") use64bits="$define" ;;
3066 Perl can be built to take advantage of explicit 64-bit interfaces,
3067 on some systems. To do so, Configure must be run with -Duse64bits.
3069 If this doesn't make any sense to you, just accept the default.
3071 case "$use64bits" in
3072 $define|true|[yY]*) dflt='y';;
3075 rp='Try to use explicit 64-bit interfaces, if available?'
3088 case "$archname64" in
3089 '') archname64='' ;; # not a typo
3092 case "$use64bits" in
3093 "$define"|true|[yY]*)
3094 : Look for a hint-file generated 'call-back-unit'. If the
3095 : user has specified that a 64 bit perl is to be built,
3096 : we may need to set or change some other defaults.
3097 if $test -f use64bits.cbu; then
3098 echo "Your platform has some specific hints for 64-bit builds, using them..."
3102 (Your platform doesn't have any specific hints for 64-bit builds.
3103 This is probably okay, especially if your system is a true 64-bit system.)
3105 case "$gccversion" in
3108 But since you seem to be using gcc,
3109 I will now add -DUSE_LONG_LONG to the compilation flags.
3111 ccflags="$ccflags -DUSE_LONG_LONG"
3118 : determine the architecture name
3120 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3121 tarch=`arch`"-$osname"
3122 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3123 if uname -m > tmparch 2>&1 ; then
3124 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
3125 -e 's/$/'"-$osname/" tmparch`
3133 case "$myarchname" in
3136 echo "(Your architecture name used to be $myarchname.)"
3143 *) dflt="$archname";;
3145 rp='What is your architecture name'
3148 case "$usethreads" in
3150 echo "Threads selected." >&4
3152 *-thread*) echo "...and architecture name already has -thread." >&4
3154 *) archname="$archname-thread"
3155 echo "...setting architecture name to $archname." >&4
3160 case "$usemultiplicity" in
3162 echo "Multiplicity selected." >&4
3164 *-multi*) echo "...and architecture name already has -multi." >&4
3166 *) archname="$archname-multi"
3167 echo "...setting architecture name to $archname." >&4
3172 case "$use64bits" in
3174 echo "Explicit 64-bitness selected." >&4
3175 case "$archname64" in
3180 *-$archname64*) echo "...and architecture name already has $archname64." >&4
3182 *) archname="$archname-$archname64"
3183 echo "...setting architecture name to $archname." >&4
3190 : decide how portable to be. Allow command line overrides.
3191 case "$d_portable" in
3193 *) d_portable="$define" ;;
3196 : set up shell script to do ~ expansion
3202 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3205 if $test -f /bin/csh; then
3206 /bin/csh -f -c "glob \$1"
3211 name=\`$expr x\$1 : '..\([^/]*\)'\`
3212 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3213 if $test ! -d "\$dir"; then
3215 echo "\$me: can't locate home directory for: \$name" >&2
3220 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3236 : now set up to get a file name
3240 cat <<'EOSC' >>getfile
3256 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3257 fn=`echo $fn | sed 's/(.*)//'`
3263 loc_file=`expr $fn : '.*:\(.*\)'`
3264 fn=`expr $fn : '\(.*\):.*'`
3272 */*) fullpath=true;;
3281 *e*) exp_file=true;;
3284 *p*) nopath_ok=true;;
3289 *d*) type='Directory';;
3290 *l*) type='Locate';;
3295 Locate) what='File';;
3300 case "$d_portable" in
3308 while test "$type"; do
3313 true) rp="$rp (~name ok)";;
3316 if test -f UU/getfile.ok && \
3317 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3336 value=`UU/filexp $ans`
3339 if test "$ans" != "$value"; then
3340 echo "(That expands to $value on this system.)"
3354 /*) value="$ansexp" ;;
3359 echo "I shall only accept a full path name, as in /bin/ls." >&4
3360 echo "Use a ! shell escape if you wish to check pathnames." >&4
3363 echo "Please give a full path name, starting with slash." >&4
3366 echo "Note that using ~name is ok provided it expands well." >&4
3379 for fp in $gfpth; do
3380 if test "X$fp" = X.; then
3385 if test -f "$pf"; then
3387 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3389 echo "($value is not a plain file, but that's ok.)"
3392 if test X"$type" = X; then
3399 for fp in $gfpth; do
3400 if test "X$fp" = X.; then
3405 if test -d "$pf"; then
3413 if test -d "$ansexp"; then
3414 echo "(Looking for $loc_file in directory $value.)"
3415 value="$value/$loc_file"
3416 ansexp="$ansexp/$loc_file"
3418 if test -f "$ansexp"; then
3421 case "$nopath_ok" in
3422 true) case "$value" in
3424 *) echo "Assuming $value will be in people's path."
3440 if test "$fastread" = yes; then
3445 rp="$what $value doesn't exist. Use that name anyway?"
3464 test "X$gfpthkeep" != Xy && gfpth=""
3467 : determine root of directory hierarchy where package will be installed.
3470 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3478 By default, $package will be installed in $dflt/bin, manual pages
3479 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3480 installation directories. Typically this is something like /usr/local.
3481 If you wish to have binaries under /usr/bin but other parts of the
3482 installation under /usr/local, that's ok: you will be prompted
3483 separately for each of the installation directories, the prefix being
3484 only used to set the defaults.
3488 rp='Installation prefix to use?'
3496 *) oldprefix="$prefix";;
3506 $define|true) afs=true ;;
3507 $undef|false) afs=false ;;
3508 *) if test -d /afs; then
3516 echo "AFS may be running... I'll be extra cautious then..." >&4
3518 echo "AFS does not seem to be running..." >&4
3521 : determine installation prefix for where package is to be installed.
3525 Since you are running AFS, I need to distinguish the directory in which
3526 files will reside from the directory in which they are installed (and from
3527 which they are presumably copied to the former directory by occult means).
3530 case "$installprefix" in
3531 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3532 *) dflt="$installprefix";;
3537 In some special cases, particularly when building $package for distribution,
3538 it is convenient to distinguish between the directory in which files should
3539 be installed from the directory ($prefix) in which they
3540 will eventually reside. For most users, these two directories are the same.
3543 case "$installprefix" in
3545 *) dflt=$installprefix;;
3549 rp='What installation prefix should I use for installing files?'
3551 installprefix="$ans"
3552 installprefixexp="$ansexp"
3554 : set the prefixit variable, to compute a suitable default value
3555 prefixit='case "$3" in
3557 case "$oldprefix" in
3558 "") eval "$1=\"\$$2\"";;
3565 ""|" ") eval "$1=\"\$$2\"";;
3571 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3573 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3574 /*-$oldprefix/*|\~*-$oldprefix/*)
3575 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3576 *) eval "$1=\"\$$2\"";;
3580 : set the base revision
3583 : get the patchlevel
3585 echo "Getting the current patchlevel..." >&4
3586 if $test -r $rsrc/patchlevel.h;then
3587 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3588 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3589 apiversion=`awk '/define[ ]+PERL_APIVERSION/ {print $3}' $rsrc/patchlevel.h`
3595 $echo $n "(You have $package" $c
3598 *) $echo $n " $baserev" $c ;;
3600 $echo $n " patchlevel $patchlevel" $c
3601 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3604 if test 0 -eq "$subversion"; then
3605 version=`LC_ALL=C; export LC_ALL; \
3606 echo $baserev $patchlevel | \
3607 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3609 version=`LC_ALL=C; export LC_ALL; \
3610 echo $baserev $patchlevel $subversion | \
3611 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3614 : determine installation style
3615 : For now, try to deduce it from prefix unless it is already set.
3616 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3617 case "$installstyle" in
3618 '') case "$prefix" in
3619 *perl*) dflt='lib';;
3620 *) dflt='lib/perl5' ;;
3623 *) dflt='lib/perl5' ;;
3625 : Probably not worth prompting for this since we prompt for all
3626 : the directories individually, and the prompt would be too long and
3630 : determine where private library files go
3631 : Usual default is /usr/local/lib/perl5/$version.
3632 : Also allow things like /opt/perl/lib/$version, since
3633 : /opt/perl/lib/perl5... would be redundant.
3634 : The default "style" setting is made in installstyle.U
3635 case "$installstyle" in
3636 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3637 *) set dflt privlib lib/$version ;;
3642 There are some auxiliary files for $package that need to be put into a
3643 private library directory that is accessible by everyone.
3647 rp='Pathname where the private library files will reside?'
3650 privlibexp="$ansexp"
3651 : Change installation prefix, if necessary.
3652 if $test X"$prefix" != X"$installprefix"; then
3653 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
3655 installprivlib="$privlibexp"
3658 : set the prefixup variable, to restore leading tilda escape
3659 prefixup='case "$prefixexp" in
3661 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3664 : determine where public architecture dependent libraries go
3667 : privlib default is /usr/local/lib/$package/$version
3668 : archlib default is /usr/local/lib/$package/$version/$archname
3669 : privlib may have an optional trailing /share.
3670 tdflt=`echo $privlib | $sed 's,/share$,,'`
3671 tdflt=$tdflt/$archname
3680 $spackage contains architecture-dependent library files. If you are
3681 sharing libraries in a heterogeneous environment, you might store
3682 these files in a separate location. Otherwise, you can just include
3683 them with the rest of the public library files.
3687 rp='Where do you want to put the public architecture-dependent libraries?'
3690 archlibexp="$ansexp"
3691 if $test X"$archlib" = X"$privlib"; then
3696 : Change installation prefix, if necessary.
3697 if $test X"$prefix" != X"$installprefix"; then
3698 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
3700 installarchlib="$archlibexp"
3704 : Binary compatibility with 5.005 is not possible for builds
3705 : with advanced features
3706 case "$usethreads$usemultiplicity" in
3708 bincompat5005="$undef"
3709 d_bincompat5005="$undef"
3713 Perl 5.006 can be compiled for binary compatibility with 5.005.
3714 If you decide to do so, you will be able to continue using most
3715 of the extensions that were compiled for Perl 5.005.
3718 case "$bincompat5005$d_bincompat5005" in
3719 *"$undef"*) dflt=n ;;
3722 rp='Binary compatibility with Perl 5.005?'
3725 y*) val="$define" ;;
3730 case "$d_bincompat5005" in
3732 bincompat5005="$define"
3734 *) bincompat5005="$undef"
3735 d_bincompat5005="$undef"
3742 : see if setuid scripts can be secure
3745 Some kernels have a bug that prevents setuid #! scripts from being
3746 secure. Some sites have disabled setuid #! scripts because of this.
3748 First let's decide if your kernel supports secure setuid #! scripts.
3749 (If setuid #! scripts would be secure but have been disabled anyway,
3750 don't say that they are secure if asked.)
3755 if $test -d /dev/fd; then
3756 echo "#!$ls" >reflect
3757 chmod +x,u+s reflect
3758 ./reflect >flect 2>&1
3759 if $contains "/dev/fd" flect >/dev/null; then
3760 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3764 If you are not sure if they are secure, I can check but I'll need a
3765 username and password different from the one you are using right now.
3766 If you don't have such a username or don't want me to test, simply
3770 rp='Other username to test security of setuid scripts with?'
3775 case "$d_suidsafe" in
3776 '') echo "I'll assume setuid scripts are *not* secure." >&4
3779 echo "Well, the $hint value is *not* secure." >&4
3781 *) echo "Well, the $hint value *is* secure." >&4
3786 $rm -f reflect flect
3787 echo "#!$ls" >reflect
3788 chmod +x,u+s reflect
3791 echo '"su" will (probably) prompt you for '"$ans's password."
3792 su $ans -c './reflect >flect'
3793 if $contains "/dev/fd" flect >/dev/null; then
3794 echo "Okay, it looks like setuid scripts are secure." >&4
3797 echo "I don't think setuid scripts are secure." >&4
3802 rp='Does your kernel have *secure* setuid scripts?'
3805 [yY]*) val="$define";;
3810 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3811 echo "(That's for file descriptors, not floppy disks.)"
3817 $rm -f reflect flect
3819 : now see if they want to do setuid emulation
3822 case "$d_suidsafe" in
3825 echo "No need to emulate SUID scripts since they are secure here." >& 4
3829 Some systems have disabled setuid scripts, especially systems where
3830 setuid scripts cannot be secure. On systems where setuid scripts have
3831 been disabled, the setuid/setgid bits on scripts are currently
3832 useless. It is possible for $package to detect those bits and emulate
3833 setuid/setgid in a secure fashion. This emulation will only work if
3834 setuid scripts have been disabled in your kernel.
3838 "$define") dflt=y ;;
3841 rp="Do you want to do setuid/setgid emulation?"
3844 [yY]*) val="$define";;
3852 : What should the include directory be ?
3854 $echo $n "Hmm... $c"
3858 if $test -f /bin/mips && /bin/mips; then
3859 echo "Looks like a MIPS system..."
3860 $cat >usr.c <<'EOCP'
3861 #ifdef SYSTYPE_BSD43
3865 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3866 dflt='/bsd43/usr/include'
3870 mips_type='System V'
3872 $rm -f usr.c usr.out
3873 echo "and you're compiling with the $mips_type compiler and libraries."
3877 echo "Doesn't look like a MIPS system."
3887 case "$xxx_prompt" in
3890 rp='Where are the include files you want to use?'
3898 : see how we invoke the C preprocessor
3900 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3901 cat <<'EOT' >testcpp.c
3907 if test ! -f cppstdin; then
3908 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3909 # AIX cc -E doesn't show the absolute headerfile
3910 # locations but we'll cheat by using the -M flag.
3911 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
3913 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3916 echo "Keeping your $hint cppstdin wrapper."
3919 wrapper=`pwd`/cppstdin
3923 if $test "X$cppstdin" != "X" && \
3924 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3925 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3927 echo "You used to use $cppstdin $cppminus so we'll use that again."
3929 '') echo "But let's see if we can live without a wrapper..." ;;
3931 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3932 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3934 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3937 echo "(However, $cpprun $cpplast does not work, let's see...)"
3945 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3952 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3953 $cc -E <testcpp.c >testcpp.out 2>&1; \
3954 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955 echo "Yup, it does."
3958 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3959 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3960 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961 echo "Yup, it does."
3964 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3965 $cc -P <testcpp.c >testcpp.out 2>&1; \
3966 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3967 echo "Yipee, that works!"
3970 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3971 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3972 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3973 echo "At long last!"
3976 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3977 $cpp <testcpp.c >testcpp.out 2>&1; \
3978 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3982 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3983 $cpp - <testcpp.c >testcpp.out 2>&1; \
3984 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3985 echo "Hooray, it works! I was beginning to wonder."
3988 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3989 $wrapper <testcpp.c >testcpp.out 2>&1; \
3990 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3996 rp="No dice. I can't find a C preprocessor. Name one:"
4000 $x_cpp <testcpp.c >testcpp.out 2>&1
4001 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4002 echo "OK, that will do." >&4
4004 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4019 echo "Perhaps can we force $cc -E using a wrapper..."
4020 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4021 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4027 echo "Nope, we'll have to live without it..."
4041 "$wrapper"|'cppstdin') ;;
4042 *) $rm -f $wrapper;;
4044 $rm -f testcpp.c testcpp.out
4046 : Set private lib path
4049 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4054 '') dlist="$loclibpth $plibpth $glibpth";;
4055 *) dlist="$libpth";;
4058 : Now check and see which directories actually exist, avoiding duplicates
4062 if $test -d $xxx; then
4065 *) libpth="$libpth $xxx";;
4071 Some systems have incompatible or broken versions of libraries. Among
4072 the directories listed in the question below, please remove any you
4073 know not to be holding relevant libraries, and add any that are needed.
4074 Say "none" for none.
4085 rp="Directories to use for library searches?"
4092 : compute shared library extension
4095 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4105 On some systems, shared libraries may be available. Answer 'none' if
4106 you want to suppress searching of shared libraries for the remaining
4107 of this configuration.
4110 rp='What is the file extension used for shared libraries?'
4114 : Define several unixisms.
4115 : Hints files or command line option can be used to override them.
4116 : The convoluted testing is in case hints files set either the old
4119 '') case "$exe_ext" in
4121 *) _exe="$exe_ext" ;;
4126 '') case "$lib_ext" in
4133 '') case "$obj_ext" in
4140 '') case "$path_sep" in
4151 : Which makefile gets called first. This is used by make depend.
4152 case "$firstmakefile" in
4153 '') firstmakefile='makefile';;
4158 Perl can be built to use the SOCKS proxy protocol library. To do so,
4159 Configure must be run with -Dusesocks.
4161 Normally you do not need this and you should answer no.
4165 $define|true|[yY]*) dflt='y';;
4168 rp='Build Perl for SOCKS?'
4171 y|Y) val="$define" ;;
4177 : Looking for optional libraries
4179 echo "Checking for optional libraries..." >&4
4184 case "$libswanted" in
4185 '') libswanted='c_s';;
4189 libswanted="$libswanted socks5 socks5_sh"
4192 for thislib in $libswanted; do
4194 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4195 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4196 echo "Found -l$thislib (shared)."
4199 *) dflt="$dflt -l$thislib";;
4201 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4202 echo "Found -l$thislib (shared)."
4205 *) dflt="$dflt -l$thislib";;
4207 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4208 echo "Found -l$thislib."
4211 *) dflt="$dflt -l$thislib";;
4213 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4214 echo "Found -l$thislib."
4217 *) dflt="$dflt -l$thislib";;
4219 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4220 echo "Found -l${thislib}_s."
4223 *) dflt="$dflt -l${thislib}_s";;
4225 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4226 echo "Found -l$thislib."
4229 *) dflt="$dflt -l$thislib";;
4232 echo "No -l$thislib."
4243 ' '|'') dflt='none';;
4248 In order to compile $package on your machine, a number of libraries
4249 are usually needed. Include any other special libraries here as well.
4250 Say "none" for none. The default list is almost always right.
4254 rp="What libraries to use?"
4261 : determine optimization, if desired, or use for debug flag also
4263 ' '|$undef) dflt='none';;
4265 *) dflt="$optimize";;
4269 By default, $package compiles with the -O flag to use the optimizer.
4270 Alternately, you might want to use the symbolic debugger, which uses
4271 the -g flag (on traditional Unix systems). Either flag can be
4272 specified here. To use neither flag, specify the word "none".
4275 rp="What optimizer/debugger flag should be used?"
4279 'none') optimize=" ";;
4283 : We will not override a previous value, but we might want to
4284 : augment a hint file
4286 default|recommended)
4287 case "$gccversion" in
4288 1*) dflt='-fpcc-struct-return' ;;
4291 *-g*) dflt="$dflt -DDEBUGGING";;
4293 case "$gccversion" in
4294 2*) if test -d /etc/conf/kconfig.d &&
4295 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4301 case "$gccversion" in
4305 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4306 echo 'int main(void) { return 0; }' > gcctest.c
4307 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4308 echo "Yes, it does." 2>&1
4311 echo "Leaving current flags $ccflags alone." 2>&1
4313 *) dflt="$dflt -fno-strict-aliasing" ;;
4316 echo "Nope, it doesn't, but that's ok." 2>&1
4323 case "$mips_type" in
4324 *BSD*|'') inclwanted="$locincpth $usrinc";;
4325 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4327 for thisincl in $inclwanted; do
4328 if $test -d $thisincl; then
4329 if $test x$thisincl != x$usrinc; then
4332 *) dflt="$dflt -I$thisincl";;
4338 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4340 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4348 *) dflt="$dflt -D$2";;
4352 set signal.h LANGUAGE_C; eval $inctest
4356 ccflags="$ccflags -DSOCKS"
4361 default|recommended) dflt="$ccflags $dflt" ;;
4362 *) dflt="$ccflags";;
4370 Your C compiler may want other flags. For this question you should include
4371 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4372 but you should NOT include libraries or ld flags like -lwhatever. If you
4373 want $package to honor its debug switch, you should include -DDEBUGGING here.
4374 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4376 To use no flags, specify the word "none".
4382 rp="Any additional cc flags?"
4389 : the following weeds options from ccflags that are of no interest to cpp
4391 case "$gccversion" in
4392 1*) cppflags="$cppflags -D__GNUC__"
4394 case "$mips_type" in
4396 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4402 echo "Let me guess what the preprocessor flags are..." >&4
4416 *) ftry="$previous $flag";;
4418 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4419 >cpp1.out 2>/dev/null && \
4420 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4421 >cpp2.out 2>/dev/null && \
4422 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4423 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4425 cppflags="$cppflags $ftry"
4435 *-*) echo "They appear to be: $cppflags";;
4437 $rm -f cpp.c cpp?.out
4441 : flags used in final linking phase
4443 '') if ./venix; then
4449 *-posix*) dflt="$dflt -posix" ;;
4452 *) dflt="$ldflags";;
4455 : Try to guess additional flags to pick up local libraries.
4456 for thislibdir in $libpth; do
4457 case " $loclibpth " in
4460 *"-L$thislibdir "*) ;;
4461 *) dflt="$dflt -L$thislibdir" ;;
4473 Your C linker may need flags. For this question you should
4474 include -L/whatever and any other flags used by the C linker, but you
4475 should NOT include libraries like -lwhatever.
4477 Make sure you include the appropriate -L/path flags if your C linker
4478 does not normally search all of the directories you specified above,
4481 To use no flags, specify the word "none".
4485 rp="Any additional ld flags (NOT including libraries)?"
4491 rmlist="$rmlist pdp11"
4495 echo "Checking your choice of C compiler and flags for coherency..." >&4
4496 $cat > try.c <<'EOF'
4498 int main() { printf("Ok\n"); exit(0); }
4500 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4502 $cat >try.msg <<'EOM'
4503 I've tried to compile and run the following simple program:
4506 $cat try.c >> try.msg
4508 $cat >> try.msg <<EOM
4515 and I got the following output:
4519 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4520 if sh -c './try' >>try.msg 2>&1; then
4524 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4527 cat >> try.msg <<'EOQS'
4528 If $libs contains -lsfio, and sfio is mis-configured, then it
4529 sometimes (apparently) runs and exits with a 0 status, but with no
4530 output! It may have to do with sfio's use of _exit vs. exit.
4533 rp="You have a big problem. Shall I abort Configure"
4540 echo "The program compiled OK, but exited with status $?." >>try.msg
4541 rp="You have a problem. Shall I abort Configure"
4545 echo "I can't compile the test program." >>try.msg
4546 rp="You have a BIG problem. Shall I abort Configure"
4552 case "$knowitall" in
4554 echo "(The supplied flags or libraries might be incorrect.)"
4562 *) echo "Ok. Stopping Configure." >&4
4567 n) echo "OK, that should do.";;
4569 $rm -f try try.* core
4571 : determine filename position in cpp output
4573 echo "Computing filename position in cpp output for #include directives..." >&4
4574 echo '#include <stdio.h>' > foo.c
4577 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4578 $grep '^[ ]*#.*stdio\.h' | \
4579 while read cline; do
4582 while $test \$# -gt 0; do
4583 if $test -r \`echo \$1 | $tr -d '"'\`; then
4588 pos=\`expr \$pos + 1\`
4600 *) pos="${fieldn}th";;
4602 echo "Your cpp writes the filename in the $pos field of the line."
4604 : locate header file
4609 for usrincdir in $usrinc
4611 if test -f \$usrincdir/\$wanted; then
4612 echo "\$usrincdir/\$wanted"
4616 awkprg='{ print \$$fieldn }'
4617 echo "#include <\$wanted>" > foo\$\$.c
4618 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4619 $grep "^[ ]*#.*\$wanted" | \
4620 while read cline; do
4621 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4623 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4624 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4629 # status = 0: grep returned 0 lines, case statement not executed
4630 # status = 1: headerfile found
4631 # status = 2: while loop executed, no headerfile found
4635 if test \$status -eq 1; then
4642 : define an alternate in-header-list? function
4643 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4644 cont=true; xxf="echo \"<\$1> found.\" >&4";
4645 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4646 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4648 case $# in 4) instead=instead;; *) instead="at last";; esac;
4649 while $test "$cont"; do
4651 var=$2; eval "was=\$$2";
4652 if $test "$xxx" && $test -r "$xxx";
4654 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4657 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4658 set $yyy; shift; shift; yyy=$@;
4659 case $# in 0) cont="";;
4660 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4661 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4662 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4663 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4667 do set $yyy; var=$2; eval "was=\$$2";
4668 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4669 set $yyy; shift; shift; yyy=$@;
4672 : see if this is a malloc.h system
4673 set malloc.h i_malloc
4676 : see if stdlib is available
4677 set stdlib.h i_stdlib
4680 : determine which malloc to compile in
4682 case "$usemymalloc" in
4683 ''|[yY]*|true|$define) dflt='y' ;;
4686 rp="Do you wish to attempt to use the malloc that comes with $package?"
4692 mallocsrc='malloc.c'
4693 mallocobj="malloc$_o"
4694 d_mymalloc="$define"
4697 : Remove malloc from list of libraries to use
4698 echo "Removing unneeded -lmalloc from library list" >&4
4699 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4702 echo "libs = $libs" >&4
4714 : compute the return types of malloc and free
4716 $cat >malloc.c <<END
4720 #include <sys/types.h>
4734 case "$malloctype" in
4736 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4743 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4747 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4754 echo "Your system uses $freetype free(), it would seem." >&4
4758 The installation process will also create a directory for
4759 vendor-supplied add-ons. Vendors who supply perl with their system
4760 may find it convenient to place all vendor-supplied files in this
4761 directory rather than in the main distribution directory. This will
4762 ease upgrades between binary-compatible maintenance versions of perl.
4764 Of course you may also use these directories in whatever way you see
4765 fit. For example, you might use them to access modules shared over a
4766 company-wide network.
4768 The default answer should be fine for most people.
4769 This causes further questions about vendor add-ons to be skipped
4770 and no vendor-specific directories will be configured for perl.
4773 rp='Do you want to configure vendor-specific add-on directories?'
4774 case "$usevendorprefix" in
4775 define|true|[yY]*) dflt=y ;;
4781 rp='Installation prefix to use for vendor-supplied add-ons?'
4782 case "$vendorprefix" in
4784 *) dflt=$vendorprefix ;;
4788 case "$vendorprefix" in
4792 *) oldvendorprefix="$prefix";;
4796 usevendorprefix="$define"
4798 vendorprefixexp="$ansexp"
4800 *) usevendorprefix="$undef"
4806 case "$vendorprefix" in
4807 '') d_vendorlib="$undef"
4811 *) d_vendorlib="$define"
4812 : determine where vendor-supplied modules go.
4813 : Usual default is /usr/local/lib/perl5/vendor_perl
4814 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
4815 case "$installstyle" in
4816 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog ;;
4817 *) dflt=$vendorprefix/lib/vendor_$prog ;;
4820 rp='Pathname for the vendor-supplied library files?'
4823 vendorlibexp="$ansexp"
4824 : Change installation prefix, if necessary.
4825 if $test X"$prefix" != X"$installprefix"; then
4826 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
4828 installvendorlib="$vendorlibexp"
4833 : Cruising for prototypes
4835 echo "Checking out function prototypes..." >&4
4836 $cat >prototype.c <<'EOCP'
4837 int main(int argc, char *argv[]) {
4840 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4841 echo "Your C compiler appears to support function prototypes."
4844 echo "Your C compiler doesn't seem to understand function prototypes."
4851 case "$prototype" in
4853 *) ansi2knr='ansi2knr'
4858 This version of $package can only be compiled by a compiler that
4859 understands function prototypes. Unfortunately, your C compiler
4861 doesn't seem to understand them. Sorry about that.
4863 If GNU cc is available for your system, perhaps you could try that instead.
4865 Eventually, we hope to support building Perl with pre-ANSI compilers.
4866 If you would like to help in that effort, please contact <perlbug@perl.org>.
4868 Aborting Configure now.
4874 : determine where public executables go
4879 rp='Pathname where the public executables will reside?'
4881 if $test "X$ansexp" != "X$binexp"; then
4886 : Change installation prefix, if necessary.
4887 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
4888 if $test X"$prefix" != X"$installprefix"; then
4889 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
4891 installbin="$binexp"
4894 : determine whether to install perl also as /usr/bin/perl
4897 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4899 Many scripts expect to perl to be installed as /usr/bin/perl.
4900 I can install the perl you are about to compile also as /usr/bin/perl
4901 (in addition to $installbin/perl).
4903 case "$installusrbinperl" in
4904 "$undef"|[nN]*) dflt='n';;
4907 rp="Do you want to install perl as /usr/bin/perl?"
4910 [yY]*) val="$define";;
4916 set installusrbinperl
4919 : define a shorthand compile call
4923 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4924 : define a shorthand compile call for compilations that should be ok.
4928 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4931 echo "Checking for GNU C Library..." >&4
4932 cat >gnulibc.c <<EOM
4944 if eval $compile_ok && ./gnulibc; then
4946 echo "You are using the GNU C Library"
4949 echo "You are not using the GNU C Library"
4955 : see if nm is to be used to determine whether a symbol is defined or not
4959 case "$d_gnulibc" in
4962 echo "nm probably won't work on the GNU C Library." >&4
4968 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4970 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4971 echo "'nm' won't be sufficient on this sytem." >&4
4977 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4978 if $test $dflt -gt 20; then
4988 true|$define) dflt=y;;
4995 I can use $nm to extract the symbols from your C libraries. This
4996 is a time consuming task which may generate huge output on the disk (up
4997 to 3 megabytes) but that should make the symbols extraction faster. The
4998 alternative is to skip the 'nm' extraction part and to compile a small
4999 test program instead to determine whether each symbol is present. If
5000 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5001 this may be the best solution.
5003 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5006 rp="Shall I use $nm to extract C symbols from the libraries?"
5009 [Nn]*) usenm=false;;
5018 : nm options which may be necessary
5020 '') if $test -f /mach_boot; then
5022 elif $test -d /usr/ccs/lib; then
5023 nm_opt='-p' # Solaris (and SunOS?)
5024 elif $test -f /dgux; then
5026 elif $test -f /lib64/rld; then
5027 nm_opt='-p' # 64-bit Irix
5033 : nm options which may be necessary for shared libraries but illegal
5034 : for archive libraries. Thank you, Linux.
5035 case "$nm_so_opt" in
5036 '') case "$myuname" in
5038 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5039 nm_so_opt='--dynamic'
5048 : get list of predefined functions in a handy place
5053 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5060 *) for thislib in $libs; do
5063 : Handle C library specially below.
5066 thislib=`echo $thislib | $sed -e 's/^-l//'`
5067 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5069 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5071 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5073 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5075 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5077 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5079 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5084 libnames="$libnames $try"
5086 *) libnames="$libnames $thislib" ;;
5095 for xxx in $libpth; do
5096 $test -r $1 || set $xxx/libc.$so
5097 : The messy sed command sorts on library version numbers.
5099 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5100 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5102 s/[0-9][0-9]*/0000&/g
5103 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5106 sort | $sed -e 's/^.* //'`
5109 $test -r $1 || set /usr/ccs/lib/libc.$so
5110 $test -r $1 || set /lib/libsys_s$_a
5116 if $test -r "$1"; then
5117 echo "Your (shared) C library seems to be in $1."
5119 elif $test -r /lib/libc && $test -r /lib/clib; then
5120 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5122 libc='/lib/clib /lib/libc'
5123 if $test -r /lib/syslib; then
5124 echo "(Your math library is in /lib/syslib.)"
5125 libc="$libc /lib/syslib"
5127 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5128 echo "Your C library seems to be in $libc, as you said before."
5129 elif $test -r $incpath/usr/lib/libc$_a; then
5130 libc=$incpath/usr/lib/libc$_a;
5131 echo "Your C library seems to be in $libc. That's fine."
5132 elif $test -r /lib/libc$_a; then
5134 echo "Your C library seems to be in $libc. You're normal."
5136 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5138 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5139 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5140 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5142 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5144 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5147 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5149 if $test -r "$tans"; then
5150 echo "Your C library seems to be in $tans, of all places."
5156 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5160 If the guess above is wrong (which it might be if you're using a strange
5161 compiler, or your machine supports multiple models), you can override it here.
5166 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5168 I can't seem to find your C library. I've looked in the following places:
5171 $sed 's/^/ /' libpath
5174 None of these seems to contain your C library. I need to get its name...
5179 rp='Where is your C library?'
5184 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5185 set X `cat libnames`
5188 case $# in 1) xxx=file; esac
5189 echo "Extracting names from the following $xxx for later perusal:" >&4
5191 $sed 's/^/ /' libnames >&4
5193 $echo $n "This may take a while...$c" >&4
5197 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5198 *) $nm $nm_opt $file 2>/dev/null;;
5203 $grep fprintf libc.tmp > libc.ptf
5204 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5205 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5207 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5209 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5211 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5213 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5215 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5217 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5219 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5221 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5223 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5225 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5227 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5229 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5231 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5232 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5234 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5236 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5238 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5240 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5242 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5244 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5246 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5248 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5250 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5252 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5254 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5256 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5258 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5260 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5262 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5265 $nm -p $* 2>/dev/null >libc.tmp
5266 $grep fprintf libc.tmp > libc.ptf
5267 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5268 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5274 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5276 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5277 for thisname in $libnames $libc; do
5278 $ar t $thisname >>libc.tmp
5280 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5282 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5283 # Repeat libc to extract forwarders to DLL entries too
5284 for thisname in $libnames $libc; do
5285 $ar tv $thisname >>libc.tmp
5286 # Revision 50 of EMX has bug in $ar.
5287 # it will not extract forwarders to DLL entries
5288 # Use emximp which will extract exactly them.
5289 emximp -o tmp.imp $thisname \
5291 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5292 < tmp.imp >>libc.tmp
5295 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5298 echo "$ar didn't seem to work right." >&4
5299 echo "Maybe this is a Cray...trying bld instead..." >&4
5300 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5302 for thisname in $libnames; do
5304 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5305 $ar t $thisname >>libc.tmp
5309 echo "That didn't work either. Giving up." >&4
5316 if $test -f /lib/syscalls.exp; then
5318 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5319 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5323 $rm -f libnames libpath
5325 : see if dld is available
5329 : is a C symbol defined?
5332 -v) tf=libc.tmp; tc=""; tdc="";;
5333 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5334 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5337 case "$reuseval-$4" in
5339 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5345 if $contains $tlook $tf >/dev/null 2>&1;
5350 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5351 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5359 $define) tval=true;;
5365 : define an is-in-libc? function
5366 inlibc='echo " "; td=$define; tu=$undef;
5367 sym=$1; var=$2; eval "was=\$$2";
5369 case "$reuseval$was" in
5379 echo "$sym() found." >&4;
5380 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5382 echo "$sym() NOT found." >&4;
5383 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5387 $define) echo "$sym() found." >&4;;
5388 *) echo "$sym() NOT found." >&4;;
5392 : see if dlopen exists
5399 : determine which dynamic loading, if any, to compile in
5401 dldir="ext/DynaLoader"
5414 $define) dflt='y' ;;
5417 $define) dflt='y' ;;
5419 : Does a dl_xxx.xs file exist for this operating system
5420 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5423 rp="Do you wish to use dynamic loading?"
5430 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5431 dflt="$dldir/dl_${osname}.xs"
5432 elif $test "$d_dlopen" = "$define" ; then
5433 dflt="$dldir/dl_dlopen.xs"
5434 elif $test "$i_dld" = "$define" ; then
5435 dflt="$dldir/dl_dld.xs"
5440 *) dflt="$dldir/$dlsrc"
5443 echo "The following dynamic loading files are available:"
5444 : Can not go over to $dldir because getfile has path hard-coded in.
5445 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5446 rp="Source file to use for dynamic loading"
5452 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5456 Some systems may require passing special flags to $cc -c to
5457 compile modules that will be used to create a shared library.
5458 To use no flags, say "none".
5461 case "$cccdlflags" in
5462 '') case "$gccversion" in
5463 '') case "$osname" in
5465 next) dflt='none' ;;
5466 irix*) dflt='-KPIC' ;;
5467 svr4*|esix*|solaris) dflt='-KPIC' ;;
5468 sunos) dflt='-pic' ;;
5472 *) case "$osname" in
5473 svr4*|esix*|solaris) dflt='-fPIC' ;;
5478 *) dflt="$cccdlflags" ;;
5480 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5483 none) cccdlflags=' ' ;;
5484 *) cccdlflags="$ans" ;;
5489 Some systems use ld to create libraries that can be dynamically loaded,
5490 while other systems (such as those using ELF) use $cc.
5494 '') $cat >try.c <<'EOM'
5495 /* Test for whether ELF binaries are produced */
5500 int i = open("a.out",O_RDONLY);
5503 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5504 exit(0); /* succeed (yes, it's ELF) */
5509 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5511 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5515 echo "I'll use ld to build dynamic libraries."
5524 rp="What command should be used to create dynamic libraries?"
5530 Some systems may require passing special flags to $ld to create a
5531 library that can be dynamically loaded. If your ld flags include
5532 -L/other/path options to locate libraries outside your loader's normal
5533 search path, you may need to specify those -L options here as well. To
5534 use no flags, say "none".
5537 case "$lddlflags" in
5538 '') case "$osname" in
5539 beos) dflt='-nostart' ;;
5541 linux|irix*) dflt='-shared' ;;
5542 next) dflt='none' ;;
5543 solaris) dflt='-G' ;;
5544 sunos) dflt='-assert nodefinitions' ;;
5545 svr4*|esix*) dflt="-G $ldflags" ;;
5549 *) dflt="$lddlflags" ;;
5552 : Try to guess additional flags to pick up local libraries.
5553 : Be careful not to append to a plain 'none'
5557 for thisflag in $ldflags; do
5562 *) dflt="$dflt $thisflag" ;;
5569 ''|' ') dflt='none' ;;
5572 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5575 none) lddlflags=' ' ;;
5576 *) lddlflags="$ans" ;;
5581 Some systems may require passing special flags to $cc to indicate that
5582 the resulting executable will use dynamic linking. To use no flags,
5586 case "$ccdlflags" in
5587 '') case "$osname" in
5588 hpux) dflt='-Wl,-E' ;;
5589 linux) dflt='-rdynamic' ;;
5590 next) dflt='none' ;;
5591 sunos) dflt='none' ;;
5595 *) dflt="$ccdlflags" ;;
5597 rp="Any special flags to pass to $cc to use dynamic loading?"
5600 none) ccdlflags=' ' ;;
5601 *) ccdlflags="$ans" ;;
5615 # No dynamic loading being used, so don't bother even to prompt.
5618 *) case "$useshrplib" in
5619 '') case "$osname" in
5620 svr4*|dgux|dynixptx|esix|powerux|beos)
5622 also='Building a shared libperl is required for dynamic loading to work on your system.'
5627 also='Building a shared libperl is needed for MAB support.'
5645 The perl executable is normally obtained by linking perlmain.c with
5646 libperl${_a}, any static extensions (usually just DynaLoader), and
5647 any other libraries needed on this system (such as -lm, etc.). Since
5648 your system supports dynamic loading, it is probably possible to build
5649 a shared libperl.$so. If you will have more than one executable linked
5650 to libperl.$so, this will significantly reduce the size of each
5651 executable, but it may have a noticeable affect on performance. The
5652 default is probably sensible for your system.
5656 rp="Build a shared libperl.$so (y/n)"
5660 useshrplib='true' ;;
5661 *) useshrplib='false' ;;
5666 case "$useshrplib" in
5670 # Figure out a good name for libperl.so. Since it gets stored in
5671 # a version-specific architecture-dependent library, the version
5672 # number isn't really that important, except for making cc/ld happy.
5674 # A name such as libperl.so.3.1
5675 majmin="libperl.$so.$patchlevel.$subversion"
5676 # A name such as libperl.so.301
5677 majonly=`echo $patchlevel $subversion |
5678 $awk '{printf "%d%02d", $1, $2}'`
5679 majonly=libperl.$so.$majonly
5680 # I'd prefer to keep the os-specific stuff here to a minimum, and
5681 # rely on figuring it out from the naming of libc.
5682 case "${osname}${osvers}" in
5685 # XXX How handle the --version stuff for MAB?
5687 linux*) # ld won't link with a bare -lperl otherwise.
5690 *) # Try to guess based on whether libc has major.minor.
5692 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5693 *libc.$so.[0-9]*) dflt=$majonly ;;
5694 *) dflt=libperl.$so ;;
5704 I need to select a good name for the shared libperl. If your system uses
5705 library names with major and minor numbers, then you might want something
5706 like $majmin. Alternatively, if your system uses a single version
5707 number for shared libraries, then you might want to use $majonly.
5708 Or, your system might be quite happy with a simple libperl.$so.
5710 Since the shared libperl will get installed into a version-specific
5711 architecture-dependent directory, the version number of the shared perl
5712 library probably isn't important, so the default should be o.k.
5715 rp='What name do you want to give to the shared libperl?'
5718 echo "Ok, I'll use $libperl"
5721 libperl="libperl${_a}"
5725 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5729 WARNING: Use of the shrpdir variable for the installation location of
5730 the shared $libperl is not supported. It was never documented and
5731 will not work in this version. Let me (perlbug@perl.com)
5732 know of any problems this may cause.
5738 But your current setting of $shrpdir is
5739 the default anyway, so it's harmless.
5744 Further, your current attempted setting of $shrpdir
5745 conflicts with the value of $archlibexp/CORE
5746 that installperl will use.
5753 # How will the perl executable find the installed shared $libperl?
5754 # Add $xxx to ccdlflags.
5755 # If we can't figure out a command-line option, use $shrpenv to
5756 # set env LD_RUN_PATH. The main perl makefile uses this.
5757 shrpdir=$archlibexp/CORE
5760 if "$useshrplib"; then
5763 # We'll set it in Makefile.SH...
5769 xxx="-Wl,-R$shrpdir"
5771 linux|irix*|dec_osf)
5772 xxx="-Wl,-rpath,$shrpdir"
5775 # next doesn't like the default...
5778 # beos doesn't like the default, either.
5781 # hpux doesn't like the default, either.
5782 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5785 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5791 # Only add $xxx if it isn't already in ccdlflags.
5792 case " $ccdlflags " in
5794 *) ccdlflags="$ccdlflags $xxx"
5797 Adding $xxx to the flags
5798 passed to $ld so that the perl executable will find the
5799 installed shared $libperl.
5807 # Fix ccdlflags in AIX for building external extensions.
5808 # (For building Perl itself bare -bE:perl.exp is needed,
5809 # Makefile.SH takes care of this.)
5811 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5813 # Respect a hint or command-line value.
5815 '') shrpenv="$tmp_shrpenv" ;;
5817 case "$ldlibpthname" in
5818 '') ldlibpthname=LD_LIBRARY_PATH ;;
5819 none) ldlibpthname='' ;;
5822 : determine where manual pages go
5823 set man1dir man1dir none
5827 $spackage has manual pages available in source form.
5831 echo "However, you don't have nroff, so they're probably useless to you."
5833 '') man1dir="none";;
5836 echo "If you don't want the manual sources installed, answer 'none'."
5841 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5842 lookpath="$lookpath $prefixexp/man/p_man/man1"
5843 lookpath="$lookpath $prefixexp/man/u_man/man1"
5844 lookpath="$lookpath $prefixexp/man/man.1"
5846 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5847 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5857 rp="Where do the main $spackage manual pages (source) go?"
5859 if $test "X$man1direxp" != "X$ansexp"; then
5863 man1direxp="$ansexp"
5869 : Change installation prefix, if necessary.
5870 if $test X"$prefix" != X"$installprefix"; then
5871 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
5873 installman1dir="$man1direxp"
5876 : What suffix to use on installed man pages
5883 rp="What suffix should be used for the main $spackage man pages?"
5885 '') case "$man1dir" in
5899 *) dflt="$man1ext";;
5906 : see if we can have long filenames
5908 rmlist="$rmlist /tmp/cf$$"
5909 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5910 first=123456789abcdef
5911 second=/tmp/cf$$/$first
5912 $rm -f $first $second
5913 if (echo hi >$first) 2>/dev/null; then
5914 if $test -f 123456789abcde; then
5915 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5918 if (echo hi >$second) 2>/dev/null; then
5919 if $test -f /tmp/cf$$/123456789abcde; then
5921 That's peculiar... You can have filenames longer than 14 characters, but only
5922 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5923 I shall consider your system cannot support long filenames at all.
5927 echo 'You can have filenames longer than 14 characters.' >&4
5932 How confusing! Some of your filesystems are sane enough to allow filenames
5933 longer than 14 characters but some others like /tmp can't even think about them.
5934 So, for now on, I shall assume your kernel does not allow them at all.
5941 You can't have filenames longer than 14 chars. You can't even think about them!
5947 $rm -rf /tmp/cf$$ 123456789abcde*
5949 : determine where library module manual pages go
5950 set man3dir man3dir none
5954 $spackage has manual pages for many of the library modules.
5960 However, you don't have nroff, so they're probably useless to you.
5963 '') man3dir="none";;
5967 case "$d_flexfnam" in
5970 However, your system can't handle the long file names like File::Basename.3.
5973 '') man3dir="none";;
5977 echo "If you don't want the manual sources installed, answer 'none'."
5978 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5980 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
5981 if $test -d "$privlib/man/man3"; then
5984 WARNING: Previous versions of perl installed man3 pages into
5985 $privlib/man/man3. This version will suggest a
5986 new default of $dflt.
5990 rp='Do you wish to preserve the old behavior?(y/n)'
5993 y*) dflt="$privlib/man/man3" ;;
5999 *) dflt="$man3dir" ;;
6003 rp="Where do the $package library man pages (source) go?"
6006 man3direxp="$ansexp"
6012 : Change installation prefix, if necessary.
6013 if $test X"$prefix" != X"$installprefix"; then
6014 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6016 installman3dir="$man3direxp"
6019 : What suffix to use on installed man pages
6025 rp="What suffix should be used for the $package library man pages?"
6027 '') case "$man3dir" in
6041 *) dflt="$man3ext";;
6048 : see if we have to deal with yellow pages, now NIS.
6049 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6050 if $test -f /usr/etc/nibindd; then
6052 echo "I'm fairly confident you're on a NeXT."
6054 rp='Do you get the hosts file via NetInfo?'
6063 y*) hostcat='nidump hosts .';;
6064 *) case "$hostcat" in
6065 nidump*) hostcat='';;
6075 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6083 rp='Are you getting the hosts file via yellow pages?'
6086 y*) hostcat='ypcat hosts';;
6087 *) hostcat='cat /etc/hosts';;
6093 '') hostcat='cat /etc/hosts';;
6096 '') groupcat='cat /etc/group';;
6099 '') passcat='cat /etc/passwd';;
6102 : now get the host name
6104 echo "Figuring out host name..." >&4
6105 case "$myhostname" in
6107 echo 'Maybe "hostname" will work...'
6108 if tans=`sh -c hostname 2>&1` ; then
6116 if $test "$cont"; then
6118 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6119 if tans=`cat /etc/systemid 2>&1` ; then
6121 phostname='cat /etc/systemid'
6122 echo "Whadyaknow. Xenix always was a bit strange..."
6125 elif $test -r /etc/systemid; then
6126 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6129 if $test "$cont"; then
6130 echo 'No, maybe "uuname -l" will work...'
6131 if tans=`sh -c 'uuname -l' 2>&1` ; then
6133 phostname='uuname -l'
6135 echo 'Strange. Maybe "uname -n" will work...'
6136 if tans=`sh -c 'uname -n' 2>&1` ; then
6138 phostname='uname -n'
6140 echo 'Oh well, maybe I can mine it out of whoami.h...'
6141 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6142 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6143 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6145 case "$myhostname" in
6146 '') echo "Does this machine have an identity crisis or something?"
6149 echo "Well, you said $myhostname before..."
6150 phostname='echo $myhostname';;
6156 : you do not want to know about this
6161 if $test "$myhostname" ; then
6163 rp='Your host name appears to be "'$myhostname'".'" Right?"
6171 : bad guess or no guess
6172 while $test "X$myhostname" = X ; do
6174 rp="Please type the (one word) name of your host:"
6179 : translate upper to lower if necessary
6180 case "$myhostname" in
6182 echo "(Normalizing case in your host name)"
6183 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6187 case "$myhostname" in
6189 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6190 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6191 echo "(Trimming domain name from host name--host name is now $myhostname)"
6193 *) case "$mydomain" in
6196 test "X$hostcat" = "Xypcat hosts" &&
6197 ypmatch "$myhostname" hosts 2>/dev/null |\
6198 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6201 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6202 /[ ]$myhostname[ . ]/p" > hosts
6205 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6206 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6207 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6208 hosts | $sort | $uniq | \
6209 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6210 case `$echo X$dflt` in
6211 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6214 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6219 tans=`./loc resolv.conf X /etc /usr/etc`
6220 if $test -f "$tans"; then
6221 echo "(Attempting domain name extraction from $tans)"
6222 dflt=.`$sed -n -e 's/ / /g' \
6223 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6224 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6226 .) dflt=.`$sed -n -e 's/ / /g' \
6227 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6228 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6235 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6236 dflt=.`sh -c domainname 2>/dev/null`
6239 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6244 .) echo "(Lost all hope -- silly guess then)"
6250 *) dflt="$mydomain";;
6254 rp="What is your domain name?"
6264 : translate upper to lower if necessary
6267 echo "(Normalizing case in your domain name)"
6268 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6272 : a little sanity check here
6273 case "$phostname" in
6276 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6277 $myhostname$mydomain|$myhostname) ;;
6279 case "$phostname" in
6281 echo "(That doesn't agree with your whoami.h file, by the way.)"
6284 echo "(That doesn't agree with your $phostname command, by the way.)"
6294 I need to get your e-mail address in Internet format if possible, i.e.
6295 something like user@host.domain. Please answer accurately since I have
6296 no easy means to double check it. The default value provided below
6297 is most probably close to the reality but may not be valid from outside
6298 your organization...
6302 while test "$cont"; do
6304 '') dflt="$cf_by@$myhostname$mydomain";;
6305 *) dflt="$cf_email";;
6307 rp='What is your e-mail address?'
6313 rp='Address does not look like an Internet one. Use it anyway?'
6329 If you or somebody else will be maintaining perl at your site, please
6330 fill in the correct e-mail address here so that they may be contacted
6331 if necessary. Currently, the "perlbug" program included with perl
6332 will send mail to this address in addition to perlbug@perl.com. You may
6333 enter "none" for no administrator.
6336 case "$perladmin" in
6337 '') dflt="$cf_email";;
6338 *) dflt="$perladmin";;
6340 rp='Perl administrator e-mail address'
6344 : figure out how to guarantee perl startup
6345 case "$startperl" in
6347 case "$sharpbang" in
6351 I can use the #! construct to start perl on your system. This will
6352 make startup of perl scripts faster, but may cause problems if you
6353 want to share those scripts and perl is not in a standard place
6354 ($binexp/perl) on all your platforms. The alternative is to force
6355 a shell by starting the script with a single ':' character.
6359 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6362 none) startperl=": # use perl";;
6363 *) startperl="#!$ans"
6364 if $test 30 -lt `echo "$ans" | wc -c`; then
6367 WARNING: Some systems limit the #! command to 32 characters.
6368 If you experience difficulty running Perl scripts with #!, try
6369 installing Perl in a directory with a shorter pathname.
6375 *) startperl=": # use perl"
6380 echo "I'll use $startperl to start perl scripts."
6382 : figure best path for perl in scripts
6385 perlpath="$binexp/perl"
6386 case "$startperl" in
6391 I will use the "eval 'exec'" idiom to start Perl on your system.
6392 I can use the full path of your Perl binary for this purpose, but
6393 doing so may cause problems if you want to share those scripts and
6394 Perl is not always in a standard place ($binexp/perl).
6398 rp="What path shall I use in \"eval 'exec'\"?"
6405 case "$startperl" in
6407 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6410 : determine where public executable scripts go
6411 set scriptdir scriptdir
6413 case "$scriptdir" in
6416 : guess some guesses
6417 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6418 $test -d /usr/share/bin && dflt=/usr/share/bin
6419 $test -d /usr/local/script && dflt=/usr/local/script
6420 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6421 $test -d $prefixexp/script && dflt=$prefixexp/script
6425 *) dflt="$scriptdir"
6430 Some installations have a separate directory just for executable scripts so
6431 that they can mount it across multiple architectures but keep the scripts in
6432 one spot. You might, for example, have a subdirectory of /usr/share for this.
6433 Or you might just lump your scripts in with all your other executables.
6437 rp='Where do you keep publicly executable scripts?'
6439 if $test "X$ansexp" != "X$scriptdirexp"; then
6443 scriptdirexp="$ansexp"
6444 : Change installation prefix, if necessary.
6445 if $test X"$prefix" != X"$installprefix"; then
6446 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6448 installscript="$scriptdirexp"
6453 After $package is installed, you may wish to install various
6454 add-on modules and utilities. Typically, these add-ons will
6455 be installed under $prefix with the rest
6456 of this package. However, you may wish to install such add-ons
6457 elsewhere under a different prefix.
6459 If you do not wish to put everything under a single prefix, that's
6460 ok. You will be prompted for the individual locations; this siteprefix
6461 is only used to suggest the defaults.
6463 The default should be fine for most people.
6467 rp='Installation prefix to use for add-on modules and utilities?'
6468 : XXX Here might be another good place for an installstyle setting.
6469 case "$siteprefix" in
6471 *) dflt=$siteprefix ;;
6475 case "$siteprefix" in
6480 *) oldsiteprefix="$prefix";;
6485 siteprefixexp="$ansexp"
6487 : determine where site specific libraries go.
6488 : Usual default is /usr/local/lib/perl5/site_perl
6489 : The default "style" setting is made in installstyle.U
6490 : XXX No longer works with Prefixit stuff.
6491 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6492 case "$installstyle" in
6493 *lib/perl5*) dflt=$siteprefix/lib/site_$prog ;;
6494 *) dflt=$siteprefix/lib/site_$prog ;;
6498 The installation process will create a directory for
6499 site-specific extensions and modules. Most users find it convenient
6500 to place all site-specific files in this directory rather than in the
6501 main distribution directory.
6505 rp='Pathname for the site-specific library files?'
6508 sitelibexp="$ansexp"
6509 : Change installation prefix, if necessary.
6510 if $test X"$prefix" != X"$installprefix"; then
6511 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
6513 installsitelib="$sitelibexp"
6516 : determine where site specific architecture-dependent libraries go.
6517 : sitelib default is /usr/local/lib/perl5/site_perl/
6518 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6519 : sitelib may have an optional trailing /share.
6520 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6521 tdflt="$tdflt/$apiversion/$archname"
6522 set sitearch sitearch none
6525 '') dflt="$tdflt" ;;
6526 *) dflt="$sitearch" ;;
6530 The installation process will also create a directory for
6531 architecture-dependent site-specific extensions and modules.
6535 rp='Pathname for the site-specific architecture-dependent library files?'
6538 sitearchexp="$ansexp"
6539 : Change installation prefix, if necessary.
6540 if $test X"$prefix" != X"$installprefix"; then
6541 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6543 installsitearch="$sitearchexp"
6546 : determine where add-on public executables go
6548 '') dflt=$siteprefix/bin ;;
6552 rp='Pathname where the add-on public executables should be installed?'
6555 sitebinexp="$ansexp"
6556 : Change installation prefix, if necessary.
6557 if $test X"$prefix" != X"$installprefix"; then
6558 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6560 installsitebin="$sitebinexp"
6565 Perl can be built to take advantage of long doubles which
6566 (if available) may give more accuracy and range for floating point numbers.
6568 If this doesn't make any sense to you, just accept the default 'n'.
6572 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6575 case "$uselongdouble" in
6576 $define|true|[yY]*) dflt='y';;
6579 rp='Try to use long doubles if available?'
6582 y|Y) val="$define" ;;
6588 case "$uselongdouble" in
6589 true|[yY]*) uselongdouble="$define" ;;
6592 case "$uselongdouble" in
6594 : Look for a hint-file generated 'call-back-unit'. If the
6595 : user has specified that long doubles should be used,
6596 : we may need to set or change some other defaults.
6597 if $test -f uselongdouble.cbu; then
6598 echo "Your platform has some specific hints for long doubles, using them..."
6599 . ./uselongdouble.cbu
6602 (Your platform doesn't have any specific hints for long doubles.)
6610 Perl can be built to take advantage of long longs which
6611 (if available) may give more range for integer numbers.
6613 If this doesn't make any sense to you, just accept the default 'n'.
6617 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
6620 case "$uselonglong" in
6621 $define|true|[yY]*) dflt='y';;
6624 rp='Try to use long longs if available?'
6627 y|Y) val="$define" ;;
6633 case "$uselonglong" in
6634 true|[yY]*) uselonglong="$define" ;;
6637 case "$uselonglong" in
6639 : Look for a hint-file generated 'call-back-unit'. If the
6640 : user has specified that long longs should be used,
6641 : we may need to set or change some other defaults.
6642 if $test -f uselonglong.cbu; then
6643 echo "Your platform has some specific hints for long longs, using them..."
6647 (Your platform doesn't have any specific hints for long longs.)
6655 Previous version of $package used the standard IO mechanisms as defined
6656 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6657 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6658 the default. This abstraction layer can use AT&T's sfio (if you already
6659 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6660 problems with some extension modules. Using PerlIO with stdio is safe,
6661 but it is slower than plain stdio and therefore is not the default.
6663 If this doesn't make any sense to you, just accept the default 'n'.
6665 case "$useperlio" in
6666 $define|true|[yY]*) dflt='y';;
6669 rp='Use the experimental PerlIO abstraction layer?'
6676 echo "Ok, doing things the stdio way"
6683 case "$vendorprefix" in
6684 '') d_vendorbin="$undef"
6688 *) d_vendorbin="$define"
6689 : determine where vendor-supplied executables go.
6690 dflt=$vendorprefix/bin
6692 rp='Pathname for the vendor-supplied executables directory?'
6695 vendorbinexp="$ansexp"
6696 : Change installation prefix, if necessary.
6697 if $test X"$prefix" != X"$installprefix"; then
6698 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
6700 installvendorbin="$vendorbinexp"
6705 : Check how to convert floats to strings.
6706 if test "X$d_Gconvert" = X; then
6708 echo "Checking for an efficient way to convert floats to strings."
6711 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6712 char *myname = "gconvert";
6715 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6716 char *myname = "gcvt";
6719 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6720 char *myname = "sprintf";
6726 checkit(expect, got)
6730 if (strcmp(expect, got)) {
6731 printf("%s oddity: Expected %s, got %s\n",
6732 myname, expect, got);
6742 /* This must be 1st test on (which?) platform */
6743 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6744 Gconvert(0.1, 8, 0, buf);
6745 checkit("0.1", buf);
6747 Gconvert(1.0, 8, 0, buf);
6750 Gconvert(0.0, 8, 0, buf);
6753 Gconvert(-1.0, 8, 0, buf);
6756 /* Some Linux gcvt's give 1.e+5 here. */
6757 Gconvert(100000.0, 8, 0, buf);
6758 checkit("100000", buf);
6760 /* Some Linux gcvt's give -1.e+5 here. */
6761 Gconvert(-100000.0, 8, 0, buf);
6762 checkit("-100000", buf);
6767 case "$d_Gconvert" in
6768 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6769 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6770 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6771 *) xxx_list='gconvert gcvt sprintf' ;;
6774 for xxx_convert in $xxx_list; do
6775 echo "Trying $xxx_convert"
6777 set try -DTRY_$xxx_convert
6778 if eval $compile; then
6779 echo "$xxx_convert" found. >&4
6781 echo "I'll use $xxx_convert to convert floats into a string." >&4
6784 echo "...But $xxx_convert didn't work as I expected."
6787 echo "$xxx_convert NOT found." >&4
6791 case "$xxx_convert" in
6792 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6793 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6794 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6798 : check for lengths of integral types
6802 echo "Checking to see how big your integers are..." >&4
6803 $cat >intsize.c <<'EOCP'
6807 printf("intsize=%d;\n", sizeof(int));
6808 printf("longsize=%d;\n", sizeof(long));
6809 printf("shortsize=%d;\n", sizeof(short));
6814 if eval $compile_ok && ./intsize > /dev/null; then
6816 echo "Your integers are $intsize bytes long."
6817 echo "Your long integers are $longsize bytes long."
6818 echo "Your short integers are $shortsize bytes long."
6822 Help! I can't compile and run the intsize test program: please enlighten me!
6823 (This is probably a misconfiguration in your system or libraries, and
6824 you really ought to fix it. Still, I'll try anyway.)
6828 rp="What is the size of an integer (in bytes)?"
6832 rp="What is the size of a long integer (in bytes)?"
6836 rp="What is the size of a short integer (in bytes)?"
6842 $rm -f intsize intsize.*
6844 : check for long long
6846 $echo $n "Checking to see if your system supports long long..." $c >&4
6847 echo 'int main() { long long x = 7; }' > try.c
6849 if eval $compile; then
6851 echo " Yes, it does." >&4
6854 echo " No, it doesn't." >&4
6860 : check for length of long long
6861 case "${d_longlong}${longlongsize}" in
6864 $echo $n "Checking to see how big your long longs are..." $c >&4
6865 $cat >try.c <<'EOCP'
6869 printf("%d\n", sizeof(long long));
6873 if eval $compile_ok; then
6874 longlongsize=`./try$exe_ext`
6875 $echo " $longlongsize bytes." >&4
6879 echo "(I can't seem to compile the test program. Guessing...)"
6880 rp="What is the size of a long long (in bytes)?"
6884 if $test "X$longsize" = "X$longlongsize"; then
6885 echo "(That isn't any different from an ordinary long.)"
6891 : see if inttypes.h is available
6892 : we want a real compile instead of Inhdr because some systems
6893 : have an inttypes.h which includes non-existent headers
6896 #include <inttypes.h>
6898 static int32_t foo32 = 0x12345678;
6902 if eval $compile; then
6903 echo "<inttypes.h> found." >&4
6906 echo "<inttypes.h> NOT found." >&4
6914 case "$use64bits" in
6917 $echo $n "Checking to see if your system supports int64_t...$c" >&4
6919 #include <sys/types.h>
6920 #$i_inttypes I_INTTYPES
6922 #include <inttypes.h>
6924 int main() { int64_t x = 7; }
6927 if eval $compile; then
6929 echo " Yes, it does." >&4
6932 echo " No, it doesn't." >&4
6945 echo "Checking which 64-bit integer type to use..." >&4
6951 val='"unsigned int"'
6956 *) case "$longsize" in
6960 val='"unsigned long"'
6965 *) case "$uselonglong:$d_longlong:$longlongsize" in
6970 val='"unsigned long long"'
6975 *) case "$d_int64t" in
6994 '') echo "Alas, no 64-bit integer types in sight." >&4 ;;
6995 *) echo "Using '$quadtype' for 64-bit integers." >&4 ;;
7000 if $test X"$quadtype" != X; then
7002 echo "Checking how to print 64-bit integers..." >&4
7004 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
7005 $cat >try.c <<'EOCP'
7006 #include <sys/types.h>
7009 int q = 12345678901;
7014 if eval $compile; then
7018 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
7019 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
7020 echo "We will use %d."
7026 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
7027 $cat >try.c <<'EOCP'
7028 #include <sys/types.h>
7031 long q = 12345678901;
7036 if eval $compile; then
7040 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
7041 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
7042 echo "We will use %ld."
7048 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$quadtype" = Xint64_t; then
7049 $cat >try.c <<'EOCP'
7050 #include <sys/types.h>
7051 #include <inttypes.h>
7054 int64_t q = 12345678901;
7055 printf("%" PRId64 "\n", q);
7059 if eval $compile; then
7063 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
7064 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
7065 echo "We will use the C9X style."
7071 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
7072 $cat >try.c <<'EOCP'
7073 #include <sys/types.h>
7076 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
7077 printf("%lld\n", q);
7081 if eval $compile; then
7085 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
7086 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
7087 echo "We will use the %lld style."
7093 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
7095 #include <sys/types.h>
7098 $quadtype q = 12345678901;
7103 if eval $compile; then
7107 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
7108 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
7109 echo "We will use %Ld."
7115 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
7117 #include <sys/types.h>
7120 $quadtype q = 12345678901;
7125 if eval $compile; then
7129 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
7130 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
7131 echo "We will use %qd."
7137 if $test X"$sPRId64" = X; then
7138 echo "Cannot figure out how to print 64-bit integers." >&4
7146 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
7147 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
7149 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
7150 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
7154 : check for length of double
7156 case "$doublesize" in
7158 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7159 $cat >try.c <<'EOCP'
7163 printf("%d\n", sizeof(double));
7167 if eval $compile_ok; then
7169 $echo " $doublesize bytes." >&4
7172 echo "(I can't seem to compile the test program. Guessing...)"
7173 rp="What is the size of a double precision number (in bytes)?"
7181 : check for long doubles
7183 $echo $n "Checking to see if your system supports long double..." $c >&4
7184 echo 'int main() { long double x = 7.0; }' > try.c
7186 if eval $compile; then
7188 echo " Yes, it does." >&4
7191 echo " No, it doesn't." >&4
7197 : check for length of long double
7198 case "${d_longdbl}${longdblsize}" in
7201 $echo $n "Checking to see how big your long doubles are..." $c >&4
7202 $cat >try.c <<'EOCP'
7206 printf("%d\n", sizeof(long double));
7211 if eval $compile; then
7212 longdblsize=`./try$exe_ext`
7213 $echo " $longdblsize bytes." >&4
7217 echo "(I can't seem to compile the test program. Guessing...)" >&4
7218 rp="What is the size of a long double (in bytes)?"
7222 if $test "X$doublesize" = "X$longdblsize"; then
7223 echo "(That isn't any different from an ordinary double.)"
7231 if $test X"$d_longdbl" = X"$define"; then
7233 echo "Checking how to print long doubles..." >&4
7235 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7236 $cat >try.c <<'EOCP'
7237 #include <sys/types.h>
7241 printf("%.3f\n", d);
7245 if eval $compile; then
7249 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7250 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7251 echo "We will use %f."
7257 if $test X"$sPRIfldbl" = X; then
7258 $cat >try.c <<'EOCP'
7259 #include <sys/types.h>
7262 long double d = 123.456;
7263 printf("%.3llf\n", d);
7267 if eval $compile; then
7271 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7272 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7273 echo "We will use %llf."
7279 if $test X"$sPRIfldbl" = X; then
7280 $cat >try.c <<'EOCP'
7281 #include <sys/types.h>
7284 long double d = 123.456;
7285 printf("%.3Lf\n", d);
7289 if eval $compile; then
7293 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7294 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7295 echo "We will use %Lf."
7301 if $test X"$sPRIfldbl" = X; then
7302 $cat >try.c <<'EOCP'
7303 #include <sys/types.h>
7306 long double d = 123.456;
7307 printf("%.3lf\n", d);
7311 if eval $compile; then
7315 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7316 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7317 echo "We will use %lf."
7323 if $test X"$sPRIfldbl" = X; then
7324 echo "Cannot figure out how to print long doubles." >&4
7331 case "$sPRIfldbl" in
7332 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7333 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7335 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7336 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7340 : Initialize h_fcntl
7343 : Initialize h_sysfile
7346 : access call always available on UNIX
7350 : locate the flags for 'access()'
7354 $cat >access.c <<'EOCP'
7355 #include <sys/types.h>
7360 #include <sys/file.h>
7369 : check sys/file.h first, no particular reason here
7370 if $test `./findhdr sys/file.h` && \
7371 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7373 echo "<sys/file.h> defines the *_OK access constants." >&4
7374 elif $test `./findhdr fcntl.h` && \
7375 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7377 echo "<fcntl.h> defines the *_OK access constants." >&4
7378 elif $test `./findhdr unistd.h` && \
7379 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7380 echo "<unistd.h> defines the *_OK access constants." >&4
7382 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7388 : see if accessx exists
7389 set accessx d_accessx
7392 : see if alarm exists
7396 : see if atolf exists
7400 : see if atoll exists
7404 : Look for GNU-cc style attribute checking
7406 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7407 $cat >attrib.c <<'EOCP'
7409 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7411 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7412 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7413 echo "Your C compiler doesn't fully support __attribute__."
7416 echo "Your C compiler supports __attribute__."
7420 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7427 : see if bcmp exists
7431 : see if bcopy exists
7435 : see if this is a unistd.h system
7436 set unistd.h i_unistd
7439 : see if getpgrp exists
7440 set getpgrp d_getpgrp
7443 case "$d_getpgrp" in
7446 echo "Checking to see which flavor of getpgrp is in use..."
7449 #include <sys/types.h>
7451 # include <unistd.h>
7455 if (getuid() == 0) {
7456 printf("(I see you are running Configure as super-user...)\n");
7460 if (getpgrp(1) == 0)
7469 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7470 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7472 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7473 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7476 echo "I can't seem to compile and run the test program."
7478 xxx="a USG one, i.e. you use getpgrp()."
7480 # SVR4 systems can appear rather BSD-ish.
7483 xxx="a BSD one, i.e. you use getpgrp(pid)."
7487 xxx="probably a USG one, i.e. you use getpgrp()."
7492 echo "Assuming your getpgrp is $xxx" >&4
7501 : see if setpgrp exists
7502 set setpgrp d_setpgrp
7505 case "$d_setpgrp" in
7508 echo "Checking to see which flavor of setpgrp is in use..."
7511 #include <sys/types.h>
7513 # include <unistd.h>
7517 if (getuid() == 0) {
7518 printf("(I see you are running Configure as super-user...)\n");
7522 if (-1 == setpgrp(1, 1))
7525 if (setpgrp() != -1)
7531 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7532 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7534 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7535 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7538 echo "(I can't seem to compile and run the test program.)"
7540 xxx="a USG one, i.e. you use setpgrp()."
7542 # SVR4 systems can appear rather BSD-ish.
7545 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7549 xxx="probably a USG one, i.e. you use setpgrp()."
7554 echo "Assuming your setpgrp is $xxx" >&4
7562 : see if bzero exists
7566 : see if signal is declared as pointer to function returning int or void
7568 xxx=`./findhdr signal.h`
7569 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7570 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7571 echo "You have int (*signal())() instead of void." >&4
7573 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7574 echo "You have void (*signal())()." >&4
7576 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7577 echo "You have int (*signal())() instead of void." >&4
7579 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7580 echo "You have void (*signal())()." >&4
7583 case "$d_voidsig" in
7585 echo "I can't determine whether signal handler returns void or int..." >&4
7587 rp="What type does your signal handler return?"
7594 echo "As you already told me, signal handler returns void." >&4
7597 *) echo "As you already told me, signal handler returns int." >&4
7604 case "$d_voidsig" in
7605 "$define") signal_t="void";;
7610 : check for ability to cast large floats to 32-bit ints.
7612 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7613 if $test "$intsize" -ge 4; then
7620 #include <sys/types.h>
7622 $signal_t blech(s) int s; { exit(3); }
7629 signal(SIGFPE, blech);
7631 /* Don't let compiler optimize the test away. Store the number
7632 in a writable string for gcc to pass to sscanf under HP/UX.
7634 sprintf(str, "2147483647");
7635 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7639 /* x86 processors will probably give 0x8000 0000, which is a
7640 sign change. We don't want that. We want to mimic SPARC
7641 behavior here, which is to preserve the sign and give
7644 if (i32 != ($xxx) f)
7650 if eval $compile_ok; then
7654 echo "(I can't seem to compile the test program--assuming it can't)"
7662 echo "Nope, it can't."
7669 : check for ability to cast negative floats to unsigned
7671 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7674 #include <sys/types.h>
7676 $signal_t blech(s) int s; { exit(7); }
7677 $signal_t blech_in_list(s) int s; { exit(4); }
7678 unsigned long dummy_long(p) unsigned long p; { return p; }
7679 unsigned int dummy_int(p) unsigned int p; { return p; }
7680 unsigned short dummy_short(p) unsigned short p; { return p; }
7684 unsigned long along;
7686 unsigned short ashort;
7690 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7691 a direct f = -123. assignment. gcc-2.8.0 reportedly
7692 optimized the whole file away
7694 /* Store the number in a writable string for gcc to pass to
7697 sprintf(str, "-123");
7698 sscanf(str, "%lf", &f); /* f = -123.; */
7700 signal(SIGFPE, blech);
7701 along = (unsigned long)f;
7702 aint = (unsigned int)f;
7703 ashort = (unsigned short)f;
7704 if (along != (unsigned long)-123)
7706 if (aint != (unsigned int)-123)
7708 if (ashort != (unsigned short)-123)
7710 sprintf(str, "1073741824.");
7711 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7714 along = (unsigned long)f;
7715 if (along != 0x80000000)
7719 along = (unsigned long)f;
7720 if (along != 0x7fffffff)
7724 along = (unsigned long)f;
7725 if (along != 0x80000001)
7729 signal(SIGFPE, blech_in_list);
7730 sprintf(str, "123.");
7731 sscanf(str, "%lf", &f); /* f = 123.; */
7732 along = dummy_long((unsigned long)f);
7733 aint = dummy_int((unsigned int)f);
7734 ashort = dummy_short((unsigned short)f);
7735 if (along != (unsigned long)123)
7737 if (aint != (unsigned int)123)
7739 if (ashort != (unsigned short)123)
7746 if eval $compile_ok; then
7750 echo "(I can't seem to compile the test program--assuming it can't)"
7753 case "$castflags" in
7758 echo "Nope, it can't."
7765 : see if vprintf exists
7767 if set vprintf val -f d_vprintf; eval $csym; $val; then
7768 echo 'vprintf() found.' >&4
7770 $cat >vprintf.c <<'EOF'
7771 #include <varargs.h>
7773 int main() { xxx("foo"); }
7782 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7786 if eval $compile && ./vprintf; then
7787 echo "Your vsprintf() returns (int)." >&4
7790 echo "Your vsprintf() returns (char*)." >&4
7794 echo 'vprintf() NOT found.' >&4
7804 : see if chown exists
7808 : see if chroot exists
7812 : see if chsize exists
7816 : check for const keyword
7818 echo 'Checking to see if your C compiler knows about "const"...' >&4
7819 $cat >const.c <<'EOCP'
7820 typedef struct spug { int drokk; } spug;
7827 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7829 echo "Yup, it does."
7832 echo "Nope, it doesn't."
7837 : see if crypt exists
7839 if set crypt val -f d_crypt; eval $csym; $val; then
7840 echo 'crypt() found.' >&4
7844 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7845 if $test -z "$cryptlib"; then
7846 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7850 if $test -z "$cryptlib"; then
7851 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7855 if $test -z "$cryptlib"; then
7856 cryptlib=`./loc libcrypt$_a "" $libpth`
7860 if $test -z "$cryptlib"; then
7861 echo 'crypt() NOT found.' >&4
7870 : get csh whereabouts
7872 'csh') val="$undef" ;;
7877 : Respect a hint or command line value for full_csh.
7879 '') full_csh=$csh ;;
7882 : see if cuserid exists
7883 set cuserid d_cuserid
7886 : see if this is a limits.h system
7887 set limits.h i_limits
7890 : see if this is a float.h system
7894 : See if number of significant digits in a double precision number is known
7896 $cat >dbl_dig.c <<EOM
7906 printf("Contains DBL_DIG");
7909 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7910 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7911 echo "DBL_DIG found." >&4
7914 echo "DBL_DIG NOT found." >&4
7921 : see if difftime exists
7922 set difftime d_difftime
7925 : see if this is a dirent system
7927 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7929 echo "<dirent.h> found." >&4
7932 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7933 echo "<sys/dir.h> found." >&4
7936 xinc=`./findhdr sys/ndir.h`
7938 echo "<dirent.h> NOT found." >&4
7943 : Look for type of directory structure.
7945 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7947 case "$direntrytype" in
7950 $define) guess1='struct dirent' ;;
7951 *) guess1='struct direct' ;;
7954 *) guess1="$direntrytype"
7959 'struct dirent') guess2='struct direct' ;;
7960 *) guess2='struct dirent' ;;
7963 if $contains "$guess1" try.c >/dev/null 2>&1; then
7964 direntrytype="$guess1"
7965 echo "Your directory entries are $direntrytype." >&4
7966 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7967 direntrytype="$guess2"
7968 echo "Your directory entries seem to be $direntrytype." >&4
7970 echo "I don't recognize your system's directory entries." >&4
7971 rp="What type is used for directory entries on this system?"
7979 : see if the directory entry stores field length
7981 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7982 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7983 echo "Good, your directory entry keeps length information in d_namlen." >&4
7986 echo "Your directory entry does not know about the d_namlen field." >&4
7993 : see if dlerror exists
7996 set dlerror d_dlerror
8000 : see if dlfcn is available
8008 On a few systems, the dynamically loaded modules that perl generates and uses
8009 will need a different extension than shared libs. The default will probably
8017 rp='What is the extension of dynamically loaded modules'
8026 : Check if dlsym need a leading underscore
8032 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8033 $cat >dyna.c <<'EOM'
8042 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8044 #include <sys/types.h>
8058 int mode = RTLD_LAZY ;
8060 handle = dlopen("./dyna.$dlext", mode) ;
8061 if (handle == NULL) {
8066 symbol = dlsym(handle, "fred") ;
8067 if (symbol == NULL) {
8068 /* try putting a leading underscore */
8069 symbol = dlsym(handle, "_fred") ;
8070 if (symbol == NULL) {
8083 : Call the object file tmp-dyna.o in case dlext=o.
8084 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8085 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8086 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8087 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8090 1) echo "Test program failed using dlopen." >&4
8091 echo "Perhaps you should not use dynamic loading." >&4;;
8092 2) echo "Test program failed using dlsym." >&4
8093 echo "Perhaps you should not use dynamic loading." >&4;;
8094 3) echo "dlsym needs a leading underscore" >&4
8096 4) echo "dlsym doesn't need a leading underscore." >&4;;
8099 echo "I can't compile and run the test program." >&4
8100 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8105 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8110 hasproto='varname=$1; func=$2; shift; shift;
8111 while $test $# -ge 2; do
8113 $define) echo "#include <$2>";;
8117 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8118 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8119 echo "$func() prototype found.";
8122 echo "$func() prototype NOT found.";
8127 $rm -f try.c tryout.c'
8129 : see if prototype for drand48 is available
8131 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8134 : see if dup2 exists
8138 : see if eaccess exists
8139 set eaccess d_eaccess
8142 : see if endgrent exists
8143 set endgrent d_endgrent
8146 : see if endhostent exists
8147 set endhostent d_endhent
8150 : see if endnetent exists
8151 set endnetent d_endnent
8154 : see if endprotoent exists
8155 set endprotoent d_endpent
8158 : see if endpwent exists
8159 set endpwent d_endpwent
8162 : see if endservent exists
8163 set endservent d_endsent
8166 : see if endspent exists
8167 set endspent d_endspent
8170 : Locate the flags for 'open()'
8172 $cat >open3.c <<'EOCP'
8173 #include <sys/types.h>
8178 #include <sys/file.h>
8189 : check sys/file.h first to get FREAD on Sun
8190 if $test `./findhdr sys/file.h` && \
8191 set open3 -DI_SYS_FILE && eval $compile; then
8193 echo "<sys/file.h> defines the O_* constants..." >&4
8195 echo "and you have the 3 argument form of open()." >&4
8198 echo "but not the 3 argument form of open(). Oh, well." >&4
8201 elif $test `./findhdr fcntl.h` && \
8202 set open3 -DI_FCNTL && eval $compile; then
8204 echo "<fcntl.h> defines the O_* constants..." >&4
8206 echo "and you have the 3 argument form of open()." >&4
8209 echo "but not the 3 argument form of open(). Oh, well." >&4
8214 echo "I can't find the O_* constant definitions! You got problems." >&4
8220 : check for non-blocking I/O stuff
8221 case "$h_sysfile" in
8222 true) echo "#include <sys/file.h>" > head.c;;
8225 true) echo "#include <fcntl.h>" > head.c;;
8226 *) echo "#include <sys/fcntl.h>" > head.c;;
8231 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8232 case "$o_nonblock" in
8235 $cat >>try.c <<'EOCP'
8238 printf("O_NONBLOCK\n");
8242 printf("O_NDELAY\n");
8246 printf("FNDELAY\n");
8253 if eval $compile_ok; then
8255 case "$o_nonblock" in
8256 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8257 *) echo "Seems like we can use $o_nonblock.";;
8260 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8263 *) echo "Using $hint value $o_nonblock.";;
8265 $rm -f try try.* .out core
8268 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8274 #include <sys/types.h>
8276 #define MY_O_NONBLOCK $o_nonblock
8277 #ifndef errno /* XXX need better Configure test */
8280 $signal_t blech(x) int x; { exit(3); }
8282 $cat >> try.c <<'EOCP'
8290 pipe(pd); /* Down: child -> parent */
8291 pipe(pu); /* Up: parent -> child */
8294 close(pd[1]); /* Parent reads from pd[0] */
8295 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8296 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8298 signal(SIGALRM, blech);
8300 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8302 sprintf(string, "%d\n", ret);
8303 write(2, string, strlen(string));
8306 if (errno == EAGAIN) {
8312 if (errno == EWOULDBLOCK)
8313 printf("EWOULDBLOCK\n");
8316 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8317 sleep(2); /* Give it time to close our pipe */
8319 ret = read(pd[0], buf, 1); /* Should read EOF */
8321 sprintf(string, "%d\n", ret);
8322 write(3, string, strlen(string));
8326 close(pd[0]); /* We write to pd[1] */
8327 close(pu[1]); /* We read from pu[0] */
8328 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8329 close(pd[1]); /* Pipe pd is now fully closed! */
8330 exit(0); /* Bye bye, thank you for playing! */
8334 if eval $compile_ok; then
8335 echo "$startsh" >mtry
8336 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8338 ./mtry >/dev/null 2>&1
8340 0) eagain=`$cat try.out`;;
8341 1) echo "Could not perform non-blocking setting!";;
8342 2) echo "I did a successful read() for something that was not there!";;
8343 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8344 *) echo "Something terribly wrong happened during testing.";;
8346 rd_nodata=`$cat try.ret`
8347 echo "A read() system call with no data present returns $rd_nodata."
8348 case "$rd_nodata" in
8351 echo "(That's peculiar, fixing that to be -1.)"
8357 echo "Forcing errno EAGAIN on read() with no data available."
8361 echo "Your read() sets errno to $eagain when no data is available."
8364 status=`$cat try.err`
8366 0) echo "And it correctly returns 0 to signal EOF.";;
8367 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8368 *) echo "However, your read() returns '$status' on EOF??";;
8371 if test "$status" = "$rd_nodata"; then
8372 echo "WARNING: you can't distinguish between EOF and no data!"
8376 echo "I can't compile the test program--assuming errno EAGAIN will do."
8383 echo "Using $hint value $eagain."
8384 echo "Your read() returns $rd_nodata when no data is present."
8385 case "$d_eofnblk" in
8386 "$define") echo "And you can see EOF because read() returns 0.";;
8387 "$undef") echo "But you can't see EOF status from read() returned value.";;
8389 echo "(Assuming you can't see EOF status from read anyway.)"
8395 $rm -f try try.* .out core head.c mtry
8397 : see if fchmod exists
8401 : see if fchown exists
8405 : see if this is an fcntl system
8409 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8410 while $test $# -ge 2; do
8412 $define) echo "#include <$2>";;
8416 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8418 if eval $compile; then
8429 : see whether socket exists
8431 $echo $n "Hmm... $c" >&4
8432 if set socket val -f d_socket; eval $csym; $val; then
8433 echo "Looks like you have Berkeley networking support." >&4
8435 if set setsockopt val -f; eval $csym; $val; then
8438 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8442 if $contains socklib libc.list >/dev/null 2>&1; then
8443 echo "Looks like you have Berkeley networking support." >&4
8445 : we will have to assume that it supports the 4.2 BSD interface
8448 echo "You don't have Berkeley networking in libc$_a..." >&4
8449 if test "X$d_socket" = "X$define"; then
8450 echo "...but you seem to believe that you have sockets." >&4
8452 for net in net socket
8454 if test -f /usr/lib/lib$net$_a; then
8455 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8456 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8457 if $contains socket libc.list >/dev/null 2>&1; then
8462 echo "...but the Wollongong group seems to have hacked it in." >&4
8463 sockethdr="-I/usr/netinclude"
8466 echo "Found Berkeley sockets interface in lib$net." >& 4
8467 if $contains setsockopt libc.list >/dev/null 2>&1; then
8470 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8477 if test "X$d_socket" != "X$define"; then
8478 echo "or anywhere else I see." >&4
8486 : see if socketpair exists
8487 set socketpair d_sockpair
8492 echo "Checking the availability of certain socket constants..." >& 4
8493 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8494 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8496 #include <sys/types.h>
8497 #include <sys/socket.h>
8503 set try; if eval $compile; then
8506 set d_${enum}; eval $setvar
8510 : see if sys/select.h has to be included
8511 set sys/select.h i_sysselct
8514 : see if we should include time.h, sys/time.h, or both
8516 if test "X$timeincl" = X; then
8517 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8518 $echo $n "I'm now running the test program...$c"
8519 $cat >try.c <<'EOCP'
8520 #include <sys/types.h>
8525 #ifdef SYSTIMEKERNEL
8528 #include <sys/time.h>
8531 #include <sys/select.h>
8540 struct timezone tzp;
8542 if (foo.tm_sec == foo.tm_sec)
8545 if (bar.tv_sec == bar.tv_sec)
8552 for s_timezone in '-DS_TIMEZONE' ''; do
8554 for s_timeval in '-DS_TIMEVAL' ''; do
8555 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8556 for i_time in '' '-DI_TIME'; do
8557 for i_systime in '-DI_SYSTIME' ''; do
8560 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8561 if eval $compile; then
8562 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8566 $echo $n "Succeeded with $flags$c"
8578 *SYSTIMEKERNEL*) i_systimek="$define"
8579 timeincl=`./findhdr sys/time.h`
8580 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8581 *) i_systimek="$undef";;
8584 *I_TIME*) i_time="$define"
8585 timeincl=`./findhdr time.h`" $timeincl"
8586 echo "We'll include <time.h>." >&4;;
8587 *) i_time="$undef";;
8590 *I_SYSTIME*) i_systime="$define"
8591 timeincl=`./findhdr sys/time.h`" $timeincl"
8592 echo "We'll include <sys/time.h>." >&4;;
8593 *) i_systime="$undef";;
8598 : check for fd_set items
8601 Checking to see how well your C compiler handles fd_set and friends ...
8603 $cat >fd_set.c <<EOCP
8604 #$i_systime I_SYS_TIME
8605 #$i_sysselct I_SYS_SELECT
8606 #$d_socket HAS_SOCKET
8607 #include <sys/types.h>
8609 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8612 #include <sys/time.h>
8615 #include <sys/select.h>
8624 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8631 set fd_set -DTRYBITS
8632 if eval $compile; then
8633 d_fds_bits="$define"
8635 echo "Well, your system knows about the normal fd_set typedef..." >&4
8637 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8638 d_fd_macros="$define"
8641 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8643 d_fd_macros="$undef"
8647 Hmm, your compiler has some difficulty with fd_set. Checking further...
8650 if eval $compile; then
8653 echo "Well, your system has some sort of fd_set available..." >&4
8655 echo "and you have the normal fd_set macros." >&4
8656 d_fd_macros="$define"
8659 but not the normal fd_set macros! Gross! More work for me...
8661 d_fd_macros="$undef"
8664 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8667 d_fd_macros="$undef"
8672 : see if fgetpos exists
8673 set fgetpos d_fgetpos
8676 : see if flock exists
8680 : see if fork exists
8684 : see if pathconf exists
8685 set pathconf d_pathconf
8688 : see if fpathconf exists
8689 set fpathconf d_fpathconf
8693 : see if llseek exists
8699 $echo $n "Checking to see if your system supports off64_t...$c" >&4
8701 #include <sys/types.h>
8703 off64_t foo() { off64_t x; x = 7; return x; }'
8705 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8707 echo " Yup, it does." >&4
8710 echo " Nope, it doesn't." >&4
8716 : check for fpos64_t
8718 $echo $n "Checking to see if your system supports fpos64_t...$c" >&4
8720 #include <sys/stdio.h>
8721 fpos64_t foo() { fpos64_t x; x = 7; return x; }'
8723 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8725 echo " Yup, it does." >&4
8728 echo " Nope, it doesn't." >&4
8734 hasstruct='varname=$1; struct=$2; shift; shift;
8735 while $test $# -ge 2; do
8737 $define) echo "#include <$2>";;
8741 echo "int main () { struct $struct foo; }" >> try.c;
8743 if eval $compile; then
8752 : see if this is a sys/param system
8753 set sys/param.h i_sysparam
8756 : see if this is a sys/mount.h system
8757 set sys/mount.h i_sysmount
8760 : see if sys/types.h has to be included
8761 set sys/types.h i_systypes
8766 $echo $n "Checking to see if your system supports struct fs_data..." $c >&4
8767 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8769 case "$d_fs_data_s" in
8770 "$define") echo "Yup, it does." >&4 ;;
8771 *) echo "Nope, it doesn't." >&4 ;;
8774 : see if fseeko exists
8778 : see if fsetpos exists
8779 set fsetpos d_fsetpos
8783 : see if fstatfs exists
8784 set fstatfs d_fstatfs
8788 : see if statvfs exists
8789 set statvfs d_statvfs
8792 : see if fstatvfs exists
8793 set fstatvfs d_fstatvfs
8797 : see if ftello exists
8801 : see if getgrent exists
8802 set getgrent d_getgrent
8805 : see if gethostbyaddr exists
8806 set gethostbyaddr d_gethbyaddr
8809 : see if gethostbyname exists
8810 set gethostbyname d_gethbyname
8813 : see if gethostent exists
8814 set gethostent d_gethent
8817 : see how we will look up host name
8820 if set gethostname val -f d_gethname; eval $csym; $val; then
8821 echo 'gethostname() found.' >&4
8822 d_gethname="$define"
8825 if set uname val -f d_uname; eval $csym; $val; then
8828 uname() was found, but you're running xenix, and older versions of xenix
8829 have a broken uname(). If you don't really know whether your xenix is old
8830 enough to have a broken system call, use the default answer.
8837 rp='Is your uname() broken?'
8840 n*) d_uname="$define"; call=uname;;
8843 echo 'uname() found.' >&4
8850 case "$d_gethname" in
8851 '') d_gethname="$undef";;
8854 '') d_uname="$undef";;
8856 case "$d_uname$d_gethname" in
8861 Every now and then someone has a $call() that lies about the hostname
8862 but can't be fixed for political or economic reasons. If you wish, I can
8863 pretend $call() isn't there and maybe compute hostname at run-time
8864 thanks to the '$phostname' command.
8867 rp="Shall I ignore $call() from now on?"
8870 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8873 case "$phostname" in
8875 *) case "$aphostname" in
8881 file=`./loc $file $file $pth`
8882 aphostname=`echo $file $*`
8887 case "$d_uname$d_gethname" in
8890 case "$phostname" in
8892 echo "There will be no way for $package to get your hostname." >&4;;
8894 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8898 case "$d_phostname" in
8899 '') d_phostname="$undef";;
8902 : see if this is a netdb.h system
8906 : see if prototypes for various gethostxxx netdb.h functions are available
8908 set d_gethostprotos gethostent $i_netdb netdb.h
8911 : see if getlogin exists
8912 set getlogin d_getlogin
8915 : see if getmnt exists
8919 : see if getmntent exists
8920 set getmntent d_getmntent
8923 : see if getnetbyaddr exists
8924 set getnetbyaddr d_getnbyaddr
8927 : see if getnetbyname exists
8928 set getnetbyname d_getnbyname
8931 : see if getnetent exists
8932 set getnetent d_getnent
8935 : see if prototypes for various getnetxxx netdb.h functions are available
8937 set d_getnetprotos getnetent $i_netdb netdb.h
8941 : see if getprotobyname exists
8942 set getprotobyname d_getpbyname
8945 : see if getprotobynumber exists
8946 set getprotobynumber d_getpbynumber
8949 : see if getprotoent exists
8950 set getprotoent d_getpent
8953 : see if getpgid exists
8954 set getpgid d_getpgid
8957 : see if getpgrp2 exists
8958 set getpgrp2 d_getpgrp2
8961 : see if getppid exists
8962 set getppid d_getppid
8965 : see if getpriority exists
8966 set getpriority d_getprior
8969 : see if prototypes for various getprotoxxx netdb.h functions are available
8971 set d_getprotoprotos getprotoent $i_netdb netdb.h
8974 : see if getpwent exists
8975 set getpwent d_getpwent
8979 : see if getservbyname exists
8980 set getservbyname d_getsbyname
8983 : see if getservbyport exists
8984 set getservbyport d_getsbyport
8987 : see if getservent exists
8988 set getservent d_getsent
8991 : see if prototypes for various getservxxx netdb.h functions are available
8993 set d_getservprotos getservent $i_netdb netdb.h
8996 : see if getspent exists
8997 set getspent d_getspent
9000 : see if getspnam exists
9001 set getspnam d_getspnam
9004 : see if gettimeofday or ftime exists
9005 set gettimeofday d_gettimeod
9007 case "$d_gettimeod" in
9013 val="$undef"; set d_ftime; eval $setvar
9016 case "$d_gettimeod$d_ftime" in
9019 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9023 : see if this is an grp system
9029 xxx=`./findhdr grp.h`
9030 $cppstdin $cppflags $cppminus < $xxx >$$.h
9032 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9044 set d_grpasswd; eval $setvar
9048 : see if hasmntopt exists
9049 set hasmntopt d_hasmntopt
9052 : see if this is a netinet/in.h or sys/in.h system
9053 set netinet/in.h i_niin sys/in.h i_sysin
9056 : see if arpa/inet.h has to be included
9057 set arpa/inet.h i_arpainet
9060 : see if htonl --and friends-- exists
9065 : Maybe they are macros.
9070 #include <sys/types.h>
9071 #$i_niin I_NETINET_IN
9073 #$i_arpainet I_ARPA_INET
9075 #include <netinet/in.h>
9081 #include <arpa/inet.h>
9084 printf("Defined as a macro.");
9087 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9088 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9090 echo "But it seems to be defined as a macro." >&4
9098 : see which of string.h or strings.h is needed
9100 strings=`./findhdr string.h`
9101 if $test "$strings" && $test -r "$strings"; then
9102 echo "Using <string.h> instead of <strings.h>." >&4
9106 strings=`./findhdr strings.h`
9107 if $test "$strings" && $test -r "$strings"; then
9108 echo "Using <strings.h> instead of <string.h>." >&4
9110 echo "No string header found -- You'll surely have problems." >&4
9116 "$undef") strings=`./findhdr strings.h`;;
9117 *) strings=`./findhdr string.h`;;
9122 if set index val -f; eval $csym; $val; then
9123 if set strchr val -f d_strchr; eval $csym; $val; then
9124 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9127 echo "strchr() found." >&4
9131 echo "index() found." >&4
9136 echo "index() found." >&4
9139 if set strchr val -f d_strchr; eval $csym; $val; then
9142 echo "strchr() found." >&4
9144 echo "No index() or strchr() found!" >&4
9149 set d_strchr; eval $setvar
9151 set d_index; eval $setvar
9153 : check whether inet_aton exists
9154 set inet_aton d_inetaton
9159 $cat >isascii.c <<'EOCP'
9171 if eval $compile; then
9172 echo "isascii() found." >&4
9175 echo "isascii() NOT found." >&4
9182 : see if killpg exists
9186 : see if lchown exists
9188 $cat > try.c <<'EOCP'
9189 /* System header to define __stub macros and hopefully few prototypes,
9190 which can conflict with char lchown(); below. */
9192 /* Override any gcc2 internal prototype to avoid an error. */
9193 /* We use char because int might match the return type of a gcc2
9194 builtin and then its argument prototype would still apply. */
9197 /* The GNU C library defines this for functions which it implements
9198 to always fail with ENOSYS. Some functions are actually named
9199 something starting with __ and the normal name is an alias. */
9200 #if defined (__stub_lchown) || defined (__stub___lchown)
9208 if eval $compile; then
9209 $echo "lchown() found." >&4
9212 $echo "lchown() NOT found." >&4
9218 : See if number of significant digits in a double precision number is known
9220 $cat >ldbl_dig.c <<EOM
9230 printf("Contains LDBL_DIG");
9233 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9234 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9235 echo "LDBL_DIG found." >&4
9238 echo "LDBL_DIG NOT found." >&4
9245 : see if link exists
9249 : see if localeconv exists
9250 set localeconv d_locconv
9253 : see if lockf exists
9257 : see if lstat exists
9261 : see if mblen exists
9265 : see if mbstowcs exists
9266 set mbstowcs d_mbstowcs
9269 : see if mbtowc exists
9273 : see if memchr exists
9277 : see if memcmp exists
9281 : see if memcpy exists
9285 : see if memmove exists
9286 set memmove d_memmove
9289 : see if memset exists
9293 : see if mkdir exists
9297 : see if mkfifo exists
9301 : see if mktime exists
9305 : see if msgctl exists
9309 : see if msgget exists
9313 : see if msgsnd exists
9317 : see if msgrcv exists
9321 : see how much of the 'msg*(2)' library is present.
9324 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9325 *"$undef"*) h_msg=false;;
9329 case "`ipcs 2>&1`" in
9330 "SVID messages"*"not configured"*)
9331 echo "Your $osname does not have the msg*(2) configured." >&4
9346 : we could also check for sys/ipc.h ...
9347 if $h_msg && $test `./findhdr sys/msg.h`; then
9348 echo "You have the full msg*(2) library." >&4
9351 echo "You don't have the full msg*(2) library." >&4
9357 : see if nice exists
9361 : see if POSIX threads are available
9362 set pthread.h i_pthread
9368 : how to create joinable pthreads
9369 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9371 echo "Checking what constant to use for creating joinable pthreads..." >&4
9372 $cat >try.c <<'EOCP'
9373 #include <pthread.h>
9375 int detachstate = JOINABLE;
9378 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9379 if eval $compile; then
9380 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9381 val="$undef" # Yes, undef.
9382 set d_old_pthread_create_joinable
9385 set old_pthread_create_joinable
9388 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9389 if eval $compile; then
9390 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9392 set d_old_pthread_create_joinable
9394 val=PTHREAD_CREATE_UNDETACHED
9395 set old_pthread_create_joinable
9398 set try -DJOINABLE=__UNDETACHED
9399 if eval $compile; then
9400 echo "You seem to use __UNDETACHED." >&4
9402 set d_old_pthread_create_joinable
9405 set old_pthread_create_joinable
9408 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9410 set d_old_pthread_create_joinable
9413 set old_pthread_create_joinable
9420 d_old_pthread_create_joinable="$undef"
9421 old_pthread_create_joinable=""
9424 : see if pause exists
9428 : see if pipe exists
9432 : see if poll exists
9437 : see whether the various POSIXish _yields exist
9439 #include <pthread.h>
9445 #ifdef PTHREAD_YIELD
9448 #ifdef PTHREAD_YIELD_NULL
9449 pthread_yield(NULL);
9455 : see if sched_yield exists
9456 set try -DSCHED_YIELD
9457 if eval $compile; then
9459 sched_yield='sched_yield()'
9463 case "$usethreads" in
9466 $define) echo 'sched_yield() found.' >&4 ;;
9467 *) echo 'sched_yield() NOT found.' >&4 ;;
9473 : see if pthread_yield exists
9474 set try -DPTHREAD_YIELD
9475 if eval $compile; then
9477 case "$sched_yield" in
9478 '') sched_yield='pthread_yield()' ;;
9481 set try -DPTHREAD_YIELD_NULL
9482 if eval $compile; then
9484 case "$sched_yield" in
9485 '') sched_yield='pthread_yield(NULL)' ;;
9491 case "$usethreads" in
9494 $define) echo 'pthread_yield() found.' >&4 ;;
9495 *) echo 'pthread_yield() NOT found.' >&4 ;;
9502 case "$sched_yield" in
9503 '') sched_yield=undef ;;
9508 : see if this is a pwd.h system
9514 xxx=`./findhdr pwd.h`
9515 $cppstdin $cppflags $cppminus < $xxx >$$.h
9517 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9525 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9533 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9541 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9549 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9557 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9565 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9573 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9585 set d_pwquota; eval $setvar
9586 set d_pwage; eval $setvar
9587 set d_pwchange; eval $setvar
9588 set d_pwclass; eval $setvar
9589 set d_pwexpire; eval $setvar
9590 set d_pwcomment; eval $setvar
9591 set d_pwgecos; eval $setvar
9592 set d_pwpasswd; eval $setvar
9596 : see if readdir and friends exist
9597 set readdir d_readdir
9599 set seekdir d_seekdir
9601 set telldir d_telldir
9603 set rewinddir d_rewinddir
9606 : see if readlink exists
9607 set readlink d_readlink
9610 : see if rename exists
9614 : see if rmdir exists
9618 : see if memory.h is available.
9623 : See if it conflicts with string.h
9629 $cppstdin $cppflags $cppminus < $strings > mem.h
9630 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9632 echo "We won't be including <memory.h>."
9642 : can bcopy handle overlapping blocks?
9647 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9654 $cat >>try.c <<'EOCP'
9657 # include <memory.h>
9660 # include <stdlib.h>
9663 # include <string.h>
9665 # include <strings.h>
9668 # include <unistd.h> /* Needed for NetBSD */
9672 char buf[128], abc[128];
9678 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9680 for (align = 7; align >= 0; align--) {
9681 for (len = 36; len; len--) {
9684 for (off = 1; off <= len; off++) {
9685 bcopy(b, b+off, len);
9686 bcopy(b+off, b, len);
9687 if (bcmp(b, abc, len))
9696 if eval $compile_ok; then
9697 if ./try 2>/dev/null; then
9701 echo "It can't, sorry."
9702 case "$d_memmove" in
9703 "$define") echo "But that's Ok since you have memmove()." ;;
9707 echo "(I can't compile the test program, so we'll assume not...)"
9708 case "$d_memmove" in
9709 "$define") echo "But that's Ok since you have memmove()." ;;
9714 $rm -f try.* try core
9718 : can memcpy handle overlapping blocks?
9723 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9730 $cat >>try.c <<'EOCP'
9733 # include <memory.h>
9736 # include <stdlib.h>
9739 # include <string.h>
9741 # include <strings.h>
9744 # include <unistd.h> /* Needed for NetBSD */
9748 char buf[128], abc[128];
9754 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9755 try to store the string in read-only memory. */
9756 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9758 for (align = 7; align >= 0; align--) {
9759 for (len = 36; len; len--) {
9761 memcpy(b, abc, len);
9762 for (off = 1; off <= len; off++) {
9763 memcpy(b+off, b, len);
9764 memcpy(b, b+off, len);
9765 if (memcmp(b, abc, len))
9774 if eval $compile_ok; then
9775 if ./try 2>/dev/null; then
9779 echo "It can't, sorry."
9780 case "$d_memmove" in
9781 "$define") echo "But that's Ok since you have memmove()." ;;
9785 echo "(I can't compile the test program, so we'll assume not...)"
9786 case "$d_memmove" in
9787 "$define") echo "But that's Ok since you have memmove()." ;;
9792 $rm -f try.* try core
9796 : can memcmp be trusted to compare relative magnitude?
9801 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9808 $cat >>try.c <<'EOCP'
9811 # include <memory.h>
9814 # include <stdlib.h>
9817 # include <string.h>
9819 # include <strings.h>
9822 # include <unistd.h> /* Needed for NetBSD */
9828 if ((a < b) && memcmp(&a, &b, 1) < 0)
9834 if eval $compile_ok; then
9835 if ./try 2>/dev/null; then
9839 echo "No, it can't (it uses signed chars)."
9842 echo "(I can't compile the test program, so we'll assume not...)"
9846 $rm -f try.* try core
9850 : see if select exists
9854 : see if semctl exists
9858 : see if semget exists
9862 : see if semop exists
9866 : see how much of the 'sem*(2)' library is present.
9869 case "$d_semctl$d_semget$d_semop" in
9870 *"$undef"*) h_sem=false;;
9874 case "`ipcs 2>&1`" in
9875 "SVID messages"*"not configured"*)
9876 echo "Your $osname does not have the sem*(2) configured." >&4
9889 : we could also check for sys/ipc.h ...
9890 if $h_sem && $test `./findhdr sys/sem.h`; then
9891 echo "You have the full sem*(2) library." >&4
9894 echo "You don't have the full sem*(2) library." >&4
9900 : see whether sys/sem.h defines union semun
9902 $cat > try.c <<'END'
9903 #include <sys/types.h>
9904 #include <sys/ipc.h>
9905 #include <sys/sem.h>
9906 int main () { union semun semun; semun.buf = 0; }
9909 if eval $compile; then
9910 echo "You have union semun in <sys/sem.h>." >&4
9913 echo "You do not have union semun in <sys/sem.h>." >&4
9916 $rm -f try try.c try.h
9920 : see how to do semctl IPC_STAT
9923 : see whether semctl IPC_STAT can use union semun
9928 # define S_IRUSR S_IREAD
9929 # define S_IWUSR S_IWRITE
9930 # define S_IXUSR S_IEXEC
9932 # define S_IRUSR 0400
9933 # define S_IWUSR 0200
9934 # define S_IXUSR 0100
9936 # define S_IRGRP (S_IRUSR>>3)
9937 # define S_IWGRP (S_IWUSR>>3)
9938 # define S_IXGRP (S_IXUSR>>3)
9939 # define S_IROTH (S_IRUSR>>6)
9940 # define S_IWOTH (S_IWUSR>>6)
9941 # define S_IXOTH (S_IXUSR>>6)
9944 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9945 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9946 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9951 #include <sys/types.h>
9952 #include <sys/ipc.h>
9953 #include <sys/sem.h>
9954 #include <sys/stat.h>
9961 #$d_union_semun HAS_UNION_SEMUN
9964 #ifndef HAS_UNION_SEMUN
9967 struct semid_ds *buf;
9968 unsigned short *array;
9974 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9975 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9977 struct semid_ds argbuf;
9980 st = semctl(sem, 0, IPC_STAT, arg);
9984 # endif /* IPC_STAT */
9985 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9987 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9988 # endif /* IPC_RMID */
9989 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9991 #endif /* IPC_PRIVATE && ... */
9992 printf("semget failed: errno = %d\n", errno);
9998 if eval $compile; then
10001 semun) val="$define" ;;
10007 case "$d_semctl_semun" in
10009 echo "You can use union semun for semctl IPC_STAT." >&4
10012 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10017 : see whether semctl IPC_STAT can use struct semid_ds pointer
10018 $cat > try.c <<'END'
10019 #include <sys/types.h>
10020 #include <sys/ipc.h>
10021 #include <sys/sem.h>
10022 #include <sys/stat.h>
10030 struct semid_ds arg;
10033 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10034 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10037 st = semctl(sem, 0, IPC_STAT, &arg);
10039 printf("semid_ds\n");
10041 # endif /* IPC_STAT */
10042 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10044 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10045 # endif /* IPC_RMID */
10046 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10048 #endif /* IPC_PRIVATE && ... */
10049 printf("semget failed: errno = %d\n", errno);
10056 if eval $compile; then
10059 semid_ds) val="$define" ;;
10063 set d_semctl_semid_ds
10065 case "$d_semctl_semid_ds" in
10067 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10069 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10076 # We do not have the full sem*(2) library, so assume we can not
10082 set d_semctl_semid_ds
10087 : see if setegid exists
10088 set setegid d_setegid
10091 : see if seteuid exists
10092 set seteuid d_seteuid
10095 : see if setgrent exists
10096 set setgrent d_setgrent
10099 : see if sethostent exists
10100 set sethostent d_sethent
10103 : see if setlinebuf exists
10104 set setlinebuf d_setlinebuf
10107 : see if setlocale exists
10108 set setlocale d_setlocale
10111 : see if setnetent exists
10112 set setnetent d_setnent
10115 : see if setprotoent exists
10116 set setprotoent d_setpent
10119 : see if setpgid exists
10120 set setpgid d_setpgid
10123 : see if setpgrp2 exists
10124 set setpgrp2 d_setpgrp2
10127 : see if setpriority exists
10128 set setpriority d_setprior
10131 : see if setpwent exists
10132 set setpwent d_setpwent
10135 : see if setregid exists
10136 set setregid d_setregid
10138 set setresgid d_setresgid
10141 : see if setreuid exists
10142 set setreuid d_setreuid
10144 set setresuid d_setresuid
10147 : see if setrgid exists
10148 set setrgid d_setrgid
10151 : see if setruid exists
10152 set setruid d_setruid
10155 : see if setservent exists
10156 set setservent d_setsent
10159 : see if setsid exists
10160 set setsid d_setsid
10163 : see if setspent exists
10164 set setspent d_setspent
10167 : see if setvbuf exists
10168 set setvbuf d_setvbuf
10171 : see if sfio.h is available
10176 : see if sfio library is available
10187 : Ok, but do we want to use it.
10191 true|$define|[yY]*) dflt='y';;
10194 echo "$package can use the sfio library, but it is experimental."
10195 rp="You seem to have sfio available, do you want to try using it?"
10199 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10201 : Remove sfio from list of libraries to use
10202 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10205 echo "libs = $libs" >&4
10209 *) case "$usesfio" in
10210 true|$define|[yY]*)
10211 echo "Sorry, cannot find sfio on this machine" >&4
10212 echo "Ignoring your setting of usesfio=$usesfio" >&4
10220 $define) usesfio='true';;
10221 *) usesfio='false';;
10224 : see if shmctl exists
10225 set shmctl d_shmctl
10228 : see if shmget exists
10229 set shmget d_shmget
10232 : see if shmat exists
10235 : see what shmat returns
10238 $cat >shmat.c <<'END'
10239 #include <sys/shm.h>
10242 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10247 echo "and it returns ($shmattype)." >&4
10248 : see if a prototype for shmat is available
10249 xxx=`./findhdr sys/shm.h`
10250 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10251 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10262 set d_shmatprototype
10265 : see if shmdt exists
10269 : see how much of the 'shm*(2)' library is present.
10272 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10273 *"$undef"*) h_shm=false;;
10277 case "`ipcs 2>&1`" in
10278 "SVID shared memory"*"not configured"*)
10279 echo "Your $osname does not have the shm*(2) configured." >&4
10282 set shmctl d_shmctl
10284 set shmget d_shmget
10294 : we could also check for sys/ipc.h ...
10295 if $h_shm && $test `./findhdr sys/shm.h`; then
10296 echo "You have the full shm*(2) library." >&4
10299 echo "You don't have the full shm*(2) library." >&4
10306 : see if we have sigaction
10307 if set sigaction val -f d_sigaction; eval $csym; $val; then
10308 echo 'sigaction() found.' >&4
10309 $cat > try.c <<'EOP'
10311 #include <sys/types.h>
10312 #include <signal.h>
10315 struct sigaction act, oact;
10317 oact.sa_handler = 0;
10321 if eval $compile_ok; then
10324 echo "But you don't seem to have a useable struct sigaction." >&4
10328 echo 'sigaction NOT found.' >&4
10331 set d_sigaction; eval $setvar
10332 $rm -f try try$_o try.c
10334 : see if sigsetjmp exists
10336 case "$d_sigsetjmp" in
10338 $cat >try.c <<'EOP'
10339 #include <setjmp.h>
10344 if (sigsetjmp(env,1))
10347 siglongjmp(env, 1);
10352 if eval $compile; then
10353 if ./try >/dev/null 2>&1; then
10354 echo "POSIX sigsetjmp found." >&4
10358 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10364 echo "sigsetjmp not found." >&4
10368 *) val="$d_sigsetjmp"
10369 case "$d_sigsetjmp" in
10370 $define) echo "POSIX sigsetjmp found." >&4;;
10371 $undef) echo "sigsetjmp not found." >&4;;
10379 : see if sqrtl exists
10383 : see if sys/stat.h is available
10384 set sys/stat.h i_sysstat
10388 : see if stat knows about block sizes
10390 echo "Checking to see if your struct stat has st_blocks field..." >&4
10391 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10395 : see if this is a sys/vfs.h system
10396 set sys/vfs.h i_sysvfs
10400 : see if this is a sys/statfs.h system
10401 set sys/statfs.h i_sysstatfs
10406 $echo $n "Checking to see if your system supports struct statfs..." $c >&4
10407 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
10409 case "$d_statfs_s" in
10410 "$define") echo "Yup, it does." >&4 ;;
10411 *) echo "Nope, it doesn't." >&4 ;;
10416 : see if struct statfs knows about f_flags
10417 case "$d_statfs_s" in
10420 $echo $n "Checking to see if your struct statfs has f_flags field..." $c >&4
10421 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
10425 set d_statfs_f_flags
10429 case "$d_statfs_f_flags" in
10430 "$define") echo "Yup, it does." >&4 ;;
10431 *) echo "Nope, it doesn't." >&4 ;;
10434 : see if _ptr and _cnt from stdio act std
10436 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10437 echo "(Looks like you have stdio.h from Linux.)"
10438 case "$stdio_ptr" in
10439 '') stdio_ptr='((fp)->_IO_read_ptr)'
10442 *) ptr_lval=$d_stdio_ptr_lval;;
10444 case "$stdio_cnt" in
10445 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10448 *) cnt_lval=$d_stdio_cnt_lval;;
10450 case "$stdio_base" in
10451 '') stdio_base='((fp)->_IO_read_base)';;
10453 case "$stdio_bufsiz" in
10454 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10457 case "$stdio_ptr" in
10458 '') stdio_ptr='((fp)->_ptr)'
10461 *) ptr_lval=$d_stdio_ptr_lval;;
10463 case "$stdio_cnt" in
10464 '') stdio_cnt='((fp)->_cnt)'
10467 *) cnt_lval=$d_stdio_cnt_lval;;
10469 case "$stdio_base" in
10470 '') stdio_base='((fp)->_base)';;
10472 case "$stdio_bufsiz" in
10473 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10476 : test whether _ptr and _cnt really work
10477 echo "Checking how std your stdio is..." >&4
10480 #define FILE_ptr(fp) $stdio_ptr
10481 #define FILE_cnt(fp) $stdio_cnt
10483 FILE *fp = fopen("try.c", "r");
10486 18 <= FILE_cnt(fp) &&
10487 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10495 if eval $compile; then
10497 echo "Your stdio acts pretty std."
10500 echo "Your stdio isn't very std."
10503 echo "Your stdio doesn't appear very std."
10509 : Can _ptr be used as an lvalue?
10510 case "$d_stdstdio$ptr_lval" in
10511 $define$define) val=$define ;;
10514 set d_stdio_ptr_lval
10517 : Can _cnt be used as an lvalue?
10518 case "$d_stdstdio$cnt_lval" in
10519 $define$define) val=$define ;;
10522 set d_stdio_cnt_lval
10525 : see if _base is also standard
10527 case "$d_stdstdio" in
10531 #define FILE_base(fp) $stdio_base
10532 #define FILE_bufsiz(fp) $stdio_bufsiz
10534 FILE *fp = fopen("try.c", "r");
10537 19 <= FILE_bufsiz(fp) &&
10538 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
10545 if eval $compile; then
10547 echo "And its _base field acts std."
10550 echo "But its _base field isn't std."
10553 echo "However, it seems to be lacking the _base field."
10562 Checking how to access stdio streams by file descriptor number...
10564 case "$stdio_stream_array" in
10565 '') $cat >try.c <<EOCP
10568 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10572 for s in _iob __iob __sF
10574 set try -DSTDIO_STREAM_ARRAY=$s
10575 if eval $compile; then
10576 case "`./try$exe_ext`" in
10577 yes) stdio_stream_array=$s; break ;;
10581 $rm -f try.* try$exe_ext
10583 case "$stdio_stream_array" in
10585 I can't figure out how to access stdio streams by file descriptor number.
10587 d_stdio_stream_array="$undef"
10590 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10592 d_stdio_stream_array="$define"
10596 : see if strcoll exists
10597 set strcoll d_strcoll
10600 : check for structure copying
10602 echo "Checking to see if your C compiler can copy structs..." >&4
10603 $cat >try.c <<'EOCP'
10613 if $cc -c try.c >/dev/null 2>&1 ; then
10615 echo "Yup, it can."
10618 echo "Nope, it can't."
10624 : see if strerror and/or sys_errlist[] exist
10626 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10627 if set strerror val -f d_strerror; eval $csym; $val; then
10628 echo 'strerror() found.' >&4
10629 d_strerror="$define"
10630 d_strerrm='strerror(e)'
10631 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10632 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10633 d_syserrlst="$define"
10635 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10636 d_syserrlst="$undef"
10638 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10639 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10640 echo 'strerror() found in string header.' >&4
10641 d_strerror="$define"
10642 d_strerrm='strerror(e)'
10643 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10644 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10645 d_syserrlst="$define"
10647 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10648 d_syserrlst="$undef"
10650 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10651 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10652 d_strerror="$undef"
10653 d_syserrlst="$define"
10654 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10656 echo 'strerror() and sys_errlist[] NOT found.' >&4
10657 d_strerror="$undef"
10658 d_syserrlst="$undef"
10659 d_strerrm='"unknown"'
10663 : see if strtod exists
10664 set strtod d_strtod
10667 : see if strtol exists
10668 set strtol d_strtol
10671 : see if strtoul exists
10672 set strtoul d_strtoul
10675 : see if strtoull exists
10676 set strtoull d_strtoull
10679 : see if strxfrm exists
10680 set strxfrm d_strxfrm
10683 : see if symlink exists
10684 set symlink d_symlink
10687 : see if syscall exists
10688 set syscall d_syscall
10691 : see if sysconf exists
10692 set sysconf d_sysconf
10695 : see if system exists
10696 set system d_system
10699 : see if tcgetpgrp exists
10700 set tcgetpgrp d_tcgetpgrp
10703 : see if tcsetpgrp exists
10704 set tcsetpgrp d_tcsetpgrp
10707 : see if prototype for telldir is available
10709 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10712 : define an is-a-typedef? function
10713 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10715 "") inclist="sys/types.h";;
10717 eval "varval=\$$var";
10721 for inc in $inclist; do
10722 echo "#include <$inc>" >>temp.c;
10724 echo "#ifdef $type" >> temp.c;
10725 echo "printf(\"We have $type\");" >> temp.c;
10726 echo "#endif" >> temp.c;
10727 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10728 if $contains $type temp.E >/dev/null 2>&1; then
10729 eval "$var=\$type";
10734 *) eval "$var=\$varval";;
10737 : define an is-a-typedef? function that prompts if the type is not available.
10738 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10740 "") inclist="sys/types.h";;
10742 eval "varval=\$$var";
10746 for inc in $inclist; do
10747 echo "#include <$inc>" >>temp.c;
10749 echo "#ifdef $type" >> temp.c;
10750 echo "printf(\"We have $type\");" >> temp.c;
10751 echo "#endif" >> temp.c;
10752 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10754 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10755 if $contains $type temp.E >/dev/null 2>&1; then
10756 echo "$type found." >&4;
10757 eval "$var=\$type";
10759 echo "$type NOT found." >&4;
10765 *) eval "$var=\$varval";;
10768 : see if this is a sys/times.h system
10769 set sys/times.h i_systimes
10772 : see if times exists
10774 if set times val -f d_times; eval $csym; $val; then
10775 echo 'times() found.' >&4
10778 case "$i_systimes" in
10779 "$define") inc='sys/times.h';;
10781 rp="What is the type returned by times() on this system?"
10782 set clock_t clocktype long stdio.h sys/types.h $inc
10785 echo 'times() NOT found, hope that will do.' >&4
10790 : see if truncate exists
10791 set truncate d_truncate
10794 : see if tzname[] exists
10796 if set tzname val -a d_tzname; eval $csym; $val; then
10798 echo 'tzname[] found.' >&4
10801 echo 'tzname[] NOT found.' >&4
10806 : see if umask exists
10810 : see if ustat exists
10814 : backward compatibility for d_hvfork
10815 if test X$d_hvfork != X; then
10816 d_vfork="$d_hvfork"
10819 : see if there is a vfork
10824 : Ok, but do we want to use it. vfork is reportedly unreliable in
10825 : perl on Solaris 2.x, and probably elsewhere.
10829 case "$usevfork" in
10835 Perl can only use a vfork() that doesn't suffer from strict
10836 restrictions on calling functions or modifying global data in
10837 the child. For example, glibc-2.1 contains such a vfork()
10838 that is unsuitable. If your system provides a proper fork()
10839 call, chances are that you do NOT want perl to use vfork().
10842 rp="Do you still want to use vfork()?"
10847 echo "Ok, we won't use vfork()."
10856 $define) usevfork='true';;
10857 *) usevfork='false';;
10860 : see if this is an sysdir system
10861 set sys/dir.h i_sysdir
10864 : see if this is an sysndir system
10865 set sys/ndir.h i_sysndir
10868 : see if closedir exists
10869 set closedir d_closedir
10872 case "$d_closedir" in
10875 echo "Checking whether closedir() returns a status..." >&4
10876 cat > closedir.c <<EOM
10877 #$i_dirent I_DIRENT /**/
10878 #$i_sysdir I_SYS_DIR /**/
10879 #$i_sysndir I_SYS_NDIR /**/
10880 #$i_systypes I_SYS_TYPES /**/
10882 #if defined(I_SYS_TYPES)
10883 #include <sys/types.h>
10885 #if defined(I_DIRENT)
10886 #include <dirent.h>
10887 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10888 #include <sys/dir.h>
10892 #include <sys/ndir.h>
10896 #include <ndir.h> /* may be wrong in the future */
10898 #include <sys/dir.h>
10903 int main() { return closedir(opendir(".")); }
10906 if eval $compile_ok; then
10907 if ./closedir > /dev/null 2>&1 ; then
10908 echo "Yes, it does."
10911 echo "No, it doesn't."
10915 echo "(I can't seem to compile the test program--assuming it doesn't)"
10923 set d_void_closedir
10926 : check for volatile keyword
10928 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10929 $cat >try.c <<'EOCP'
10932 typedef struct _goo_struct goo_struct;
10933 goo_struct * volatile goo = ((goo_struct *)0);
10934 struct _goo_struct {
10939 typedef unsigned short foo_t;
10940 char *volatile foo;
10942 volatile foo_t blech;
10946 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10948 echo "Yup, it does."
10951 echo "Nope, it doesn't."
10957 : see if there is a wait4
10961 : see if waitpid exists
10962 set waitpid d_waitpid
10965 : see if wcstombs exists
10966 set wcstombs d_wcstombs
10969 : see if wctomb exists
10970 set wctomb d_wctomb
10973 : preserve RCS keywords in files with variable substitution, grrr
10978 Revision='$Revision'
10980 case "$crosscompile" in
10981 ''|[nN]*) crosscompile="$undef" ;;
10985 next|rhapsody) multiarch="$define" ;;
10987 case "$multiarch" in
10988 ''|[nN]*) multiarch="$undef" ;;
10991 : check for alignment requirements
10993 case "$crosscompile$multiarch" in
10996 You seem to be either cross-compiling or doing a multiarchitecture build,
10997 skipping the memory alignment check.
11000 case "$alignbytes" in
11001 '') alignbytes=8 ;;
11005 case "$alignbytes" in
11006 '') echo "Checking alignment constraints..." >&4
11007 $cat >try.c <<'EOCP'
11014 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
11018 if eval $compile_ok; then
11022 echo "(I can't seem to compile the test program...)"
11025 *) dflt="$alignbytes"
11028 rp="Doubles must be aligned on a how-many-byte boundary?"
11036 : check for ordering of bytes in a long
11038 case "$crosscompile$multiarch" in
11041 You seem to be either cross-compiling or doing a multiarchitecture build,
11042 skipping the byteorder check.
11048 case "$byteorder" in
11051 In the following, larger digits indicate more significance. A big-endian
11052 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11053 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11054 machines may have weird orders like 3412. A Cray will report 87654321,
11055 an Alpha will report 12345678. If the test program works the default is
11057 I'm now running the test program...
11059 $cat >try.c <<'EOCP'
11066 char c[sizeof(long)];
11069 if (sizeof(long) > 4)
11070 u.l = (0x08070605L << 32) | 0x04030201L;
11073 for (i = 0; i < sizeof(long); i++)
11074 printf("%c", u.c[i]+'0');
11081 if eval $compile && ./try > /dev/null; then
11084 [1-4][1-4][1-4][1-4]|12345678|87654321)
11085 echo "(The test program ran ok.)"
11086 echo "byteorder=$dflt"
11089 ????|????????) echo "(The test program ran ok.)" ;;
11090 *) echo "(The test program didn't run right for some reason.)" ;;
11095 (I can't seem to compile the test program. Guessing big-endian...)
11098 case "$xxx_prompt" in
11100 rp="What is the order of bytes in a long?"
11114 : how do we catenate cpp tokens here?
11116 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11117 $cat >cpp_stuff.c <<'EOCP'
11118 #define RCAT(a,b)a/**/b
11119 #define ACAT(a,b)a ## b
11123 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11124 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11125 echo "Oh! Smells like ANSI's been here." >&4
11126 echo "We can catify or stringify, separately or together!"
11128 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11129 echo "Ah, yes! The good old days!" >&4
11130 echo "However, in the good old days we don't know how to stringify and"
11131 echo "catify at the same time."
11135 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11136 to have to edit the values of CAT[2-5] in config.h...
11138 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11142 : see if this is a db.h system
11148 : Check db version.
11150 echo "Checking Berkeley DB version ..." >&4
11156 #include <sys/types.h>
11161 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11162 int Major, Minor, Patch ;
11163 unsigned long Version ;
11164 (void)db_version(&Major, &Minor, &Patch) ;
11165 printf("You have Berkeley DB Version 2 or greater\n");
11167 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11168 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11169 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11170 Major, Minor, Patch) ;
11172 /* check that db.h & libdb are compatible */
11173 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11174 printf("db.h and libdb are incompatible\n") ;
11178 printf("db.h and libdb are compatible\n") ;
11180 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11181 + DB_VERSION_PATCH ;
11183 /* needs to be >= 2.3.4 */
11184 if (Version < 2003004) {
11185 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11186 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11192 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11193 printf("You have Berkeley DB Version 1\n");
11194 exit(0); /* DB version < 2: the coast is clear. */
11196 exit(1); /* <db.h> not Berkeley DB? */
11202 if eval $compile && ./try; then
11203 echo 'Looks OK.' >&4
11205 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11209 : Remove db from list of libraries to use
11210 echo "Removing unusable -ldb from library list" >&4
11211 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11214 echo "libs = $libs" >&4
11224 : Check the return type needed for hash
11226 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11232 #include <sys/types.h>
11235 #ifndef DB_VERSION_MAJOR
11236 u_int32_t hash_cb (ptr, size)
11244 info.hash = hash_cb;
11248 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11249 if $contains warning try.out >>/dev/null 2>&1 ; then
11252 db_hashtype='u_int32_t'
11255 : XXX Maybe we should just give up here.
11256 db_hashtype=u_int32_t
11258 echo "Help: I can't seem to compile the db test program." >&4
11259 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11262 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11264 *) db_hashtype=u_int32_t
11269 : Check the return type needed for prefix
11271 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11277 #include <sys/types.h>
11280 #ifndef DB_VERSION_MAJOR
11281 size_t prefix_cb (key1, key2)
11289 info.prefix = prefix_cb;
11293 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11294 if $contains warning try.out >>/dev/null 2>&1 ; then
11295 db_prefixtype='int'
11297 db_prefixtype='size_t'
11300 db_prefixtype='size_t'
11301 : XXX Maybe we should just give up here.
11303 echo "Help: I can't seem to compile the db test program." >&4
11304 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11307 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11309 *) db_prefixtype='size_t'
11313 : check for void type
11315 echo "Checking to see how well your C compiler groks the void type..." >&4
11316 case "$voidflags" in
11318 $cat >try.c <<'EOCP'
11324 extern void moo(); /* function returning void */
11325 void (*goo)(); /* ptr to func returning void */
11327 void *hue; /* generic ptr */
11340 int main() { sub(); }
11342 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11343 voidflags=$defvoidused
11344 echo "Good. It appears to support void to the level $package wants.">&4
11345 if $contains warning .out >/dev/null 2>&1; then
11346 echo "However, you might get some warnings that look like this:"
11350 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11351 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11352 echo "It supports 1..."
11353 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11354 echo "It also supports 2..."
11355 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11357 echo "And it supports 4 but not 8 definitely."
11359 echo "It doesn't support 4..."
11360 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11362 echo "But it supports 8."
11365 echo "Neither does it support 8."
11369 echo "It does not support 2..."
11370 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11372 echo "But it supports 4 and 8."
11374 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11376 echo "And it supports 4 but has not heard about 8."
11378 echo "However it supports 8 but not 4."
11383 echo "There is no support at all for void."
11388 case "$voidflags" in
11390 *) $cat >&4 <<'EOM'
11391 Support flag bits are:
11392 1: basic void declarations.
11393 2: arrays of pointers to functions returning void.
11394 4: operations between pointers to and addresses of void functions.
11395 8: generic void pointers.
11398 rp="Your void support flags add up to what?"
11406 : How can we generate normalized random numbers ?
11408 echo "Looking for a random number function..." >&4
11409 case "$randfunc" in
11411 if set drand48 val -f; eval $csym; $val; then
11413 echo "Good, found drand48()." >&4
11414 elif set random val -f; eval $csym; $val; then
11416 echo "OK, found random()." >&4
11419 echo "Yick, looks like I have to use rand()." >&4
11430 *-Dmy_rand=*|*-Dmy_srand=*)
11431 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11432 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11433 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11434 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11438 while $test "$cont"; do
11439 rp="Use which function to generate random numbers?"
11441 if $test "$ans" = "$dflt"; then
11447 if set $ans val -f; eval $csym; $val; then
11451 rp="I cannot find function $ans. Use that name anyway?"
11460 case "$randfunc" in
11462 drand01="drand48()"
11468 case "$randbits" in
11470 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11472 #$i_unistd I_UNISTD
11473 #$i_stdlib I_STDLIB
11476 # include <unistd.h>
11479 # include <stdlib.h>
11484 register unsigned long tmp;
11485 register unsigned long max = 0L;
11487 for (i = 1000; i; i--) {
11488 tmp = (unsigned long) $randfunc();
11489 if (tmp > max) max = tmp;
11491 for (i = 0; max; i++)
11497 if eval $compile_ok; then
11501 echo "(I can't seem to compile the test program...)"
11508 rp="How many bits does your $randfunc() function produce?"
11512 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11513 seedfunc="s$randfunc"
11514 randseedtype=unsigned
11518 rp="How many bits does your $randfunc() function produce?"
11521 seedfunc="s$randfunc"
11522 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11523 if set $seedfunc val -f; eval $csym; $val; then
11524 echo "(Using $seedfunc() to seed random generator)"
11526 echo "(Warning: no $seedfunc() to seed random generator)"
11529 randseedtype=unsigned
11537 echo "Determining whether or not we are on an EBCDIC system..." >&4
11538 $cat >tebcdic.c <<'EOM'
11541 if ('M'==0xd4) return 0;
11548 if eval $compile_ok; then
11550 echo "You have EBCDIC." >&4
11553 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
11556 echo "I'm unable to compile the test program." >&4
11557 echo "I'll assume ASCII or some ISO Latin." >&4
11559 $rm -f tebcdic.c tebcdic
11565 Checking how to flush all pending stdio output...
11567 # I only know how to find the first 32 possibly open files on SunOS.
11568 # See also hints/sunos_4_1.sh and util.c --AD
11570 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11572 $cat >>try.c <<EOCP
11574 #$i_unistd I_UNISTD
11576 # include <unistd.h>
11578 #$d_sysconf HAS_SYSCONF
11579 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11580 #ifdef HAS_STDIO_STREAM_ARRAY
11581 # define STDIO_STREAM_ARRAY $stdio_stream_array
11584 FILE* p = fopen("try.out", "w");
11588 # ifdef TRY_FPRINTF
11592 #ifdef TRY_FFLUSH_NULL
11595 #ifdef TRY_FFLUSH_ALL
11597 long open_max = -1;
11598 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11599 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11601 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11602 open_max = sysconf(_SC_OPEN_MAX);
11605 open_max = FOPEN_MAX;
11608 open_max = OPEN_MAX;
11617 # ifdef HAS_STDIO_STREAM_ARRAY
11618 if (open_max > 0) {
11620 for (i = 0; i < open_max; i++)
11621 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11622 STDIO_STREAM_ARRAY[i]._file < open_max &&
11623 STDIO_STREAM_ARRAY[i]._flag)
11624 fflush(&STDIO_STREAM_ARRAY[i]);
11632 : first we have to find out how _not_ to flush
11633 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11635 set try -DTRY_FPUTC
11636 if eval $compile; then
11638 ./try$exe_ext 2>/dev/null
11639 if $test ! -s try.out -a "X$?" = X42; then
11645 set try -DTRY_FPRINTF
11647 if eval $compile; then
11649 ./try$exe_ext 2>/dev/null
11650 if $test ! -s try.out -a "X$?" = X42; then
11651 output=-DTRY_FPRINTF
11657 : check for fflush NULL behaviour
11658 case "$fflushNULL" in
11659 '') set try -DTRY_FFLUSH_NULL $output
11660 if eval $compile; then
11662 ./try$exe_ext 2>/dev/null
11664 if $test -s try.out -a "X$code" = X42; then
11665 fflushNULL="`$cat try.out`"
11667 if $test "X$code" != X42; then
11669 (If this test failed, don't worry, we'll try another method shortly.)
11674 $rm -f core try.core core.try.*
11675 case "$fflushNULL" in
11677 Your fflush(NULL) works okay.
11679 fflushNULL="$define"
11682 Your fflush(NULL) isn't working (contrary to ANSI C).
11684 fflushNULL="$undef"
11687 Cannot figure out whether your fflush(NULL) works or not.
11688 I'm assuming it doesn't (contrary to ANSI C).
11690 fflushNULL="$undef"
11694 $define|true|[yY]*)
11695 fflushNULL="$define"
11698 fflushNULL="$undef"
11701 : check explicit looping only if NULL did not work
11702 case "$fflushNULL" in
11704 : check for fflush all behaviour
11705 case "$fflushall" in
11706 '') set try -DTRY_FFLUSH_ALL $output
11707 if eval $compile; then
11709 (Now testing the other method--but note that also this may fail.)
11712 ./try$exe_ext 2>/dev/null
11713 if $test -s try.out -a "X$?" = X42; then
11714 fflushall="`$cat try.out`"
11717 $rm -f core try.core core.try.*
11718 case "$fflushall" in
11720 Whew. Flushing explicitly all the stdio streams works.
11722 fflushall="$define"
11725 Sigh. Flushing explicitly all the stdio streams doesn't work.
11730 Cannot figure out whether flushing stdio streams explicitly works or not.
11731 I'm assuming it doesn't.
11737 "$define"|true|[yY]*)
11738 fflushall="$define"
11745 *) fflushall="$undef"
11748 case "$fflushNULL$fflushall" in
11751 I cannot figure out how to flush pending stdio output.
11755 $rm -f try.* try$exe_ext
11757 : see what type file positions are declared as in the library
11758 rp="What is the type for file position used by fsetpos()?"
11759 set fpos_t fpostype long stdio.h sys/types.h
11762 : Store the full pathname to the ar program for use in the C program
11763 : Respect a hint or command line value for full_ar.
11768 : Store the full pathname to the sed program for use in the C program
11771 : see what type gids are declared as in the kernel
11773 echo "Looking for the type for group ids returned by getgid()."
11774 set gid_t gidtype xxx stdio.h sys/types.h
11778 xxx=`./findhdr sys/user.h`
11779 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11781 unsigned) dflt="$1 $2" ;;
11785 *) dflt="$gidtype";;
11788 gid_t) echo "gid_t found." ;;
11789 *) rp="What is the type for group ids returned by getgid()?"
11797 *_t) zzz="$gidtype" ;;
11800 echo "Checking the sign of $zzz..." >&4
11802 #include <sys/types.h>
11813 if eval $compile; then
11817 echo "(I can't execute the test program--guessing unsigned.)" >&4
11821 1) echo "Your $zzz is unsigned." ;;
11822 -1) echo "Your $zzz is signed." ;;
11828 echo "(I can't compile the test program--guessing unsigned.)" >&4
11834 *_t) zzz="$gidtype" ;;
11837 echo "Checking the size of $zzz..." >&4
11839 #include <sys/types.h>
11842 printf("%d\n", sizeof($gidtype));
11846 if eval $compile_ok; then
11850 echo "(I can't execute the test program--guessing $gidsize.)" >&4
11853 echo "Your $zzz size is $gidsize bytes."
11858 echo "(I can't compile the test program--guessing $gidsize.)" >&4
11862 : see if getgroups exists
11863 set getgroups d_getgrps
11866 : see if setgroups exists
11867 set setgroups d_setgrps
11871 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11873 case "$d_getgrps$d_setgrps" in
11875 case "$groupstype" in
11876 '') dflt="$gidtype" ;;
11877 *) dflt="$groupstype" ;;
11880 What type of pointer is the second argument to getgroups() and setgroups()?
11881 Usually this is the same as group ids, $gidtype, but not always.
11884 rp='What type pointer is the second argument to getgroups() and setgroups()?'
11888 *) groupstype="$gidtype";;
11891 : see what type lseek is declared as in the kernel
11892 rp="What is the type used for lseek's offset on this system?"
11893 set off_t lseektype long stdio.h sys/types.h
11897 $echo $n "Checking to see how big your file offsets are...$c" >&4
11899 #include <sys/types.h>
11903 printf("%d\n", sizeof($lseektype));
11907 if eval $compile_ok; then
11909 $echo " $lseeksize bytes." >&4
11913 echo "(I can't seem to compile the test program. Guessing...)"
11914 rp="What is the size of your file offsets (in bytes)?"
11921 echo "Checking if your $make program sets \$(MAKE)..." >&4
11922 case "$make_set_make" in
11924 $sed 's/^X //' > testmake.mak << 'EOF'
11926 X @echo 'maketemp="$(MAKE)"'
11928 case "`$make -f testmake.mak 2>/dev/null`" in
11929 *maketemp=*) make_set_make='#' ;;
11930 *) make_set_make="MAKE=$make" ;;
11932 $rm -f testmake.mak
11935 case "$make_set_make" in
11936 '#') echo "Yup, it does.";;
11937 *) echo "Nope, it doesn't.";;
11940 : see what type is used for mode_t
11941 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11942 set mode_t modetype int stdio.h sys/types.h
11945 : define a fucntion to check prototypes
11946 $cat > protochk <<EOSH
11949 optimize="$optimize"
11951 prototype="$prototype"
11956 $cat >> protochk <<'EOSH'
11961 while test $# -ge 2; do
11963 $define) echo "#include <$2>" >> try.c ;;
11964 literal) echo "$2" >> try.c ;;
11968 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11969 cat >> try.c <<'EOCP'
11970 #ifdef CAN_PROTOTYPE
11971 #define _(args) args
11976 echo "$foo" >> try.c
11977 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11978 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11984 $eunicefix protochk
11986 : see what type is used for size_t
11987 rp="What is the type used for the length parameter for string functions?"
11988 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11991 : check for type of arguments to gethostbyaddr.
11992 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11993 case "$d_gethbyaddr" in
11997 Checking to see what type of arguments are accepted by gethostbyaddr().
11999 hdrs="$define sys/types.h
12000 $d_socket sys/socket.h
12001 $i_niin netinet/in.h
12003 $i_unistd unistd.h"
12004 : The first arg can 'char *' or 'void *'
12005 : The second arg is some of integral type
12006 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12007 for yyy in size_t long int; do
12008 case "$netdb_host_type" in
12009 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12010 if ./protochk "$try" $hdrs; then
12011 echo "Your system accepts $xxx for the first arg."
12012 echo "...and $yyy for the second arg."
12013 netdb_host_type="$xxx"
12014 netdb_hlen_type="$yyy"
12020 : In case none of those worked, prompt the user.
12021 case "$netdb_host_type" in
12022 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12025 netdb_host_type=$ans
12026 rp='What is the type for the 2nd argument to gethostbyaddr?'
12029 netdb_hlen_type=$ans
12033 *) : no gethostbyaddr, so pick harmless defaults
12034 netdb_host_type='char *'
12035 netdb_hlen_type="$sizetype"
12038 # Remove the "const" if needed. -- but then we'll have a
12040 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12043 : check for type of argument to gethostbyname.
12044 if test "X$netdb_name_type" = X ; then
12045 case "$d_gethbyname" in
12049 Checking to see what type of argument is accepted by gethostbyname().
12051 hdrs="$define sys/types.h
12052 $d_socket sys/socket.h
12053 $i_niin netinet/in.h
12055 $i_unistd unistd.h"
12056 for xxx in "const char *" "char *"; do
12057 case "$netdb_name_type" in
12058 '') try="extern struct hostent *gethostbyname($xxx);"
12059 if ./protochk "$try" $hdrs; then
12060 echo "Your system accepts $xxx."
12061 netdb_name_type="$xxx"
12066 : In case none of those worked, prompt the user.
12067 case "$netdb_name_type" in
12068 '') rp='What is the type for the 1st argument to gethostbyname?'
12071 netdb_name_type=$ans
12075 *) : no gethostbyname, so pick harmless default
12076 netdb_name_type='char *'
12081 : check for type of 1st argument to getnetbyaddr.
12082 if test "X$netdb_net_type" = X ; then
12083 case "$d_getnbyaddr" in
12087 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12089 hdrs="$define sys/types.h
12090 $d_socket sys/socket.h
12091 $i_niin netinet/in.h
12093 $i_unistd unistd.h"
12094 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12095 case "$netdb_net_type" in
12096 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12097 if ./protochk "$try" $hdrs; then
12098 echo "Your system accepts $xxx."
12099 netdb_net_type="$xxx"
12104 : In case none of those worked, prompt the user.
12105 case "$netdb_net_type" in
12106 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12109 netdb_net_type=$ans
12113 *) : no getnetbyaddr, so pick harmless default
12114 netdb_net_type='long'
12118 : locate the preferred pager for this system
12132 '') dflt=/usr/ucb/more;;
12139 rp='What pager is used on your system?'
12143 : see what type pids are declared as in the kernel
12144 rp="What is the type of process ids on this system?"
12145 set pid_t pidtype int stdio.h sys/types.h
12148 : Find earliest binary compatible site_perl subdirectory perl can use.
12149 case "$bincompat5005" in
12150 "$define") xs_apiversion='5.005' ;;
12151 *) xs_apiversion=$apiversion ;; # The current site_perl version.
12153 : Find earliest pure perl site_perl subdirectory perl can use.
12154 : The versioned directories started at 5.005.
12155 pm_apiversion='5.005'
12157 : check for length of pointer
12161 $echo $n "Checking to see how big your pointers are...$c" >&4
12162 if test "$voidflags" -gt 7; then
12163 echo '#define VOID_PTR char *' > try.c
12165 echo '#define VOID_PTR void *' > try.c
12167 $cat >>try.c <<'EOCP'
12171 printf("%d\n", sizeof(VOID_PTR));
12176 if eval $compile_ok; then
12178 $echo " $ptrsize bytes." >&4
12181 echo "(I can't seem to compile the test program. Guessing...)" >&4
12182 rp="What is the size of a pointer (in bytes)?"
12190 : see if ar generates random libraries by itself
12192 echo "Checking how to generate random libraries on your machine..." >&4
12193 echo 'int bar1() { return bar2(); }' > bar1.c
12194 echo 'int bar2() { return 2; }' > bar2.c
12195 $cat > foo.c <<'EOP'
12196 int main() { printf("%d\n", bar1()); exit(0); }
12198 $cc $ccflags -c bar1.c >/dev/null 2>&1
12199 $cc $ccflags -c bar2.c >/dev/null 2>&1
12200 $cc $ccflags -c foo.c >/dev/null 2>&1
12201 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12202 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12203 ./foobar >/dev/null 2>&1; then
12204 echo "$ar appears to generate random libraries itself."
12207 elif $ar ts bar$_a >/dev/null 2>&1 &&
12208 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12209 ./foobar >/dev/null 2>&1; then
12210 echo "a table of contents needs to be added with '$ar ts'."
12217 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12218 $test -f $ranlib || ranlib=''
12221 if $test -n "$ranlib"; then
12222 echo "your system has '$ranlib'; we'll use that."
12225 echo "your system doesn't seem to support random libraries"
12226 echo "so we'll use lorder and tsort to order the libraries."
12233 : check for type of arguments to select.
12234 case "$selecttype" in
12235 '') case "$d_select" in
12238 Checking to see what type of arguments are accepted by select().
12240 hdrs="$define sys/types.h
12241 $i_systime sys/time.h
12242 $i_sysselct sys/select.h
12243 $d_socket sys/socket.h"
12244 : The first arg can be int, unsigned, or size_t
12245 : The last arg may or may not be 'const'
12247 : void pointer has been seen but using that
12248 : breaks the selectminbits test
12249 for xxx in 'fd_set *' 'int *'; do
12250 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12251 for tmo in 'struct timeval *' 'const struct timeval *'; do
12253 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12254 if ./protochk "$try" $hdrs; then
12255 echo "Your system accepts $xxx."
12264 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12265 case "$d_fd_set" in
12266 $define) dflt="fd_set *" ;;
12275 *) : no select, so pick a harmless default
12282 : check for the select 'width'
12283 case "$selectminbits" in
12284 '') case "$d_select" in
12288 Checking to see on how many bits at a time your select() operates...
12291 #include <sys/types.h>
12293 #$i_systime I_SYS_TIME
12294 #$i_systimek I_SYS_TIME_KERNEL
12299 # ifdef I_SYS_TIME_KERNEL
12302 # include <sys/time.h>
12303 # ifdef I_SYS_TIME_KERNEL
12307 #$i_sysselct I_SYS_SELECT
12308 #ifdef I_SYS_SELECT
12309 #include <sys/select.h>
12311 #$d_socket HAS_SOCKET
12313 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12317 #define S sizeof(*(b))
12319 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12320 #define NBITS (NBYTES * 8)
12329 fp = fopen("try.c", "r");
12335 b = ($selecttype)s;
12336 for (i = 0; i < NBITS; i++)
12340 select(fd + 1, b, 0, 0, &t);
12341 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
12342 printf("%d\n", i + 1);
12347 if eval $compile_ok; then
12348 selectminbits=`./try`
12349 case "$selectminbits" in
12351 Cannot figure out on how many bits at a time your select() operates.
12352 I'll play safe and guess it is 32 bits.
12358 *) bits="$selectminbits bits" ;;
12360 echo "Your select() operates on $bits at a time." >&4
12362 rp='What is the minimum number of bits your select() operates on?'
12363 case "$byteorder" in
12364 1234|12345678) dflt=32 ;;
12369 selectminbits="$val"
12373 *) : no select, so pick a harmless default
12380 : Trace out the files included by signal.h, then look for SIGxxx names.
12381 : Remove SIGARRAYSIZE used by HPUX.
12382 : Remove SIGSTKSIZE used by Linux.
12383 : Remove SIGSTKSZ used by Posix.
12384 : Remove SIGTYP void lines used by OS2.
12385 xxx=`echo '#include <signal.h>' |
12386 $cppstdin $cppminus $cppflags 2>/dev/null |
12387 $grep '^[ ]*#.*include' |
12388 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
12389 : Check this list of files to be sure we have parsed the cpp output ok.
12390 : This will also avoid potentially non-existent files, such
12393 for xx in $xxx /dev/null ; do
12394 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
12396 : If we have found no files, at least try signal.h
12397 case "$xxxfiles" in
12398 '') xxxfiles=`./findhdr signal.h` ;;
12401 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
12402 print substr($2, 4, 20)
12404 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
12405 print substr($3, 4, 20)
12407 : Append some common names just in case the awk scan failed.
12408 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
12409 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
12410 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
12411 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
12412 : generate a few handy files for later
12413 $cat > signal.c <<'EOCP'
12414 #include <sys/types.h>
12415 #include <signal.h>
12419 /* Strange style to avoid deeply-nested #if/#else/#endif */
12422 # define NSIG (_NSIG)
12428 # define NSIG (SIGMAX+1)
12434 # define NSIG (SIG_MAX+1)
12440 # define NSIG (MAXSIG+1)
12446 # define NSIG (MAX_SIG+1)
12451 # ifdef SIGARRAYSIZE
12452 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
12458 # define NSIG (_sys_nsig) /* Solaris 2.5 */
12462 /* Default to some arbitrary number that's big enough to get most
12463 of the common signals.
12469 printf("NSIG %d\n", NSIG);
12475 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
12477 printf "#ifdef SIG"; printf $1; printf "\n"
12478 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
12479 printf $1; printf ");\n"
12483 printf "#endif /* JUST_NSIG */\n";
12487 $cat >signal.awk <<'EOP'
12488 BEGIN { ndups = 0 }
12489 $1 ~ /^NSIG$/ { nsig = $2 }
12490 ($1 !~ /^NSIG$/) && (NF == 2) {
12491 if ($2 > maxsig) { maxsig = $2 }
12492 if (sig_name[$2]) {
12493 dup_name[ndups] = $1
12494 dup_num[ndups] = $2
12506 printf("NSIG %d\n", nsig);
12507 for (n = 1; n < nsig; n++) {
12509 printf("%s %d\n", sig_name[n], sig_num[n])
12512 printf("NUM%d %d\n", n, n)
12515 for (n = 0; n < ndups; n++) {
12516 printf("%s %d\n", dup_name[n], dup_num[n])
12520 $cat >signal_cmd <<EOS
12522 if $test -s signal.lst; then
12523 echo "Using your existing signal.lst file"
12528 $cat >>signal_cmd <<'EOS'
12531 if eval $compile_ok; then
12532 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12534 echo "(I can't seem be able to compile the whole test program)" >&4
12535 echo "(I'll try it in little pieces.)" >&4
12536 set signal -DJUST_NSIG
12537 if eval $compile_ok; then
12538 ./signal$_exe > signal.nsg
12541 echo "I can't seem to figure out how many signals you have." >&4
12542 echo "Guessing 50." >&4
12543 echo 'NSIG 50' > signal.nsg
12545 : Now look at all the signal names, one at a time.
12546 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
12547 $cat > signal.c <<EOCP
12548 #include <sys/types.h>
12549 #include <signal.h>
12552 printf("$xx %d\n", SIG${xx});
12557 if eval $compile; then
12558 echo "SIG${xx} found."
12559 ./signal$_exe >> signal.ls1
12561 echo "SIG${xx} NOT found."
12564 if $test -s signal.ls1; then
12565 $cat signal.nsg signal.ls1 |
12566 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
12570 if $test -s signal.lst; then
12573 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
12574 echo 'kill -l' >signal
12575 set X `csh -f <signal`
12579 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
12581 echo $@ | $tr ' ' $trnl | \
12582 $awk '{ printf "%s %d\n", $1, ++s; }
12583 END { printf "NSIG %d\n", ++s }' >signal.lst
12585 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
12587 chmod a+x signal_cmd
12588 $eunicefix signal_cmd
12590 : generate list of signal names
12592 case "$sig_name_init" in
12594 *) case "$sig_num_init" in
12595 ''|*,*) doinit=yes ;;
12600 echo "Generating a list of signal names and numbers..." >&4
12602 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
12603 sig_name=`$awk 'BEGIN { printf "ZERO " }
12604 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
12605 sig_num=`$awk 'BEGIN { printf "0 " }
12606 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
12607 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
12608 !/^NSIG/ { printf "\"%s\", ", $1 }
12609 END { printf "0\n" }' signal.lst`
12610 sig_num_init=`$awk 'BEGIN { printf "0, " }
12611 !/^NSIG/ { printf "%d, ", $2}
12612 END { printf "0\n"}' signal.lst`
12615 echo "The following $sig_count signals are available:"
12617 echo $sig_name | $awk \
12618 'BEGIN { linelen = 0 }
12620 for (i = 1; i <= NF; i++) {
12621 name = "SIG" $i " "
12622 linelen = linelen + length(name)
12623 if (linelen > 70) {
12625 linelen = length(name)
12631 $rm -f signal signal.c signal.awk signal.lst signal_cmd
12633 : see what type is used for signed size_t
12634 set ssize_t ssizetype int stdio.h sys/types.h
12637 $cat > ssize.c <<EOM
12639 #include <sys/types.h>
12640 #define Size_t $sizetype
12641 #define SSize_t $dflt
12644 if (sizeof(Size_t) == sizeof(SSize_t))
12646 else if (sizeof(Size_t) == sizeof(int))
12655 if eval $compile_ok && ./ssize > /dev/null; then
12656 ssizetype=`./ssize`
12657 echo "I'll be using $ssizetype for functions returning a byte count." >&4
12660 Help! I can't compile and run the ssize_t test program: please enlighten me!
12661 (This is probably a misconfiguration in your system or libraries, and
12662 you really ought to fix it. Still, I'll try anyway.)
12664 I need a type that is the same size as $sizetype, but is guaranteed to
12665 be signed. Common values are ssize_t, int and long.
12668 rp="What signed type is the same size as $sizetype?"
12672 $rm -f ssize ssize.*
12674 : see what type of char stdio uses.
12676 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12677 echo "Your stdio uses unsigned chars." >&4
12678 stdchar="unsigned char"
12680 echo "Your stdio uses signed chars." >&4
12684 : see if time exists
12686 if test "X$d_time" = X -o X"$timetype" = X; then
12687 if set time val -f d_time; eval $csym; $val; then
12688 echo 'time() found.' >&4
12690 rp="What is the type returned by time() on this system?"
12691 set time_t timetype long stdio.h sys/types.h
12694 echo 'time() not found, hope that will do.' >&4
12702 : see what type uids are declared as in the kernel
12704 echo "Looking for the type for user ids returned by getuid()."
12705 set uid_t uidtype xxx stdio.h sys/types.h
12709 xxx=`./findhdr sys/user.h`
12710 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12712 unsigned) dflt="$1 $2" ;;
12716 *) dflt="$uidtype";;
12719 uid_t) echo "uid_t found." ;;
12720 *) rp="What is the type for user ids returned by getuid()?"
12728 *_t) zzz="$uidtype" ;;
12731 echo "Checking the sign of $zzz..." >&4
12733 #include <sys/types.h>
12744 if eval $compile; then
12748 echo "(I can't execute the test program--guessing unsigned.)" >&4
12752 1) echo "Your $zzz is unsigned." ;;
12753 -1) echo "Your $zzz is signed." ;;
12759 echo "(I can't compile the test program--guessing unsigned.)" >&4
12765 *_t) zzz="$uidtype" ;;
12768 echo "Checking the size of $zzz..." >&4
12770 #include <sys/types.h>
12773 printf("%d\n", sizeof($uidtype));
12777 if eval $compile_ok; then
12781 echo "(I can't execute the test program--guessing $uidsize.)" >&4
12784 echo "Your $zzz size is $uidsize bytes."
12789 echo "(I can't compile the test program--guessing $uidsize.)" >&4
12792 : see if dbm.h is available
12793 : see if dbmclose exists
12794 set dbmclose d_dbmclose
12797 case "$d_dbmclose" in
12807 *) set rpcsvc/dbm.h i_rpcsvcdbm
12812 *) echo "We won't be including <dbm.h>"
12822 : see if this is a sys/file.h system
12827 : do we need to include sys/file.h ?
12831 if $h_sysfile; then
12833 echo "We'll be including <sys/file.h>." >&4
12836 echo "We won't be including <sys/file.h>." >&4
12846 : see if fcntl.h is there
12851 : see if we can include fcntl.h
12857 echo "We'll be including <fcntl.h>." >&4
12860 if $h_sysfile; then
12861 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12863 echo "We won't be including <fcntl.h>." >&4
12875 : see if locale.h is available
12876 set locale.h i_locale
12879 : see if mach cthreads are available
12880 if test "X$usethreads" = "X$define"; then
12881 set mach/cthreads.h i_machcthr
12884 i_machcthr="$undef"
12889 : see if this is a math.h system
12893 : see if this is a mntent.h system
12894 set mntent.h i_mntent
12897 : see if ndbm.h is available
12902 : see if dbm_open exists
12903 set dbm_open d_dbm_open
12905 case "$d_dbm_open" in
12908 echo "We won't be including <ndbm.h>"
12917 : see if net/errno.h is available
12919 set net/errno.h val
12922 : Unfortunately, it causes problems on some systems. Arrgh.
12925 cat > try.c <<'EOM'
12928 #include <net/errno.h>
12934 if $cc $ccflags -c try.c >/dev/null 2>&1; then
12935 echo "We'll be including <net/errno.h>." >&4
12937 echo "We won't be including <net/errno.h>." >&4
12946 : see if netinet/tcp.h is available
12947 set netinet/tcp.h i_netinettcp
12950 : see if this is a poll.h system
12954 : get C preprocessor symbols handy
12956 $echo $n "Hmm... $c"
12957 echo $al | $tr ' ' $trnl >Cppsym.know
12958 $cat <<EOSS >Cppsym
12966 case "\$list\$#" in
12969 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12971 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12974 unknown="\$unknown \$sym"
12984 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12986 exit 0; _ _ _ _\1\\ \1\\
12989 echo "exit 1; _ _ _" >>Cppsym\$\$
12990 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
12992 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12998 $rm -f Cppsym\$\$ Cppsym2\$\$
13003 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
13005 : now check the C compiler for additional symbols
13006 postprocess_cc_v=''
13008 aix) postprocess_cc_v="|$tr , ' '" ;;
13015 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13018 -D*) echo "\$i" | $sed 's/^-D//';;
13019 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13024 postprocess_cc_v=''
13027 ./ccsym > ccsym1.raw
13028 if $test -s ccsym1.raw; then
13029 $sort ccsym1.raw | $uniq >ccsym.raw
13031 mv ccsym1.raw ccsym.raw
13034 $awk '/\=/ { print $0; next }
13035 { print $0"=1" }' ccsym.raw >ccsym.list
13036 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
13037 $comm -13 ccsym.true ccsym.list >ccsym.own
13038 $comm -12 ccsym.true ccsym.list >ccsym.com
13039 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13041 if $test -z ccsym.raw; then
13042 echo "Your C compiler doesn't seem to define any symbols!" >&4
13044 echo "However, your C preprocessor defines the following symbols:"
13047 cppsymbols=`$cat Cppsym.true`
13048 cppsymbols=`echo $cppsymbols`
13049 cppccsymbols="$cppsymbols"
13051 if $test -s ccsym.com; then
13052 echo "Your C compiler and pre-processor define these symbols:"
13053 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13056 cppccsymbols=`$cat ccsym.com`
13057 cppccsymbols=`echo $cppccsymbols`
13058 $test "$silent" || sleep 1
13060 if $test -s ccsym.cpp; then
13061 $test "$also" && echo " "
13062 echo "Your C pre-processor ${also}defines the following symbols:"
13063 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13065 cppsymbols=`$cat ccsym.cpp`
13066 cppsymbols=`echo $cppsymbols`
13067 $test "$silent" || sleep 1
13069 if $test -s ccsym.own; then
13070 $test "$also" && echo " "
13071 echo "Your C compiler ${also}defines the following cpp symbols:"
13072 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13073 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13074 ccsymbols=`$cat ccsym.own`
13075 ccsymbols=`echo $ccsymbols`
13076 $test "$silent" || sleep 1
13081 : see if this is a termio system
13085 if $test `./findhdr termios.h`; then
13086 set tcsetattr i_termios
13092 "$define") echo "You have POSIX termios.h... good!" >&4;;
13093 *) if ./Cppsym pyr; then
13094 case "`/bin/universe`" in
13095 ucb) if $test `./findhdr sgtty.h`; then
13097 echo "<sgtty.h> found." >&4
13099 echo "System is pyramid with BSD universe."
13100 echo "<sgtty.h> not found--you could have problems." >&4
13102 *) if $test `./findhdr termio.h`; then
13104 echo "<termio.h> found." >&4
13106 echo "System is pyramid with USG universe."
13107 echo "<termio.h> not found--you could have problems." >&4
13111 if $test `./findhdr termio.h`; then
13112 echo "<termio.h> found." >&4
13114 elif $test `./findhdr sgtty.h`; then
13115 echo "<sgtty.h> found." >&4
13118 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13121 if $test `./findhdr sgtty.h`; then
13122 echo "<sgtty.h> found." >&4
13124 elif $test `./findhdr termio.h`; then
13125 echo "<termio.h> found." >&4
13128 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13132 set i_termio; eval $setvar
13133 val=$val2; set i_sgtty; eval $setvar
13134 val=$val3; set i_termios; eval $setvar
13136 : see if this is a shadow.h system
13137 set shadow.h i_shadow
13140 : see if this is a socks.h system
13141 set socks.h i_socks
13144 : see if stdarg is available
13146 if $test `./findhdr stdarg.h`; then
13147 echo "<stdarg.h> found." >&4
13150 echo "<stdarg.h> NOT found." >&4
13154 : see if varags is available
13156 if $test `./findhdr varargs.h`; then
13157 echo "<varargs.h> found." >&4
13159 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13162 : set up the varargs testing programs
13163 $cat > varargs.c <<EOP
13165 #include <stdarg.h>
13168 #include <varargs.h>
13172 int f(char *p, ...)
13186 p = va_arg(ap, char *);
13191 $cat > varargs <<EOP
13193 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13202 : now check which varargs header should be included
13207 if `./varargs I_STDARG`; then
13209 elif `./varargs I_VARARGS`; then
13214 if `./varargs I_VARARGS`; then
13221 echo "I could not find the definition for va_dcl... You have problems..." >&4
13222 val="$undef"; set i_stdarg; eval $setvar
13223 val="$undef"; set i_varargs; eval $setvar
13228 case "$i_varhdr" in
13230 val="$define"; set i_stdarg; eval $setvar
13231 val="$undef"; set i_varargs; eval $setvar
13234 val="$undef"; set i_stdarg; eval $setvar
13235 val="$define"; set i_varargs; eval $setvar
13238 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13242 : see if stddef is available
13243 set stddef.h i_stddef
13246 : see if sys/access.h is available
13247 set sys/access.h i_sysaccess
13250 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
13251 set sys/filio.h i_sysfilio
13254 if $test `./findhdr sys/ioctl.h`; then
13256 echo '<sys/ioctl.h> found.' >&4
13259 if $test $i_sysfilio = "$define"; then
13260 echo '<sys/ioctl.h> NOT found.' >&4
13262 $test $i_sgtty = "$define" && xxx="sgtty.h"
13263 $test $i_termio = "$define" && xxx="termio.h"
13264 $test $i_termios = "$define" && xxx="termios.h"
13265 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
13271 : see if sys/resource.h has to be included
13272 set sys/resource.h i_sysresrc
13275 : see if sys/security.h is available
13276 set sys/security.h i_syssecrt
13279 : see if this is a sys/statvfs.h system
13280 set sys/statvfs.h i_sysstatvfs
13283 : see if this is a sys/uio.h system
13284 set sys/uio.h i_sysuio
13287 echo "Checking to see if your system supports struct iovec..." >&4
13288 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
13290 case "$d_iovec_s" in
13291 "$define") echo "Yup, it does." >&4
13293 *) echo "Nope, it doesn't." >&4
13297 : see if this is a sys/un.h system
13298 set sys/un.h i_sysun
13301 : see if this is a syswait system
13302 set sys/wait.h i_syswait
13305 : see if this is a ustat.h system
13306 set ustat.h i_ustat
13309 : see if this is an utime system
13310 set utime.h i_utime
13313 : see if this is a values.h system
13314 set values.h i_values
13317 : see if this is a vfork system
13320 set vfork.h i_vfork
13328 : see if gdbm.h is available
13333 : see if gdbm_open exists
13334 set gdbm_open d_gdbm_open
13336 case "$d_gdbm_open" in
13339 echo "We won't be including <gdbm.h>"
13349 echo "Looking for extensions..." >&4
13350 : If we are using the old config.sh, known_extensions may contain
13351 : old or inaccurate or duplicate values.
13352 known_extensions=''
13353 nonxs_extensions=''
13354 : We do not use find because it might not be available.
13355 : We do not just use MANIFEST because the user may have dropped
13356 : some additional extensions into the source tree and expect them
13359 : Function to recursively find available extensions, ignoring DynaLoader
13360 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
13364 DynaLoader|dynaload) ;;
13366 if $test -f $xxx/$xxx.xs; then
13367 known_extensions="$known_extensions $1$xxx";
13368 elif $test -f $xxx/Makefile.PL; then
13369 nonxs_extensions="$nonxs_extensions $1$xxx";
13371 if $test -d $xxx -a $# -lt 10; then
13374 eval $find_extensions;
13386 eval $find_extensions
13387 set X $nonxs_extensions
13389 nonxs_extensions="$*"
13390 set X $known_extensions
13392 known_extensions="$*"
13395 : Now see which are supported on this system.
13397 for xxx in $known_extensions ; do
13401 $define) avail_ext="$avail_ext $xxx" ;;
13404 GDBM_File|gdbm_fil)
13406 $define) avail_ext="$avail_ext $xxx" ;;
13409 NDBM_File|ndbm_fil)
13411 $define) avail_ext="$avail_ext $xxx" ;;
13414 ODBM_File|odbm_fil)
13415 case "${i_dbm}${i_rpcsvcdbm}" in
13416 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13420 case "$useposix" in
13421 true|define|y) avail_ext="$avail_ext $xxx" ;;
13425 case "$useopcode" in
13426 true|define|y) avail_ext="$avail_ext $xxx" ;;
13430 case "$d_socket" in
13431 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13435 case "$usethreads" in
13436 true|$define|y) avail_ext="$avail_ext $xxx" ;;
13440 : XXX Do we need a useipcsysv variable here
13441 case "${d_msg}${d_sem}${d_shm}" in
13442 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
13445 *) avail_ext="$avail_ext $xxx"
13454 : Now see which nonxs extensions are supported on this system.
13455 : For now assume all are.
13457 for xxx in $nonxs_extensions ; do
13459 *) nonxs_ext="$nonxs_ext $xxx"
13471 A number of extensions are supplied with $package. You may choose to
13472 compile these extensions for dynamic loading (the default), compile
13473 them into the $package executable (static loading), or not include
13474 them at all. Answer "none" to include no extensions.
13475 Note that DynaLoader is always built and need not be mentioned here.
13478 case "$dynamic_ext" in
13479 '') dflt="$avail_ext" ;;
13480 *) dflt="$dynamic_ext"
13481 # Perhaps we are reusing an old out-of-date config.sh.
13484 if test X"$dynamic_ext" != X"$avail_ext"; then
13486 NOTICE: Your previous config.sh list may be incorrect.
13487 The extensions now available to you are
13489 but the default list from your previous config.sh is
13501 rp="What extensions do you wish to load dynamically?"
13504 none) dynamic_ext=' ' ;;
13505 *) dynamic_ext="$ans" ;;
13508 case "$static_ext" in
13510 : Exclude those already listed in dynamic linking
13512 for xxx in $avail_ext; do
13513 case " $dynamic_ext " in
13515 *) dflt="$dflt $xxx" ;;
13522 *) dflt="$static_ext"
13529 rp="What extensions do you wish to load statically?"
13532 none) static_ext=' ' ;;
13533 *) static_ext="$ans" ;;
13538 A number of extensions are supplied with $package. Answer "none"
13539 to include no extensions.
13540 Note that DynaLoader is always built and need not be mentioned here.
13543 case "$static_ext" in
13544 '') dflt="$avail_ext" ;;
13545 *) dflt="$static_ext"
13546 # Perhaps we are reusing an old out-of-date config.sh.
13549 if test X"$static_ext" != X"$avail_ext"; then
13551 NOTICE: Your previous config.sh list may be incorrect.
13552 The extensions now available to you are
13554 but the default list from your previous config.sh is
13563 : Exclude those that are not xs extensions
13567 rp="What extensions do you wish to include?"
13570 none) static_ext=' ' ;;
13571 *) static_ext="$ans" ;;
13576 set X $dynamic_ext $static_ext $nonxs_ext
13580 : Remove build directory name from cppstdin so it can be used from
13581 : either the present location or the final installed location.
13583 : Get out of the UU directory to get correct path name.
13585 case "$cppstdin" in
13587 echo "Stripping down cppstdin path name"
13593 : end of configuration questions
13595 echo "End of configuration questions."
13598 : back to where it started
13599 if test -d ../UU; then
13603 : configuration may be patched via a 'config.over' file
13604 if $test -f config.over; then
13607 rp='I see a config.over file. Do you wish to load it?'
13610 n*) echo "OK, I'll ignore it.";;
13612 echo "Configuration override changes have been loaded."
13617 : in case they want portability, strip down executable paths
13618 case "$d_portable" in
13621 echo "Stripping down executable paths..." >&4
13622 for file in $loclist $trylist; do
13624 eval $file=`basename $temp`
13629 : create config.sh file
13631 echo "Creating config.sh..." >&4
13632 $spitshell <<EOT >config.sh
13635 # This file was produced by running the Configure script. It holds all the
13636 # definitions figured out by Configure. Should you modify one of these values,
13637 # do not forget to propagate your changes by running "Configure -der". You may
13638 # instead choose to run each of the .SH files by yourself, or "Configure -S".
13641 # Package name : $package
13642 # Source directory : $src
13643 # Configuration time: $cf_time
13644 # Configured by : $cf_by
13645 # Target system : $myuname
13655 Revision='$Revision'
13662 alignbytes='$alignbytes'
13663 ansi2knr='$ansi2knr'
13664 aphostname='$aphostname'
13665 apiversion='$apiversion'
13668 archlibexp='$archlibexp'
13669 archname64='$archname64'
13670 archname='$archname'
13671 archobjs='$archobjs'
13676 bincompat5005='$bincompat5005'
13680 byteorder='$byteorder'
13682 castflags='$castflags'
13685 cccdlflags='$cccdlflags'
13686 ccdlflags='$ccdlflags'
13688 ccsymbols='$ccsymbols'
13690 cf_email='$cf_email'
13695 clocktype='$clocktype'
13697 compress='$compress'
13698 contains='$contains'
13702 cpp_stuff='$cpp_stuff'
13703 cppccsymbols='$cppccsymbols'
13704 cppflags='$cppflags'
13706 cppminus='$cppminus'
13708 cppstdin='$cppstdin'
13709 cppsymbols='$cppsymbols'
13710 crosscompile='$crosscompile'
13711 cryptlib='$cryptlib'
13713 d_Gconvert='$d_Gconvert'
13714 d_PRIEldbl='$d_PRIEldbl'
13715 d_PRIFldbl='$d_PRIFldbl'
13716 d_PRIGldbl='$d_PRIGldbl'
13717 d_PRIX64='$d_PRIX64'
13718 d_PRId64='$d_PRId64'
13719 d_PRIeldbl='$d_PRIeldbl'
13720 d_PRIfldbl='$d_PRIfldbl'
13721 d_PRIgldbl='$d_PRIgldbl'
13722 d_PRIi64='$d_PRIi64'
13723 d_PRIo64='$d_PRIo64'
13724 d_PRIu64='$d_PRIu64'
13725 d_PRIx64='$d_PRIx64'
13726 d_access='$d_access'
13727 d_accessx='$d_accessx'
13729 d_archlib='$d_archlib'
13732 d_attribut='$d_attribut'
13735 d_bincompat5005='$d_bincompat5005'
13737 d_bsdgetpgrp='$d_bsdgetpgrp'
13738 d_bsdsetpgrp='$d_bsdsetpgrp'
13740 d_casti32='$d_casti32'
13741 d_castneg='$d_castneg'
13742 d_charvspr='$d_charvspr'
13744 d_chroot='$d_chroot'
13745 d_chsize='$d_chsize'
13746 d_closedir='$d_closedir'
13750 d_cuserid='$d_cuserid'
13751 d_dbl_dig='$d_dbl_dig'
13752 d_difftime='$d_difftime'
13753 d_dirnamlen='$d_dirnamlen'
13754 d_dlerror='$d_dlerror'
13755 d_dlopen='$d_dlopen'
13756 d_dlsymun='$d_dlsymun'
13757 d_dosuid='$d_dosuid'
13758 d_drand48proto='$d_drand48proto'
13760 d_eaccess='$d_eaccess'
13761 d_endgrent='$d_endgrent'
13762 d_endhent='$d_endhent'
13763 d_endnent='$d_endnent'
13764 d_endpent='$d_endpent'
13765 d_endpwent='$d_endpwent'
13766 d_endsent='$d_endsent'
13767 d_endspent='$d_endspent'
13768 d_eofnblk='$d_eofnblk'
13769 d_eunice='$d_eunice'
13770 d_fchmod='$d_fchmod'
13771 d_fchown='$d_fchown'
13773 d_fd_macros='$d_fd_macros'
13774 d_fd_set='$d_fd_set'
13775 d_fds_bits='$d_fds_bits'
13776 d_fgetpos='$d_fgetpos'
13777 d_flexfnam='$d_flexfnam'
13780 d_fpathconf='$d_fpathconf'
13781 d_fpos64_t='$d_fpos64_t'
13782 d_fs_data_s='$d_fs_data_s'
13783 d_fseeko='$d_fseeko'
13784 d_fsetpos='$d_fsetpos'
13785 d_fstatfs='$d_fstatfs'
13786 d_fstatvfs='$d_fstatvfs'
13787 d_ftello='$d_ftello'
13789 d_getgrent='$d_getgrent'
13790 d_getgrps='$d_getgrps'
13791 d_gethbyaddr='$d_gethbyaddr'
13792 d_gethbyname='$d_gethbyname'
13793 d_gethent='$d_gethent'
13794 d_gethname='$d_gethname'
13795 d_gethostprotos='$d_gethostprotos'
13796 d_getlogin='$d_getlogin'
13797 d_getmnt='$d_getmnt'
13798 d_getmntent='$d_getmntent'
13799 d_getnbyaddr='$d_getnbyaddr'
13800 d_getnbyname='$d_getnbyname'
13801 d_getnent='$d_getnent'
13802 d_getnetprotos='$d_getnetprotos'
13803 d_getpbyname='$d_getpbyname'
13804 d_getpbynumber='$d_getpbynumber'
13805 d_getpent='$d_getpent'
13806 d_getpgid='$d_getpgid'
13807 d_getpgrp2='$d_getpgrp2'
13808 d_getpgrp='$d_getpgrp'
13809 d_getppid='$d_getppid'
13810 d_getprior='$d_getprior'
13811 d_getprotoprotos='$d_getprotoprotos'
13812 d_getpwent='$d_getpwent'
13813 d_getsbyname='$d_getsbyname'
13814 d_getsbyport='$d_getsbyport'
13815 d_getsent='$d_getsent'
13816 d_getservprotos='$d_getservprotos'
13817 d_getspent='$d_getspent'
13818 d_getspnam='$d_getspnam'
13819 d_gettimeod='$d_gettimeod'
13820 d_gnulibc='$d_gnulibc'
13821 d_grpasswd='$d_grpasswd'
13822 d_hasmntopt='$d_hasmntopt'
13825 d_inetaton='$d_inetaton'
13826 d_int64t='$d_int64t'
13827 d_iovec_s='$d_iovec_s'
13828 d_isascii='$d_isascii'
13829 d_killpg='$d_killpg'
13830 d_lchown='$d_lchown'
13831 d_ldbl_dig='$d_ldbl_dig'
13833 d_llseek='$d_llseek'
13834 d_locconv='$d_locconv'
13836 d_longdbl='$d_longdbl'
13837 d_longlong='$d_longlong'
13840 d_mbstowcs='$d_mbstowcs'
13841 d_mbtowc='$d_mbtowc'
13842 d_memchr='$d_memchr'
13843 d_memcmp='$d_memcmp'
13844 d_memcpy='$d_memcpy'
13845 d_memmove='$d_memmove'
13846 d_memset='$d_memset'
13848 d_mkfifo='$d_mkfifo'
13849 d_mktime='$d_mktime'
13851 d_msg_ctrunc='$d_msg_ctrunc'
13852 d_msg_dontroute='$d_msg_dontroute'
13853 d_msg_oob='$d_msg_oob'
13854 d_msg_peek='$d_msg_peek'
13855 d_msg_proxy='$d_msg_proxy'
13856 d_msgctl='$d_msgctl'
13857 d_msgget='$d_msgget'
13858 d_msgrcv='$d_msgrcv'
13859 d_msgsnd='$d_msgsnd'
13860 d_mymalloc='$d_mymalloc'
13862 d_off64_t='$d_off64_t'
13863 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13864 d_oldpthreads='$d_oldpthreads'
13865 d_oldsock='$d_oldsock'
13867 d_pathconf='$d_pathconf'
13869 d_phostname='$d_phostname'
13872 d_portable='$d_portable'
13873 d_pthread_yield='$d_pthread_yield'
13875 d_pwchange='$d_pwchange'
13876 d_pwclass='$d_pwclass'
13877 d_pwcomment='$d_pwcomment'
13878 d_pwexpire='$d_pwexpire'
13879 d_pwgecos='$d_pwgecos'
13880 d_pwpasswd='$d_pwpasswd'
13881 d_pwquota='$d_pwquota'
13882 d_readdir='$d_readdir'
13883 d_readlink='$d_readlink'
13884 d_rename='$d_rename'
13885 d_rewinddir='$d_rewinddir'
13887 d_safebcpy='$d_safebcpy'
13888 d_safemcpy='$d_safemcpy'
13889 d_sanemcmp='$d_sanemcmp'
13890 d_sched_yield='$d_sched_yield'
13891 d_scm_rights='$d_scm_rights'
13892 d_seekdir='$d_seekdir'
13893 d_select='$d_select'
13895 d_semctl='$d_semctl'
13896 d_semctl_semid_ds='$d_semctl_semid_ds'
13897 d_semctl_semun='$d_semctl_semun'
13898 d_semget='$d_semget'
13900 d_setegid='$d_setegid'
13901 d_seteuid='$d_seteuid'
13902 d_setgrent='$d_setgrent'
13903 d_setgrps='$d_setgrps'
13904 d_sethent='$d_sethent'
13905 d_setlinebuf='$d_setlinebuf'
13906 d_setlocale='$d_setlocale'
13907 d_setnent='$d_setnent'
13908 d_setpent='$d_setpent'
13909 d_setpgid='$d_setpgid'
13910 d_setpgrp2='$d_setpgrp2'
13911 d_setpgrp='$d_setpgrp'
13912 d_setprior='$d_setprior'
13913 d_setpwent='$d_setpwent'
13914 d_setregid='$d_setregid'
13915 d_setresgid='$d_setresgid'
13916 d_setresuid='$d_setresuid'
13917 d_setreuid='$d_setreuid'
13918 d_setrgid='$d_setrgid'
13919 d_setruid='$d_setruid'
13920 d_setsent='$d_setsent'
13921 d_setsid='$d_setsid'
13922 d_setspent='$d_setspent'
13923 d_setvbuf='$d_setvbuf'
13927 d_shmatprototype='$d_shmatprototype'
13928 d_shmctl='$d_shmctl'
13930 d_shmget='$d_shmget'
13931 d_sigaction='$d_sigaction'
13932 d_sigsetjmp='$d_sigsetjmp'
13933 d_socket='$d_socket'
13934 d_sockpair='$d_sockpair'
13936 d_statblks='$d_statblks'
13937 d_statfs_f_flags='$d_statfs_f_flags'
13938 d_statfs_s='$d_statfs_s'
13939 d_statvfs='$d_statvfs'
13940 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13941 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13942 d_stdio_stream_array='$d_stdio_stream_array'
13943 d_stdiobase='$d_stdiobase'
13944 d_stdstdio='$d_stdstdio'
13945 d_strchr='$d_strchr'
13946 d_strcoll='$d_strcoll'
13947 d_strctcpy='$d_strctcpy'
13948 d_strerrm='$d_strerrm'
13949 d_strerror='$d_strerror'
13950 d_strtod='$d_strtod'
13951 d_strtol='$d_strtol'
13952 d_strtoul='$d_strtoul'
13953 d_strtoull='$d_strtoull'
13954 d_strxfrm='$d_strxfrm'
13955 d_suidsafe='$d_suidsafe'
13956 d_symlink='$d_symlink'
13957 d_syscall='$d_syscall'
13958 d_sysconf='$d_sysconf'
13959 d_sysernlst='$d_sysernlst'
13960 d_syserrlst='$d_syserrlst'
13961 d_system='$d_system'
13962 d_tcgetpgrp='$d_tcgetpgrp'
13963 d_tcsetpgrp='$d_tcsetpgrp'
13964 d_telldir='$d_telldir'
13965 d_telldirproto='$d_telldirproto'
13968 d_truncate='$d_truncate'
13969 d_tzname='$d_tzname'
13972 d_union_semun='$d_union_semun'
13974 d_vendorbin='$d_vendorbin'
13975 d_vendorlib='$d_vendorlib'
13977 d_void_closedir='$d_void_closedir'
13978 d_voidsig='$d_voidsig'
13979 d_voidtty='$d_voidtty'
13980 d_volatile='$d_volatile'
13981 d_vprintf='$d_vprintf'
13983 d_waitpid='$d_waitpid'
13984 d_wcstombs='$d_wcstombs'
13985 d_wctomb='$d_wctomb'
13988 db_hashtype='$db_hashtype'
13989 db_prefixtype='$db_prefixtype'
13990 defvoidused='$defvoidused'
13991 direntrytype='$direntrytype'
13994 doublesize='$doublesize'
13996 dynamic_ext='$dynamic_ext'
14002 eunicefix='$eunicefix'
14005 extensions='$extensions'
14006 fflushNULL='$fflushNULL'
14007 fflushall='$fflushall'
14009 firstmakefile='$firstmakefile'
14011 fpostype='$fpostype'
14012 freetype='$freetype'
14014 full_csh='$full_csh'
14015 full_sed='$full_sed'
14016 gccversion='$gccversion'
14022 groupcat='$groupcat'
14023 groupstype='$groupstype'
14026 h_sysfile='$h_sysfile'
14030 i_arpainet='$i_arpainet'
14031 i_bsdioctl='$i_bsdioctl'
14034 i_dirent='$i_dirent'
14041 i_inttypes='$i_inttypes'
14042 i_limits='$i_limits'
14043 i_locale='$i_locale'
14044 i_machcthr='$i_machcthr'
14045 i_malloc='$i_malloc'
14047 i_memory='$i_memory'
14048 i_mntent='$i_mntent'
14051 i_neterrno='$i_neterrno'
14052 i_netinettcp='$i_netinettcp'
14055 i_pthread='$i_pthread'
14057 i_rpcsvcdbm='$i_rpcsvcdbm'
14060 i_shadow='$i_shadow'
14062 i_stdarg='$i_stdarg'
14063 i_stddef='$i_stddef'
14064 i_stdlib='$i_stdlib'
14065 i_string='$i_string'
14066 i_sysaccess='$i_sysaccess'
14067 i_sysdir='$i_sysdir'
14068 i_sysfile='$i_sysfile'
14069 i_sysfilio='$i_sysfilio'
14071 i_sysioctl='$i_sysioctl'
14072 i_sysmount='$i_sysmount'
14073 i_sysndir='$i_sysndir'
14074 i_sysparam='$i_sysparam'
14075 i_sysresrc='$i_sysresrc'
14076 i_syssecrt='$i_syssecrt'
14077 i_sysselct='$i_sysselct'
14078 i_syssockio='$i_syssockio'
14079 i_sysstat='$i_sysstat'
14080 i_sysstatfs='$i_sysstatfs'
14081 i_sysstatvfs='$i_sysstatvfs'
14082 i_systime='$i_systime'
14083 i_systimek='$i_systimek'
14084 i_systimes='$i_systimes'
14085 i_systypes='$i_systypes'
14086 i_sysuio='$i_sysuio'
14088 i_sysvfs='$i_sysvfs'
14089 i_syswait='$i_syswait'
14090 i_termio='$i_termio'
14091 i_termios='$i_termios'
14093 i_unistd='$i_unistd'
14096 i_values='$i_values'
14097 i_varargs='$i_varargs'
14098 i_varhdr='$i_varhdr'
14100 ignore_versioned_solibs='$ignore_versioned_solibs'
14103 installarchlib='$installarchlib'
14104 installbin='$installbin'
14105 installman1dir='$installman1dir'
14106 installman3dir='$installman3dir'
14107 installprefix='$installprefix'
14108 installprefixexp='$installprefixexp'
14109 installprivlib='$installprivlib'
14110 installscript='$installscript'
14111 installsitearch='$installsitearch'
14112 installsitebin='$installsitebin'
14113 installsitelib='$installsitelib'
14114 installstyle='$installstyle'
14115 installusrbinperl='$installusrbinperl'
14116 installvendorbin='$installvendorbin'
14117 installvendorlib='$installvendorlib'
14119 known_extensions='$known_extensions'
14123 lddlflags='$lddlflags'
14125 ldlibpthname='$ldlibpthname'
14132 libswanted='$libswanted'
14138 locincpth='$locincpth'
14139 loclibpth='$loclibpth'
14140 longdblsize='$longdblsize'
14141 longlongsize='$longlongsize'
14142 longsize='$longsize'
14146 lseeksize='$lseeksize'
14147 lseektype='$lseektype'
14151 make_set_make='$make_set_make'
14152 mallocobj='$mallocobj'
14153 mallocsrc='$mallocsrc'
14154 malloctype='$malloctype'
14156 man1direxp='$man1direxp'
14159 man3direxp='$man3direxp'
14162 mips_type='$mips_type'
14165 modetype='$modetype'
14167 multiarch='$multiarch'
14169 myarchname='$myarchname'
14170 mydomain='$mydomain'
14171 myhostname='$myhostname'
14174 netdb_hlen_type='$netdb_hlen_type'
14175 netdb_host_type='$netdb_host_type'
14176 netdb_name_type='$netdb_name_type'
14177 netdb_net_type='$netdb_net_type'
14180 nm_so_opt='$nm_so_opt'
14181 nonxs_ext='$nonxs_ext'
14183 o_nonblock='$o_nonblock'
14185 old_pthread_create_joinable='$old_pthread_create_joinable'
14186 optimize='$optimize'
14187 orderlib='$orderlib'
14193 patchlevel='$patchlevel'
14194 path_sep='$path_sep'
14196 perladmin='$perladmin'
14197 perlpath='$perlpath'
14199 phostname='$phostname'
14202 pm_apiversion='$pm_apiversion'
14206 prefixexp='$prefixexp'
14208 privlibexp='$privlibexp'
14209 prototype='$prototype'
14211 quadcase='$quadcase'
14212 quadtype='$quadtype'
14213 randbits='$randbits'
14214 randfunc='$randfunc'
14215 randseedtype='$randseedtype'
14217 rd_nodata='$rd_nodata'
14221 sPRIEldbl='$sPRIEldbl'
14222 sPRIFldbl='$sPRIFldbl'
14223 sPRIGldbl='$sPRIGldbl'
14226 sPRIeldbl='$sPRIeldbl'
14227 sPRIfldbl='$sPRIfldbl'
14228 sPRIgldbl='$sPRIgldbl'
14233 sched_yield='$sched_yield'
14234 scriptdir='$scriptdir'
14235 scriptdirexp='$scriptdirexp'
14237 seedfunc='$seedfunc'
14238 selectminbits='$selectminbits'
14239 selecttype='$selecttype'
14240 sendmail='$sendmail'
14243 sharpbang='$sharpbang'
14244 shmattype='$shmattype'
14245 shortsize='$shortsize'
14248 sig_count='$sig_count'
14249 sig_name='$sig_name'
14250 sig_name_init='$sig_name_init'
14252 sig_num_init='$sig_num_init'
14253 signal_t='$signal_t'
14254 sitearch='$sitearch'
14255 sitearchexp='$sitearchexp'
14257 sitebinexp='$sitebinexp'
14259 sitelibexp='$sitelibexp'
14260 siteprefix='$siteprefix'
14261 siteprefixexp='$siteprefixexp'
14262 sizetype='$sizetype'
14267 sockethdr='$sockethdr'
14268 socketlib='$socketlib'
14270 spackage='$spackage'
14271 spitshell='$spitshell'
14274 ssizetype='$ssizetype'
14275 startperl='$startperl'
14277 static_ext='$static_ext'
14279 stdio_base='$stdio_base'
14280 stdio_bufsiz='$stdio_bufsiz'
14281 stdio_cnt='$stdio_cnt'
14282 stdio_filbuf='$stdio_filbuf'
14283 stdio_ptr='$stdio_ptr'
14284 stdio_stream_array='$stdio_stream_array'
14287 subversion='$subversion'
14294 timeincl='$timeincl'
14295 timetype='$timetype'
14305 uquadtype='$uquadtype'
14306 use64bits='$use64bits'
14308 uselargefiles='$uselargefiles'
14309 uselongdouble='$uselongdouble'
14310 uselonglong='$uselonglong'
14311 usemorebits='$usemorebits'
14312 usemultiplicity='$usemultiplicity'
14313 usemymalloc='$usemymalloc'
14315 useopcode='$useopcode'
14316 useperlio='$useperlio'
14317 useposix='$useposix'
14319 useshrplib='$useshrplib'
14320 usesocks='$usesocks'
14321 usethreads='$usethreads'
14322 usevendorprefix='$usevendorprefix'
14323 usevfork='$usevfork'
14326 vendorbin='$vendorbin'
14327 vendorbinexp='$vendorbinexp'
14328 vendorlib='$vendorlib'
14329 vendorlibexp='$vendorlibexp'
14330 vendorprefix='$vendorprefix'
14331 vendorprefixexp='$vendorprefixexp'
14334 voidflags='$voidflags'
14336 xs_apiversion='$xs_apiversion'
14341 : Add in command line options if available
14342 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
14344 : add special variables
14345 $test -f $src/patchlevel.h && \
14346 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
14347 echo "CONFIGDOTSH=true" >>config.sh
14349 : propagate old symbols
14350 if $test -f UU/config.sh; then
14351 <UU/config.sh sort | uniq >UU/oldconfig.sh
14352 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
14353 sort | uniq -u >UU/oldsyms
14354 set X `cat UU/oldsyms`
14360 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
14362 echo "# Variables propagated from previous config.sh file." >>config.sh
14363 for sym in `cat UU/oldsyms`; do
14364 echo " Propagating $hint variable "'$'"$sym..."
14365 eval 'tmp="$'"${sym}"'"'
14367 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
14373 : Finish up by extracting the .SH files
14387 If you'd like to make any changes to the config.sh file before I begin
14388 to configure things, do it as a shell escape now (e.g. !vi config.sh).
14391 rp="Press return or use a shell escape to edit config.sh:"
14396 *) : in case they cannot read
14397 sh 1>&4 -c "$ans";;
14402 : if this fails, just run all the .SH files by hand
14409 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
14416 Now you need to generate make dependencies by running "$make depend".
14417 You might prefer to run it in background: "$make depend > makedepend.out &"
14418 It can take a while, so you might not want to run it right now.
14423 rp="Run $make depend now?"
14427 $make depend && echo "Now you must run a $make."
14430 echo "You must run '$make depend' then '$make'."
14433 elif test -f [Mm]akefile; then
14435 echo "Now you must run a $make."
14440 if $test -f Policy.sh; then
14443 If you compile $package on a different machine or from a different object
14444 directory, copy the Policy.sh file from this object directory to the
14445 new one before you run Configure -- this will help you with most of
14446 the policy defaults.
14450 if $test -f config.msg; then
14451 echo "Hmm. I also noted the following information while running:"
14453 $cat config.msg >&4
14456 $rm -f kit*isdone ark*isdone