3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Sun Jul 25 13:04:13 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
436 d_old_pthread_create_joinable=''
437 old_pthread_create_joinable=''
708 ignore_versioned_solibs=''
814 d_stdio_stream_array=''
815 stdio_stream_array=''
840 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
843 : We must find out about Eunice early
845 if test -f /etc/unixtovms; then
846 eunicefix=/etc/unixtovms
848 if test -f /etc/unixtovms.exe; then
849 eunicefix=/etc/unixtovms.exe
853 : Possible local include directories to search.
854 : Set locincpth to "" in a hint file to defeat local include searches.
855 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
856 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
858 : no include file wanted by default
861 : list of known cpp symbols, sorted alphabetically
862 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
863 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
864 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
865 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
866 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
867 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
868 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
869 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
870 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
871 al="$al VMS Xenix286"
872 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
873 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
874 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
875 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
876 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
877 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
878 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
879 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
880 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
881 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
882 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
883 al="$al __SVR4_2__ __UMAXV__"
884 al="$al ____386BSD____ __alpha __alpha__ __amiga"
885 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
886 al="$al __host_mips__"
887 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
888 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
889 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
890 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
891 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
892 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
893 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
894 al="$al __mc88100 __mc88100__ __mips __mips__"
895 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
896 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
897 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
898 al="$al _host_mips _mips _unix"
899 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
900 al="$al apollo ardent att386 att3b"
901 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
902 al="$al cadmus clipper concurrent convex cray ctix"
903 al="$al dmert encore gcos gcx gimpel gould"
904 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
905 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
906 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
907 al="$al i186 i286 i386 i486 i8086"
908 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
909 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
910 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
911 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
912 al="$al mc88000 mc88100 merlin mert mips mvs n16"
913 al="$al ncl_el ncl_mr"
914 al="$al news1500 news1700 news1800 news1900 news3700"
915 al="$al news700 news800 news900 ns16000 ns32000"
916 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
917 al="$al parisc pc532 pdp11 plexus posix pyr"
918 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
919 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
920 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
921 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
922 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
923 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
926 : Trailing extension. Override this in a hint file, if needed.
928 : Extra object files, if any, needed on this platform.
931 : change the next line if compiling for Xenix/286 on Xenix/386
932 xlibpth='/usr/lib/386 /lib/386'
934 : Possible local library directories to search.
935 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
936 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
938 : general looking path for locating libraries
939 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
940 glibpth="$glibpth /lib /usr/lib $xlibpth"
941 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
942 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
944 : Private path used by Configure to find libraries. Its value
945 : is prepended to libpth. This variable takes care of special
946 : machines, like the mips. Usually, it should be empty.
949 : default library list
951 : some systems want to use only the non-versioned libso:s
952 ignore_versioned_solibs=''
953 : full support for void wanted by default
956 : set useposix=false in your hint file to disable the POSIX extension.
958 : set useopcode=false in your hint file to disable the Opcode extension.
960 : set usemultiplicity on the Configure command line to enable multiplicity.
961 : set usesocks on the Configure command line to enable socks.
962 : set usethreads on the Configure command line to enable threads.
963 : List of libraries we want.
964 : If anyone needs -lnet, put it in a hint file.
965 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
966 libswanted="$libswanted dld ld sun m rt c cposix posix"
967 libswanted="$libswanted ndir dir crypt sec"
968 libswanted="$libswanted ucb bsd BSD PW x"
969 : We probably want to search /usr/shlib before most other libraries.
970 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
971 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
972 glibpth="/usr/shlib $glibpth"
973 : Do not use vfork unless overridden by a hint file.
976 : Find the basic shell for Bourne shell scripts
980 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
983 if test -f "$xxx"; then
986 : Build up a list and do a single loop so we can 'break' out.
987 pth=`echo $PATH | sed -e "s/$p_/ /g"`
988 for xxx in sh bash ksh pdksh ash; do
990 try="$try ${p}/${xxx}"
994 if test -f "$xxx"; then
997 elif test -f "$xxx.exe"; then
1008 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1010 Usually it's in /bin/sh. How did you even get this far?
1011 Please contact me (Perl Maintainers) at perlbug@perl.com and
1012 we'll try to straighten this all out.
1018 : see if sh knows # comments
1019 if `$sh -c '#' >/dev/null 2>&1`; then
1023 test -f $xcat || xcat=/usr/bin/cat
1028 if test -s today; then
1031 echo "#! $xcat" > try
1035 if test -s today; then
1043 echo "Your $sh doesn't grok # comments--I will strip them later on."
1046 echo "exec grep -v '^[ ]*#'" >spitshell
1048 $eunicefix spitshell
1049 spitshell=`pwd`/spitshell
1051 echo "I presume that if # doesn't work, #! won't work either!"
1056 : figure out how to guarantee sh startup
1058 '') startsh=${sharpbang}${sh} ;;
1070 : echo "Yup, it does."
1072 echo "Hmm... '$startsh' does not guarantee sh startup..."
1073 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1078 : Save command line options in file UU/cmdline.opt for later use in
1079 : generating config.sh.
1080 cat > cmdline.opt <<EOSH
1081 # Configure command line arguments.
1088 cat >>cmdline.opt <<EOSH
1089 config_arg$argn='$arg'
1091 argn=`expr $argn + 1`
1094 : produce awk script to parse command line options
1095 cat >options.awk <<'EOF'
1097 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1099 len = length(optstr);
1100 for (i = 1; i <= len; i++) {
1101 c = substr(optstr, i, 1);
1102 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1113 if (substr(str, 1, 1) != "-") {
1114 printf("'%s'\n", str);
1118 for (i = 2; i <= len; i++) {
1119 c = substr(str, i, 1);
1121 printf("-%s\n", substr(str, i));
1127 printf("'%s'\n", substr(str, i + 1));
1140 : process the command line options
1141 set X `for arg in "$@"; do echo "X$arg"; done |
1142 sed -e s/X// | awk -f options.awk`
1147 : set up default values
1158 cat >optdef.sh <<EOS
1164 while test $# -gt 0; do
1166 -d) shift; fastread=yes;;
1167 -e) shift; alldone=cont;;
1171 if test -r "$1"; then
1174 echo "$me: cannot read config file $1." >&2
1179 -h) shift; error=true;;
1180 -r) shift; reuseval=true;;
1181 -s) shift; silent=true; realsilent=true;;
1182 -E) shift; alldone=exit;;
1183 -K) shift; knowitall=true;;
1184 -O) shift; override=true;;
1185 -S) shift; silent=true; extractsh=true;;
1190 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1191 echo "$me: ignoring -D $1" >&2
1194 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1195 *) echo "$1='define'" >> optdef.sh;;
1202 *=) echo "$1" >> optdef.sh;;
1204 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1205 echo "$me: ignoring -U $1" >&2
1207 *) echo "$1='undef'" >> optdef.sh;;
1211 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1214 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1222 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1223 [-U symbol] [-U symbol=]
1224 -d : use defaults for all answers.
1225 -e : go on without questioning past the production of config.sh.
1226 -f : specify an alternate default configuration file.
1227 -h : print this help message and exit (with an error status).
1228 -r : reuse C symbols value if possible (skips costly nm extraction).
1229 -s : silent mode, only echoes questions and essential information.
1230 -D : define symbol to have some value:
1231 -D symbol symbol gets the value 'define'
1232 -D symbol=value symbol gets the value 'value'
1233 -E : stop at the end of questions, after having produced config.sh.
1234 -K : do not use unless you know what you are doing.
1235 -O : let -D and -U override definitions from loaded configuration file.
1236 -S : perform variable substitutions on all .SH files (can mix with -f)
1237 -U : undefine symbol:
1238 -U symbol symbol gets the value 'undef'
1239 -U symbol= symbol gets completely empty
1240 -V : print version number and exit (with a zero status).
1247 case "$fastread$alldone" in
1250 if test ! -t 0; then
1251 echo "Say 'sh Configure', not 'sh <Configure'"
1259 true) exec 1>/dev/null;;
1262 : run the defines and the undefines, if any, but leave the file out there...
1268 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1269 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1270 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1271 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1272 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1275 : Some greps do not return status, grrr.
1276 echo "grimblepritz" >grimble
1277 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1279 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1285 : the following should work in any shell
1289 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1290 cat >contains <<'EOSS'
1291 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1296 : Find the path to the source tree
1299 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1310 if test -f $rsrc/Configure && \
1311 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1313 : found it, so we are ok.
1316 for src in . .. ../.. ../../.. ../../../..; do
1317 if test -f ../$src/Configure && \
1318 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1329 Sorry, I can't seem to locate the source dir for $package. Please start
1330 Configure with an explicit path -- i.e. /some/path/Configure.
1338 echo "Sources for $package found in \"$src\"." >&4
1342 : script used to extract .SH files with variable substitutions
1343 cat >extract <<'EOS'
1345 echo "Doing variable substitutions on .SH files..."
1346 if test -f $src/MANIFEST; then
1347 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1349 echo "(Looking for .SH files under the source directory.)"
1350 set x `(cd $src; find . -name "*.SH" -print)`
1354 0) set x `(cd $src; echo *.SH)`; shift;;
1356 if test ! -f $src/$1; then
1362 while test $name; do
1363 if test ! -d "$name"; then
1364 create="$name $create";
1365 name=`echo $name | sed -e "s|^[^/]*$||"`;
1366 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1371 for file in $create; do
1380 dir=`expr X$file : 'X\(.*\)/'`
1381 file=`expr X$file : 'X.*/\(.*\)'`
1382 (cd $dir && . ./$file)
1392 dir=`expr X$file : 'X\(.*\)/'`
1393 file=`expr X$file : 'X.*/\(.*\)'`
1394 (set x $dir; shift; eval $mkdir_p)
1404 if test -f $src/config_h.SH; then
1405 if test ! -f config.h; then
1406 : oops, they left it out of MANIFEST, probably, so do it anyway.
1412 : extract files and exit if asked to do so
1413 case "$extractsh" in
1415 case "$realsilent" in
1419 case "$config_sh" in
1420 '') config_sh='config.sh';;
1423 echo "Fetching answers from $config_sh..."
1426 test "$override" && . ./optdef.sh
1435 : Eunice requires " " instead of "", can you believe it
1438 echo "Beginning of configuration questions for $package."
1440 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1442 : first determine how to suppress newline on echo command
1444 echo "Checking echo to see how to suppress newlines..."
1445 (echo "hi there\c" ; echo " ") >.echotmp
1446 if $contains c .echotmp >/dev/null 2>&1 ; then
1457 echo $n "The star should be here-->$c"
1461 : Now test for existence of everything in MANIFEST
1463 if test -f $rsrc/MANIFEST; then
1464 echo "First let's make sure your kit is complete. Checking..." >&4
1465 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1468 for filelist in x??; do
1469 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1471 if test -s missing; then
1475 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1477 You have the option of continuing the configuration process, despite the
1478 distinct possibility that your kit is damaged, by typing 'y'es. If you
1479 do, don't blame me if something goes wrong. I advise you to type 'n'o
1480 and contact the author (perlbug@perl.com).
1483 echo $n "Continue? [n] $c" >&4
1487 echo "Continuing..." >&4
1491 echo "ABORTING..." >&4
1496 echo "Looks good..."
1499 echo "There is no MANIFEST file. I hope your kit is complete !"
1504 : Find the appropriate value for a newline for tr
1505 if test -n "$DJGPP"; then
1508 if test X"$trnl" = X; then
1509 case "`echo foo|tr '\n' x 2>/dev/null`" in
1513 if test X"$trnl" = X; then
1514 case "`echo foo|tr '\012' x 2>/dev/null`" in
1515 foox) trnl='\012' ;;
1518 if test X"$trnl" = X; then
1521 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1527 : compute the number of columns on the terminal for proper question formatting
1532 : set up the echo used in my read
1533 myecho="case \"\$xxxm\" in
1534 '') echo $n \"\$rp $c\" >&4;;
1536 '') echo $n \"[\$xxxm] $c\";;
1538 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1540 echo $n \"[\$xxxm] $c\" >&4
1542 echo $n \"\$rp [\$xxxm] $c\" >&4
1548 : now set up to do reads with possible shell escape and default assignment
1554 case "\$fastread" in
1555 yes) case "\$dflt" in
1558 case "\$silent-\$rp" in
1563 *) case "\$silent" in
1564 true) case "\$rp" in
1569 while expr "X\$ans" : "X!" >/dev/null; do
1573 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1581 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1590 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1595 echo "(OK, I'll run with -d after this question.)" >&4
1598 echo "*** Sorry, \$1 not supported yet." >&4
1608 echo "*** Substitution done -- please confirm."
1610 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1615 echo "*** Error -- try again."
1622 case "\$ans\$xxxm\$nostick" in
1634 : create .config dir to save info across Configure sessions
1635 test -d ../.config || mkdir ../.config
1636 cat >../.config/README <<EOF
1637 This directory created by Configure to save information that should
1638 persist across sessions for $package.
1640 You may safely delete it if you wish.
1643 : general instructions
1646 user=`(logname) 2>/dev/null`
1648 '') user=`whoami 2>&1`;;
1650 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1653 rp='Would you like to see the instructions?'
1664 This installation shell script will examine your system and ask you questions
1665 to determine how the perl5 package should be installed. If you get
1666 stuck on a question, you may use a ! shell escape to start a subshell or
1667 execute a command. Many of the questions will have default answers in square
1668 brackets; typing carriage return will give you the default.
1670 On some of the questions which ask for file or directory names you are allowed
1671 to use the ~name construct to specify the login directory belonging to "name",
1672 even if you don't have a shell which knows about that. Questions where this is
1673 allowed will be marked "(~name ok)".
1677 dflt='Type carriage return to continue'
1681 The prompter used in this script allows you to use shell variables and
1682 backticks in your answers. You may use $1, $2, etc... to refer to the words
1683 in the default answer, as if the default line was a set of arguments given to a
1684 script shell. This means you may also use $* to repeat the whole default line,
1685 so you do not have to re-type everything to add something to the default.
1687 Everytime there is a substitution, you will have to confirm. If there is an
1688 error (e.g. an unmatched backtick), the default answer will remain unchanged
1689 and you will be prompted again.
1691 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1692 the questions and use the computed defaults (or the previous answers if there
1693 was already a config.sh file). Type 'Configure -h' for a list of options.
1694 You may also start interactively and then answer '& -d' at any prompt to turn
1695 on the non-interactive behaviour for the remainder of the execution.
1701 Much effort has been expended to ensure that this shell script will run on any
1702 Unix system. If despite that it blows up on yours, your best bet is to edit
1703 Configure and run it again. If you can't run Configure for some reason,
1704 you'll have to generate a config.sh file by hand. Whatever problems you
1705 have, let me (perlbug@perl.com) know how I blew it.
1707 This installation script affects things in two ways:
1709 1) it may do direct variable substitutions on some of the files included
1711 2) it builds a config.h file for inclusion in C programs. You may edit
1712 any of these files as the need arises after running this script.
1714 If you make a mistake on a question, there is no easy way to back up to it
1715 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1716 files. Configure will offer to let you do this before it runs the SH files.
1719 dflt='Type carriage return to continue'
1721 case "$firsttime" in
1722 true) echo $user >>../.config/instruct;;
1726 : find out where common programs are
1728 echo "Locating common programs..." >&4
1741 if test -d \$dir/\$thing; then
1747 for thisthing in \$dir/\$thing; do
1748 : just loop through to pick last item
1750 if test -f \$thisthing; then
1753 elif test -f \$dir/\$thing.exe; then
1754 if test -n "$DJGPP"; then
1755 echo \$dir/\$thing.exe
1757 : on Eunice apparently
1807 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1808 pth="$pth /lib /usr/lib"
1809 for file in $loclist; do
1813 if test -f "$xxx"; then
1816 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1817 xxx=`./loc $file $file $pth`
1820 '') xxx=`./loc $file $file $pth`;;
1821 *) xxx=`./loc $xxx $xxx $pth`;;
1827 echo $file is in $xxx.
1830 echo $file is in $xxx.
1833 echo "I don't know where '$file' is, and my life depends on it." >&4
1834 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1840 echo "Don't worry if any of the following aren't found..."
1842 for file in $trylist; do
1846 if test -f "$xxx"; then
1849 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1850 xxx=`./loc $file $file $pth`
1853 '') xxx=`./loc $file $file $pth`;;
1854 *) xxx=`./loc $xxx $xxx $pth`;;
1860 echo $file is in $xxx.
1863 echo $file is in $xxx.
1866 echo "I don't see $file out there, $say."
1873 echo "Substituting grep for egrep."
1879 echo "Substituting cp for ln."
1885 echo "Hopefully test is built into your sh."
1888 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1889 echo "Using the test built into your sh."
1897 echo "Hopefully echo is built into your sh."
1902 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1903 $echo $n "hi there$c" >foo1
1904 echo $n "hi there$c" >foo2
1905 if cmp foo1 foo2 >/dev/null 2>&1; then
1906 echo "They are compatible. In fact, they may be identical."
1913 They are not compatible! You are probably running ksh on a non-USG system.
1914 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1915 have echo built in and we may have to run some Bourne shell scripts. That
1916 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1919 $echo $n "The star should be here-->$c"
1926 : determine whether symbolic links are supported
1929 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1930 echo "Symbolic links are supported." >&4
1933 echo "Symbolic links are NOT supported." >&4
1938 : see whether [:lower:] and [:upper:] are supported character classes
1940 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1942 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1946 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1947 # (0xc9 and 0xd1), therefore that is a nice testing point.
1948 if test "X$up" = X -o "X$low" = X; then
1949 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1955 if test "X$up" = X -o "X$low" = X; then
1956 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1962 if test "X$up" = X -o "X$low" = X; then
1963 case "`echo IJ | od -x 2>/dev/null`" in
1965 echo "Hey, this might be EBCDIC." >&4
1966 if test "X$up" = X -o "X$low" = X; then
1967 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1968 ij) up='[A-IJ-RS-Z]'
1973 if test "X$up" = X -o "X$low" = X; then
1974 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1984 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1986 echo "Using $up and $low to convert case." >&4
1989 echo "I don't know how to translate letters from upper to lower case." >&4
1990 echo "Your tr is not acting any way I know of." >&4
1994 : set up the translation script tr, must be called with ./tr of course
1998 '[A-Z][a-z]') exec $tr '$up' '$low';;
1999 '[a-z][A-Z]') exec $tr '$low' '$up';;
2006 : Try to determine whether config.sh was made on this system
2007 case "$config_sh" in
2009 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2010 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2011 # because the A-Z/a-z are not consecutive.
2012 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2013 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2014 newmyuname="$myuname"
2016 case "$knowitall" in
2018 if test -f ../config.sh; then
2019 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2020 eval "`grep myuname= ../config.sh`"
2022 if test "X$myuname" = "X$newmyuname"; then
2030 : Get old answers from old config file if Configure was run on the
2031 : same system, otherwise use the hints.
2034 if test -f config.sh; then
2036 rp="I see a config.sh file. Shall I use it to set the defaults?"
2039 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2040 *) echo "Fetching default answers from your old config.sh file..." >&4
2048 : Older versions did not always set $sh. Catch re-use of such
2057 if test ! -f config.sh; then
2060 First time through, eh? I have some defaults handy for some systems
2061 that need some extra help getting the Configure answers right:
2064 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2066 : Half the following guesses are probably wrong... If you have better
2067 : tests or hints, please send them to perlbug@perl.com
2068 : The metaconfig authors would also appreciate a copy...
2069 $test -f /irix && osname=irix
2070 $test -f /xenix && osname=sco_xenix
2071 $test -f /dynix && osname=dynix
2072 $test -f /dnix && osname=dnix
2073 $test -f /lynx.os && osname=lynxos
2074 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2075 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2076 $test -f /bin/mips && /bin/mips && osname=mips
2077 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2078 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2079 $test -d /usr/apollo/bin && osname=apollo
2080 $test -f /etc/saf/_sactab && osname=svr4
2081 $test -d /usr/include/minix && osname=minix
2082 if $test -d /MachTen -o -d /MachTen_Folder; then
2084 if $test -x /sbin/version; then
2085 osvers=`/sbin/version | $awk '{print $2}' |
2086 $sed -e 's/[A-Za-z]$//'`
2087 elif $test -x /usr/etc/version; then
2088 osvers=`/usr/etc/version | $awk '{print $2}' |
2089 $sed -e 's/[A-Za-z]$//'`
2094 $test -f /sys/posix.dll &&
2095 $test -f /usr/bin/what &&
2096 set X `/usr/bin/what /sys/posix.dll` &&
2097 $test "$3" = UWIN &&
2100 if $test -f $uname; then
2108 umips) osname=umips ;;
2111 [23]100) osname=mips ;;
2112 next*) osname=next ;;
2114 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2115 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2118 elif $test -f /etc/kconfig; then
2120 if test "$lns" = "$ln -s"; then
2122 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2124 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2131 if test -n "$DJGPP"; then
2140 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2142 'not found') osvers="$4"."$3" ;;
2143 '<3240'|'<>3240') osvers=3.2.0 ;;
2144 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2145 '=3250'|'>3250') osvers=3.2.5 ;;
2149 *dc.osx) osname=dcosx
2155 domainos) osname=apollo
2161 dynixptx*) osname=dynixptx
2162 osvers=`echo "$4"|sed 's/^v//'`
2164 freebsd) osname=freebsd
2166 genix) osname=genix ;;
2168 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2184 netbsd*) osname=netbsd
2187 news-os) osvers="$3"
2189 4*) osname=newsos4 ;;
2193 bsd386) osname=bsd386
2196 POSIX-BC | posix-bc ) osname=posix-bc
2199 powerux | power_ux | powermax_os | powermaxos | \
2200 powerunix | power_unix) osname=powerux
2203 next*) osname=next ;;
2204 solaris) osname=solaris
2206 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2213 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2217 titanos) osname=titanos
2226 ultrix) osname=ultrix
2229 osf1|mls+) case "$5" in
2232 osvers=`echo "$3" | sed 's/^[xvt]//'`
2234 hp*) osname=hp_osf1 ;;
2235 mips) osname=mips_osf1 ;;
2244 $2) case "$osname" in
2248 : svr4.x or possibly later
2258 if test -f /stand/boot ; then
2259 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2260 if test -n "$INITPROG" -a -f "$INITPROG"; then
2261 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2262 if test -n "$isesix"; then
2270 *) if test -f /etc/systemid; then
2272 set `echo $3 | $sed 's/\./ /g'` $4
2273 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2275 elif $test -f $src/hints/sco_$1_$2.sh; then
2277 elif $test -f $src/hints/sco_$1.sh; then
2282 '') : Still unknown. Probably a generic Sys V.
2291 *) case "$osname" in
2292 '') : Still unknown. Probably a generic BSD.
2300 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2301 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2302 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2305 $rm -f UU/kernel.what
2306 elif test -d c:/.; then
2313 : Now look for a hint file osname_osvers, unless one has been
2314 : specified already.
2317 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2318 : Also try without trailing minor version numbers.
2319 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2320 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2321 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2322 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2325 *) case "$osvers" in
2328 *) if $test -f $src/hints/$file.sh ; then
2330 elif $test -f $src/hints/$xfile.sh ; then
2332 elif $test -f $src/hints/$xxfile.sh ; then
2334 elif $test -f $src/hints/$xxxfile.sh ; then
2336 elif $test -f $src/hints/$xxxxfile.sh ; then
2338 elif $test -f "$src/hints/${osname}.sh" ; then
2347 if $test -f Policy.sh ; then
2350 none) dflt="Policy" ;;
2351 *) dflt="Policy $dflt" ;;
2356 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2360 if $test -f Policy.sh ; then
2363 There's also a Policy hint file available, which should make the
2364 site-specific (policy) questions easier to answer.
2371 You may give one or more space-separated answers, or "none" if appropriate.
2372 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2373 is a good thing. DO NOT give a wrong version.
2377 rp="Which of these apply, if any?"
2380 for file in $tans; do
2381 if $test X$file = XPolicy -a -f Policy.sh; then
2383 $cat Policy.sh >> UU/config.sh
2384 elif $test -f $src/hints/$file.sh; then
2385 . $src/hints/$file.sh
2386 $cat $src/hints/$file.sh >> UU/config.sh
2387 elif $test X$tans = X -o X$tans = Xnone ; then
2390 : Give one chance to correct a possible typo.
2391 echo "$file.sh does not exist"
2393 rp="hint to use instead?"
2395 for file in $ans; do
2396 if $test -f "$src/hints/$file.sh"; then
2397 . $src/hints/$file.sh
2398 $cat $src/hints/$file.sh >> UU/config.sh
2399 elif $test X$ans = X -o X$ans = Xnone ; then
2402 echo "$file.sh does not exist -- ignored."
2409 : Remember our hint file for later.
2410 if $test -f "$src/hints/$file.sh" ; then
2420 echo "Fetching default answers from $config_sh..." >&4
2424 cp $config_sh config.sh 2>/dev/null
2434 test "$override" && . ./optdef.sh
2435 myuname="$newmyuname"
2437 : Restore computed paths
2438 for file in $loclist $trylist; do
2439 eval $file="\$_$file"
2444 Configure uses the operating system name and version to set some defaults.
2445 The default value is probably right if the name rings a bell. Otherwise,
2446 since spelling matters for me, either accept the default or answer "none"
2453 ''|' '|none) dflt=none ;;
2454 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2457 *) dflt="$osname" ;;
2459 rp="Operating system name?"
2463 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2469 ''|' '|none) dflt=none ;;
2470 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2471 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2473 ''|' ') dflt=none ;;
2478 *) dflt="$osvers" ;;
2480 rp="Operating system version?"
2487 : who configured the system
2488 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2489 cf_by=`(logname) 2>/dev/null`
2492 cf_by=`(whoami) 2>/dev/null`
2494 "") cf_by=unknown ;;
2498 : set up the script used to warn in case of inconsistency
2505 echo "*** WHOA THERE!!! ***" >&4
2506 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2507 rp=" Keep the $hint value?"
2510 y) td=$was; tu=$was;;
2514 : function used to set $1 to $val
2515 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2517 $define$undef) . ./whoa; eval "$var=\$td";;
2518 $undef$define) . ./whoa; eval "$var=\$tu";;
2519 *) eval "$var=$val";;
2524 Perl can be built to take advantage of threads, on some systems.
2525 To do so, Configure must be run with -Dusethreads.
2527 Note that threading is a highly experimental feature, and
2528 some known race conditions still remain. If you choose to try
2529 it, be very sure to not actually deploy it for production
2530 purposes. README.threads has more details, and is required
2531 reading if you enable threads.
2533 case "$usethreads" in
2534 $define|true|[yY]*) dflt='y';;
2537 rp='Build a threading Perl?'
2540 y|Y) val="$define" ;;
2546 case "$d_oldpthreads" in
2547 '') : Configure tests would be welcome here. For now, assume undef.
2549 *) val="$d_oldpthreads" ;;
2555 case "$usethreads" in
2556 "$define"|true|[yY]*)
2557 : Look for a hint-file generated 'call-back-unit'. If the
2558 : user has specified that a threading perl is to be built,
2559 : we may need to set or change some other defaults.
2560 if $test -f usethreads.cbu; then
2564 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2565 # Known thread-capable platforms.
2569 $osname is not known to support threads.
2570 Please let perlbug@perl.com know how to do that.
2572 Cannot continue, aborting.
2582 Perl can be built so that multiple Perl interpreters can coexist
2583 within the same Perl executable. To do so, Configure must be run with
2586 Normally you do not need this and you should answer no.
2589 case "$usemultiplicity" in
2590 $define|true|[yY]*) dflt='y';;
2593 rp='Build Perl for multiplicity?'
2596 y|Y) val="$define" ;;
2604 Perl can be built to take advantage of explicit 64-bit interfaces,
2605 on some systems. To do so, Configure must be run with -Duse64bits.
2607 If this doesn't make any sense to you, just accept the default 'n'.
2609 case "$use64bits" in
2610 $define|true|[yY]*) dflt='y';;
2613 rp='Try to use explicit 64-bit interfaces, if available?'
2626 case "$archname64" in
2627 '') archname64='' ;; # not a typo
2630 case "$use64bits" in
2631 "$define"|true|[yY]*)
2632 : Look for a hint-file generated 'call-back-unit'. If the
2633 : user has specified that a 64 bit perl is to be built,
2634 : we may need to set or change some other defaults.
2635 if $test -f use64bits.cbu; then
2639 aix|dec_osf|hpux|irix|solaris|unicos)
2640 # Known 64-bit capable platforms.
2644 $osname is not known to support 64-bit interfaces.
2645 Please let perlbug@perl.com know how to do that.
2647 Cannot continue, aborting.
2655 : determine the architecture name
2657 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2658 tarch=`arch`"-$osname"
2659 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2660 if uname -m > tmparch 2>&1 ; then
2661 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2662 -e 's/$/'"-$osname/" tmparch`
2670 case "$myarchname" in
2673 echo "(Your architecture name used to be $myarchname.)"
2680 *) dflt="$archname";;
2682 rp='What is your architecture name'
2685 case "$usethreads" in
2687 echo "Threads selected." >&4
2689 *-thread*) echo "...and architecture name already has -thread." >&4
2691 *) archname="$archname-thread"
2692 echo "...setting architecture name to $archname." >&4
2697 case "$usemultiplicity" in
2699 echo "Multiplicity selected." >&4
2701 *-multi*) echo "...and architecture name already has -multi." >&4
2703 *) archname="$archname-multi"
2704 echo "...setting architecture name to $archname." >&4
2709 case "$use64bits" in
2711 echo "Explicit 64-bitness selected." >&4
2712 case "$archname64" in
2717 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2719 *) archname="$archname-$archname64"
2720 echo "...setting architecture name to $archname." >&4
2727 : decide how portable to be. Allow command line overrides.
2728 case "$d_portable" in
2730 *) d_portable="$define" ;;
2733 : set up shell script to do ~ expansion
2739 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2742 if $test -f /bin/csh; then
2743 /bin/csh -f -c "glob \$1"
2748 name=\`$expr x\$1 : '..\([^/]*\)'\`
2749 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2750 if $test ! -d "\$dir"; then
2752 echo "\$me: can't locate home directory for: \$name" >&2
2757 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2773 : now set up to get a file name
2777 cat <<'EOSC' >>getfile
2790 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2791 fn=`echo $fn | sed 's/(.*)//'`
2797 loc_file=`expr $fn : '.*:\(.*\)'`
2798 fn=`expr $fn : '\(.*\):.*'`
2806 */*) fullpath=true;;
2815 *e*) exp_file=true;;
2818 *p*) nopath_ok=true;;
2823 *d*) type='Directory';;
2824 *l*) type='Locate';;
2829 Locate) what='File';;
2834 case "$d_portable" in
2842 while test "$type"; do
2847 true) rp="$rp (~name ok)";;
2850 if test -f UU/getfile.ok && \
2851 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2870 value=`UU/filexp $ans`
2873 if test "$ans" != "$value"; then
2874 echo "(That expands to $value on this system.)"
2888 /*) value="$ansexp" ;;
2893 echo "I shall only accept a full path name, as in /bin/ls." >&4
2894 echo "Use a ! shell escape if you wish to check pathnames." >&4
2897 echo "Please give a full path name, starting with slash." >&4
2900 echo "Note that using ~name is ok provided it expands well." >&4
2913 if test -f "$ansexp"; then
2915 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2917 echo "($value is not a plain file, but that's ok.)"
2922 if test -d "$ansexp"; then
2927 if test -d "$ansexp"; then
2928 echo "(Looking for $loc_file in directory $value.)"
2929 value="$value/$loc_file"
2930 ansexp="$ansexp/$loc_file"
2932 if test -f "$ansexp"; then
2935 case "$nopath_ok" in
2936 true) case "$value" in
2938 *) echo "Assuming $value will be in people's path."
2954 if test "$fastread" = yes; then
2959 rp="$what $value doesn't exist. Use that name anyway?"
2980 : determine root of directory hierarchy where package will be installed.
2983 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2991 By default, $package will be installed in $dflt/bin, manual pages
2992 under $dflt/man, etc..., i.e. with $dflt as prefix for all
2993 installation directories. Typically this is something like /usr/local.
2994 If you wish to have binaries under /usr/bin but other parts of the
2995 installation under /usr/local, that's ok: you will be prompted
2996 separately for each of the installation directories, the prefix being
2997 only used to set the defaults.
3001 rp='Installation prefix to use?'
3009 *) oldprefix="$prefix";;
3019 $define|true) afs=true ;;
3020 $undef|false) afs=false ;;
3021 *) if test -d /afs; then
3029 echo "AFS may be running... I'll be extra cautious then..." >&4
3031 echo "AFS does not seem to be running..." >&4
3034 : determine installation prefix for where package is to be installed.
3038 Since you are running AFS, I need to distinguish the directory in which
3039 files will reside from the directory in which they are installed (and from
3040 which they are presumably copied to the former directory by occult means).
3043 case "$installprefix" in
3044 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3045 *) dflt="$installprefix";;
3050 In some special cases, particularly when building $package for distribution,
3051 it is convenient to distinguish between the directory in which files should
3052 be installed from the directory ($prefix) in which they
3053 will eventually reside. For most users, these two directories are the same.
3056 case "$installprefix" in
3058 *) dflt=$installprefix;;
3062 rp='What installation prefix should I use for installing files?'
3064 installprefix="$ans"
3065 installprefixexp="$ansexp"
3067 : set the prefixit variable, to compute a suitable default value
3068 prefixit='case "$3" in
3070 case "$oldprefix" in
3071 "") eval "$1=\"\$$2\"";;
3078 ""|" ") eval "$1=\"\$$2\"";;
3084 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3086 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3087 /*-$oldprefix/*|\~*-$oldprefix/*)
3088 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3089 *) eval "$1=\"\$$2\"";;
3093 : set the base revision
3096 : get the patchlevel
3098 echo "Getting the current patchlevel..." >&4
3099 if $test -r $rsrc/patchlevel.h;then
3100 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3101 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3106 $echo $n "(You have $package" $c
3109 *) $echo $n " $baserev" $c ;;
3111 $echo $n " patchlevel $patchlevel" $c
3112 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3115 if test 0 -eq "$subversion"; then
3116 version=`LC_ALL=C; export LC_ALL; \
3117 echo $baserev $patchlevel | \
3118 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3120 version=`LC_ALL=C; export LC_ALL; \
3121 echo $baserev $patchlevel $subversion | \
3122 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3124 : Figure out perl API version. Perhaps this should be in patchlevel.h
3125 if test "$subversion" -lt 50; then
3126 apiversion=`LC_ALL=C; export LC_ALL; \
3127 LANGUAGE=C; export LANGUAGE; \
3128 echo $baserev $patchlevel | \
3129 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3131 apiversion="$version"
3134 : determine installation style
3135 : For now, try to deduce it from prefix unless it is already set.
3136 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3137 case "$installstyle" in
3138 '') case "$prefix" in
3139 *perl*) dflt='lib';;
3140 *) dflt='lib/perl5' ;;
3143 *) dflt='lib/perl5' ;;
3145 : Probably not worth prompting for this since we prompt for all
3146 : the directories individually, and the prompt would be too long and
3150 : determine where private library files go
3151 : Usual default is /usr/local/lib/perl5/$version.
3152 : Also allow things like /opt/perl/lib/$version, since
3153 : /opt/perl/lib/perl5... would be redundant.
3154 : The default "style" setting is made in installstyle.U
3155 case "$installstyle" in
3156 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3157 *) set dflt privlib lib/$version ;;
3162 There are some auxiliary files for $package that need to be put into a
3163 private library directory that is accessible by everyone.
3167 rp='Pathname where the private library files will reside?'
3170 privlibexp="$ansexp"
3171 : Change installation prefix, if necessary.
3172 if $test X"$prefix" != X"$installprefix"; then
3173 installprivlib=`echo $privlibexp | sed 's#^$prefix#$installprefix#'`
3176 : set the prefixup variable, to restore leading tilda escape
3177 prefixup='case "$prefixexp" in
3179 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3182 : determine where public architecture dependent libraries go
3185 : privlib default is /usr/local/lib/$package/$version
3186 : archlib default is /usr/local/lib/$package/$version/$archname
3187 : privlib may have an optional trailing /share.
3188 tdflt=`echo $privlib | $sed 's,/share$,,'`
3189 tdflt=$tdflt/$archname
3198 $spackage contains architecture-dependent library files. If you are
3199 sharing libraries in a heterogeneous environment, you might store
3200 these files in a separate location. Otherwise, you can just include
3201 them with the rest of the public library files.
3205 rp='Where do you want to put the public architecture-dependent libraries?'
3208 archlibexp="$ansexp"
3209 if $test X"$archlib" = X"$privlib"; then
3214 : Change installation prefix, if necessary.
3215 if $test X"$prefix" != X"$installprefix"; then
3216 installarchlib=`echo $archlibexp | sed 's#^$prefix#$installprefix#'`
3219 : make some quick guesses about what we are up against
3221 $echo $n "Hmm... $c"
3231 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3232 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3234 echo "Looks kind of like an OSF/1 system, but we'll see..."
3236 elif test `echo abc | tr a-z A-Z` = Abc ; then
3237 xxx=`./loc addbib blurfl $pth`
3238 if $test -f $xxx; then
3239 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3243 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3244 echo "Looks kind of like an extended USG system, but we'll see..."
3246 echo "Looks kind of like a USG system, but we'll see..."
3250 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3251 echo "Looks kind of like a BSD system, but we'll see..."
3255 echo "Looks kind of like a Version 7 system, but we'll see..."
3258 case "$eunicefix" in
3261 There is, however, a strange, musty smell in the air that reminds me of
3262 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3266 : it so happens the Eunice I know will not run shell scripts in Unix format
3270 echo "Congratulations. You aren't running Eunice."
3274 : Detect OS2. The p_ variable is set above in the Head.U unit.
3279 I have the feeling something is not exactly right, however...don't tell me...
3280 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3285 if test -f /xenix; then
3286 echo "Actually, this looks more like a XENIX system..."
3291 echo "It's not Xenix..."
3296 if test -f /venix; then
3297 echo "Actually, this looks more like a VENIX system..."
3304 echo "Nor is it Venix..."
3307 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3308 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3311 : see if setuid scripts can be secure
3314 Some kernels have a bug that prevents setuid #! scripts from being
3315 secure. Some sites have disabled setuid #! scripts because of this.
3317 First let's decide if your kernel supports secure setuid #! scripts.
3318 (If setuid #! scripts would be secure but have been disabled anyway,
3319 don't say that they are secure if asked.)
3324 if $test -d /dev/fd; then
3325 echo "#!$ls" >reflect
3326 chmod +x,u+s reflect
3327 ./reflect >flect 2>&1
3328 if $contains "/dev/fd" flect >/dev/null; then
3329 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3333 If you are not sure if they are secure, I can check but I'll need a
3334 username and password different from the one you are using right now.
3335 If you don't have such a username or don't want me to test, simply
3339 rp='Other username to test security of setuid scripts with?'
3344 case "$d_suidsafe" in
3345 '') echo "I'll assume setuid scripts are *not* secure." >&4
3348 echo "Well, the $hint value is *not* secure." >&4
3350 *) echo "Well, the $hint value *is* secure." >&4
3355 $rm -f reflect flect
3356 echo "#!$ls" >reflect
3357 chmod +x,u+s reflect
3360 echo '"su" will (probably) prompt you for '"$ans's password."
3361 su $ans -c './reflect >flect'
3362 if $contains "/dev/fd" flect >/dev/null; then
3363 echo "Okay, it looks like setuid scripts are secure." >&4
3366 echo "I don't think setuid scripts are secure." >&4
3371 rp='Does your kernel have *secure* setuid scripts?'
3374 [yY]*) val="$define";;
3379 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3380 echo "(That's for file descriptors, not floppy disks.)"
3386 $rm -f reflect flect
3388 : now see if they want to do setuid emulation
3391 case "$d_suidsafe" in
3394 echo "No need to emulate SUID scripts since they are secure here." >& 4
3398 Some systems have disabled setuid scripts, especially systems where
3399 setuid scripts cannot be secure. On systems where setuid scripts have
3400 been disabled, the setuid/setgid bits on scripts are currently
3401 useless. It is possible for $package to detect those bits and emulate
3402 setuid/setgid in a secure fashion. This emulation will only work if
3403 setuid scripts have been disabled in your kernel.
3407 "$define") dflt=y ;;
3410 rp="Do you want to do setuid/setgid emulation?"
3413 [yY]*) val="$define";;
3421 : determine where manual pages are on this system
3425 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3426 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3427 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3428 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3429 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3430 sysman=`./loc . /usr/man/man1 $syspath`
3433 if $test -d "$sysman"; then
3434 echo "System manual is in $sysman." >&4
3436 echo "Could not find manual pages in source form." >&4
3439 : see what memory models we can support
3442 $cat >pdp11.c <<'EOP'
3451 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3452 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3453 dflt='unsplit split'
3455 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3458 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3463 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3466 if $test -d /lib/large || $test -d /usr/lib/large; then
3469 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3478 Some systems have different model sizes. On most systems they are called
3479 small, medium, large, and huge. On the PDP11 they are called unsplit and
3480 split. If your system doesn't support different memory models, say "none".
3481 If you wish to force everything to one memory model, say "none" here and
3482 put the appropriate flags later when it asks you for other cc and ld flags.
3483 Venix systems may wish to put "none" and let the compiler figure things out.
3484 (In the following question multiple model names should be space separated.)
3486 The default for most systems is "none".
3489 rp="Which memory models are supported?"
3504 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3505 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3512 rp="What flag indicates separate I and D space?"
3520 *large*|*small*|*medium*|*huge*)
3527 rp="What flag indicates large model?"
3537 *huge*) case "$huge" in
3541 rp="What flag indicates huge model?"
3551 *medium*) case "$medium" in
3555 rp="What flag indicates medium model?"
3562 *) medium="$large";;
3565 *small*) case "$small" in
3569 rp="What flag indicates small model?"
3580 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3583 $rm -f pdp11.* pdp11
3585 : see if we need a special compiler
3593 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3594 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3608 On some older systems the default C compiler will not resolve multiple global
3609 references that happen to have the same name. On some such systems the "Mcc"
3610 command may be used to force these to be resolved. On other systems a "cc -M"
3611 command is required. (Note that the -M flag on other systems indicates a
3612 memory model to use!) If you have the Gnu C compiler, you might wish to use
3618 rp="Use which C compiler?"
3626 rp="Use which C compiler?"
3630 : Look for a hint-file generated 'call-back-unit'. Now that the
3631 : user has specified the compiler, we may need to set or change some
3633 if $test -f cc.cbu; then
3637 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3638 $cat >gccvers.c <<EOM
3643 printf("%s\n", __VERSION__);
3645 printf("%s\n", "1");
3651 if $cc -o gccvers gccvers.c; then
3652 gccversion=`./gccvers`
3653 case "$gccversion" in
3654 '') echo "You are not using GNU cc." ;;
3655 *) echo "You are using GNU cc $gccversion." ;;
3659 echo "*** WHOA THERE!!! ***" >&4
3660 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3661 case "$knowitall" in
3663 echo " You'd better start hunting for one and let me know about it." >&4
3669 case "$gccversion" in
3670 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3673 : What should the include directory be ?
3675 $echo $n "Hmm... $c"
3679 if $test -f /bin/mips && /bin/mips; then
3680 echo "Looks like a MIPS system..."
3681 $cat >usr.c <<'EOCP'
3682 #ifdef SYSTYPE_BSD43
3686 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3687 dflt='/bsd43/usr/include'
3691 mips_type='System V'
3693 $rm -f usr.c usr.out
3694 echo "and you're compiling with the $mips_type compiler and libraries."
3698 echo "Doesn't look like a MIPS system."
3708 case "$xxx_prompt" in
3711 rp='Where are the include files you want to use?'
3719 : see how we invoke the C preprocessor
3721 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3722 cat <<'EOT' >testcpp.c
3728 if test ! -f cppstdin; then
3729 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3731 echo "Keeping your $hint cppstdin wrapper."
3734 wrapper=`pwd`/cppstdin
3738 if $test "X$cppstdin" != "X" && \
3739 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3740 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3742 echo "You used to use $cppstdin $cppminus so we'll use that again."
3744 '') echo "But let's see if we can live without a wrapper..." ;;
3746 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3747 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3749 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3752 echo "(However, $cpprun $cpplast does not work, let's see...)"
3760 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3767 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3768 $cc -E <testcpp.c >testcpp.out 2>&1; \
3769 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3770 echo "Yup, it does."
3773 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3774 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3775 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3776 echo "Yup, it does."
3779 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3780 $cc -P <testcpp.c >testcpp.out 2>&1; \
3781 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3782 echo "Yipee, that works!"
3785 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3786 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3787 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3788 echo "At long last!"
3791 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3792 $cpp <testcpp.c >testcpp.out 2>&1; \
3793 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3797 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3798 $cpp - <testcpp.c >testcpp.out 2>&1; \
3799 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3800 echo "Hooray, it works! I was beginning to wonder."
3803 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3804 $wrapper <testcpp.c >testcpp.out 2>&1; \
3805 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3811 rp="No dice. I can't find a C preprocessor. Name one:"
3815 $x_cpp <testcpp.c >testcpp.out 2>&1
3816 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3817 echo "OK, that will do." >&4
3819 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3834 echo "Perhaps can we force $cc -E using a wrapper..."
3835 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3836 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3842 echo "Nope, we'll have to live without it..."
3856 "$wrapper"|'cppstdin') ;;
3857 *) $rm -f $wrapper;;
3859 $rm -f testcpp.c testcpp.out
3861 : Set private lib path
3864 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3869 '') dlist="$loclibpth $plibpth $glibpth";;
3870 *) dlist="$libpth";;
3873 : Now check and see which directories actually exist, avoiding duplicates
3877 if $test -d $xxx; then
3880 *) libpth="$libpth $xxx";;
3886 Some systems have incompatible or broken versions of libraries. Among
3887 the directories listed in the question below, please remove any you
3888 know not to be holding relevant libraries, and add any that are needed.
3889 Say "none" for none.
3900 rp="Directories to use for library searches?"
3907 : compute shared library extension
3910 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3920 On some systems, shared libraries may be available. Answer 'none' if
3921 you want to suppress searching of shared libraries for the remaining
3922 of this configuration.
3925 rp='What is the file extension used for shared libraries?'
3929 : Define several unixisms.
3930 : Hints files or command line option can be used to override them.
3931 : The convoluted testing is in case hints files set either the old
3934 '') case "$exe_ext" in
3936 *) _exe="$exe_ext" ;;
3941 '') case "$lib_ext" in
3948 '') case "$obj_ext" in
3955 '') case "$path_sep" in
3966 : Which makefile gets called first. This is used by make depend.
3967 case "$firstmakefile" in
3968 '') firstmakefile='makefile';;
3973 Perl can be built to use the SOCKS proxy protocol library. To do so,
3974 Configure must be run with -Dusesocks.
3976 Normally you do not need this and you should answer no.
3980 $define|true|[yY]*) dflt='y';;
3983 rp='Build Perl for SOCKS?'
3986 y|Y) val="$define" ;;
3992 : Looking for optional libraries
3994 echo "Checking for optional libraries..." >&4
3999 case "$libswanted" in
4000 '') libswanted='c_s';;
4004 libswanted="$libswanted socks5 socks5_sh"
4007 for thislib in $libswanted; do
4009 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4010 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4011 echo "Found -l$thislib (shared)."
4014 *) dflt="$dflt -l$thislib";;
4016 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4017 echo "Found -l$thislib (shared)."
4020 *) dflt="$dflt -l$thislib";;
4022 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4023 echo "Found -l$thislib."
4026 *) dflt="$dflt -l$thislib";;
4028 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4029 echo "Found -l$thislib."
4032 *) dflt="$dflt -l$thislib";;
4034 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4035 echo "Found -l${thislib}_s."
4038 *) dflt="$dflt -l${thislib}_s";;
4040 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4041 echo "Found -l$thislib."
4044 *) dflt="$dflt -l$thislib";;
4047 echo "No -l$thislib."
4058 ' '|'') dflt='none';;
4063 In order to compile $package on your machine, a number of libraries
4064 are usually needed. Include any other special libraries here as well.
4065 Say "none" for none. The default list is almost always right.
4069 rp="What libraries to use?"
4076 : determine optimize, if desired, or use for debug flag also
4078 ' '|$undef) dflt='none';;
4080 *) dflt="$optimize";;
4084 Some C compilers have problems with their optimizers. By default, $package
4085 compiles with the -O flag to use the optimizer. Alternately, you might want
4086 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4087 systems). Either flag can be specified here. To use neither flag, specify
4091 rp="What optimizer/debugger flag should be used?"
4095 'none') optimize=" ";;
4099 : We will not override a previous value, but we might want to
4100 : augment a hint file
4103 case "$gccversion" in
4104 1*) dflt='-fpcc-struct-return' ;;
4107 *-g*) dflt="$dflt -DDEBUGGING";;
4109 case "$gccversion" in
4110 2*) if test -d /etc/conf/kconfig.d &&
4111 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4120 case "$mips_type" in
4121 *BSD*|'') inclwanted="$locincpth $usrinc";;
4122 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4124 for thisincl in $inclwanted; do
4125 if $test -d $thisincl; then
4126 if $test x$thisincl != x$usrinc; then
4129 *) dflt="$dflt -I$thisincl";;
4135 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4137 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4145 *) dflt="$dflt -D$2";;
4149 set signal.h LANGUAGE_C; eval $inctest
4153 ccflags="$ccflags -DSOCKS"
4158 none|recommended) dflt="$ccflags $dflt" ;;
4159 *) dflt="$ccflags";;
4167 Your C compiler may want other flags. For this question you should include
4168 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4169 but you should NOT include libraries or ld flags like -lwhatever. If you
4170 want $package to honor its debug switch, you should include -DDEBUGGING here.
4171 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4173 To use no flags, specify the word "none".
4179 rp="Any additional cc flags?"
4186 : the following weeds options from ccflags that are of no interest to cpp
4188 case "$gccversion" in
4189 1*) cppflags="$cppflags -D__GNUC__"
4191 case "$mips_type" in
4193 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4199 echo "Let me guess what the preprocessor flags are..." >&4
4213 *) ftry="$previous $flag";;
4215 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4216 >cpp1.out 2>/dev/null && \
4217 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4218 >cpp2.out 2>/dev/null && \
4219 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4220 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4222 cppflags="$cppflags $ftry"
4232 *-*) echo "They appear to be: $cppflags";;
4234 $rm -f cpp.c cpp?.out
4238 : flags used in final linking phase
4240 '') if ./venix; then
4246 *-posix*) dflt="$dflt -posix" ;;
4249 *) dflt="$ldflags";;
4252 : Try to guess additional flags to pick up local libraries.
4253 for thislibdir in $libpth; do
4254 case " $loclibpth " in
4257 *"-L$thislibdir "*) ;;
4258 *) dflt="$dflt -L$thislibdir" ;;
4270 Your C linker may need flags. For this question you should
4271 include -L/whatever and any other flags used by the C linker, but you
4272 should NOT include libraries like -lwhatever.
4274 Make sure you include the appropriate -L/path flags if your C linker
4275 does not normally search all of the directories you specified above,
4278 To use no flags, specify the word "none".
4282 rp="Any additional ld flags (NOT including libraries)?"
4288 rmlist="$rmlist pdp11"
4292 echo "Checking your choice of C compiler and flags for coherency..." >&4
4293 $cat > try.c <<'EOF'
4295 int main() { printf("Ok\n"); exit(0); }
4297 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4299 $cat >try.msg <<'EOM'
4300 I've tried to compile and run the following simple program:
4303 $cat try.c >> try.msg
4305 $cat >> try.msg <<EOM
4312 and I got the following output:
4316 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4317 if sh -c './try' >>try.msg 2>&1; then
4321 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4324 cat >> try.msg <<'EOQS'
4325 If $libs contains -lsfio, and sfio is mis-configured, then it
4326 sometimes (apparently) runs and exits with a 0 status, but with no
4327 output! It may have to do with sfio's use of _exit vs. exit.
4330 rp="You have a big problem. Shall I abort Configure"
4337 echo "The program compiled OK, but exited with status $?." >>try.msg
4338 rp="You have a problem. Shall I abort Configure"
4342 echo "I can't compile the test program." >>try.msg
4343 rp="You have a BIG problem. Shall I abort Configure"
4349 case "$knowitall" in
4351 echo "(The supplied flags or libraries might be incorrect.)"
4359 *) echo "Ok. Stopping Configure." >&4
4364 n) echo "OK, that should do.";;
4366 $rm -f try try.* core
4368 : determine filename position in cpp output
4370 echo "Computing filename position in cpp output for #include directives..." >&4
4371 echo '#include <stdio.h>' > foo.c
4374 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4375 $grep '^[ ]*#.*stdio\.h' | \
4376 while read cline; do
4379 while $test \$# -gt 0; do
4380 if $test -r \`echo \$1 | $tr -d '"'\`; then
4385 pos=\`expr \$pos + 1\`
4397 *) pos="${fieldn}th";;
4399 echo "Your cpp writes the filename in the $pos field of the line."
4401 : locate header file
4406 for usrincdir in $usrinc
4408 if test -f \$usrincdir/\$wanted; then
4409 echo "\$usrincdir/\$wanted"
4413 awkprg='{ print \$$fieldn }'
4414 echo "#include <\$wanted>" > foo\$\$.c
4415 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4416 $grep "^[ ]*#.*\$wanted" | \
4417 while read cline; do
4418 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4420 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4421 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4426 # status = 0: grep returned 0 lines, case statement not executed
4427 # status = 1: headerfile found
4428 # status = 2: while loop executed, no headerfile found
4432 if test \$status -eq 1; then
4439 : define an alternate in-header-list? function
4440 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4441 cont=true; xxf="echo \"<\$1> found.\" >&4";
4442 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4443 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4445 case $# in 4) instead=instead;; *) instead="at last";; esac;
4446 while $test "$cont"; do
4448 var=$2; eval "was=\$$2";
4449 if $test "$xxx" && $test -r "$xxx";
4451 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4454 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4455 set $yyy; shift; shift; yyy=$@;
4456 case $# in 0) cont="";;
4457 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4458 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4459 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4460 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4464 do set $yyy; var=$2; eval "was=\$$2";
4465 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4466 set $yyy; shift; shift; yyy=$@;
4469 : see if this is a malloc.h system
4470 set malloc.h i_malloc
4473 : see if stdlib is available
4474 set stdlib.h i_stdlib
4477 : determine which malloc to compile in
4479 case "$usemymalloc" in
4480 ''|[yY]*|true|$define) dflt='y' ;;
4483 rp="Do you wish to attempt to use the malloc that comes with $package?"
4489 mallocsrc='malloc.c'
4490 mallocobj="malloc$_o"
4491 d_mymalloc="$define"
4494 : Remove malloc from list of libraries to use
4495 echo "Removing unneeded -lmalloc from library list" >&4
4496 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4499 echo "libs = $libs" >&4
4511 : compute the return types of malloc and free
4513 $cat >malloc.c <<END
4517 #include <sys/types.h>
4531 case "$malloctype" in
4533 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4540 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4544 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4551 echo "Your system uses $freetype free(), it would seem." >&4
4553 : Cruising for prototypes
4555 echo "Checking out function prototypes..." >&4
4556 $cat >prototype.c <<'EOCP'
4557 int main(int argc, char *argv[]) {
4560 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4561 echo "Your C compiler appears to support function prototypes."
4564 echo "Your C compiler doesn't seem to understand function prototypes."
4571 case "$prototype" in
4573 *) ansi2knr='ansi2knr'
4578 This version of $package can only be compiled by a compiler that
4579 understands function prototypes. Unfortunately, your C compiler
4581 doesn't seem to understand them. Sorry about that.
4583 If GNU cc is available for your system, perhaps you could try that instead.
4585 Eventually, we hope to support building Perl with pre-ANSI compilers.
4586 If you would like to help in that effort, please contact <perlbug@perl.org>.
4588 Aborting Configure now.
4594 : determine where public executables go
4599 rp='Pathname where the public executables will reside?'
4601 if $test "X$ansexp" != "X$binexp"; then
4606 : Change installation prefix, if necessary.
4607 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
4608 if $test X"$prefix" != X"$installprefix"; then
4609 installbin=`echo binexp | sed 's#^$prefix#$installprefix#'`
4612 : determine whether to install perl also as /usr/bin/perl
4615 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4617 Many scripts expect to perl to be installed as /usr/bin/perl.
4618 I can install the perl you are about to compile also as /usr/bin/perl
4619 (in addition to $installbin/perl).
4621 case "$installusrbinperl" in
4622 "$undef"|[nN]*) dflt='n';;
4625 rp="Do you want to install perl as /usr/bin/perl?"
4628 [yY]*) val="$define";;
4634 set installusrbinperl
4637 : define a shorthand compile call
4641 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4642 : define a shorthand compile call for compilations that should be ok.
4646 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4649 echo "Checking for GNU C Library..." >&4
4650 cat >gnulibc.c <<EOM
4662 if eval $compile_ok && ./gnulibc; then
4664 echo "You are using the GNU C Library"
4667 echo "You are not using the GNU C Library"
4673 : see if nm is to be used to determine whether a symbol is defined or not
4677 case "$d_gnulibc" in
4680 echo "nm probably won't work on the GNU C Library." >&4
4686 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4688 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4689 echo "'nm' won't be sufficient on this sytem." >&4
4695 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4696 if $test $dflt -gt 20; then
4706 true|$define) dflt=y;;
4713 I can use $nm to extract the symbols from your C libraries. This
4714 is a time consuming task which may generate huge output on the disk (up
4715 to 3 megabytes) but that should make the symbols extraction faster. The
4716 alternative is to skip the 'nm' extraction part and to compile a small
4717 test program instead to determine whether each symbol is present. If
4718 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4719 this may be the best solution.
4721 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4724 rp="Shall I use $nm to extract C symbols from the libraries?"
4727 [Nn]*) usenm=false;;
4736 : nm options which may be necessary
4738 '') if $test -f /mach_boot; then
4740 elif $test -d /usr/ccs/lib; then
4741 nm_opt='-p' # Solaris (and SunOS?)
4742 elif $test -f /dgux; then
4744 elif $test -f /lib64/rld; then
4745 nm_opt='-p' # 64-bit Irix
4751 : nm options which may be necessary for shared libraries but illegal
4752 : for archive libraries. Thank you, Linux.
4753 case "$nm_so_opt" in
4754 '') case "$myuname" in
4756 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4757 nm_so_opt='--dynamic'
4766 : get list of predefined functions in a handy place
4771 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4778 *) for thislib in $libs; do
4781 : Handle C library specially below.
4784 thislib=`echo $thislib | $sed -e 's/^-l//'`
4785 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4787 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4789 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4791 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4793 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4795 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4797 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4802 libnames="$libnames $try"
4804 *) libnames="$libnames $thislib" ;;
4813 for xxx in $libpth; do
4814 $test -r $1 || set $xxx/libc.$so
4815 : The messy sed command sorts on library version numbers.
4817 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4818 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4820 s/[0-9][0-9]*/0000&/g
4821 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4824 sort | $sed -e 's/^.* //'`
4827 $test -r $1 || set /usr/ccs/lib/libc.$so
4828 $test -r $1 || set /lib/libsys_s$_a
4834 if $test -r "$1"; then
4835 echo "Your (shared) C library seems to be in $1."
4837 elif $test -r /lib/libc && $test -r /lib/clib; then
4838 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4840 libc='/lib/clib /lib/libc'
4841 if $test -r /lib/syslib; then
4842 echo "(Your math library is in /lib/syslib.)"
4843 libc="$libc /lib/syslib"
4845 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4846 echo "Your C library seems to be in $libc, as you said before."
4847 elif $test -r $incpath/usr/lib/libc$_a; then
4848 libc=$incpath/usr/lib/libc$_a;
4849 echo "Your C library seems to be in $libc. That's fine."
4850 elif $test -r /lib/libc$_a; then
4852 echo "Your C library seems to be in $libc. You're normal."
4854 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4856 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4857 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4858 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4860 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4862 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4865 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4867 if $test -r "$tans"; then
4868 echo "Your C library seems to be in $tans, of all places."
4874 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4878 If the guess above is wrong (which it might be if you're using a strange
4879 compiler, or your machine supports multiple models), you can override it here.
4884 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4886 I can't seem to find your C library. I've looked in the following places:
4889 $sed 's/^/ /' libpath
4892 None of these seems to contain your C library. I need to get its name...
4897 rp='Where is your C library?'
4902 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4903 set X `cat libnames`
4906 case $# in 1) xxx=file; esac
4907 echo "Extracting names from the following $xxx for later perusal:" >&4
4909 $sed 's/^/ /' libnames >&4
4911 $echo $n "This may take a while...$c" >&4
4915 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4916 *) $nm $nm_opt $file 2>/dev/null;;
4921 $grep fprintf libc.tmp > libc.ptf
4922 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4923 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4925 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4927 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4929 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4931 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4933 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4935 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4937 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4939 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4941 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4943 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4945 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4947 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4949 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4950 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4952 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4954 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4956 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4958 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4960 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4962 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4964 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4966 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4968 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4970 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4972 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4974 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4976 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4978 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4980 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4983 $nm -p $* 2>/dev/null >libc.tmp
4984 $grep fprintf libc.tmp > libc.ptf
4985 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4986 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4992 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4994 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4995 for thisname in $libnames $libc; do
4996 $ar t $thisname >>libc.tmp
4998 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5000 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5001 # Repeat libc to extract forwarders to DLL entries too
5002 for thisname in $libnames $libc; do
5003 $ar tv $thisname >>libc.tmp
5004 # Revision 50 of EMX has bug in $ar.
5005 # it will not extract forwarders to DLL entries
5006 # Use emximp which will extract exactly them.
5007 emximp -o tmp.imp $thisname \
5009 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5010 < tmp.imp >>libc.tmp
5013 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5016 echo "$ar didn't seem to work right." >&4
5017 echo "Maybe this is a Cray...trying bld instead..." >&4
5018 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5020 for thisname in $libnames; do
5022 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5023 $ar t $thisname >>libc.tmp
5027 echo "That didn't work either. Giving up." >&4
5034 if $test -f /lib/syscalls.exp; then
5036 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5037 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5041 $rm -f libnames libpath
5043 : see if dld is available
5047 : is a C symbol defined?
5050 -v) tf=libc.tmp; tc=""; tdc="";;
5051 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5052 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5055 case "$reuseval-$4" in
5057 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5063 if $contains $tlook $tf >/dev/null 2>&1;
5068 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5069 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5077 $define) tval=true;;
5083 : define an is-in-libc? function
5084 inlibc='echo " "; td=$define; tu=$undef;
5085 sym=$1; var=$2; eval "was=\$$2";
5087 case "$reuseval$was" in
5097 echo "$sym() found." >&4;
5098 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5100 echo "$sym() NOT found." >&4;
5101 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5105 $define) echo "$sym() found." >&4;;
5106 *) echo "$sym() NOT found." >&4;;
5110 : see if dlopen exists
5117 : determine which dynamic loading, if any, to compile in
5119 dldir="ext/DynaLoader"
5132 $define) dflt='y' ;;
5135 $define) dflt='y' ;;
5137 : Does a dl_xxx.xs file exist for this operating system
5138 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5141 rp="Do you wish to use dynamic loading?"
5148 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5149 dflt="$dldir/dl_${osname}.xs"
5150 elif $test "$d_dlopen" = "$define" ; then
5151 dflt="$dldir/dl_dlopen.xs"
5152 elif $test "$i_dld" = "$define" ; then
5153 dflt="$dldir/dl_dld.xs"
5158 *) dflt="$dldir/$dlsrc"
5161 echo "The following dynamic loading files are available:"
5162 : Can not go over to $dldir because getfile has path hard-coded in.
5163 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5164 rp="Source file to use for dynamic loading"
5166 # XXX This getfile call will fail the existence check if you try
5167 # building away from $src (this is not supported yet).
5171 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5175 Some systems may require passing special flags to $cc -c to
5176 compile modules that will be used to create a shared library.
5177 To use no flags, say "none".
5180 case "$cccdlflags" in
5181 '') case "$gccversion" in
5182 '') case "$osname" in
5184 next) dflt='none' ;;
5185 irix*) dflt='-KPIC' ;;
5186 svr4*|esix*|solaris) dflt='-KPIC' ;;
5187 sunos) dflt='-pic' ;;
5191 *) case "$osname" in
5192 svr4*|esix*|solaris) dflt='-fPIC' ;;
5197 *) dflt="$cccdlflags" ;;
5199 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5202 none) cccdlflags=' ' ;;
5203 *) cccdlflags="$ans" ;;
5208 Some systems use ld to create libraries that can be dynamically loaded,
5209 while other systems (such as those using ELF) use $cc.
5213 '') $cat >try.c <<'EOM'
5214 /* Test for whether ELF binaries are produced */
5219 int i = open("a.out",O_RDONLY);
5222 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5223 exit(0); /* succeed (yes, it's ELF) */
5228 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5230 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5234 echo "I'll use ld to build dynamic libraries."
5243 rp="What command should be used to create dynamic libraries?"
5249 Some systems may require passing special flags to $ld to create a
5250 library that can be dynamically loaded. If your ld flags include
5251 -L/other/path options to locate libraries outside your loader's normal
5252 search path, you may need to specify those -L options here as well. To
5253 use no flags, say "none".
5256 case "$lddlflags" in
5257 '') case "$osname" in
5258 beos) dflt='-nostart' ;;
5260 linux|irix*) dflt='-shared' ;;
5261 next) dflt='none' ;;
5262 solaris) dflt='-G' ;;
5263 sunos) dflt='-assert nodefinitions' ;;
5264 svr4*|esix*) dflt="-G $ldflags" ;;
5268 *) dflt="$lddlflags" ;;
5271 : Try to guess additional flags to pick up local libraries.
5272 : Be careful not to append to a plain 'none'
5276 for thisflag in $ldflags; do
5281 *) dflt="$dflt $thisflag" ;;
5288 ''|' ') dflt='none' ;;
5291 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5294 none) lddlflags=' ' ;;
5295 *) lddlflags="$ans" ;;
5300 Some systems may require passing special flags to $cc to indicate that
5301 the resulting executable will use dynamic linking. To use no flags,
5305 case "$ccdlflags" in
5306 '') case "$osname" in
5307 hpux) dflt='-Wl,-E' ;;
5308 linux) dflt='-rdynamic' ;;
5309 next) dflt='none' ;;
5310 sunos) dflt='none' ;;
5314 *) dflt="$ccdlflags" ;;
5316 rp="Any special flags to pass to $cc to use dynamic loading?"
5319 none) ccdlflags=' ' ;;
5320 *) ccdlflags="$ans" ;;
5334 # No dynamic loading being used, so don't bother even to prompt.
5337 *) case "$useshrplib" in
5338 '') case "$osname" in
5339 svr4*|dgux|dynixptx|esix|powerux|beos)
5341 also='Building a shared libperl is required for dynamic loading to work on your system.'
5346 also='Building a shared libperl is needed for MAB support.'
5364 The perl executable is normally obtained by linking perlmain.c with
5365 libperl${_a}, any static extensions (usually just DynaLoader), and
5366 any other libraries needed on this system (such as -lm, etc.). Since
5367 your system supports dynamic loading, it is probably possible to build
5368 a shared libperl.$so. If you will have more than one executable linked
5369 to libperl.$so, this will significantly reduce the size of each
5370 executable, but it may have a noticeable affect on performance. The
5371 default is probably sensible for your system.
5375 rp="Build a shared libperl.$so (y/n)"
5379 useshrplib='true' ;;
5380 *) useshrplib='false' ;;
5385 case "$useshrplib" in
5389 # Figure out a good name for libperl.so. Since it gets stored in
5390 # a version-specific architecture-dependent library, the version
5391 # number isn't really that important, except for making cc/ld happy.
5393 # A name such as libperl.so.3.1
5394 majmin="libperl.$so.$patchlevel.$subversion"
5395 # A name such as libperl.so.301
5396 majonly=`echo $patchlevel $subversion |
5397 $awk '{printf "%d%02d", $1, $2}'`
5398 majonly=libperl.$so.$majonly
5399 # I'd prefer to keep the os-specific stuff here to a minimum, and
5400 # rely on figuring it out from the naming of libc.
5401 case "${osname}${osvers}" in
5404 # XXX How handle the --version stuff for MAB?
5406 linux*) # ld won't link with a bare -lperl otherwise.
5409 *) # Try to guess based on whether libc has major.minor.
5411 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5412 *libc.$so.[0-9]*) dflt=$majonly ;;
5413 *) dflt=libperl.$so ;;
5423 I need to select a good name for the shared libperl. If your system uses
5424 library names with major and minor numbers, then you might want something
5425 like $majmin. Alternatively, if your system uses a single version
5426 number for shared libraries, then you might want to use $majonly.
5427 Or, your system might be quite happy with a simple libperl.$so.
5429 Since the shared libperl will get installed into a version-specific
5430 architecture-dependent directory, the version number of the shared perl
5431 library probably isn't important, so the default should be o.k.
5434 rp='What name do you want to give to the shared libperl?'
5437 echo "Ok, I'll use $libperl"
5440 libperl="libperl${_a}"
5444 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5448 WARNING: Use of the shrpdir variable for the installation location of
5449 the shared $libperl is not supported. It was never documented and
5450 will not work in this version. Let me (perlbug@perl.com)
5451 know of any problems this may cause.
5457 But your current setting of $shrpdir is
5458 the default anyway, so it's harmless.
5463 Further, your current attempted setting of $shrpdir
5464 conflicts with the value of $archlibexp/CORE
5465 that installperl will use.
5472 # How will the perl executable find the installed shared $libperl?
5473 # Add $xxx to ccdlflags.
5474 # If we can't figure out a command-line option, use $shrpenv to
5475 # set env LD_RUN_PATH. The main perl makefile uses this.
5476 shrpdir=$archlibexp/CORE
5479 if "$useshrplib"; then
5482 # We'll set it in Makefile.SH...
5488 xxx="-Wl,-R$shrpdir"
5490 linux|irix*|dec_osf)
5491 xxx="-Wl,-rpath,$shrpdir"
5494 # next doesn't like the default...
5497 # beos doesn't like the default, either.
5500 # hpux doesn't like the default, either.
5501 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5504 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5510 # Only add $xxx if it isn't already in ccdlflags.
5511 case " $ccdlflags " in
5513 *) ccdlflags="$ccdlflags $xxx"
5516 Adding $xxx to the flags
5517 passed to $ld so that the perl executable will find the
5518 installed shared $libperl.
5526 # Fix ccdlflags in AIX for building external extensions.
5527 # (For building Perl itself bare -bE:perl.exp is needed,
5528 # Makefile.SH takes care of this.)
5530 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
5532 # Respect a hint or command-line value.
5534 '') shrpenv="$tmp_shrpenv" ;;
5536 case "$ldlibpthname" in
5537 '') ldlibpthname=LD_LIBRARY_PATH ;;
5538 none) ldlibpthname='' ;;
5541 : determine where manual pages go
5542 set man1dir man1dir none
5546 $spackage has manual pages available in source form.
5550 echo "However, you don't have nroff, so they're probably useless to you."
5552 '') man1dir="none";;
5555 echo "If you don't want the manual sources installed, answer 'none'."
5560 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5561 lookpath="$lookpath $prefixexp/man/p_man/man1"
5562 lookpath="$lookpath $prefixexp/man/u_man/man1"
5563 lookpath="$lookpath $prefixexp/man/man.1"
5565 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5566 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5576 rp="Where do the main $spackage manual pages (source) go?"
5578 if $test "X$man1direxp" != "X$ansexp"; then
5582 man1direxp="$ansexp"
5588 : Change installation prefix, if necessary.
5589 if $test X"$prefix" != X"$installprefix"; then
5590 installman1dir=`echo $man1direxp | $sed 's#^$prefix#$installprefix#'`
5593 : What suffix to use on installed man pages
5600 rp="What suffix should be used for the main $spackage man pages?"
5602 '') case "$man1dir" in
5616 *) dflt="$man1ext";;
5623 : see if we can have long filenames
5625 rmlist="$rmlist /tmp/cf$$"
5626 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5627 first=123456789abcdef
5628 second=/tmp/cf$$/$first
5629 $rm -f $first $second
5630 if (echo hi >$first) 2>/dev/null; then
5631 if $test -f 123456789abcde; then
5632 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5635 if (echo hi >$second) 2>/dev/null; then
5636 if $test -f /tmp/cf$$/123456789abcde; then
5638 That's peculiar... You can have filenames longer than 14 characters, but only
5639 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5640 I shall consider your system cannot support long filenames at all.
5644 echo 'You can have filenames longer than 14 characters.' >&4
5649 How confusing! Some of your filesystems are sane enough to allow filenames
5650 longer than 14 characters but some others like /tmp can't even think about them.
5651 So, for now on, I shall assume your kernel does not allow them at all.
5658 You can't have filenames longer than 14 chars. You can't even think about them!
5664 $rm -rf /tmp/cf$$ 123456789abcde*
5666 : determine where library module manual pages go
5667 set man3dir man3dir none
5671 $spackage has manual pages for many of the library modules.
5677 However, you don't have nroff, so they're probably useless to you.
5680 '') man3dir="none";;
5684 case "$d_flexfnam" in
5687 However, your system can't handle the long file names like File::Basename.3.
5690 '') man3dir="none";;
5694 echo "If you don't want the manual sources installed, answer 'none'."
5695 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5697 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
5698 if $test -d "$privlib/man/man3"; then
5701 WARNING: Previous versions of perl installed man3 pages into
5702 $privlib/man/man3. This version will suggest a
5703 new default of $dflt.
5707 rp='Do you wish to preserve the old behavior?(y/n)'
5710 y*) dflt="$privlib/man/man3" ;;
5716 *) dflt="$man3dir" ;;
5720 rp="Where do the $package library man pages (source) go?"
5723 man3direxp="$ansexp"
5729 : Change installation prefix, if necessary.
5730 if $test X"$prefix" != X"$installprefix"; then
5731 installman3dir=`echo $man3direxp | $sed 's#^$prefix#$installprefix#'`
5734 : What suffix to use on installed man pages
5740 rp="What suffix should be used for the $package library man pages?"
5742 '') case "$man3dir" in
5756 *) dflt="$man3ext";;
5763 : see if we have to deal with yellow pages, now NIS.
5764 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5765 if $test -f /usr/etc/nibindd; then
5767 echo "I'm fairly confident you're on a NeXT."
5769 rp='Do you get the hosts file via NetInfo?'
5778 y*) hostcat='nidump hosts .';;
5779 *) case "$hostcat" in
5780 nidump*) hostcat='';;
5790 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5798 rp='Are you getting the hosts file via yellow pages?'
5801 y*) hostcat='ypcat hosts';;
5802 *) hostcat='cat /etc/hosts';;
5808 '') hostcat='cat /etc/hosts';;
5811 '') groupcat='cat /etc/group';;
5814 '') passcat='cat /etc/passwd';;
5817 : now get the host name
5819 echo "Figuring out host name..." >&4
5820 case "$myhostname" in
5822 echo 'Maybe "hostname" will work...'
5823 if tans=`sh -c hostname 2>&1` ; then
5831 if $test "$cont"; then
5833 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5834 if tans=`cat /etc/systemid 2>&1` ; then
5836 phostname='cat /etc/systemid'
5837 echo "Whadyaknow. Xenix always was a bit strange..."
5840 elif $test -r /etc/systemid; then
5841 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5844 if $test "$cont"; then
5845 echo 'No, maybe "uuname -l" will work...'
5846 if tans=`sh -c 'uuname -l' 2>&1` ; then
5848 phostname='uuname -l'
5850 echo 'Strange. Maybe "uname -n" will work...'
5851 if tans=`sh -c 'uname -n' 2>&1` ; then
5853 phostname='uname -n'
5855 echo 'Oh well, maybe I can mine it out of whoami.h...'
5856 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5857 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5858 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5860 case "$myhostname" in
5861 '') echo "Does this machine have an identity crisis or something?"
5864 echo "Well, you said $myhostname before..."
5865 phostname='echo $myhostname';;
5871 : you do not want to know about this
5876 if $test "$myhostname" ; then
5878 rp='Your host name appears to be "'$myhostname'".'" Right?"
5886 : bad guess or no guess
5887 while $test "X$myhostname" = X ; do
5889 rp="Please type the (one word) name of your host:"
5894 : translate upper to lower if necessary
5895 case "$myhostname" in
5897 echo "(Normalizing case in your host name)"
5898 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5902 case "$myhostname" in
5904 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5905 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5906 echo "(Trimming domain name from host name--host name is now $myhostname)"
5908 *) case "$mydomain" in
5911 test "X$hostcat" = "Xypcat hosts" &&
5912 ypmatch "$myhostname" hosts 2>/dev/null |\
5913 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5916 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5917 /[ ]$myhostname[ . ]/p" > hosts
5920 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5921 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5922 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5923 hosts | $sort | $uniq | \
5924 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5925 case `$echo X$dflt` in
5926 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5929 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5934 tans=`./loc resolv.conf X /etc /usr/etc`
5935 if $test -f "$tans"; then
5936 echo "(Attempting domain name extraction from $tans)"
5937 dflt=.`$sed -n -e 's/ / /g' \
5938 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5939 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5941 .) dflt=.`$sed -n -e 's/ / /g' \
5942 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5943 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5950 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5951 dflt=.`sh -c domainname 2>/dev/null`
5954 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5959 .) echo "(Lost all hope -- silly guess then)"
5965 *) dflt="$mydomain";;
5969 rp="What is your domain name?"
5979 : translate upper to lower if necessary
5982 echo "(Normalizing case in your domain name)"
5983 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5987 : a little sanity check here
5988 case "$phostname" in
5991 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5992 $myhostname$mydomain|$myhostname) ;;
5994 case "$phostname" in
5996 echo "(That doesn't agree with your whoami.h file, by the way.)"
5999 echo "(That doesn't agree with your $phostname command, by the way.)"
6009 I need to get your e-mail address in Internet format if possible, i.e.
6010 something like user@host.domain. Please answer accurately since I have
6011 no easy means to double check it. The default value provided below
6012 is most probably close to the reality but may not be valid from outside
6013 your organization...
6017 while test "$cont"; do
6019 '') dflt="$cf_by@$myhostname$mydomain";;
6020 *) dflt="$cf_email";;
6022 rp='What is your e-mail address?'
6028 rp='Address does not look like an Internet one. Use it anyway?'
6044 If you or somebody else will be maintaining perl at your site, please
6045 fill in the correct e-mail address here so that they may be contacted
6046 if necessary. Currently, the "perlbug" program included with perl
6047 will send mail to this address in addition to perlbug@perl.com. You may
6048 enter "none" for no administrator.
6051 case "$perladmin" in
6052 '') dflt="$cf_email";;
6053 *) dflt="$perladmin";;
6055 rp='Perl administrator e-mail address'
6059 : figure out how to guarantee perl startup
6060 case "$startperl" in
6062 case "$sharpbang" in
6066 I can use the #! construct to start perl on your system. This will
6067 make startup of perl scripts faster, but may cause problems if you
6068 want to share those scripts and perl is not in a standard place
6069 ($binexp/perl) on all your platforms. The alternative is to force
6070 a shell by starting the script with a single ':' character.
6074 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6077 none) startperl=": # use perl";;
6078 *) startperl="#!$ans"
6079 if $test 30 -lt `echo "$ans" | wc -c`; then
6082 WARNING: Some systems limit the #! command to 32 characters.
6083 If you experience difficulty running Perl scripts with #!, try
6084 installing Perl in a directory with a shorter pathname.
6090 *) startperl=": # use perl"
6095 echo "I'll use $startperl to start perl scripts."
6097 : figure best path for perl in scripts
6100 perlpath="$binexp/perl"
6101 case "$startperl" in
6106 I will use the "eval 'exec'" idiom to start Perl on your system.
6107 I can use the full path of your Perl binary for this purpose, but
6108 doing so may cause problems if you want to share those scripts and
6109 Perl is not always in a standard place ($binexp/perl).
6113 rp="What path shall I use in \"eval 'exec'\"?"
6120 case "$startperl" in
6122 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6125 : determine where public executable scripts go
6126 set scriptdir scriptdir
6128 case "$scriptdir" in
6131 : guess some guesses
6132 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6133 $test -d /usr/share/bin && dflt=/usr/share/bin
6134 $test -d /usr/local/script && dflt=/usr/local/script
6135 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6136 $test -d $prefixexp/script && dflt=$prefixexp/script
6140 *) dflt="$scriptdir"
6145 Some installations have a separate directory just for executable scripts so
6146 that they can mount it across multiple architectures but keep the scripts in
6147 one spot. You might, for example, have a subdirectory of /usr/share for this.
6148 Or you might just lump your scripts in with all your other executables.
6152 rp='Where do you keep publicly executable scripts?'
6154 if $test "X$ansexp" != "X$scriptdirexp"; then
6158 scriptdirexp="$ansexp"
6159 : Change installation prefix, if necessary.
6160 if $test X"$prefix" != X"$installprefix"; then
6161 installscript=`echo $scriptdirexp | sed 's#^$prefix#$installprefix#'`
6163 installscript="$scriptdirexp"
6168 After $package is installed, you may wish to install various
6169 add-on modules and utilities. Typically, these add-ons will
6170 be installed under $prefix with the rest
6171 of this package. However, you may wish to install such add-ons
6172 elsewhere under a different prefix.
6174 If you do not wish to put everything under a single prefix, that's
6175 ok. You will be prompted for the individual locations; this siteprefix
6176 is only used to suggest the defaults.
6178 The default should be fine for most people.
6182 rp='Installation prefix to use for add-on modules and utilities?'
6183 : XXX Here might be another good place for an installstyle setting.
6184 case "$siteprefix" in
6186 *) dflt=$siteprefix ;;
6190 case "$siteprefix" in
6195 *) oldsiteprefix="$prefix";;
6200 siteprefixexp="$ansexp"
6202 : determine where site specific libraries go.
6203 : Usual default is /usr/local/lib/perl5/site_perl
6204 : The default "style" setting is made in installstyle.U
6205 : XXX No longer works with Prefixit stuff.
6206 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6207 case "$installstyle" in
6208 *lib/perl5*) dflt=$siteprefix/lib/site_$prog/ ;;
6209 *) dflt=$siteprefix/lib/site_$prog ;;
6213 The installation process will create a directory for
6214 site-specific extensions and modules. Most users find it convenient
6215 to place all site-specific files in this directory rather than in the
6216 main distribution directory.
6220 rp='Pathname for the site-specific library files?'
6223 sitelibexp="$ansexp"
6224 : Change installation prefix, if necessary.
6225 if $test X"$prefix" != X"$installprefix"; then
6226 installsitelib=`echo $sitelibexp | sed 's#^$prefix#$installprefix#'`
6229 : determine where site specific architecture-dependent libraries go.
6230 : sitelib default is /usr/local/lib/perl5/site_perl/
6231 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6232 : sitelib may have an optional trailing /share.
6233 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6234 tdflt="$tdflt/$apiversion/$archname"
6235 set sitearch sitearch none
6238 '') dflt="$tdflt" ;;
6239 *) dflt="$sitearch" ;;
6243 The installation process will also create a directory for
6244 architecture-dependent site-specific extensions and modules.
6248 rp='Pathname for the site-specific architecture-dependent library files?'
6251 sitearchexp="$ansexp"
6252 : Change installation prefix, if necessary.
6253 if $test X"$prefix" != X"$installprefix"; then
6254 installsitearch=`echo $sitearchexp | sed 's#^$prefix#$installprefix#'`
6259 Previous version of $package used the standard IO mechanisms as defined
6260 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6261 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6262 the default. This abstraction layer can use AT&T's sfio (if you already
6263 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6264 problems with some extension modules. Using PerlIO with stdio is safe,
6265 but it is slower than plain stdio and therefore is not the default.
6267 If this doesn't make any sense to you, just accept the default 'n'.
6269 case "$useperlio" in
6270 $define|true|[yY]*) dflt='y';;
6273 rp='Use the experimental PerlIO abstraction layer?'
6280 echo "Ok, doing things the stdio way"
6287 : Check how to convert floats to strings.
6288 if test "X$d_Gconvert" = X; then
6290 echo "Checking for an efficient way to convert floats to strings."
6293 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6294 char *myname = "gconvert";
6297 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6298 char *myname = "gcvt";
6301 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6302 char *myname = "sprintf";
6308 checkit(expect, got)
6312 if (strcmp(expect, got)) {
6313 printf("%s oddity: Expected %s, got %s\n",
6314 myname, expect, got);
6324 /* This must be 1st test on (which?) platform */
6325 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6326 Gconvert(0.1, 8, 0, buf);
6327 checkit("0.1", buf);
6329 Gconvert(1.0, 8, 0, buf);
6332 Gconvert(0.0, 8, 0, buf);
6335 Gconvert(-1.0, 8, 0, buf);
6338 /* Some Linux gcvt's give 1.e+5 here. */
6339 Gconvert(100000.0, 8, 0, buf);
6340 checkit("100000", buf);
6342 /* Some Linux gcvt's give -1.e+5 here. */
6343 Gconvert(-100000.0, 8, 0, buf);
6344 checkit("-100000", buf);
6349 case "$d_Gconvert" in
6350 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6351 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6352 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6353 *) xxx_list='gconvert gcvt sprintf' ;;
6356 for xxx_convert in $xxx_list; do
6357 echo "Trying $xxx_convert"
6359 set try -DTRY_$xxx_convert
6360 if eval $compile; then
6361 echo "$xxx_convert" found. >&4
6363 echo "I'll use $xxx_convert to convert floats into a string." >&4
6366 echo "...But $xxx_convert didn't work as I expected."
6369 echo "$xxx_convert NOT found." >&4
6373 case "$xxx_convert" in
6374 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6375 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6376 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6380 : Initialize h_fcntl
6383 : Initialize h_sysfile
6386 : access call always available on UNIX
6390 : locate the flags for 'access()'
6394 $cat >access.c <<'EOCP'
6395 #include <sys/types.h>
6400 #include <sys/file.h>
6409 : check sys/file.h first, no particular reason here
6410 if $test `./findhdr sys/file.h` && \
6411 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6413 echo "<sys/file.h> defines the *_OK access constants." >&4
6414 elif $test `./findhdr fcntl.h` && \
6415 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6417 echo "<fcntl.h> defines the *_OK access constants." >&4
6418 elif $test `./findhdr unistd.h` && \
6419 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6420 echo "<unistd.h> defines the *_OK access constants." >&4
6422 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6428 : see if accessx exists
6429 set accessx d_accessx
6432 : see if alarm exists
6436 : Look for GNU-cc style attribute checking
6438 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6439 $cat >attrib.c <<'EOCP'
6441 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6443 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6444 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6445 echo "Your C compiler doesn't fully support __attribute__."
6448 echo "Your C compiler supports __attribute__."
6452 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6459 : see if bcmp exists
6463 : see if bcopy exists
6467 : see if this is a unistd.h system
6468 set unistd.h i_unistd
6471 : see if getpgrp exists
6472 set getpgrp d_getpgrp
6475 case "$d_getpgrp" in
6478 echo "Checking to see which flavor of getpgrp is in use..."
6481 #include <sys/types.h>
6483 # include <unistd.h>
6487 if (getuid() == 0) {
6488 printf("(I see you are running Configure as super-user...)\n");
6492 if (getpgrp(1) == 0)
6501 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6502 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6504 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6505 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6508 echo "I can't seem to compile and run the test program."
6510 xxx="a USG one, i.e. you use getpgrp()."
6512 # SVR4 systems can appear rather BSD-ish.
6515 xxx="a BSD one, i.e. you use getpgrp(pid)."
6519 xxx="probably a USG one, i.e. you use getpgrp()."
6524 echo "Assuming your getpgrp is $xxx" >&4
6533 : see if setpgrp exists
6534 set setpgrp d_setpgrp
6537 case "$d_setpgrp" in
6540 echo "Checking to see which flavor of setpgrp is in use..."
6543 #include <sys/types.h>
6545 # include <unistd.h>
6549 if (getuid() == 0) {
6550 printf("(I see you are running Configure as super-user...)\n");
6554 if (-1 == setpgrp(1, 1))
6557 if (setpgrp() != -1)
6563 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6564 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6566 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6567 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6570 echo "(I can't seem to compile and run the test program.)"
6572 xxx="a USG one, i.e. you use setpgrp()."
6574 # SVR4 systems can appear rather BSD-ish.
6577 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6581 xxx="probably a USG one, i.e. you use setpgrp()."
6586 echo "Assuming your setpgrp is $xxx" >&4
6594 : see if bzero exists
6598 : check for lengths of integral types
6602 echo "Checking to see how big your integers are..." >&4
6603 $cat >intsize.c <<'EOCP'
6607 printf("intsize=%d;\n", sizeof(int));
6608 printf("longsize=%d;\n", sizeof(long));
6609 printf("shortsize=%d;\n", sizeof(short));
6614 if eval $compile_ok && ./intsize > /dev/null; then
6616 echo "Your integers are $intsize bytes long."
6617 echo "Your long integers are $longsize bytes long."
6618 echo "Your short integers are $shortsize bytes long."
6622 Help! I can't compile and run the intsize test program: please enlighten me!
6623 (This is probably a misconfiguration in your system or libraries, and
6624 you really ought to fix it. Still, I'll try anyway.)
6628 rp="What is the size of an integer (in bytes)?"
6632 rp="What is the size of a long integer (in bytes)?"
6636 rp="What is the size of a short integer (in bytes)?"
6642 $rm -f intsize intsize.*
6644 : see if signal is declared as pointer to function returning int or void
6646 xxx=`./findhdr signal.h`
6647 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6648 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6649 echo "You have int (*signal())() instead of void." >&4
6651 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6652 echo "You have void (*signal())()." >&4
6654 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6655 echo "You have int (*signal())() instead of void." >&4
6657 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6658 echo "You have void (*signal())()." >&4
6661 case "$d_voidsig" in
6663 echo "I can't determine whether signal handler returns void or int..." >&4
6665 rp="What type does your signal handler return?"
6672 echo "As you already told me, signal handler returns void." >&4
6675 *) echo "As you already told me, signal handler returns int." >&4
6682 case "$d_voidsig" in
6683 "$define") signal_t="void";;
6688 : check for ability to cast large floats to 32-bit ints.
6690 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6691 if $test "$intsize" -ge 4; then
6698 #include <sys/types.h>
6700 $signal_t blech(s) int s; { exit(3); }
6707 signal(SIGFPE, blech);
6709 /* Don't let compiler optimize the test away. Store the number
6710 in a writable string for gcc to pass to sscanf under HP/UX.
6712 sprintf(str, "2147483647");
6713 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6717 /* x86 processors will probably give 0x8000 0000, which is a
6718 sign change. We don't want that. We want to mimic SPARC
6719 behavior here, which is to preserve the sign and give
6722 if (i32 != ($xxx) f)
6728 if eval $compile_ok; then
6732 echo "(I can't seem to compile the test program--assuming it can't)"
6740 echo "Nope, it can't."
6747 : check for ability to cast negative floats to unsigned
6749 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6752 #include <sys/types.h>
6754 $signal_t blech(s) int s; { exit(7); }
6755 $signal_t blech_in_list(s) int s; { exit(4); }
6756 unsigned long dummy_long(p) unsigned long p; { return p; }
6757 unsigned int dummy_int(p) unsigned int p; { return p; }
6758 unsigned short dummy_short(p) unsigned short p; { return p; }
6762 unsigned long along;
6764 unsigned short ashort;
6768 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6769 a direct f = -123. assignment. gcc-2.8.0 reportedly
6770 optimized the whole file away
6772 /* Store the number in a writable string for gcc to pass to
6775 sprintf(str, "-123");
6776 sscanf(str, "%lf", &f); /* f = -123.; */
6778 signal(SIGFPE, blech);
6779 along = (unsigned long)f;
6780 aint = (unsigned int)f;
6781 ashort = (unsigned short)f;
6782 if (along != (unsigned long)-123)
6784 if (aint != (unsigned int)-123)
6786 if (ashort != (unsigned short)-123)
6788 sprintf(str, "1073741824.");
6789 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6792 along = (unsigned long)f;
6793 if (along != 0x80000000)
6797 along = (unsigned long)f;
6798 if (along != 0x7fffffff)
6802 along = (unsigned long)f;
6803 if (along != 0x80000001)
6807 signal(SIGFPE, blech_in_list);
6808 sprintf(str, "123.");
6809 sscanf(str, "%lf", &f); /* f = 123.; */
6810 along = dummy_long((unsigned long)f);
6811 aint = dummy_int((unsigned int)f);
6812 ashort = dummy_short((unsigned short)f);
6813 if (along != (unsigned long)123)
6815 if (aint != (unsigned int)123)
6817 if (ashort != (unsigned short)123)
6824 if eval $compile_ok; then
6828 echo "(I can't seem to compile the test program--assuming it can't)"
6831 case "$castflags" in
6836 echo "Nope, it can't."
6843 : see if vprintf exists
6845 if set vprintf val -f d_vprintf; eval $csym; $val; then
6846 echo 'vprintf() found.' >&4
6848 $cat >vprintf.c <<'EOF'
6849 #include <varargs.h>
6851 int main() { xxx("foo"); }
6860 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6864 if eval $compile && ./vprintf; then
6865 echo "Your vsprintf() returns (int)." >&4
6868 echo "Your vsprintf() returns (char*)." >&4
6872 echo 'vprintf() NOT found.' >&4
6882 : see if chown exists
6886 : see if chroot exists
6890 : see if chsize exists
6894 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6895 while $test $# -ge 2; do
6897 $define) echo "#include <$2>";;
6901 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6902 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6911 : see if this is a sys/uio.h system
6912 set sys/uio.h i_sysuio
6915 echo "Checking to see if your system supports struct iovec..." >&4
6916 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6918 case "$d_iovec_s" in
6919 "$define") echo "Yup, it does." >&4
6921 *) echo "Nope, it doesn't." >&4
6927 : see whether socket exists
6929 $echo $n "Hmm... $c" >&4
6930 if set socket val -f d_socket; eval $csym; $val; then
6931 echo "Looks like you have Berkeley networking support." >&4
6933 if set setsockopt val -f; eval $csym; $val; then
6936 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6940 if $contains socklib libc.list >/dev/null 2>&1; then
6941 echo "Looks like you have Berkeley networking support." >&4
6943 : we will have to assume that it supports the 4.2 BSD interface
6946 echo "You don't have Berkeley networking in libc$_a..." >&4
6947 if test "X$d_socket" = "X$define"; then
6948 echo "...but you seem to believe that you have sockets." >&4
6950 for net in net socket
6952 if test -f /usr/lib/lib$net$_a; then
6953 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6954 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6955 if $contains socket libc.list >/dev/null 2>&1; then
6960 echo "...but the Wollongong group seems to have hacked it in." >&4
6961 sockethdr="-I/usr/netinclude"
6964 echo "Found Berkeley sockets interface in lib$net." >& 4
6965 if $contains setsockopt libc.list >/dev/null 2>&1; then
6968 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6975 if test "X$d_socket" != "X$define"; then
6976 echo "or anywhere else I see." >&4
6984 : see if socketpair exists
6985 set socketpair d_sockpair
6990 echo "Checking the availability of certain socket constants..." >& 4
6991 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6992 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6994 #include <sys/types.h>
6995 #include <sys/socket.h>
7001 set try; if eval $compile; then
7004 set d_${enum}; eval $setvar
7008 set sendmsg d_sendmsg
7011 set recvmsg d_recvmsg
7015 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7016 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7018 case "$d_msghdr_s" in
7019 "$define") echo "Yup, it does." >&4
7021 *) echo "Nope, it doesn't." >&4
7025 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7026 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7028 case "$d_cmsghdr_s" in
7029 "$define") echo "Yup, it does." >&4
7031 *) echo "Nope, it doesn't." >&4
7035 : check for const keyword
7037 echo 'Checking to see if your C compiler knows about "const"...' >&4
7038 $cat >const.c <<'EOCP'
7039 typedef struct spug { int drokk; } spug;
7046 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7048 echo "Yup, it does."
7051 echo "Nope, it doesn't."
7056 : see if crypt exists
7058 if set crypt val -f d_crypt; eval $csym; $val; then
7059 echo 'crypt() found.' >&4
7063 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7064 if $test -z "$cryptlib"; then
7065 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7069 if $test -z "$cryptlib"; then
7070 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7074 if $test -z "$cryptlib"; then
7075 cryptlib=`./loc libcrypt$_a "" $libpth`
7079 if $test -z "$cryptlib"; then
7080 echo 'crypt() NOT found.' >&4
7089 : get csh whereabouts
7091 'csh') val="$undef" ;;
7096 : Respect a hint or command line value for full_csh.
7098 '') full_csh=$csh ;;
7101 : see if cuserid exists
7102 set cuserid d_cuserid
7105 : see if this is a limits.h system
7106 set limits.h i_limits
7109 : see if this is a float.h system
7113 : See if number of significant digits in a double precision number is known
7115 $cat >dbl_dig.c <<EOM
7125 printf("Contains DBL_DIG");
7128 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7129 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7130 echo "DBL_DIG found." >&4
7133 echo "DBL_DIG NOT found." >&4
7141 if $test X"$use64bits" = X"$define"; then
7142 : see if dbminit64 exists
7143 set dbminit64 d_dbminit64
7146 : see if dbmclose64 exists
7147 set dbmclose64 d_dbmclose64
7150 : see if fetch64 exists
7151 set fetch64 d_fetch64
7154 : see if store64 exists
7155 set store64 d_store64
7158 : see if delete64 exists
7159 set delete64 d_delete64
7162 : see if firstkey64 exists
7163 set firstkey64 d_firstkey64
7166 : see if nextkey64 exists
7167 set nextkey64 d_nextkey64
7171 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7178 : see if difftime exists
7179 set difftime d_difftime
7182 : see if sys/stat.h is available
7183 set sys/stat.h i_sysstat
7186 : see if this is a dirent system
7188 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7190 echo "<dirent.h> found." >&4
7193 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7194 echo "<sys/dir.h> found." >&4
7197 xinc=`./findhdr sys/ndir.h`
7199 echo "<dirent.h> NOT found." >&4
7204 : Look for type of directory structure.
7206 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7208 case "$direntrytype" in
7211 $define) guess1='struct dirent' ;;
7212 *) guess1='struct direct' ;;
7215 *) guess1="$direntrytype"
7220 'struct dirent') guess2='struct direct' ;;
7221 *) guess2='struct dirent' ;;
7224 if $contains "$guess1" try.c >/dev/null 2>&1; then
7225 direntrytype="$guess1"
7226 echo "Your directory entries are $direntrytype." >&4
7227 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7228 direntrytype="$guess2"
7229 echo "Your directory entries seem to be $direntrytype." >&4
7231 echo "I don't recognize your system's directory entries." >&4
7232 rp="What type is used for directory entries on this system?"
7240 : see if the directory entry stores field length
7242 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7243 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7244 echo "Good, your directory entry keeps length information in d_namlen." >&4
7247 echo "Your directory entry does not know about the d_namlen field." >&4
7255 if $test X"$use64bits" = X"$define"; then
7256 : see if fstat64 exists
7257 set fstat64 d_fstat64
7260 : see if ftruncate64 exists
7261 set ftruncate64 d_ftruncate64
7264 : see if lockf64 exists
7265 set lockf64 d_lockf64
7268 : see if llseek exists
7272 : see if lseek64 exists
7273 set lseek64 d_lseek64
7276 : see if lstat64 exists
7277 set lstat64 d_lstat64
7280 : see if open64 exists
7284 : see if opendir64 exists
7285 set opendir64 d_opendir64
7288 : see if readdir64 exists
7289 set readdir64 d_readdir64
7292 : see if seekdir64 exists
7293 set seekdir64 d_seekdir64
7296 : see if stat64 exists
7300 : see if telldir64 exists
7301 set telldir64 d_telldir64
7304 : see if truncate64 exists
7305 set truncate64 d_truncate64
7310 echo $n "Checking to see if your system supports off64_t...$c" >&4
7312 #include <sys/types.h>
7314 off64_t foo() { off64_t x; x = 7; return x; }'
7316 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7318 echo " Yup, it does." >&4
7321 echo " Nope, it doesn't." >&4
7327 : check for offset_t
7329 echo $n "Checking to see if your system supports offset_t...$c" >&4
7331 #include <sys/types.h>
7333 offset_t foo() { offset_t x; x = 7; return x; }'
7335 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7337 echo " Yup, it does." >&4
7340 echo " Nope, it doesn't." >&4
7348 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7350 case "$i_sysstat" in
7353 #include <sys/types.h>
7354 #include <sys/stat.h>
7355 ino64_t foo() { ino64_t x; x = 7; return x; }'
7357 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7363 if $test "X$val" = X"$define"; then
7364 echo " Yup, it does." >&4
7366 echo " Nope, it doesn't." >&4
7371 : check for struct flock64
7373 echo "Checking to see if your system supports struct flock64..." >&4
7375 set d_flock64_s flock64 l_len define fcntl.h
7382 case "$d_flock64_s" in
7383 "$define") echo "Yup, it does." >&4
7385 *) echo "Nope, it doesn't." >&4
7389 : check for struct dirent64
7391 echo "Checking to see if your system supports struct dirent64..." >&4
7392 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7394 case "$d_dirent64_s" in
7395 "$define") echo "Yup, it does." >&4
7397 *) echo "Nope, it doesn't." >&4
7403 for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64_t d_offset_t d_ino64_t d_flock64_s d_dirent64_s
7410 : see if dlerror exists
7413 set dlerror d_dlerror
7417 : see if dlfcn is available
7425 On a few systems, the dynamically loaded modules that perl generates and uses
7426 will need a different extension than shared libs. The default will probably
7434 rp='What is the extension of dynamically loaded modules'
7443 : Check if dlsym need a leading underscore
7449 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7450 $cat >dyna.c <<'EOM'
7459 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7461 #include <sys/types.h>
7475 int mode = RTLD_LAZY ;
7477 handle = dlopen("./dyna.$dlext", mode) ;
7478 if (handle == NULL) {
7483 symbol = dlsym(handle, "fred") ;
7484 if (symbol == NULL) {
7485 /* try putting a leading underscore */
7486 symbol = dlsym(handle, "_fred") ;
7487 if (symbol == NULL) {
7500 : Call the object file tmp-dyna.o in case dlext=o.
7501 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7502 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7503 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7504 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7507 1) echo "Test program failed using dlopen." >&4
7508 echo "Perhaps you should not use dynamic loading." >&4;;
7509 2) echo "Test program failed using dlsym." >&4
7510 echo "Perhaps you should not use dynamic loading." >&4;;
7511 3) echo "dlsym needs a leading underscore" >&4
7513 4) echo "dlsym doesn't need a leading underscore." >&4;;
7516 echo "I can't compile and run the test program." >&4
7521 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7526 hasproto='varname=$1; func=$2; shift; shift;
7527 while $test $# -ge 2; do
7529 $define) echo "#include <$2>";;
7533 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7534 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7535 echo "$func() prototype found.";
7538 echo "$func() prototype NOT found.";
7543 $rm -f try.c tryout.c'
7545 : see if prototype for drand48 is available
7547 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7550 : see if dup2 exists
7554 : see if eaccess exists
7555 set eaccess d_eaccess
7558 : see if endgrent exists
7559 set endgrent d_endgrent
7562 : see if endhostent exists
7563 set endhostent d_endhent
7566 : see if endnetent exists
7567 set endnetent d_endnent
7570 : see if endprotoent exists
7571 set endprotoent d_endpent
7574 : see if endpwent exists
7575 set endpwent d_endpwent
7578 : see if endservent exists
7579 set endservent d_endsent
7582 : see if endspent exists
7583 set endspent d_endspent
7586 : Locate the flags for 'open()'
7588 $cat >open3.c <<'EOCP'
7589 #include <sys/types.h>
7594 #include <sys/file.h>
7605 : check sys/file.h first to get FREAD on Sun
7606 if $test `./findhdr sys/file.h` && \
7607 set open3 -DI_SYS_FILE && eval $compile; then
7609 echo "<sys/file.h> defines the O_* constants..." >&4
7611 echo "and you have the 3 argument form of open()." >&4
7614 echo "but not the 3 argument form of open(). Oh, well." >&4
7617 elif $test `./findhdr fcntl.h` && \
7618 set open3 -DI_FCNTL && eval $compile; then
7620 echo "<fcntl.h> defines the O_* constants..." >&4
7622 echo "and you have the 3 argument form of open()." >&4
7625 echo "but not the 3 argument form of open(). Oh, well." >&4
7630 echo "I can't find the O_* constant definitions! You got problems." >&4
7636 : check for non-blocking I/O stuff
7637 case "$h_sysfile" in
7638 true) echo "#include <sys/file.h>" > head.c;;
7641 true) echo "#include <fcntl.h>" > head.c;;
7642 *) echo "#include <sys/fcntl.h>" > head.c;;
7647 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7648 case "$o_nonblock" in
7651 $cat >>try.c <<'EOCP'
7654 printf("O_NONBLOCK\n");
7658 printf("O_NDELAY\n");
7662 printf("FNDELAY\n");
7669 if eval $compile_ok; then
7671 case "$o_nonblock" in
7672 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7673 *) echo "Seems like we can use $o_nonblock.";;
7676 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7679 *) echo "Using $hint value $o_nonblock.";;
7681 $rm -f try try.* .out core
7684 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7690 #include <sys/types.h>
7692 #define MY_O_NONBLOCK $o_nonblock
7693 #ifndef errno /* XXX need better Configure test */
7696 $signal_t blech(x) int x; { exit(3); }
7698 $cat >> try.c <<'EOCP'
7706 pipe(pd); /* Down: child -> parent */
7707 pipe(pu); /* Up: parent -> child */
7710 close(pd[1]); /* Parent reads from pd[0] */
7711 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7712 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7714 signal(SIGALRM, blech);
7716 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7718 sprintf(string, "%d\n", ret);
7719 write(2, string, strlen(string));
7722 if (errno == EAGAIN) {
7728 if (errno == EWOULDBLOCK)
7729 printf("EWOULDBLOCK\n");
7732 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7733 sleep(2); /* Give it time to close our pipe */
7735 ret = read(pd[0], buf, 1); /* Should read EOF */
7737 sprintf(string, "%d\n", ret);
7738 write(3, string, strlen(string));
7742 close(pd[0]); /* We write to pd[1] */
7743 close(pu[1]); /* We read from pu[0] */
7744 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7745 close(pd[1]); /* Pipe pd is now fully closed! */
7746 exit(0); /* Bye bye, thank you for playing! */
7750 if eval $compile_ok; then
7751 echo "$startsh" >mtry
7752 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7754 ./mtry >/dev/null 2>&1
7756 0) eagain=`$cat try.out`;;
7757 1) echo "Could not perform non-blocking setting!";;
7758 2) echo "I did a successful read() for something that was not there!";;
7759 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7760 *) echo "Something terribly wrong happened during testing.";;
7762 rd_nodata=`$cat try.ret`
7763 echo "A read() system call with no data present returns $rd_nodata."
7764 case "$rd_nodata" in
7767 echo "(That's peculiar, fixing that to be -1.)"
7773 echo "Forcing errno EAGAIN on read() with no data available."
7777 echo "Your read() sets errno to $eagain when no data is available."
7780 status=`$cat try.err`
7782 0) echo "And it correctly returns 0 to signal EOF.";;
7783 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7784 *) echo "However, your read() returns '$status' on EOF??";;
7787 if test "$status" = "$rd_nodata"; then
7788 echo "WARNING: you can't distinguish between EOF and no data!"
7792 echo "I can't compile the test program--assuming errno EAGAIN will do."
7799 echo "Using $hint value $eagain."
7800 echo "Your read() returns $rd_nodata when no data is present."
7801 case "$d_eofnblk" in
7802 "$define") echo "And you can see EOF because read() returns 0.";;
7803 "$undef") echo "But you can't see EOF status from read() returned value.";;
7805 echo "(Assuming you can't see EOF status from read anyway.)"
7811 $rm -f try try.* .out core head.c mtry
7813 : see if fchmod exists
7817 : see if fchown exists
7821 : see if this is an fcntl system
7825 : see if sys/select.h has to be included
7826 set sys/select.h i_sysselct
7829 : see if we should include time.h, sys/time.h, or both
7831 if test "X$timeincl" = X; then
7832 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7833 $echo $n "I'm now running the test program...$c"
7834 $cat >try.c <<'EOCP'
7835 #include <sys/types.h>
7840 #ifdef SYSTIMEKERNEL
7843 #include <sys/time.h>
7846 #include <sys/select.h>
7855 struct timezone tzp;
7857 if (foo.tm_sec == foo.tm_sec)
7860 if (bar.tv_sec == bar.tv_sec)
7867 for s_timezone in '-DS_TIMEZONE' ''; do
7869 for s_timeval in '-DS_TIMEVAL' ''; do
7870 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7871 for i_time in '' '-DI_TIME'; do
7872 for i_systime in '-DI_SYSTIME' ''; do
7875 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7876 if eval $compile; then
7877 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7881 $echo $n "Succeeded with $flags$c"
7893 *SYSTIMEKERNEL*) i_systimek="$define"
7894 timeincl=`./findhdr sys/time.h`
7895 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7896 *) i_systimek="$undef";;
7899 *I_TIME*) i_time="$define"
7900 timeincl=`./findhdr time.h`" $timeincl"
7901 echo "We'll include <time.h>." >&4;;
7902 *) i_time="$undef";;
7905 *I_SYSTIME*) i_systime="$define"
7906 timeincl=`./findhdr sys/time.h`" $timeincl"
7907 echo "We'll include <sys/time.h>." >&4;;
7908 *) i_systime="$undef";;
7913 : check for fd_set items
7916 Checking to see how well your C compiler handles fd_set and friends ...
7918 $cat >fd_set.c <<EOCP
7919 #$i_systime I_SYS_TIME
7920 #$i_sysselct I_SYS_SELECT
7921 #$d_socket HAS_SOCKET
7922 #include <sys/types.h>
7924 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7927 #include <sys/time.h>
7930 #include <sys/select.h>
7939 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7946 set fd_set -DTRYBITS
7947 if eval $compile; then
7948 d_fds_bits="$define"
7950 echo "Well, your system knows about the normal fd_set typedef..." >&4
7952 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7953 d_fd_macros="$define"
7956 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7958 d_fd_macros="$undef"
7962 Hmm, your compiler has some difficulty with fd_set. Checking further...
7965 if eval $compile; then
7968 echo "Well, your system has some sort of fd_set available..." >&4
7970 echo "and you have the normal fd_set macros." >&4
7971 d_fd_macros="$define"
7974 but not the normal fd_set macros! Gross! More work for me...
7976 d_fd_macros="$undef"
7979 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7982 d_fd_macros="$undef"
7987 : see if fgetpos exists
7988 set fgetpos d_fgetpos
7992 if $test X"$use64bits" = X"$define"; then
7993 : see if fgetpos64 exists
7994 set fgetpos64 d_fgetpos64
7997 : see if fopen64 exists
7998 set freopen64 d_fopen64
8001 : see if freopen64 exists
8002 set freopen64 d_freopen64
8005 : see if fseek64 exists
8006 set fseek64 d_fseek64
8009 : see if fseeko64 exists
8010 set fseeko64 d_fseeko64
8013 : see if fsetpos64 exists
8014 set fsetpos64 d_fsetpos64
8017 : see if ftell64 exists
8018 set ftell64 d_ftell64
8021 : see if ftello64 exists
8022 set ftello64 d_ftello64
8025 : see if tmpfile64 exists
8026 set tmpfile64 d_tmpfile64
8030 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8037 : see if flock exists
8041 : see if fork exists
8045 : see if pathconf exists
8046 set pathconf d_pathconf
8049 : see if fpathconf exists
8050 set fpathconf d_fpathconf
8053 : see if fseeko exists
8057 : see if fsetpos exists
8058 set fsetpos d_fsetpos
8061 : see if this is a sys/param system
8062 set sys/param.h i_sysparam
8065 : see if this is a sys/mount.h system
8066 set sys/mount.h i_sysmount
8070 : see if statfs exists
8074 : see if fstatfs exists
8075 set fstatfs d_fstatfs
8078 : see if statfs knows about mount flags
8079 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8083 : see if statvfs exists
8084 set statvfs d_statvfs
8087 : see if fstatvfs exists
8088 set fstatvfs d_fstatvfs
8092 : see if ftello exists
8096 : see if getgrent exists
8097 set getgrent d_getgrent
8100 : see if gethostbyaddr exists
8101 set gethostbyaddr d_gethbyaddr
8104 : see if gethostbyname exists
8105 set gethostbyname d_gethbyname
8108 : see if gethostent exists
8109 set gethostent d_gethent
8112 : see how we will look up host name
8115 if set gethostname val -f d_gethname; eval $csym; $val; then
8116 echo 'gethostname() found.' >&4
8117 d_gethname="$define"
8120 if set uname val -f d_uname; eval $csym; $val; then
8123 uname() was found, but you're running xenix, and older versions of xenix
8124 have a broken uname(). If you don't really know whether your xenix is old
8125 enough to have a broken system call, use the default answer.
8132 rp='Is your uname() broken?'
8135 n*) d_uname="$define"; call=uname;;
8138 echo 'uname() found.' >&4
8145 case "$d_gethname" in
8146 '') d_gethname="$undef";;
8149 '') d_uname="$undef";;
8151 case "$d_uname$d_gethname" in
8156 Every now and then someone has a $call() that lies about the hostname
8157 but can't be fixed for political or economic reasons. If you wish, I can
8158 pretend $call() isn't there and maybe compute hostname at run-time
8159 thanks to the '$phostname' command.
8162 rp="Shall I ignore $call() from now on?"
8165 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8168 case "$phostname" in
8170 *) case "$aphostname" in
8176 file=`./loc $file $file $pth`
8177 aphostname=`echo $file $*`
8182 case "$d_uname$d_gethname" in
8185 case "$phostname" in
8187 echo "There will be no way for $package to get your hostname." >&4;;
8189 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8193 case "$d_phostname" in
8194 '') d_phostname="$undef";;
8197 : see if this is a netdb.h system
8201 : see if prototypes for various gethostxxx netdb.h functions are available
8203 set d_gethostprotos gethostent $i_netdb netdb.h
8206 : see if getlogin exists
8207 set getlogin d_getlogin
8210 : see if getmntent exists
8211 set getmntent d_getmntent
8214 : see if getnetbyaddr exists
8215 set getnetbyaddr d_getnbyaddr
8218 : see if getnetbyname exists
8219 set getnetbyname d_getnbyname
8222 : see if getnetent exists
8223 set getnetent d_getnent
8226 : see if prototypes for various getnetxxx netdb.h functions are available
8228 set d_getnetprotos getnetent $i_netdb netdb.h
8232 : see if getprotobyname exists
8233 set getprotobyname d_getpbyname
8236 : see if getprotobynumber exists
8237 set getprotobynumber d_getpbynumber
8240 : see if getprotoent exists
8241 set getprotoent d_getpent
8244 : see if getpgid exists
8245 set getpgid d_getpgid
8248 : see if getpgrp2 exists
8249 set getpgrp2 d_getpgrp2
8252 : see if getppid exists
8253 set getppid d_getppid
8256 : see if getpriority exists
8257 set getpriority d_getprior
8260 : see if prototypes for various getprotoxxx netdb.h functions are available
8262 set d_getprotoprotos getprotoent $i_netdb netdb.h
8265 : see if getpwent exists
8266 set getpwent d_getpwent
8270 : see if getservbyname exists
8271 set getservbyname d_getsbyname
8274 : see if getservbyport exists
8275 set getservbyport d_getsbyport
8278 : see if getservent exists
8279 set getservent d_getsent
8282 : see if prototypes for various getservxxx netdb.h functions are available
8284 set d_getservprotos getservent $i_netdb netdb.h
8287 : see if getspent exists
8288 set getspent d_getspent
8291 : see if getspnam exists
8292 set getspnam d_getspnam
8295 : see if gettimeofday or ftime exists
8296 set gettimeofday d_gettimeod
8298 case "$d_gettimeod" in
8304 val="$undef"; set d_ftime; eval $setvar
8307 case "$d_gettimeod$d_ftime" in
8310 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8314 : see if this is an grp system
8320 xxx=`./findhdr grp.h`
8321 $cppstdin $cppflags $cppminus < $xxx >$$.h
8323 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8335 set d_grpasswd; eval $setvar
8339 : see if hasmntopt exists
8340 set hasmntopt d_hasmntopt
8343 : see if this is a netinet/in.h or sys/in.h system
8344 set netinet/in.h i_niin sys/in.h i_sysin
8347 : see if arpa/inet.h has to be included
8348 set arpa/inet.h i_arpainet
8351 : see if htonl --and friends-- exists
8356 : Maybe they are macros.
8361 #include <sys/types.h>
8362 #$i_niin I_NETINET_IN
8364 #$i_arpainet I_ARPA_INET
8366 #include <netinet/in.h>
8372 #include <arpa/inet.h>
8375 printf("Defined as a macro.");
8378 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8379 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8381 echo "But it seems to be defined as a macro." >&4
8389 : see which of string.h or strings.h is needed
8391 strings=`./findhdr string.h`
8392 if $test "$strings" && $test -r "$strings"; then
8393 echo "Using <string.h> instead of <strings.h>." >&4
8397 strings=`./findhdr strings.h`
8398 if $test "$strings" && $test -r "$strings"; then
8399 echo "Using <strings.h> instead of <string.h>." >&4
8401 echo "No string header found -- You'll surely have problems." >&4
8407 "$undef") strings=`./findhdr strings.h`;;
8408 *) strings=`./findhdr string.h`;;
8413 if set index val -f; eval $csym; $val; then
8414 if set strchr val -f d_strchr; eval $csym; $val; then
8415 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8418 echo "strchr() found." >&4
8422 echo "index() found." >&4
8427 echo "index() found." >&4
8430 if set strchr val -f d_strchr; eval $csym; $val; then
8433 echo "strchr() found." >&4
8435 echo "No index() or strchr() found!" >&4
8440 set d_strchr; eval $setvar
8442 set d_index; eval $setvar
8444 : check whether inet_aton exists
8445 set inet_aton d_inetaton
8448 : see if inttypes.h is available
8449 : we want a real compile instead of Inhdr because some systems
8450 : have an inttypes.h which includes non-existent headers
8453 #include <inttypes.h>
8455 static int32_t foo32 = 0x12345678;
8459 if eval $compile; then
8460 echo "<inttypes.h> found." >&4
8463 echo "<inttypes.h> NOT found." >&4
8471 case "$use64bits" in
8474 echo $n "Checking to see if your system supports int64_t...$c" >&4
8476 #include <sys/types.h>
8477 #$i_inttypes I_INTTYPES
8479 #include <inttypes.h>
8481 int64_t foo() { int64_t x; x = 7; return x; }
8483 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8485 echo " Yup, it does." >&4
8488 echo " Nope, it doesn't." >&4
8501 $cat >isascii.c <<'EOCP'
8513 if eval $compile; then
8514 echo "isascii() found." >&4
8517 echo "isascii() NOT found." >&4
8524 : see if killpg exists
8528 : see if lchown exists
8530 $cat > try.c <<'EOCP'
8531 /* System header to define __stub macros and hopefully few prototypes,
8532 which can conflict with char lchown(); below. */
8534 /* Override any gcc2 internal prototype to avoid an error. */
8535 /* We use char because int might match the return type of a gcc2
8536 builtin and then its argument prototype would still apply. */
8539 /* The GNU C library defines this for functions which it implements
8540 to always fail with ENOSYS. Some functions are actually named
8541 something starting with __ and the normal name is an alias. */
8542 #if defined (__stub_lchown) || defined (__stub___lchown)
8550 if eval $compile; then
8551 $echo "lchown() found." >&4
8554 $echo "lchown() NOT found." >&4
8560 : see if link exists
8564 : see if localeconv exists
8565 set localeconv d_locconv
8568 : see if lockf exists
8572 : check for length of double
8574 case "$doublesize" in
8576 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8577 $cat >try.c <<'EOCP'
8581 printf("%d\n", sizeof(double));
8585 if eval $compile_ok; then
8587 $echo " $doublesize bytes." >&4
8590 echo "(I can't seem to compile the test program. Guessing...)"
8591 rp="What is the size of a double precision number (in bytes)?"
8599 : check for long doubles
8601 echo $n "Checking to see if your system supports long doubles...$c" >&4
8602 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8603 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8605 echo " Yup, it does." >&4
8608 echo " Nope, it doesn't." >&4
8614 : check for length of long double
8615 case "${d_longdbl}${longdblsize}" in
8618 $echo $n "Checking to see how big your long doubles are...$c" >&4
8619 $cat >try.c <<'EOCP'
8623 printf("%d\n", sizeof(long double));
8627 if eval $compile; then
8629 $echo " $longdblsize bytes." >&4
8633 echo "(I can't seem to compile the test program. Guessing...)" >&4
8634 rp="What is the size of a long double (in bytes)?"
8638 if $test "X$doublesize" = "X$longdblsize"; then
8639 echo "(That isn't any different from an ordinary double.)"
8645 : check for long long
8647 echo $n "Checking to see if your system supports long long...$c" >&4
8648 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8649 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8651 echo " Yup, it does." >&4
8654 echo " Nope, it doesn't." >&4
8660 : check for length of long long
8661 case "${d_longlong}${longlongsize}" in
8664 $echo $n "Checking to see how big your long longs are...$c" >&4
8665 $cat >try.c <<'EOCP'
8669 printf("%d\n", sizeof(long long));
8673 if eval $compile_ok; then
8674 longlongsize=`./try`
8675 $echo " $longlongsize bytes." >&4
8679 echo "(I can't seem to compile the test program. Guessing...)"
8680 rp="What is the size of a long long (in bytes)?"
8684 if $test "X$longsize" = "X$longlongsize"; then
8685 echo "(That isn't any different from an ordinary long.)"
8691 : see if lstat exists
8695 : see if madvise exists
8696 set madvise d_madvise
8699 : see if mblen exists
8703 : see if mbstowcs exists
8704 set mbstowcs d_mbstowcs
8707 : see if mbtowc exists
8711 : see if memchr exists
8715 : see if memcmp exists
8719 : see if memcpy exists
8723 : see if memmove exists
8724 set memmove d_memmove
8727 : see if memset exists
8731 : see if mkdir exists
8735 : see if mkfifo exists
8739 : see if mktime exists
8743 : see if this is a sys/mman.h system
8744 set sys/mman.h i_sysmman
8747 : see if mmap exists
8750 : see what shmat returns
8751 : default to something harmless
8753 case "$i_sysmman$d_mmap" in
8755 $cat >mmap.c <<'END'
8756 #include <sys/mman.h>
8759 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8764 echo "and it returns ($mmaptype)." >&4
8770 : see if mprotect exists
8771 set mprotect d_mprotect
8774 : see if msgctl exists
8778 : see if msgget exists
8782 : see if msgsnd exists
8786 : see if msgrcv exists
8790 : see how much of the 'msg*(2)' library is present.
8793 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8794 *"$undef"*) h_msg=false;;
8798 case "`ipcs 2>&1`" in
8799 "SVID messages"*"not configured"*)
8800 echo "Your $osname does not have the msg*(2) configured." >&4
8815 : we could also check for sys/ipc.h ...
8816 if $h_msg && $test `./findhdr sys/msg.h`; then
8817 echo "You have the full msg*(2) library." >&4
8820 echo "You don't have the full msg*(2) library." >&4
8826 : see if msync exists
8830 : see if munmap exists
8834 : see if nice exists
8838 : see if POSIX threads are available
8839 if test "X$usethreads" = "X$define"; then
8840 set pthread.h i_pthread
8848 : how to create joinable pthreads
8849 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8851 echo "Checking what constant to use for creating joinable pthreads..." >&4
8852 $cat >try.c <<'EOCP'
8853 #include <pthread.h>
8855 int detachstate = JOINABLE;
8858 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8859 if eval $compile; then
8860 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8861 val="$undef" # Yes, undef.
8862 set d_old_pthread_create_joinable
8865 set old_pthread_create_joinable
8868 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8869 if eval $compile; then
8870 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8872 set d_old_pthread_create_joinable
8874 val=PTHREAD_CREATE_UNDETACHED
8875 set old_pthread_create_joinable
8878 set try -DJOINABLE=__UNDETACHED
8879 if eval $compile; then
8880 echo "You seem to use __UNDETACHED." >&4
8882 set d_old_pthread_create_joinable
8885 set old_pthread_create_joinable
8888 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
8890 set d_old_pthread_create_joinable
8893 set old_pthread_create_joinable
8900 d_old_pthread_create_joinable="$undef"
8901 old_pthread_create_joinable=""
8904 : see if pause exists
8908 : see if pipe exists
8912 : see if poll exists
8917 : see whether the various POSIXish _yields exist
8919 #include <pthread.h>
8925 #ifdef PTHREAD_YIELD
8928 #ifdef PTHREAD_YIELD_NULL
8929 pthread_yield(NULL);
8935 : see if sched_yield exists
8936 set try -DSCHED_YIELD
8937 if eval $compile; then
8939 sched_yield='sched_yield()'
8943 case "$usethreads" in
8946 $define) echo 'sched_yield() found.' >&4 ;;
8947 *) echo 'sched_yield() NOT found.' >&4 ;;
8953 : see if pthread_yield exists
8954 set try -DPTHREAD_YIELD
8955 if eval $compile; then
8957 case "$sched_yield" in
8958 '') sched_yield='pthread_yield()' ;;
8961 set try -DPTHREAD_YIELD_NULL
8962 if eval $compile; then
8964 case "$sched_yield" in
8965 '') sched_yield='pthread_yield(NULL)' ;;
8971 case "$usethreads" in
8974 $define) echo 'pthread_yield() found.' >&4 ;;
8975 *) echo 'pthread_yield() NOT found.' >&4 ;;
8982 case "$sched_yield" in
8983 '') sched_yield=undef ;;
8988 : see if this is a pwd.h system
8994 xxx=`./findhdr pwd.h`
8995 $cppstdin $cppflags $cppminus < $xxx >$$.h
8997 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9005 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9013 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9021 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9029 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9037 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9045 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9053 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9065 set d_pwquota; eval $setvar
9066 set d_pwage; eval $setvar
9067 set d_pwchange; eval $setvar
9068 set d_pwclass; eval $setvar
9069 set d_pwexpire; eval $setvar
9070 set d_pwcomment; eval $setvar
9071 set d_pwgecos; eval $setvar
9072 set d_pwpasswd; eval $setvar
9076 : see if readdir and friends exist
9077 set readdir d_readdir
9079 set seekdir d_seekdir
9081 set telldir d_telldir
9083 set rewinddir d_rewinddir
9086 : see if readlink exists
9087 set readlink d_readlink
9090 : see if readv exists
9094 : see if rename exists
9098 : see if rmdir exists
9102 : see if memory.h is available.
9107 : See if it conflicts with string.h
9113 $cppstdin $cppflags $cppminus < $strings > mem.h
9114 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9116 echo "We won't be including <memory.h>."
9126 : can bcopy handle overlapping blocks?
9131 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9138 $cat >>try.c <<'EOCP'
9141 # include <memory.h>
9144 # include <stdlib.h>
9147 # include <string.h>
9149 # include <strings.h>
9152 # include <unistd.h> /* Needed for NetBSD */
9156 char buf[128], abc[128];
9162 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9164 for (align = 7; align >= 0; align--) {
9165 for (len = 36; len; len--) {
9168 for (off = 1; off <= len; off++) {
9169 bcopy(b, b+off, len);
9170 bcopy(b+off, b, len);
9171 if (bcmp(b, abc, len))
9180 if eval $compile_ok; then
9181 if ./try 2>/dev/null; then
9185 echo "It can't, sorry."
9186 case "$d_memmove" in
9187 "$define") echo "But that's Ok since you have memmove()." ;;
9191 echo "(I can't compile the test program, so we'll assume not...)"
9192 case "$d_memmove" in
9193 "$define") echo "But that's Ok since you have memmove()." ;;
9198 $rm -f try.* try core
9202 : can memcpy handle overlapping blocks?
9207 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9214 $cat >>try.c <<'EOCP'
9217 # include <memory.h>
9220 # include <stdlib.h>
9223 # include <string.h>
9225 # include <strings.h>
9228 # include <unistd.h> /* Needed for NetBSD */
9232 char buf[128], abc[128];
9238 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9239 try to store the string in read-only memory. */
9240 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9242 for (align = 7; align >= 0; align--) {
9243 for (len = 36; len; len--) {
9245 memcpy(b, abc, len);
9246 for (off = 1; off <= len; off++) {
9247 memcpy(b+off, b, len);
9248 memcpy(b, b+off, len);
9249 if (memcmp(b, abc, len))
9258 if eval $compile_ok; then
9259 if ./try 2>/dev/null; then
9263 echo "It can't, sorry."
9264 case "$d_memmove" in
9265 "$define") echo "But that's Ok since you have memmove()." ;;
9269 echo "(I can't compile the test program, so we'll assume not...)"
9270 case "$d_memmove" in
9271 "$define") echo "But that's Ok since you have memmove()." ;;
9276 $rm -f try.* try core
9280 : can memcmp be trusted to compare relative magnitude?
9285 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9292 $cat >>try.c <<'EOCP'
9295 # include <memory.h>
9298 # include <stdlib.h>
9301 # include <string.h>
9303 # include <strings.h>
9306 # include <unistd.h> /* Needed for NetBSD */
9312 if ((a < b) && memcmp(&a, &b, 1) < 0)
9318 if eval $compile_ok; then
9319 if ./try 2>/dev/null; then
9323 echo "No, it can't (it uses signed chars)."
9326 echo "(I can't compile the test program, so we'll assume not...)"
9330 $rm -f try.* try core
9334 : see if select exists
9338 : see if semctl exists
9342 : see if semget exists
9346 : see if semop exists
9350 : see how much of the 'sem*(2)' library is present.
9353 case "$d_semctl$d_semget$d_semop" in
9354 *"$undef"*) h_sem=false;;
9358 case "`ipcs 2>&1`" in
9359 "SVID messages"*"not configured"*)
9360 echo "Your $osname does not have the sem*(2) configured." >&4
9373 : we could also check for sys/ipc.h ...
9374 if $h_sem && $test `./findhdr sys/sem.h`; then
9375 echo "You have the full sem*(2) library." >&4
9378 echo "You don't have the full sem*(2) library." >&4
9384 : see whether sys/sem.h defines union semun
9386 $cat > try.c <<'END'
9387 #include <sys/types.h>
9388 #include <sys/ipc.h>
9389 #include <sys/sem.h>
9390 int main () { union semun semun; semun.buf = 0; }
9393 if eval $compile; then
9394 echo "You have union semun in <sys/sem.h>." >&4
9397 echo "You do not have union semun in <sys/sem.h>." >&4
9400 $rm -f try try.c try.h
9404 : see how to do semctl IPC_STAT
9407 : see whether semctl IPC_STAT can use union semun
9412 # define S_IRUSR S_IREAD
9413 # define S_IWUSR S_IWRITE
9414 # define S_IXUSR S_IEXEC
9416 # define S_IRUSR 0400
9417 # define S_IWUSR 0200
9418 # define S_IXUSR 0100
9420 # define S_IRGRP (S_IRUSR>>3)
9421 # define S_IWGRP (S_IWUSR>>3)
9422 # define S_IXGRP (S_IXUSR>>3)
9423 # define S_IROTH (S_IRUSR>>6)
9424 # define S_IWOTH (S_IWUSR>>6)
9425 # define S_IXOTH (S_IXUSR>>6)
9428 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9429 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9430 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9435 #include <sys/types.h>
9436 #include <sys/ipc.h>
9437 #include <sys/sem.h>
9438 #include <sys/stat.h>
9445 #$d_union_semun HAS_UNION_SEMUN
9448 #ifndef HAS_UNION_SEMUN
9451 struct semid_ds *buf;
9452 unsigned short *array;
9458 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9459 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9461 struct semid_ds argbuf;
9464 st = semctl(sem, 0, IPC_STAT, arg);
9468 # endif /* IPC_STAT */
9469 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9471 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9472 # endif /* IPC_RMID */
9473 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9475 #endif /* IPC_PRIVATE && ... */
9476 printf("semget failed: errno = %d\n", errno);
9482 if eval $compile; then
9485 semun) val="$define" ;;
9491 case "$d_semctl_semun" in
9493 echo "You can use union semun for semctl IPC_STAT." >&4
9496 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9501 : see whether semctl IPC_STAT can use struct semid_ds pointer
9502 $cat > try.c <<'END'
9503 #include <sys/types.h>
9504 #include <sys/ipc.h>
9505 #include <sys/sem.h>
9506 #include <sys/stat.h>
9514 struct semid_ds arg;
9517 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9518 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9521 st = semctl(sem, 0, IPC_STAT, &arg);
9523 printf("semid_ds\n");
9525 # endif /* IPC_STAT */
9526 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9528 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9529 # endif /* IPC_RMID */
9530 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9532 #endif /* IPC_PRIVATE && ... */
9533 printf("semget failed: errno = %d\n", errno);
9540 if eval $compile; then
9543 semid_ds) val="$define" ;;
9547 set d_semctl_semid_ds
9549 case "$d_semctl_semid_ds" in
9551 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9553 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9560 # We do not have the full sem*(2) library, so assume we can not
9566 set d_semctl_semid_ds
9571 : see if setegid exists
9572 set setegid d_setegid
9575 : see if seteuid exists
9576 set seteuid d_seteuid
9579 : see if setgrent exists
9580 set setgrent d_setgrent
9583 : see if sethostent exists
9584 set sethostent d_sethent
9587 : see if setlinebuf exists
9588 set setlinebuf d_setlinebuf
9591 : see if setlocale exists
9592 set setlocale d_setlocale
9595 : see if setnetent exists
9596 set setnetent d_setnent
9599 : see if setprotoent exists
9600 set setprotoent d_setpent
9603 : see if setpgid exists
9604 set setpgid d_setpgid
9607 : see if setpgrp2 exists
9608 set setpgrp2 d_setpgrp2
9611 : see if setpriority exists
9612 set setpriority d_setprior
9615 : see if setpwent exists
9616 set setpwent d_setpwent
9619 : see if setregid exists
9620 set setregid d_setregid
9622 set setresgid d_setresgid
9625 : see if setreuid exists
9626 set setreuid d_setreuid
9628 set setresuid d_setresuid
9631 : see if setrgid exists
9632 set setrgid d_setrgid
9635 : see if setruid exists
9636 set setruid d_setruid
9639 : see if setservent exists
9640 set setservent d_setsent
9643 : see if setsid exists
9647 : see if setspent exists
9648 set setspent d_setspent
9651 : see if setvbuf exists
9652 set setvbuf d_setvbuf
9655 : see if sfio.h is available
9660 : see if sfio library is available
9671 : Ok, but do we want to use it.
9675 true|$define|[yY]*) dflt='y';;
9678 echo "$package can use the sfio library, but it is experimental."
9679 rp="You seem to have sfio available, do you want to try using it?"
9683 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9685 : Remove sfio from list of libraries to use
9686 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9689 echo "libs = $libs" >&4
9693 *) case "$usesfio" in
9695 echo "Sorry, cannot find sfio on this machine" >&4
9696 echo "Ignoring your setting of usesfio=$usesfio" >&4
9704 $define) usesfio='true';;
9705 *) usesfio='false';;
9708 : see if shmctl exists
9712 : see if shmget exists
9716 : see if shmat exists
9719 : see what shmat returns
9722 $cat >shmat.c <<'END'
9723 #include <sys/shm.h>
9726 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9731 echo "and it returns ($shmattype)." >&4
9732 : see if a prototype for shmat is available
9733 xxx=`./findhdr sys/shm.h`
9734 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9735 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9746 set d_shmatprototype
9749 : see if shmdt exists
9753 : see how much of the 'shm*(2)' library is present.
9756 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9757 *"$undef"*) h_shm=false;;
9761 case "`ipcs 2>&1`" in
9762 "SVID shared memory"*"not configured"*)
9763 echo "Your $osname does not have the shm*(2) configured." >&4
9778 : we could also check for sys/ipc.h ...
9779 if $h_shm && $test `./findhdr sys/shm.h`; then
9780 echo "You have the full shm*(2) library." >&4
9783 echo "You don't have the full shm*(2) library." >&4
9790 : see if we have sigaction
9791 if set sigaction val -f d_sigaction; eval $csym; $val; then
9792 echo 'sigaction() found.' >&4
9793 $cat > try.c <<'EOP'
9795 #include <sys/types.h>
9799 struct sigaction act, oact;
9803 if eval $compile_ok; then
9806 echo "But you don't seem to have a useable struct sigaction." >&4
9810 echo 'sigaction NOT found.' >&4
9813 set d_sigaction; eval $setvar
9814 $rm -f try try$_o try.c
9816 : see if sigsetjmp exists
9818 case "$d_sigsetjmp" in
9826 if (sigsetjmp(env,1))
9834 if eval $compile; then
9835 if ./try >/dev/null 2>&1; then
9836 echo "POSIX sigsetjmp found." >&4
9840 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9846 echo "sigsetjmp not found." >&4
9850 *) val="$d_sigsetjmp"
9851 case "$d_sigsetjmp" in
9852 $define) echo "POSIX sigsetjmp found." >&4;;
9853 $undef) echo "sigsetjmp not found." >&4;;
9861 : see if stat knows about block sizes
9863 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9866 : see if _ptr and _cnt from stdio act std
9868 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
9869 echo "(Looks like you have stdio.h from Linux.)"
9870 case "$stdio_ptr" in
9871 '') stdio_ptr='((fp)->_IO_read_ptr)'
9874 *) ptr_lval=$d_stdio_ptr_lval;;
9876 case "$stdio_cnt" in
9877 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9880 *) cnt_lval=$d_stdio_cnt_lval;;
9882 case "$stdio_base" in
9883 '') stdio_base='((fp)->_IO_read_base)';;
9885 case "$stdio_bufsiz" in
9886 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9889 case "$stdio_ptr" in
9890 '') stdio_ptr='((fp)->_ptr)'
9893 *) ptr_lval=$d_stdio_ptr_lval;;
9895 case "$stdio_cnt" in
9896 '') stdio_cnt='((fp)->_cnt)'
9899 *) cnt_lval=$d_stdio_cnt_lval;;
9901 case "$stdio_base" in
9902 '') stdio_base='((fp)->_base)';;
9904 case "$stdio_bufsiz" in
9905 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9908 : test whether _ptr and _cnt really work
9909 echo "Checking how std your stdio is..." >&4
9912 #define FILE_ptr(fp) $stdio_ptr
9913 #define FILE_cnt(fp) $stdio_cnt
9915 FILE *fp = fopen("try.c", "r");
9918 18 <= FILE_cnt(fp) &&
9919 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9927 if eval $compile; then
9929 echo "Your stdio acts pretty std."
9932 echo "Your stdio isn't very std."
9935 echo "Your stdio doesn't appear very std."
9941 : Can _ptr be used as an lvalue?
9942 case "$d_stdstdio$ptr_lval" in
9943 $define$define) val=$define ;;
9946 set d_stdio_ptr_lval
9949 : Can _cnt be used as an lvalue?
9950 case "$d_stdstdio$cnt_lval" in
9951 $define$define) val=$define ;;
9954 set d_stdio_cnt_lval
9957 : see if _base is also standard
9959 case "$d_stdstdio" in
9963 #define FILE_base(fp) $stdio_base
9964 #define FILE_bufsiz(fp) $stdio_bufsiz
9966 FILE *fp = fopen("try.c", "r");
9969 19 <= FILE_bufsiz(fp) &&
9970 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9977 if eval $compile; then
9979 echo "And its _base field acts std."
9982 echo "But its _base field isn't std."
9985 echo "However, it seems to be lacking the _base field."
9994 Checking how to access stdio streams by file descriptor number...
9996 case "$stdio_stream_array" in
9997 '') $cat >try.c <<EOCP
10000 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10004 for s in _iob __iob __sF
10006 set try -DSTDIO_STREAM_ARRAY=$s
10007 if eval $compile; then
10008 case "`./try$exe_ext`" in
10009 yes) stdio_stream_array=$s; break ;;
10013 $rm -f try.* try$exe_ext
10015 case "$stdio_stream_array" in
10017 I can't figure out how to access stdio streams by file descriptor number.
10019 d_stdio_stream_array="$undef"
10022 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10024 d_stdio_stream_array="$define"
10028 : see if strcoll exists
10029 set strcoll d_strcoll
10032 : check for structure copying
10034 echo "Checking to see if your C compiler can copy structs..." >&4
10035 $cat >try.c <<'EOCP'
10045 if $cc -c try.c >/dev/null 2>&1 ; then
10047 echo "Yup, it can."
10050 echo "Nope, it can't."
10056 : see if strerror and/or sys_errlist[] exist
10058 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10059 if set strerror val -f d_strerror; eval $csym; $val; then
10060 echo 'strerror() found.' >&4
10061 d_strerror="$define"
10062 d_strerrm='strerror(e)'
10063 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10064 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10065 d_syserrlst="$define"
10067 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10068 d_syserrlst="$undef"
10070 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10071 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10072 echo 'strerror() found in string header.' >&4
10073 d_strerror="$define"
10074 d_strerrm='strerror(e)'
10075 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10076 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10077 d_syserrlst="$define"
10079 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10080 d_syserrlst="$undef"
10082 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10083 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10084 d_strerror="$undef"
10085 d_syserrlst="$define"
10086 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10088 echo 'strerror() and sys_errlist[] NOT found.' >&4
10089 d_strerror="$undef"
10090 d_syserrlst="$undef"
10091 d_strerrm='"unknown"'
10095 : see if strtod exists
10096 set strtod d_strtod
10099 : see if strtol exists
10100 set strtol d_strtol
10103 : see if strtoul exists
10104 set strtoul d_strtoul
10107 : see if strxfrm exists
10108 set strxfrm d_strxfrm
10111 : see if symlink exists
10112 set symlink d_symlink
10115 : see if syscall exists
10116 set syscall d_syscall
10119 : see if sysconf exists
10120 set sysconf d_sysconf
10123 : see if system exists
10124 set system d_system
10127 : see if tcgetpgrp exists
10128 set tcgetpgrp d_tcgetpgrp
10131 : see if tcsetpgrp exists
10132 set tcsetpgrp d_tcsetpgrp
10135 : see if sys/types.h has to be included
10136 set sys/types.h i_systypes
10139 : see if prototype for telldir is available
10141 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10144 : define an is-a-typedef? function
10145 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10147 "") inclist="sys/types.h";;
10149 eval "varval=\$$var";
10153 for inc in $inclist; do
10154 echo "#include <$inc>" >>temp.c;
10156 echo "#ifdef $type" >> temp.c;
10157 echo "printf(\"We have $type\");" >> temp.c;
10158 echo "#endif" >> temp.c;
10159 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10160 if $contains $type temp.E >/dev/null 2>&1; then
10161 eval "$var=\$type";
10166 *) eval "$var=\$varval";;
10169 : define an is-a-typedef? function that prompts if the type is not available.
10170 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10172 "") inclist="sys/types.h";;
10174 eval "varval=\$$var";
10178 for inc in $inclist; do
10179 echo "#include <$inc>" >>temp.c;
10181 echo "#ifdef $type" >> temp.c;
10182 echo "printf(\"We have $type\");" >> temp.c;
10183 echo "#endif" >> temp.c;
10184 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10186 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10187 if $contains $type temp.E >/dev/null 2>&1; then
10188 echo "$type found." >&4;
10189 eval "$var=\$type";
10191 echo "$type NOT found." >&4;
10197 *) eval "$var=\$varval";;
10200 : see if this is a sys/times.h system
10201 set sys/times.h i_systimes
10204 : see if times exists
10206 if set times val -f d_times; eval $csym; $val; then
10207 echo 'times() found.' >&4
10210 case "$i_systimes" in
10211 "$define") inc='sys/times.h';;
10213 rp="What is the type returned by times() on this system?"
10214 set clock_t clocktype long stdio.h sys/types.h $inc
10217 echo 'times() NOT found, hope that will do.' >&4
10222 : see if truncate exists
10223 set truncate d_truncate
10226 : see if tzname[] exists
10228 if set tzname val -a d_tzname; eval $csym; $val; then
10230 echo 'tzname[] found.' >&4
10233 echo 'tzname[] NOT found.' >&4
10238 : see if umask exists
10242 : backward compatibility for d_hvfork
10243 if test X$d_hvfork != X; then
10244 d_vfork="$d_hvfork"
10247 : see if there is a vfork
10252 : Ok, but do we want to use it. vfork is reportedly unreliable in
10253 : perl on Solaris 2.x, and probably elsewhere.
10257 case "$usevfork" in
10263 Perl can only use a vfork() that doesn't suffer from strict
10264 restrictions on calling functions or modifying global data in
10265 the child. For example, glibc-2.1 contains such a vfork()
10266 that is unsuitable. If your system provides a proper fork()
10267 call, chances are that you do NOT want perl to use vfork().
10270 rp="Do you still want to use vfork()?"
10275 echo "Ok, we won't use vfork()."
10284 $define) usevfork='true';;
10285 *) usevfork='false';;
10288 : see if this is an sysdir system
10289 set sys/dir.h i_sysdir
10292 : see if this is an sysndir system
10293 set sys/ndir.h i_sysndir
10296 : see if closedir exists
10297 set closedir d_closedir
10300 case "$d_closedir" in
10303 echo "Checking whether closedir() returns a status..." >&4
10304 cat > closedir.c <<EOM
10305 #$i_dirent I_DIRENT /**/
10306 #$i_sysdir I_SYS_DIR /**/
10307 #$i_sysndir I_SYS_NDIR /**/
10308 #$i_systypes I_SYS_TYPES /**/
10310 #if defined(I_SYS_TYPES)
10311 #include <sys/types.h>
10313 #if defined(I_DIRENT)
10314 #include <dirent.h>
10315 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10316 #include <sys/dir.h>
10320 #include <sys/ndir.h>
10324 #include <ndir.h> /* may be wrong in the future */
10326 #include <sys/dir.h>
10331 int main() { return closedir(opendir(".")); }
10334 if eval $compile_ok; then
10335 if ./closedir > /dev/null 2>&1 ; then
10336 echo "Yes, it does."
10339 echo "No, it doesn't."
10343 echo "(I can't seem to compile the test program--assuming it doesn't)"
10351 set d_void_closedir
10354 : check for volatile keyword
10356 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10357 $cat >try.c <<'EOCP'
10360 typedef struct _goo_struct goo_struct;
10361 goo_struct * volatile goo = ((goo_struct *)0);
10362 struct _goo_struct {
10367 typedef unsigned short foo_t;
10368 char *volatile foo;
10370 volatile foo_t blech;
10374 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10376 echo "Yup, it does."
10379 echo "Nope, it doesn't."
10385 : see if there is a wait4
10389 : see if waitpid exists
10390 set waitpid d_waitpid
10393 : see if wcstombs exists
10394 set wcstombs d_wcstombs
10397 : see if wctomb exists
10398 set wctomb d_wctomb
10401 : see if writev exists
10402 set writev d_writev
10405 : preserve RCS keywords in files with variable substitution, grrr
10410 Revision='$Revision'
10412 case "$crosscompile" in
10413 ''|[nN]*) crosscompile="$undef" ;;
10417 next|rhapsody) multiarch="$define" ;;
10419 case "$multiarch" in
10420 ''|[nN]*) multiarch="$undef" ;;
10423 : check for alignment requirements
10425 case "$crosscompile$multiarch" in
10428 You seem to be either cross-compiling or doing a multiarchitecture build,
10429 skipping the memory alignment check.
10432 case "$alignbytes" in
10433 '') alignbytes=8 ;;
10437 case "$alignbytes" in
10438 '') echo "Checking alignment constraints..." >&4
10439 $cat >try.c <<'EOCP'
10446 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10450 if eval $compile_ok; then
10454 echo "(I can't seem to compile the test program...)"
10457 *) dflt="$alignbytes"
10460 rp="Doubles must be aligned on a how-many-byte boundary?"
10468 : check for ordering of bytes in a long
10470 case "$crosscompile$multiarch" in
10473 You seem to be either cross-compiling or doing a multiarchitecture build,
10474 skipping the byteorder check.
10480 case "$byteorder" in
10483 In the following, larger digits indicate more significance. A big-endian
10484 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10485 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10486 machines may have weird orders like 3412. A Cray will report 87654321. If
10487 the test program works the default is probably right.
10488 I'm now running the test program...
10490 $cat >try.c <<'EOCP'
10497 char c[sizeof(long)];
10500 if (sizeof(long) > 4)
10501 u.l = (0x08070605L << 32) | 0x04030201L;
10504 for (i = 0; i < sizeof(long); i++)
10505 printf("%c", u.c[i]+'0');
10512 if eval $compile && ./try > /dev/null; then
10515 [1-4][1-4][1-4][1-4]|12345678|87654321)
10516 echo "(The test program ran ok.)"
10517 echo "byteorder=$dflt"
10520 ????|????????) echo "(The test program ran ok.)" ;;
10521 *) echo "(The test program didn't run right for some reason.)" ;;
10526 (I can't seem to compile the test program. Guessing big-endian...)
10529 case "$xxx_prompt" in
10531 rp="What is the order of bytes in a long?"
10545 : how do we catenate cpp tokens here?
10547 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10548 $cat >cpp_stuff.c <<'EOCP'
10549 #define RCAT(a,b)a/**/b
10550 #define ACAT(a,b)a ## b
10554 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10555 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10556 echo "Oh! Smells like ANSI's been here." >&4
10557 echo "We can catify or stringify, separately or together!"
10559 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10560 echo "Ah, yes! The good old days!" >&4
10561 echo "However, in the good old days we don't know how to stringify and"
10562 echo "catify at the same time."
10566 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10567 to have to edit the values of CAT[2-5] in config.h...
10569 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10573 : see if this is a db.h system
10579 : Check db version.
10581 echo "Checking Berkeley DB version ..." >&4
10587 #include <sys/types.h>
10592 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10593 int Major, Minor, Patch ;
10594 unsigned long Version ;
10595 (void)db_version(&Major, &Minor, &Patch) ;
10596 printf("You have Berkeley DB Version 2 or greater\n");
10598 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10599 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10600 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10601 Major, Minor, Patch) ;
10603 /* check that db.h & libdb are compatible */
10604 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10605 printf("db.h and libdb are incompatible\n") ;
10609 printf("db.h and libdb are compatible\n") ;
10611 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10612 + DB_VERSION_PATCH ;
10614 /* needs to be >= 2.3.4 */
10615 if (Version < 2003004) {
10616 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10617 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10623 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10624 printf("You have Berkeley DB Version 1\n");
10625 exit(0); /* DB version < 2: the coast is clear. */
10627 exit(1); /* <db.h> not Berkeley DB? */
10633 if eval $compile && ./try; then
10634 echo 'Looks OK.' >&4
10636 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10640 : Remove db from list of libraries to use
10641 echo "Removing unusable -ldb from library list" >&4
10642 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10645 echo "libs = $libs" >&4
10655 : Check the return type needed for hash
10657 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10663 #include <sys/types.h>
10666 #ifndef DB_VERSION_MAJOR
10667 u_int32_t hash_cb (ptr, size)
10675 info.hash = hash_cb;
10679 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10680 if $contains warning try.out >>/dev/null 2>&1 ; then
10683 db_hashtype='u_int32_t'
10686 : XXX Maybe we should just give up here.
10687 db_hashtype=u_int32_t
10689 echo "Help: I can't seem to compile the db test program." >&4
10690 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10693 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10695 *) db_hashtype=u_int32_t
10700 : Check the return type needed for prefix
10702 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10708 #include <sys/types.h>
10711 #ifndef DB_VERSION_MAJOR
10712 size_t prefix_cb (key1, key2)
10720 info.prefix = prefix_cb;
10724 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10725 if $contains warning try.out >>/dev/null 2>&1 ; then
10726 db_prefixtype='int'
10728 db_prefixtype='size_t'
10731 db_prefixtype='size_t'
10732 : XXX Maybe we should just give up here.
10734 echo "Help: I can't seem to compile the db test program." >&4
10735 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10738 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10740 *) db_prefixtype='size_t'
10744 : check for void type
10746 echo "Checking to see how well your C compiler groks the void type..." >&4
10747 case "$voidflags" in
10749 $cat >try.c <<'EOCP'
10755 extern void moo(); /* function returning void */
10756 void (*goo)(); /* ptr to func returning void */
10758 void *hue; /* generic ptr */
10771 int main() { sub(); }
10773 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10774 voidflags=$defvoidused
10775 echo "Good. It appears to support void to the level $package wants.">&4
10776 if $contains warning .out >/dev/null 2>&1; then
10777 echo "However, you might get some warnings that look like this:"
10781 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10782 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10783 echo "It supports 1..."
10784 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10785 echo "It also supports 2..."
10786 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10788 echo "And it supports 4 but not 8 definitely."
10790 echo "It doesn't support 4..."
10791 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10793 echo "But it supports 8."
10796 echo "Neither does it support 8."
10800 echo "It does not support 2..."
10801 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10803 echo "But it supports 4 and 8."
10805 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10807 echo "And it supports 4 but has not heard about 8."
10809 echo "However it supports 8 but not 4."
10814 echo "There is no support at all for void."
10819 case "$voidflags" in
10821 *) $cat >&4 <<'EOM'
10822 Support flag bits are:
10823 1: basic void declarations.
10824 2: arrays of pointers to functions returning void.
10825 4: operations between pointers to and addresses of void functions.
10826 8: generic void pointers.
10829 rp="Your void support flags add up to what?"
10837 : How can we generate normalized random numbers ?
10839 echo "Looking for a random number function..." >&4
10840 case "$randfunc" in
10842 if set drand48 val -f; eval $csym; $val; then
10844 echo "Good, found drand48()." >&4
10845 elif set random val -f; eval $csym; $val; then
10847 echo "OK, found random()." >&4
10850 echo "Yick, looks like I have to use rand()." >&4
10861 *-Dmy_rand=*|*-Dmy_srand=*)
10862 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10863 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10864 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10865 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10869 while $test "$cont"; do
10870 rp="Use which function to generate random numbers?"
10872 if $test "$ans" = "$dflt"; then
10878 if set $ans val -f; eval $csym; $val; then
10882 rp="I cannot find function $ans. Use that name anyway?"
10891 case "$randfunc" in
10893 drand01="drand48()"
10899 case "$randbits" in
10901 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10903 #$i_unistd I_UNISTD
10904 #$i_stdlib I_STDLIB
10907 # include <unistd.h>
10910 # include <stdlib.h>
10915 register unsigned long tmp;
10916 register unsigned long max = 0L;
10918 for (i = 1000; i; i--) {
10919 tmp = (unsigned long) $randfunc();
10920 if (tmp > max) max = tmp;
10922 for (i = 0; max; i++)
10928 if eval $compile_ok; then
10932 echo "(I can't seem to compile the test program...)"
10939 rp="How many bits does your $randfunc() function produce?"
10943 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10944 seedfunc="s$randfunc"
10945 randseedtype=unsigned
10949 rp="How many bits does your $randfunc() function produce?"
10952 seedfunc="s$randfunc"
10953 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10954 if set $seedfunc val -f; eval $csym; $val; then
10955 echo "(Using $seedfunc() to seed random generator)"
10957 echo "(Warning: no $seedfunc() to seed random generator)"
10960 randseedtype=unsigned
10968 echo "Determining whether or not we are on an EBCDIC system..." >&4
10969 $cat >tebcdic.c <<'EOM'
10972 if ('M'==0xd4) return 0;
10979 if eval $compile_ok; then
10981 echo "You have EBCDIC." >&4
10984 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin, or UTF." >&4
10987 echo "I'm unable to compile the test program." >&4
10988 echo "I'll assume ASCII or some ISO Latin." >&4
10990 $rm -f tebcdic.c tebcdic
10996 Checking how to flush all pending stdio output...
10998 # I only know how to find the first 32 possibly open files on SunOS.
10999 # See also hints/sunos_4_1.sh and util.c --AD
11001 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11003 $cat >>try.c <<EOCP
11005 #$i_unistd I_UNISTD
11007 # include <unistd.h>
11009 #$d_sysconf HAS_SYSCONF
11010 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11011 #ifdef HAS_STDIO_STREAM_ARRAY
11012 # define STDIO_STREAM_ARRAY $stdio_stream_array
11015 FILE* p = fopen("try.out", "w");
11019 # ifdef TRY_FPRINTF
11023 #ifdef TRY_FFLUSH_NULL
11026 #ifdef TRY_FFLUSH_ALL
11028 long open_max = -1;
11029 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11030 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11032 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11033 open_max = sysconf(_SC_OPEN_MAX);
11036 open_max = FOPEN_MAX;
11039 open_max = OPEN_MAX;
11048 # ifdef HAS_STDIO_STREAM_ARRAY
11049 if (open_max > 0) {
11051 for (i = 0; i < open_max; i++)
11052 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11053 STDIO_STREAM_ARRAY[i]._file < open_max &&
11054 STDIO_STREAM_ARRAY[i]._flag)
11055 fflush(&STDIO_STREAM_ARRAY[i]);
11063 : first we have to find out how _not_ to flush
11064 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11066 set try -DTRY_FPUTC
11067 if eval $compile; then
11069 ./try$exe_ext 2>/dev/null
11070 if $test ! -s try.out -a "X$?" = X42; then
11076 set try -DTRY_FPRINTF
11078 if eval $compile; then
11080 ./try$exe_ext 2>/dev/null
11081 if $test ! -s try.out -a "X$?" = X42; then
11082 output=-DTRY_FPRINTF
11088 : check for fflush NULL behaviour
11089 case "$fflushNULL" in
11090 '') set try -DTRY_FFLUSH_NULL $output
11091 if eval $compile; then
11093 ./try$exe_ext 2>/dev/null
11095 if $test -s try.out -a "X$code" = X42; then
11096 fflushNULL="`$cat try.out`"
11098 if $test "X$code" != X42; then
11100 (If this test failed, don't worry, we'll try another method shortly.)
11105 $rm -f core try.core core.try.*
11106 case "$fflushNULL" in
11108 Your fflush(NULL) works okay.
11110 fflushNULL="$define"
11113 Your fflush(NULL) isn't working (contrary to ANSI C).
11115 fflushNULL="$undef"
11118 Cannot figure out whether your fflush(NULL) works or not.
11119 I'm assuming it doesn't (contrary to ANSI C).
11121 fflushNULL="$undef"
11125 $define|true|[yY]*)
11126 fflushNULL="$define"
11129 fflushNULL="$undef"
11132 : check explicit looping only if NULL did not work
11133 case "$fflushNULL" in
11135 : check for fflush all behaviour
11136 case "$fflushall" in
11137 '') set try -DTRY_FFLUSH_ALL $output
11138 if eval $compile; then
11140 (Now testing the other method--but note that also this may fail.)
11143 ./try$exe_ext 2>/dev/null
11144 if $test -s try.out -a "X$?" = X42; then
11145 fflushall="`$cat try.out`"
11148 $rm -f core try.core core.try.*
11149 case "$fflushall" in
11151 Whew. Flushing explicitly all the stdio streams works.
11153 fflushall="$define"
11156 Sigh. Flushing explicitly all the stdio streams doesn't work.
11161 Cannot figure out whether flushing stdio streams explicitly works or not.
11162 I'm assuming it doesn't.
11168 "$define"|true|[yY]*)
11169 fflushall="$define"
11176 *) fflushall="$undef"
11179 case "$fflushNULL$fflushall" in
11182 I cannot figure out how to flush pending stdio output.
11186 $rm -f try.* try$exe_ext
11188 : see what type file positions are declared as in the library
11189 rp="What is the type for file position used by fsetpos()?"
11190 set fpos_t fpostype long stdio.h sys/types.h
11193 : Store the full pathname to the ar program for use in the C program
11194 : Respect a hint or command line value for full_ar.
11199 : Store the full pathname to the sed program for use in the C program
11202 : see what type gids are declared as in the kernel
11204 echo "Looking for the type for group ids returned by getgid()."
11205 set gid_t gidtype xxx stdio.h sys/types.h
11209 xxx=`./findhdr sys/user.h`
11210 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11212 unsigned) dflt="$1 $2" ;;
11216 *) dflt="$gidtype";;
11219 gid_t) echo "gid_t found." ;;
11220 *) rp="What is the type for group ids returned by getgid()?"
11226 : see if getgroups exists
11227 set getgroups d_getgrps
11230 : see if setgroups exists
11231 set setgroups d_setgrps
11235 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11237 case "$d_getgrps$d_setgrps" in
11239 case "$groupstype" in
11240 '') dflt="$gidtype" ;;
11241 *) dflt="$groupstype" ;;
11244 What type of pointer is the second argument to getgroups() and setgroups()?
11245 Usually this is the same as group ids, $gidtype, but not always.
11248 rp='What type pointer is the second argument to getgroups() and setgroups()?'
11252 *) groupstype="$gidtype";;
11255 : see what type lseek is declared as in the kernel
11256 rp="What is the type used for lseek's offset on this system?"
11257 set off_t lseektype long stdio.h sys/types.h
11261 $echo $n "Checking to see how big your file offsets are...$c" >&4
11263 #include <sys/types.h>
11267 printf("%d\n", sizeof($lseektype));
11271 if eval $compile_ok; then
11273 $echo " $lseeksize bytes." >&4
11277 echo "(I can't seem to compile the test program. Guessing...)"
11278 rp="What is the size of your file offsets (in bytes)?"
11285 echo "Checking if your $make program sets \$(MAKE)..." >&4
11286 case "$make_set_make" in
11288 $sed 's/^X //' > testmake.mak << 'EOF'
11290 X @echo 'maketemp="$(MAKE)"'
11292 case "`$make -f testmake.mak 2>/dev/null`" in
11293 *maketemp=*) make_set_make='#' ;;
11294 *) make_set_make="MAKE=$make" ;;
11296 $rm -f testmake.mak
11299 case "$make_set_make" in
11300 '#') echo "Yup, it does.";;
11301 *) echo "Nope, it doesn't.";;
11304 : see what type is used for mode_t
11305 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11306 set mode_t modetype int stdio.h sys/types.h
11309 : define a fucntion to check prototypes
11310 $cat > protochk <<EOSH
11313 optimize="$optimize"
11315 prototype="$prototype"
11320 $cat >> protochk <<'EOSH'
11325 while test $# -ge 2; do
11327 $define) echo "#include <$2>" >> try.c ;;
11328 literal) echo "$2" >> try.c ;;
11332 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11333 cat >> try.c <<'EOCP'
11334 #ifdef CAN_PROTOTYPE
11335 #define _(args) args
11340 echo "$foo" >> try.c
11341 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11342 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11348 $eunicefix protochk
11350 : see what type is used for size_t
11351 rp="What is the type used for the length parameter for string functions?"
11352 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11355 : check for type of arguments to gethostbyaddr.
11356 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11357 case "$d_gethbyaddr" in
11361 Checking to see what type of arguments are accepted by gethostbyaddr().
11363 hdrs="$define sys/types.h
11364 $d_socket sys/socket.h
11365 $i_niin netinet/in.h
11367 $i_unistd unistd.h"
11368 : The first arg can 'char *' or 'void *'
11369 : The second arg is some of integral type
11370 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11371 for yyy in size_t long int; do
11372 case "$netdb_host_type" in
11373 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11374 if ./protochk "$try" $hdrs; then
11375 echo "Your system accepts $xxx for the first arg."
11376 echo "...and $yyy for the second arg."
11377 netdb_host_type="$xxx"
11378 netdb_hlen_type="$yyy"
11384 : In case none of those worked, prompt the user.
11385 case "$netdb_host_type" in
11386 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11389 netdb_host_type=$ans
11390 rp='What is the type for the 2nd argument to gethostbyaddr?'
11393 netdb_hlen_type=$ans
11397 *) : no gethostbyaddr, so pick harmless defaults
11398 netdb_host_type='char *'
11399 netdb_hlen_type="$sizetype"
11402 # Remove the "const" if needed. -- but then we'll have a
11404 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11407 : check for type of argument to gethostbyname.
11408 if test "X$netdb_name_type" = X ; then
11409 case "$d_gethbyname" in
11413 Checking to see what type of argument is accepted by gethostbyname().
11415 hdrs="$define sys/types.h
11416 $d_socket sys/socket.h
11417 $i_niin netinet/in.h
11419 $i_unistd unistd.h"
11420 for xxx in "const char *" "char *"; do
11421 case "$netdb_name_type" in
11422 '') try="extern struct hostent *gethostbyname($xxx);"
11423 if ./protochk "$try" $hdrs; then
11424 echo "Your system accepts $xxx."
11425 netdb_name_type="$xxx"
11430 : In case none of those worked, prompt the user.
11431 case "$netdb_name_type" in
11432 '') rp='What is the type for the 1st argument to gethostbyname?'
11435 netdb_name_type=$ans
11439 *) : no gethostbyname, so pick harmless default
11440 netdb_name_type='char *'
11445 : check for type of 1st argument to getnetbyaddr.
11446 if test "X$netdb_net_type" = X ; then
11447 case "$d_getnbyaddr" in
11451 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11453 hdrs="$define sys/types.h
11454 $d_socket sys/socket.h
11455 $i_niin netinet/in.h
11457 $i_unistd unistd.h"
11458 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11459 case "$netdb_net_type" in
11460 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11461 if ./protochk "$try" $hdrs; then
11462 echo "Your system accepts $xxx."
11463 netdb_net_type="$xxx"
11468 : In case none of those worked, prompt the user.
11469 case "$netdb_net_type" in
11470 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11473 netdb_net_type=$ans
11477 *) : no getnetbyaddr, so pick harmless default
11478 netdb_net_type='long'
11482 : locate the preferred pager for this system
11496 '') dflt=/usr/ucb/more;;
11503 rp='What pager is used on your system?'
11507 : see what type pids are declared as in the kernel
11508 rp="What is the type of process ids on this system?"
11509 set pid_t pidtype int stdio.h sys/types.h
11512 : check for length of pointer
11516 $echo $n "Checking to see how big your pointers are...$c" >&4
11517 if test "$voidflags" -gt 7; then
11518 echo '#define VOID_PTR char *' > try.c
11520 echo '#define VOID_PTR void *' > try.c
11522 $cat >>try.c <<'EOCP'
11526 printf("%d\n", sizeof(VOID_PTR));
11531 if eval $compile_ok; then
11533 $echo " $ptrsize bytes." >&4
11536 echo "(I can't seem to compile the test program. Guessing...)" >&4
11537 rp="What is the size of a pointer (in bytes)?"
11545 : see if ar generates random libraries by itself
11547 echo "Checking how to generate random libraries on your machine..." >&4
11548 echo 'int bar1() { return bar2(); }' > bar1.c
11549 echo 'int bar2() { return 2; }' > bar2.c
11550 $cat > foo.c <<'EOP'
11551 int main() { printf("%d\n", bar1()); exit(0); }
11553 $cc $ccflags -c bar1.c >/dev/null 2>&1
11554 $cc $ccflags -c bar2.c >/dev/null 2>&1
11555 $cc $ccflags -c foo.c >/dev/null 2>&1
11556 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11557 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11558 ./foobar >/dev/null 2>&1; then
11559 echo "$ar appears to generate random libraries itself."
11562 elif $ar ts bar$_a >/dev/null 2>&1 &&
11563 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11564 ./foobar >/dev/null 2>&1; then
11565 echo "a table of contents needs to be added with '$ar ts'."
11572 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11573 $test -f $ranlib || ranlib=''
11576 if $test -n "$ranlib"; then
11577 echo "your system has '$ranlib'; we'll use that."
11580 echo "your system doesn't seem to support random libraries"
11581 echo "so we'll use lorder and tsort to order the libraries."
11588 : check for type of arguments to select.
11589 case "$selecttype" in
11590 '') case "$d_select" in
11593 Checking to see what type of arguments are accepted by select().
11595 hdrs="$define sys/types.h
11596 $i_systime sys/time.h
11597 $i_sysselct sys/select.h
11598 $d_socket sys/socket.h"
11599 : The first arg can be int, unsigned, or size_t
11600 : The last arg may or may not be 'const'
11602 : void pointer has been seen but using that
11603 : breaks the selectminbits test
11604 for xxx in 'fd_set *' 'int *'; do
11605 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11606 for tmo in 'struct timeval *' 'const struct timeval *'; do
11608 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11609 if ./protochk "$try" $hdrs; then
11610 echo "Your system accepts $xxx."
11619 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11620 case "$d_fd_set" in
11621 $define) dflt="fd_set *" ;;
11630 *) : no select, so pick a harmless default
11637 : check for the select 'width'
11638 case "$selectminbits" in
11639 '') case "$d_select" in
11643 Checking to see on how many bits at a time your select() operates...
11646 #include <sys/types.h>
11648 #$i_systime I_SYS_TIME
11649 #$i_systimek I_SYS_TIME_KERNEL
11654 # ifdef I_SYS_TIME_KERNEL
11657 # include <sys/time.h>
11658 # ifdef I_SYS_TIME_KERNEL
11662 #$i_sysselct I_SYS_SELECT
11663 #ifdef I_SYS_SELECT
11664 #include <sys/select.h>
11666 #$d_socket HAS_SOCKET
11668 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11672 #define S sizeof(*(b))
11674 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11675 #define NBITS (NBYTES * 8)
11684 fp = fopen("try.c", "r");
11690 b = ($selecttype)s;
11691 for (i = 0; i < NBITS; i++)
11695 select(fd + 1, b, 0, 0, &t);
11696 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11697 printf("%d\n", i + 1);
11702 if eval $compile_ok; then
11703 selectminbits=`./try`
11704 case "$selectminbits" in
11706 Cannot figure out on how many bits at a time your select() operates.
11707 I'll play safe and guess it is 32 bits.
11713 *) bits="$selectminbits bits" ;;
11715 echo "Your select() operates on $bits at a time." >&4
11717 rp='What is the minimum number of bits your select() operates on?'
11718 case "$byteorder" in
11719 1234|12345678) dflt=32 ;;
11724 selectminbits="$val"
11728 *) : no select, so pick a harmless default
11735 : Trace out the files included by signal.h, then look for SIGxxx names.
11736 : Remove SIGARRAYSIZE used by HPUX.
11737 : Remove SIGSTKSIZE used by Linux.
11738 : Remove SIGSTKSZ used by Posix.
11739 : Remove SIGTYP void lines used by OS2.
11740 xxx=`echo '#include <signal.h>' |
11741 $cppstdin $cppminus $cppflags 2>/dev/null |
11742 $grep '^[ ]*#.*include' |
11743 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11744 : Check this list of files to be sure we have parsed the cpp output ok.
11745 : This will also avoid potentially non-existent files, such
11748 for xx in $xxx /dev/null ; do
11749 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11751 : If we have found no files, at least try signal.h
11752 case "$xxxfiles" in
11753 '') xxxfiles=`./findhdr signal.h` ;;
11756 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11757 print substr($2, 4, 20)
11759 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11760 print substr($3, 4, 20)
11762 : Append some common names just in case the awk scan failed.
11763 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11764 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11765 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11766 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11767 : generate a few handy files for later
11768 $cat > signal.c <<'EOCP'
11769 #include <sys/types.h>
11770 #include <signal.h>
11774 /* Strange style to avoid deeply-nested #if/#else/#endif */
11777 # define NSIG (_NSIG)
11783 # define NSIG (SIGMAX+1)
11789 # define NSIG (SIG_MAX+1)
11795 # define NSIG (MAXSIG+1)
11801 # define NSIG (MAX_SIG+1)
11806 # ifdef SIGARRAYSIZE
11807 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11813 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11817 /* Default to some arbitrary number that's big enough to get most
11818 of the common signals.
11824 printf("NSIG %d\n", NSIG);
11830 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11832 printf "#ifdef SIG"; printf $1; printf "\n"
11833 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11834 printf $1; printf ");\n"
11838 printf "#endif /* JUST_NSIG */\n";
11842 $cat >signal.awk <<'EOP'
11843 BEGIN { ndups = 0 }
11844 $1 ~ /^NSIG$/ { nsig = $2 }
11845 ($1 !~ /^NSIG$/) && (NF == 2) {
11846 if ($2 > maxsig) { maxsig = $2 }
11847 if (sig_name[$2]) {
11848 dup_name[ndups] = $1
11849 dup_num[ndups] = $2
11861 printf("NSIG %d\n", nsig);
11862 for (n = 1; n < nsig; n++) {
11864 printf("%s %d\n", sig_name[n], sig_num[n])
11867 printf("NUM%d %d\n", n, n)
11870 for (n = 0; n < ndups; n++) {
11871 printf("%s %d\n", dup_name[n], dup_num[n])
11875 $cat >signal_cmd <<EOS
11877 if $test -s signal.lst; then
11878 echo "Using your existing signal.lst file"
11883 $cat >>signal_cmd <<'EOS'
11886 if eval $compile_ok; then
11887 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11889 echo "(I can't seem be able to compile the whole test program)" >&4
11890 echo "(I'll try it in little pieces.)" >&4
11891 set signal -DJUST_NSIG
11892 if eval $compile_ok; then
11893 ./signal$_exe > signal.nsg
11896 echo "I can't seem to figure out how many signals you have." >&4
11897 echo "Guessing 50." >&4
11898 echo 'NSIG 50' > signal.nsg
11900 : Now look at all the signal names, one at a time.
11901 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11902 $cat > signal.c <<EOCP
11903 #include <sys/types.h>
11904 #include <signal.h>
11907 printf("$xx %d\n", SIG${xx});
11912 if eval $compile; then
11913 echo "SIG${xx} found."
11914 ./signal$_exe >> signal.ls1
11916 echo "SIG${xx} NOT found."
11919 if $test -s signal.ls1; then
11920 $cat signal.nsg signal.ls1 |
11921 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11925 if $test -s signal.lst; then
11928 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11929 echo 'kill -l' >signal
11930 set X `csh -f <signal`
11934 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11936 echo $@ | $tr ' ' $trnl | \
11937 $awk '{ printf "%s %d\n", $1, ++s; }
11938 END { printf "NSIG %d\n", ++s }' >signal.lst
11940 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11942 chmod a+x signal_cmd
11943 $eunicefix signal_cmd
11945 : generate list of signal names
11947 case "$sig_name_init" in
11949 *) case "$sig_num_init" in
11950 ''|*,*) doinit=yes ;;
11955 echo "Generating a list of signal names and numbers..." >&4
11957 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11958 sig_name=`$awk 'BEGIN { printf "ZERO " }
11959 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11960 sig_num=`$awk 'BEGIN { printf "0 " }
11961 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11962 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11963 !/^NSIG/ { printf "\"%s\", ", $1 }
11964 END { printf "0\n" }' signal.lst`
11965 sig_num_init=`$awk 'BEGIN { printf "0, " }
11966 !/^NSIG/ { printf "%d, ", $2}
11967 END { printf "0\n"}' signal.lst`
11970 echo "The following $sig_count signals are available:"
11972 echo $sig_name | $awk \
11973 'BEGIN { linelen = 0 }
11975 for (i = 1; i <= NF; i++) {
11976 name = "SIG" $i " "
11977 linelen = linelen + length(name)
11978 if (linelen > 70) {
11980 linelen = length(name)
11986 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11988 : see what type is used for signed size_t
11989 set ssize_t ssizetype int stdio.h sys/types.h
11992 $cat > ssize.c <<EOM
11994 #include <sys/types.h>
11995 #define Size_t $sizetype
11996 #define SSize_t $dflt
11999 if (sizeof(Size_t) == sizeof(SSize_t))
12001 else if (sizeof(Size_t) == sizeof(int))
12010 if eval $compile_ok && ./ssize > /dev/null; then
12011 ssizetype=`./ssize`
12012 echo "I'll be using $ssizetype for functions returning a byte count." >&4
12015 Help! I can't compile and run the ssize_t test program: please enlighten me!
12016 (This is probably a misconfiguration in your system or libraries, and
12017 you really ought to fix it. Still, I'll try anyway.)
12019 I need a type that is the same size as $sizetype, but is guaranteed to
12020 be signed. Common values are ssize_t, int and long.
12023 rp="What signed type is the same size as $sizetype?"
12027 $rm -f ssize ssize.*
12029 : see what type of char stdio uses.
12031 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12032 echo "Your stdio uses unsigned chars." >&4
12033 stdchar="unsigned char"
12035 echo "Your stdio uses signed chars." >&4
12039 : see if time exists
12041 if test "X$d_time" = X -o X"$timetype" = X; then
12042 if set time val -f d_time; eval $csym; $val; then
12043 echo 'time() found.' >&4
12045 rp="What is the type returned by time() on this system?"
12046 set time_t timetype long stdio.h sys/types.h
12049 echo 'time() not found, hope that will do.' >&4
12057 : see what type uids are declared as in the kernel
12059 echo "Looking for the type for user ids returned by getuid()."
12060 set uid_t uidtype xxx stdio.h sys/types.h
12064 xxx=`./findhdr sys/user.h`
12065 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12067 unsigned) dflt="$1 $2" ;;
12071 *) dflt="$uidtype";;
12074 uid_t) echo "uid_t found." ;;
12075 *) rp="What is the type for user ids returned by getuid()?"
12081 : see if dbm.h is available
12082 : see if dbmclose exists
12083 set dbmclose d_dbmclose
12086 case "$d_dbmclose" in
12096 *) set rpcsvc/dbm.h i_rpcsvcdbm
12101 *) echo "We won't be including <dbm.h>"
12111 : see if this is a sys/file.h system
12116 : do we need to include sys/file.h ?
12120 if $h_sysfile; then
12122 echo "We'll be including <sys/file.h>." >&4
12125 echo "We won't be including <sys/file.h>." >&4
12135 : see if fcntl.h is there
12140 : see if we can include fcntl.h
12146 echo "We'll be including <fcntl.h>." >&4
12149 if $h_sysfile; then
12150 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12152 echo "We won't be including <fcntl.h>." >&4
12164 : see if locale.h is available
12165 set locale.h i_locale
12168 : see if mach cthreads are available
12169 if test "X$usethreads" = "X$define"; then
12170 set mach/cthreads.h i_machcthr
12173 i_machcthr="$undef"
12178 : see if this is a math.h system
12182 : see if this is a mntent.h system
12183 set mntent.h i_mntent
12186 : see if ndbm.h is available
12191 : see if dbm_open exists
12192 set dbm_open d_dbm_open
12194 case "$d_dbm_open" in
12197 echo "We won't be including <ndbm.h>"
12206 : see if net/errno.h is available
12208 set net/errno.h val
12211 : Unfortunately, it causes problems on some systems. Arrgh.
12214 cat > try.c <<'EOM'
12217 #include <net/errno.h>
12223 if $cc $ccflags -c try.c >/dev/null 2>&1; then
12224 echo "We'll be including <net/errno.h>." >&4
12226 echo "We won't be including <net/errno.h>." >&4
12235 : see if netinet/tcp.h is available
12236 set netinet/tcp.h i_netinettcp
12239 : see if this is a poll.h system
12243 : get C preprocessor symbols handy
12245 $echo $n "Hmm... $c"
12246 echo $al | $tr ' ' $trnl >Cppsym.know
12247 $cat <<EOSS >Cppsym
12255 case "\$list\$#" in
12258 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12260 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12263 unknown="\$unknown \$sym"
12273 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12275 exit 0; _ _ _ _\1\\ \1\\
12278 echo "exit 1; _ _ _" >>Cppsym\$\$
12279 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
12281 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12287 $rm -f Cppsym\$\$ Cppsym2\$\$
12292 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12294 : now check the C compiler for additional symbols
12295 postprocess_cc_v=''
12297 aix) postprocess_cc_v="|$tr , ' '" ;;
12304 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12307 -D*) echo "\$i" | $sed 's/^-D//';;
12308 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12313 postprocess_cc_v=''
12316 ./ccsym > ccsym1.raw
12317 if $test -s ccsym1.raw; then
12318 $sort ccsym1.raw | $uniq >ccsym.raw
12320 mv ccsym1.raw ccsym.raw
12323 $awk '/\=/ { print $0; next }
12324 { print $0"=1" }' ccsym.raw >ccsym.list
12325 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12326 $comm -13 ccsym.true ccsym.list >ccsym.own
12327 $comm -12 ccsym.true ccsym.list >ccsym.com
12328 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12330 if $test -z ccsym.raw; then
12331 echo "Your C compiler doesn't seem to define any symbols!" >&4
12333 echo "However, your C preprocessor defines the following symbols:"
12336 cppsymbols=`$cat Cppsym.true`
12337 cppsymbols=`echo $cppsymbols`
12338 cppccsymbols="$cppsymbols"
12340 if $test -s ccsym.com; then
12341 echo "Your C compiler and pre-processor define these symbols:"
12342 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12345 cppccsymbols=`$cat ccsym.com`
12346 cppccsymbols=`echo $cppccsymbols`
12347 $test "$silent" || sleep 1
12349 if $test -s ccsym.cpp; then
12350 $test "$also" && echo " "
12351 echo "Your C pre-processor ${also}defines the following symbols:"
12352 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12354 cppsymbols=`$cat ccsym.cpp`
12355 cppsymbols=`echo $cppsymbols`
12356 $test "$silent" || sleep 1
12358 if $test -s ccsym.own; then
12359 $test "$also" && echo " "
12360 echo "Your C compiler ${also}defines the following cpp symbols:"
12361 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12362 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12363 ccsymbols=`$cat ccsym.own`
12364 ccsymbols=`echo $ccsymbols`
12365 $test "$silent" || sleep 1
12370 : see if this is a termio system
12374 if $test `./findhdr termios.h`; then
12375 set tcsetattr i_termios
12381 "$define") echo "You have POSIX termios.h... good!" >&4;;
12382 *) if ./Cppsym pyr; then
12383 case "`/bin/universe`" in
12384 ucb) if $test `./findhdr sgtty.h`; then
12386 echo "<sgtty.h> found." >&4
12388 echo "System is pyramid with BSD universe."
12389 echo "<sgtty.h> not found--you could have problems." >&4
12391 *) if $test `./findhdr termio.h`; then
12393 echo "<termio.h> found." >&4
12395 echo "System is pyramid with USG universe."
12396 echo "<termio.h> not found--you could have problems." >&4
12400 if $test `./findhdr termio.h`; then
12401 echo "<termio.h> found." >&4
12403 elif $test `./findhdr sgtty.h`; then
12404 echo "<sgtty.h> found." >&4
12407 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12410 if $test `./findhdr sgtty.h`; then
12411 echo "<sgtty.h> found." >&4
12413 elif $test `./findhdr termio.h`; then
12414 echo "<termio.h> found." >&4
12417 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12421 set i_termio; eval $setvar
12422 val=$val2; set i_sgtty; eval $setvar
12423 val=$val3; set i_termios; eval $setvar
12425 : see if this is a shadow.h system
12426 set shadow.h i_shadow
12429 : see if this is a socks.h system
12430 set socks.h i_socks
12433 : see if stdarg is available
12435 if $test `./findhdr stdarg.h`; then
12436 echo "<stdarg.h> found." >&4
12439 echo "<stdarg.h> NOT found." >&4
12443 : see if varags is available
12445 if $test `./findhdr varargs.h`; then
12446 echo "<varargs.h> found." >&4
12448 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12451 : set up the varargs testing programs
12452 $cat > varargs.c <<EOP
12454 #include <stdarg.h>
12457 #include <varargs.h>
12461 int f(char *p, ...)
12475 p = va_arg(ap, char *);
12480 $cat > varargs <<EOP
12482 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12491 : now check which varargs header should be included
12496 if `./varargs I_STDARG`; then
12498 elif `./varargs I_VARARGS`; then
12503 if `./varargs I_VARARGS`; then
12510 echo "I could not find the definition for va_dcl... You have problems..." >&4
12511 val="$undef"; set i_stdarg; eval $setvar
12512 val="$undef"; set i_varargs; eval $setvar
12517 case "$i_varhdr" in
12519 val="$define"; set i_stdarg; eval $setvar
12520 val="$undef"; set i_varargs; eval $setvar
12523 val="$undef"; set i_stdarg; eval $setvar
12524 val="$define"; set i_varargs; eval $setvar
12527 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12531 : see if stddef is available
12532 set stddef.h i_stddef
12535 : see if sys/access.h is available
12536 set sys/access.h i_sysaccess
12539 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12540 set sys/filio.h i_sysfilio
12543 if $test `./findhdr sys/ioctl.h`; then
12545 echo '<sys/ioctl.h> found.' >&4
12548 if $test $i_sysfilio = "$define"; then
12549 echo '<sys/ioctl.h> NOT found.' >&4
12551 $test $i_sgtty = "$define" && xxx="sgtty.h"
12552 $test $i_termio = "$define" && xxx="termio.h"
12553 $test $i_termios = "$define" && xxx="termios.h"
12554 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12560 : see if sys/resource.h has to be included
12561 set sys/resource.h i_sysresrc
12564 : see if sys/security.h is available
12565 set sys/security.h i_syssecrt
12568 : see if this is a sys/statvfs.h system
12569 set sys/statvfs.h i_sysstatvfs
12572 : see if this is a sys/un.h system
12573 set sys/un.h i_sysun
12576 : see if this is a syswait system
12577 set sys/wait.h i_syswait
12580 : see if this is an utime system
12581 set utime.h i_utime
12584 : see if this is a values.h system
12585 set values.h i_values
12588 : see if this is a vfork system
12591 set vfork.h i_vfork
12599 : see if gdbm.h is available
12604 : see if gdbm_open exists
12605 set gdbm_open d_gdbm_open
12607 case "$d_gdbm_open" in
12610 echo "We won't be including <gdbm.h>"
12620 echo "Looking for extensions..." >&4
12621 : If we are using the old config.sh, known_extensions may contain
12622 : old or inaccurate or duplicate values.
12623 known_extensions=''
12624 nonxs_extensions=''
12625 : We do not use find because it might not be available.
12626 : We do not just use MANIFEST because the user may have dropped
12627 : some additional extensions into the source tree and expect them
12630 : Function to recursively find available extensions, ignoring DynaLoader
12631 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
12635 DynaLoader|dynaload) ;;
12637 if $test -f $xxx/$xxx.xs; then
12638 known_extensions="$known_extensions $1$xxx";
12639 elif $test -f $xxx/Makefile.PL; then
12640 nonxs_extensions="$nonxs_extensions $1$xxx";
12642 if $test -d $xxx -a $# -lt 10; then
12645 eval $find_extensions;
12657 eval $find_extensions
12658 set X $nonxs_extensions
12660 nonxs_extensions="$*"
12661 set X $known_extensions
12663 known_extensions="$*"
12666 : Now see which are supported on this system.
12668 for xxx in $known_extensions ; do
12672 $define) avail_ext="$avail_ext $xxx" ;;
12675 GDBM_File|gdbm_fil)
12677 $define) avail_ext="$avail_ext $xxx" ;;
12680 NDBM_File|ndbm_fil)
12682 $define) avail_ext="$avail_ext $xxx" ;;
12685 ODBM_File|odbm_fil)
12686 case "${i_dbm}${i_rpcsvcdbm}" in
12687 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12691 case "$useposix" in
12692 true|define|y) avail_ext="$avail_ext $xxx" ;;
12696 case "$useopcode" in
12697 true|define|y) avail_ext="$avail_ext $xxx" ;;
12701 case "$d_socket" in
12702 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12706 case "$usethreads" in
12707 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12711 : XXX Do we need a useipcsysv variable here
12712 case "${d_msg}${d_sem}${d_shm}" in
12713 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12716 *) avail_ext="$avail_ext $xxx"
12725 : Now see which nonxs extensions are supported on this system.
12726 : For now assume all are.
12728 for xxx in $nonxs_extensions ; do
12730 *) nonxs_ext="$nonxs_ext $xxx"
12742 A number of extensions are supplied with $package. You may choose to
12743 compile these extensions for dynamic loading (the default), compile
12744 them into the $package executable (static loading), or not include
12745 them at all. Answer "none" to include no extensions.
12746 Note that DynaLoader is always built and need not be mentioned here.
12749 case "$dynamic_ext" in
12750 '') dflt="$avail_ext" ;;
12751 *) dflt="$dynamic_ext"
12752 # Perhaps we are reusing an old out-of-date config.sh.
12755 if test X"$dynamic_ext" != X"$avail_ext"; then
12757 NOTICE: Your previous config.sh list may be incorrect.
12758 The extensions now available to you are
12760 but the default list from your previous config.sh is
12772 rp="What extensions do you wish to load dynamically?"
12775 none) dynamic_ext=' ' ;;
12776 *) dynamic_ext="$ans" ;;
12779 case "$static_ext" in
12781 : Exclude those already listed in dynamic linking
12783 for xxx in $avail_ext; do
12784 case " $dynamic_ext " in
12786 *) dflt="$dflt $xxx" ;;
12793 *) dflt="$static_ext"
12800 rp="What extensions do you wish to load statically?"
12803 none) static_ext=' ' ;;
12804 *) static_ext="$ans" ;;
12809 A number of extensions are supplied with $package. Answer "none"
12810 to include no extensions.
12811 Note that DynaLoader is always built and need not be mentioned here.
12814 case "$static_ext" in
12815 '') dflt="$avail_ext" ;;
12816 *) dflt="$static_ext"
12817 # Perhaps we are reusing an old out-of-date config.sh.
12820 if test X"$static_ext" != X"$avail_ext"; then
12822 NOTICE: Your previous config.sh list may be incorrect.
12823 The extensions now available to you are
12825 but the default list from your previous config.sh is
12834 : Exclude those that are not xs extensions
12838 rp="What extensions do you wish to include?"
12841 none) static_ext=' ' ;;
12842 *) static_ext="$ans" ;;
12847 set X $dynamic_ext $static_ext $nonxs_ext
12851 : Remove build directory name from cppstdin so it can be used from
12852 : either the present location or the final installed location.
12854 : Get out of the UU directory to get correct path name.
12856 case "$cppstdin" in
12858 echo "Stripping down cppstdin path name"
12864 : end of configuration questions
12866 echo "End of configuration questions."
12869 : back to where it started
12870 if test -d ../UU; then
12874 : configuration may be patched via a 'config.over' file
12875 if $test -f config.over; then
12878 rp='I see a config.over file. Do you wish to load it?'
12881 n*) echo "OK, I'll ignore it.";;
12883 echo "Configuration override changes have been loaded."
12888 : in case they want portability, strip down executable paths
12889 case "$d_portable" in
12892 echo "Stripping down executable paths..." >&4
12893 for file in $loclist $trylist; do
12894 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12895 eval $file="\$file"
12901 : create config.sh file
12903 echo "Creating config.sh..." >&4
12904 $spitshell <<EOT >config.sh
12907 # This file was produced by running the Configure script. It holds all the
12908 # definitions figured out by Configure. Should you modify one of these values,
12909 # do not forget to propagate your changes by running "Configure -der". You may
12910 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12913 # Package name : $package
12914 # Source directory : $src
12915 # Configuration time: $cf_time
12916 # Configured by : $cf_by
12917 # Target system : $myuname
12927 Revision='$Revision'
12934 alignbytes='$alignbytes'
12935 ansi2knr='$ansi2knr'
12936 aphostname='$aphostname'
12937 apiversion='$apiversion'
12940 archlibexp='$archlibexp'
12941 archname64='$archname64'
12942 archname='$archname'
12943 archobjs='$archobjs'
12951 byteorder='$byteorder'
12953 castflags='$castflags'
12956 cccdlflags='$cccdlflags'
12957 ccdlflags='$ccdlflags'
12959 ccsymbols='$ccsymbols'
12961 cf_email='$cf_email'
12966 clocktype='$clocktype'
12968 compress='$compress'
12969 contains='$contains'
12973 cpp_stuff='$cpp_stuff'
12974 cppccsymbols='$cppccsymbols'
12975 cppflags='$cppflags'
12977 cppminus='$cppminus'
12979 cppstdin='$cppstdin'
12980 cppsymbols='$cppsymbols'
12981 crosscompile='$crosscompile'
12982 cryptlib='$cryptlib'
12984 d_Gconvert='$d_Gconvert'
12985 d_access='$d_access'
12986 d_accessx='$d_accessx'
12988 d_archlib='$d_archlib'
12989 d_attribut='$d_attribut'
12993 d_bsdgetpgrp='$d_bsdgetpgrp'
12994 d_bsdsetpgrp='$d_bsdsetpgrp'
12996 d_casti32='$d_casti32'
12997 d_castneg='$d_castneg'
12998 d_charvspr='$d_charvspr'
13000 d_chroot='$d_chroot'
13001 d_chsize='$d_chsize'
13002 d_closedir='$d_closedir'
13003 d_cmsghdr_s='$d_cmsghdr_s'
13007 d_cuserid='$d_cuserid'
13008 d_dbl_dig='$d_dbl_dig'
13009 d_dbmclose64='$d_dbmclose64'
13010 d_dbminit64='$d_dbminit64'
13011 d_delete64='$d_delete64'
13012 d_difftime='$d_difftime'
13013 d_dirent64_s='$d_dirent64_s'
13014 d_dirnamlen='$d_dirnamlen'
13015 d_dlerror='$d_dlerror'
13016 d_dlopen='$d_dlopen'
13017 d_dlsymun='$d_dlsymun'
13018 d_dosuid='$d_dosuid'
13019 d_drand48proto='$d_drand48proto'
13021 d_eaccess='$d_eaccess'
13022 d_endgrent='$d_endgrent'
13023 d_endhent='$d_endhent'
13024 d_endnent='$d_endnent'
13025 d_endpent='$d_endpent'
13026 d_endpwent='$d_endpwent'
13027 d_endsent='$d_endsent'
13028 d_endspent='$d_endspent'
13029 d_eofnblk='$d_eofnblk'
13030 d_eunice='$d_eunice'
13031 d_fchmod='$d_fchmod'
13032 d_fchown='$d_fchown'
13034 d_fd_macros='$d_fd_macros'
13035 d_fd_set='$d_fd_set'
13036 d_fds_bits='$d_fds_bits'
13037 d_fetch64='$d_fetch64'
13038 d_fgetpos64='$d_fgetpos64'
13039 d_fgetpos='$d_fgetpos'
13040 d_firstkey64='$d_firstkey64'
13041 d_flexfnam='$d_flexfnam'
13042 d_flock64_s='$d_flock64_s'
13044 d_fopen64='$d_fopen64'
13046 d_fpathconf='$d_fpathconf'
13047 d_freopen64='$d_freopen64'
13048 d_fseek64='$d_fseek64'
13049 d_fseeko64='$d_fseeko64'
13050 d_fseeko='$d_fseeko'
13051 d_fsetpos64='$d_fsetpos64'
13052 d_fsetpos='$d_fsetpos'
13053 d_fstat64='$d_fstat64'
13054 d_fstatfs='$d_fstatfs'
13055 d_fstatvfs='$d_fstatvfs'
13056 d_ftell64='$d_ftell64'
13057 d_ftello64='$d_ftello64'
13058 d_ftello='$d_ftello'
13060 d_ftruncate64='$d_ftruncate64'
13061 d_getgrent='$d_getgrent'
13062 d_getgrps='$d_getgrps'
13063 d_gethbyaddr='$d_gethbyaddr'
13064 d_gethbyname='$d_gethbyname'
13065 d_gethent='$d_gethent'
13066 d_gethname='$d_gethname'
13067 d_gethostprotos='$d_gethostprotos'
13068 d_getlogin='$d_getlogin'
13069 d_getmntent='$d_getmntent'
13070 d_getnbyaddr='$d_getnbyaddr'
13071 d_getnbyname='$d_getnbyname'
13072 d_getnent='$d_getnent'
13073 d_getnetprotos='$d_getnetprotos'
13074 d_getpbyname='$d_getpbyname'
13075 d_getpbynumber='$d_getpbynumber'
13076 d_getpent='$d_getpent'
13077 d_getpgid='$d_getpgid'
13078 d_getpgrp2='$d_getpgrp2'
13079 d_getpgrp='$d_getpgrp'
13080 d_getppid='$d_getppid'
13081 d_getprior='$d_getprior'
13082 d_getprotoprotos='$d_getprotoprotos'
13083 d_getpwent='$d_getpwent'
13084 d_getsbyname='$d_getsbyname'
13085 d_getsbyport='$d_getsbyport'
13086 d_getsent='$d_getsent'
13087 d_getservprotos='$d_getservprotos'
13088 d_getspent='$d_getspent'
13089 d_getspnam='$d_getspnam'
13090 d_gettimeod='$d_gettimeod'
13091 d_gnulibc='$d_gnulibc'
13092 d_grpasswd='$d_grpasswd'
13093 d_hasmntopt='$d_hasmntopt'
13096 d_inetaton='$d_inetaton'
13097 d_ino64_t='$d_ino64_t'
13098 d_int64t='$d_int64t'
13099 d_iovec_s='$d_iovec_s'
13100 d_isascii='$d_isascii'
13101 d_killpg='$d_killpg'
13102 d_lchown='$d_lchown'
13104 d_llseek='$d_llseek'
13105 d_locconv='$d_locconv'
13106 d_lockf64='$d_lockf64'
13108 d_longdbl='$d_longdbl'
13109 d_longlong='$d_longlong'
13110 d_lseek64='$d_lseek64'
13111 d_lstat64='$d_lstat64'
13113 d_madvise='$d_madvise'
13115 d_mbstowcs='$d_mbstowcs'
13116 d_mbtowc='$d_mbtowc'
13117 d_memchr='$d_memchr'
13118 d_memcmp='$d_memcmp'
13119 d_memcpy='$d_memcpy'
13120 d_memmove='$d_memmove'
13121 d_memset='$d_memset'
13123 d_mkfifo='$d_mkfifo'
13124 d_mktime='$d_mktime'
13126 d_mprotect='$d_mprotect'
13128 d_msg_ctrunc='$d_msg_ctrunc'
13129 d_msg_dontroute='$d_msg_dontroute'
13130 d_msg_oob='$d_msg_oob'
13131 d_msg_peek='$d_msg_peek'
13132 d_msg_proxy='$d_msg_proxy'
13133 d_msgctl='$d_msgctl'
13134 d_msgget='$d_msgget'
13135 d_msghdr_s='$d_msghdr_s'
13136 d_msgrcv='$d_msgrcv'
13137 d_msgsnd='$d_msgsnd'
13139 d_munmap='$d_munmap'
13140 d_mymalloc='$d_mymalloc'
13141 d_nextkey64='$d_nextkey64'
13143 d_off64_t='$d_off64_t'
13144 d_offset_t='$d_offset_t'
13145 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13146 d_oldpthreads='$d_oldpthreads'
13147 d_oldsock='$d_oldsock'
13149 d_open64='$d_open64'
13150 d_opendir64='$d_opendir64'
13151 d_pathconf='$d_pathconf'
13153 d_phostname='$d_phostname'
13156 d_portable='$d_portable'
13157 d_pthread_yield='$d_pthread_yield'
13159 d_pwchange='$d_pwchange'
13160 d_pwclass='$d_pwclass'
13161 d_pwcomment='$d_pwcomment'
13162 d_pwexpire='$d_pwexpire'
13163 d_pwgecos='$d_pwgecos'
13164 d_pwpasswd='$d_pwpasswd'
13165 d_pwquota='$d_pwquota'
13166 d_readdir64='$d_readdir64'
13167 d_readdir='$d_readdir'
13168 d_readlink='$d_readlink'
13170 d_recvmsg='$d_recvmsg'
13171 d_rename='$d_rename'
13172 d_rewinddir='$d_rewinddir'
13174 d_safebcpy='$d_safebcpy'
13175 d_safemcpy='$d_safemcpy'
13176 d_sanemcmp='$d_sanemcmp'
13177 d_sched_yield='$d_sched_yield'
13178 d_scm_rights='$d_scm_rights'
13179 d_seekdir64='$d_seekdir64'
13180 d_seekdir='$d_seekdir'
13181 d_select='$d_select'
13183 d_semctl='$d_semctl'
13184 d_semctl_semid_ds='$d_semctl_semid_ds'
13185 d_semctl_semun='$d_semctl_semun'
13186 d_semget='$d_semget'
13188 d_sendmsg='$d_sendmsg'
13189 d_setegid='$d_setegid'
13190 d_seteuid='$d_seteuid'
13191 d_setgrent='$d_setgrent'
13192 d_setgrps='$d_setgrps'
13193 d_sethent='$d_sethent'
13194 d_setlinebuf='$d_setlinebuf'
13195 d_setlocale='$d_setlocale'
13196 d_setnent='$d_setnent'
13197 d_setpent='$d_setpent'
13198 d_setpgid='$d_setpgid'
13199 d_setpgrp2='$d_setpgrp2'
13200 d_setpgrp='$d_setpgrp'
13201 d_setprior='$d_setprior'
13202 d_setpwent='$d_setpwent'
13203 d_setregid='$d_setregid'
13204 d_setresgid='$d_setresgid'
13205 d_setresuid='$d_setresuid'
13206 d_setreuid='$d_setreuid'
13207 d_setrgid='$d_setrgid'
13208 d_setruid='$d_setruid'
13209 d_setsent='$d_setsent'
13210 d_setsid='$d_setsid'
13211 d_setspent='$d_setspent'
13212 d_setvbuf='$d_setvbuf'
13216 d_shmatprototype='$d_shmatprototype'
13217 d_shmctl='$d_shmctl'
13219 d_shmget='$d_shmget'
13220 d_sigaction='$d_sigaction'
13221 d_sigsetjmp='$d_sigsetjmp'
13222 d_socket='$d_socket'
13223 d_sockpair='$d_sockpair'
13224 d_stat64='$d_stat64'
13225 d_statblks='$d_statblks'
13226 d_statfs='$d_statfs'
13227 d_statfsflags='$d_statfsflags'
13228 d_statvfs='$d_statvfs'
13229 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13230 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13231 d_stdio_stream_array='$d_stdio_stream_array'
13232 d_stdiobase='$d_stdiobase'
13233 d_stdstdio='$d_stdstdio'
13234 d_store64='$d_store64'
13235 d_strchr='$d_strchr'
13236 d_strcoll='$d_strcoll'
13237 d_strctcpy='$d_strctcpy'
13238 d_strerrm='$d_strerrm'
13239 d_strerror='$d_strerror'
13240 d_strtod='$d_strtod'
13241 d_strtol='$d_strtol'
13242 d_strtoul='$d_strtoul'
13243 d_strxfrm='$d_strxfrm'
13244 d_suidsafe='$d_suidsafe'
13245 d_symlink='$d_symlink'
13246 d_syscall='$d_syscall'
13247 d_sysconf='$d_sysconf'
13248 d_sysernlst='$d_sysernlst'
13249 d_syserrlst='$d_syserrlst'
13250 d_system='$d_system'
13251 d_tcgetpgrp='$d_tcgetpgrp'
13252 d_tcsetpgrp='$d_tcsetpgrp'
13253 d_telldir64='$d_telldir64'
13254 d_telldir='$d_telldir'
13255 d_telldirproto='$d_telldirproto'
13258 d_tmpfile64='$d_tmpfile64'
13259 d_truncate64='$d_truncate64'
13260 d_truncate='$d_truncate'
13261 d_tzname='$d_tzname'
13264 d_union_semun='$d_union_semun'
13266 d_void_closedir='$d_void_closedir'
13267 d_voidsig='$d_voidsig'
13268 d_voidtty='$d_voidtty'
13269 d_volatile='$d_volatile'
13270 d_vprintf='$d_vprintf'
13272 d_waitpid='$d_waitpid'
13273 d_wcstombs='$d_wcstombs'
13274 d_wctomb='$d_wctomb'
13275 d_writev='$d_writev'
13278 db_hashtype='$db_hashtype'
13279 db_prefixtype='$db_prefixtype'
13280 defvoidused='$defvoidused'
13281 direntrytype='$direntrytype'
13284 doublesize='$doublesize'
13286 dynamic_ext='$dynamic_ext'
13292 eunicefix='$eunicefix'
13295 extensions='$extensions'
13296 fflushNULL='$fflushNULL'
13297 fflushall='$fflushall'
13299 firstmakefile='$firstmakefile'
13301 fpostype='$fpostype'
13302 freetype='$freetype'
13304 full_csh='$full_csh'
13305 full_sed='$full_sed'
13306 gccversion='$gccversion'
13310 groupcat='$groupcat'
13311 groupstype='$groupstype'
13314 h_sysfile='$h_sysfile'
13318 i_arpainet='$i_arpainet'
13319 i_bsdioctl='$i_bsdioctl'
13322 i_dirent='$i_dirent'
13329 i_inttypes='$i_inttypes'
13330 i_limits='$i_limits'
13331 i_locale='$i_locale'
13332 i_machcthr='$i_machcthr'
13333 i_malloc='$i_malloc'
13335 i_memory='$i_memory'
13336 i_mntent='$i_mntent'
13339 i_neterrno='$i_neterrno'
13340 i_netinettcp='$i_netinettcp'
13343 i_pthread='$i_pthread'
13345 i_rpcsvcdbm='$i_rpcsvcdbm'
13348 i_shadow='$i_shadow'
13350 i_stdarg='$i_stdarg'
13351 i_stddef='$i_stddef'
13352 i_stdlib='$i_stdlib'
13353 i_string='$i_string'
13354 i_sysaccess='$i_sysaccess'
13355 i_sysdir='$i_sysdir'
13356 i_sysfile='$i_sysfile'
13357 i_sysfilio='$i_sysfilio'
13359 i_sysioctl='$i_sysioctl'
13360 i_sysmman='$i_sysmman'
13361 i_sysmount='$i_sysmount'
13362 i_sysndir='$i_sysndir'
13363 i_sysparam='$i_sysparam'
13364 i_sysresrc='$i_sysresrc'
13365 i_syssecrt='$i_syssecrt'
13366 i_sysselct='$i_sysselct'
13367 i_syssockio='$i_syssockio'
13368 i_sysstat='$i_sysstat'
13369 i_sysstatvfs='$i_sysstatvfs'
13370 i_systime='$i_systime'
13371 i_systimek='$i_systimek'
13372 i_systimes='$i_systimes'
13373 i_systypes='$i_systypes'
13374 i_sysuio='$i_sysuio'
13376 i_syswait='$i_syswait'
13377 i_termio='$i_termio'
13378 i_termios='$i_termios'
13380 i_unistd='$i_unistd'
13382 i_values='$i_values'
13383 i_varargs='$i_varargs'
13384 i_varhdr='$i_varhdr'
13386 ignore_versioned_solibs='$ignore_versioned_solibs'
13389 installarchlib='$installarchlib'
13390 installbin='$installbin'
13391 installman1dir='$installman1dir'
13392 installman3dir='$installman3dir'
13393 installprefix='$installprefix'
13394 installprefixexp='$installprefixexp'
13395 installprivlib='$installprivlib'
13396 installscript='$installscript'
13397 installsitearch='$installsitearch'
13398 installsitelib='$installsitelib'
13399 installstyle='$installstyle'
13400 installusrbinperl='$installusrbinperl'
13402 known_extensions='$known_extensions'
13406 lddlflags='$lddlflags'
13408 ldlibpthname='$ldlibpthname'
13415 libswanted='$libswanted'
13421 locincpth='$locincpth'
13422 loclibpth='$loclibpth'
13423 longdblsize='$longdblsize'
13424 longlongsize='$longlongsize'
13425 longsize='$longsize'
13429 lseeksize='$lseeksize'
13430 lseektype='$lseektype'
13434 make_set_make='$make_set_make'
13435 mallocobj='$mallocobj'
13436 mallocsrc='$mallocsrc'
13437 malloctype='$malloctype'
13439 man1direxp='$man1direxp'
13442 man3direxp='$man3direxp'
13446 mips_type='$mips_type'
13448 mmaptype='$mmaptype'
13450 modetype='$modetype'
13452 multiarch='$multiarch'
13454 myarchname='$myarchname'
13455 mydomain='$mydomain'
13456 myhostname='$myhostname'
13459 netdb_hlen_type='$netdb_hlen_type'
13460 netdb_host_type='$netdb_host_type'
13461 netdb_name_type='$netdb_name_type'
13462 netdb_net_type='$netdb_net_type'
13465 nm_so_opt='$nm_so_opt'
13466 nonxs_ext='$nonxs_ext'
13468 o_nonblock='$o_nonblock'
13470 old_pthread_create_joinable='$old_pthread_create_joinable'
13471 optimize='$optimize'
13472 orderlib='$orderlib'
13478 patchlevel='$patchlevel'
13479 path_sep='$path_sep'
13481 perladmin='$perladmin'
13482 perlpath='$perlpath'
13484 phostname='$phostname'
13490 prefixexp='$prefixexp'
13492 privlibexp='$privlibexp'
13493 prototype='$prototype'
13495 randbits='$randbits'
13496 randfunc='$randfunc'
13497 randseedtype='$randseedtype'
13499 rd_nodata='$rd_nodata'
13503 sched_yield='$sched_yield'
13504 scriptdir='$scriptdir'
13505 scriptdirexp='$scriptdirexp'
13507 seedfunc='$seedfunc'
13508 selectminbits='$selectminbits'
13509 selecttype='$selecttype'
13510 sendmail='$sendmail'
13513 sharpbang='$sharpbang'
13514 shmattype='$shmattype'
13515 shortsize='$shortsize'
13518 sig_count='$sig_count'
13519 sig_name='$sig_name'
13520 sig_name_init='$sig_name_init'
13522 sig_num_init='$sig_num_init'
13523 signal_t='$signal_t'
13524 sitearch='$sitearch'
13525 sitearchexp='$sitearchexp'
13527 sitelibexp='$sitelibexp'
13528 siteprefix='$siteprefix'
13529 siteprefixexp='$siteprefixexp'
13530 sizetype='$sizetype'
13535 sockethdr='$sockethdr'
13536 socketlib='$socketlib'
13538 spackage='$spackage'
13539 spitshell='$spitshell'
13542 ssizetype='$ssizetype'
13543 startperl='$startperl'
13545 static_ext='$static_ext'
13547 stdio_base='$stdio_base'
13548 stdio_bufsiz='$stdio_bufsiz'
13549 stdio_cnt='$stdio_cnt'
13550 stdio_filbuf='$stdio_filbuf'
13551 stdio_ptr='$stdio_ptr'
13552 stdio_stream_array='$stdio_stream_array'
13555 subversion='$subversion'
13562 timeincl='$timeincl'
13563 timetype='$timetype'
13571 use64bits='$use64bits'
13573 usemultiplicity='$usemultiplicity'
13574 usemymalloc='$usemymalloc'
13576 useopcode='$useopcode'
13577 useperlio='$useperlio'
13578 useposix='$useposix'
13580 useshrplib='$useshrplib'
13581 usesocks='$usesocks'
13582 usethreads='$usethreads'
13583 usevfork='$usevfork'
13588 voidflags='$voidflags'
13594 : Add in command line options if available
13595 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13597 : add special variables
13598 $test -f $src/patchlevel.h && \
13599 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13600 echo "CONFIGDOTSH=true" >>config.sh
13602 : propagate old symbols
13603 if $test -f UU/config.sh; then
13604 <UU/config.sh sort | uniq >UU/oldconfig.sh
13605 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13606 sort | uniq -u >UU/oldsyms
13607 set X `cat UU/oldsyms`
13613 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13615 echo "# Variables propagated from previous config.sh file." >>config.sh
13616 for sym in `cat UU/oldsyms`; do
13617 echo " Propagating $hint variable "'$'"$sym..."
13618 eval 'tmp="$'"${sym}"'"'
13620 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13626 : Finish up by extracting the .SH files
13640 If you'd like to make any changes to the config.sh file before I begin
13641 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13644 rp="Press return or use a shell escape to edit config.sh:"
13649 *) : in case they cannot read
13650 sh 1>&4 -c "$ans";;
13655 : if this fails, just run all the .SH files by hand
13662 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13669 Now you need to generate make dependencies by running "$make depend".
13670 You might prefer to run it in background: "$make depend > makedepend.out &"
13671 It can take a while, so you might not want to run it right now.
13676 rp="Run $make depend now?"
13680 $make depend && echo "Now you must run a $make."
13683 echo "You must run '$make depend' then '$make'."
13686 elif test -f [Mm]akefile; then
13688 echo "Now you must run a $make."
13693 if $test -f Policy.sh; then
13696 If you compile $package on a different machine or from a different object
13697 directory, copy the Policy.sh file from this object directory to the
13698 new one before you run Configure -- this will help you with most of
13699 the policy defaults.
13703 if $test -f config.msg; then
13704 echo "Hmm. I also noted the following information while running:"
13706 $cat config.msg >&4
13709 $rm -f kit*isdone ark*isdone