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 Mon Jul 5 22:55:23 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=''
704 ignore_versioned_solibs=''
808 d_stdio_stream_array=''
809 stdio_stream_array=''
834 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
837 : We must find out about Eunice early
839 if test -f /etc/unixtovms; then
840 eunicefix=/etc/unixtovms
842 if test -f /etc/unixtovms.exe; then
843 eunicefix=/etc/unixtovms.exe
847 : Possible local include directories to search.
848 : Set locincpth to "" in a hint file to defeat local include searches.
849 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
850 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
852 : no include file wanted by default
855 : list of known cpp symbols, sorted alphabetically
856 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
857 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
858 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
859 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
860 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
861 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
862 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
863 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
864 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
865 al="$al VMS Xenix286"
866 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
867 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
868 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
869 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
870 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
871 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
872 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
873 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
874 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
875 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
876 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
877 al="$al __SVR4_2__ __UMAXV__"
878 al="$al ____386BSD____ __alpha __alpha__ __amiga"
879 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
880 al="$al __host_mips__"
881 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
882 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
883 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
884 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
885 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
886 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
887 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
888 al="$al __mc88100 __mc88100__ __mips __mips__"
889 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
890 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
891 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
892 al="$al _host_mips _mips _unix"
893 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
894 al="$al apollo ardent att386 att3b"
895 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
896 al="$al cadmus clipper concurrent convex cray ctix"
897 al="$al dmert encore gcos gcx gimpel gould"
898 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
899 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
900 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
901 al="$al i186 i286 i386 i486 i8086"
902 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
903 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
904 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
905 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
906 al="$al mc88000 mc88100 merlin mert mips mvs n16"
907 al="$al ncl_el ncl_mr"
908 al="$al news1500 news1700 news1800 news1900 news3700"
909 al="$al news700 news800 news900 ns16000 ns32000"
910 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
911 al="$al parisc pc532 pdp11 plexus posix pyr"
912 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
913 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
914 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
915 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
916 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
917 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
920 : Trailing extension. Override this in a hint file, if needed.
922 : Extra object files, if any, needed on this platform.
925 : change the next line if compiling for Xenix/286 on Xenix/386
926 xlibpth='/usr/lib/386 /lib/386'
928 : Possible local library directories to search.
929 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
930 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
932 : general looking path for locating libraries
933 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
934 glibpth="$glibpth /lib /usr/lib $xlibpth"
935 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
936 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
938 : Private path used by Configure to find libraries. Its value
939 : is prepended to libpth. This variable takes care of special
940 : machines, like the mips. Usually, it should be empty.
943 : default library list
945 : some systems want to use only the non-versioned libso:s
946 ignore_versioned_solibs=''
947 : full support for void wanted by default
950 : set useposix=false in your hint file to disable the POSIX extension.
952 : set useopcode=false in your hint file to disable the Opcode extension.
954 : set usemultiplicity on the Configure command line to enable multiplicity.
955 : set usesocks on the Configure command line to enable socks.
956 : set usethreads on the Configure command line to enable threads.
957 : List of libraries we want.
958 : If anyone needs -lnet, put it in a hint file.
959 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
960 libswanted="$libswanted dld ld sun m rt c cposix posix"
961 libswanted="$libswanted ndir dir crypt sec"
962 libswanted="$libswanted ucb bsd BSD PW x"
963 : We probably want to search /usr/shlib before most other libraries.
964 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
965 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
966 glibpth="/usr/shlib $glibpth"
967 : Do not use vfork unless overridden by a hint file.
970 : Find the basic shell for Bourne shell scripts
974 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
977 if test -f "$xxx"; then
980 : Build up a list and do a single loop so we can 'break' out.
981 pth=`echo $PATH | sed -e "s/$p_/ /g"`
982 for xxx in sh bash ksh pdksh ash; do
984 try="$try ${p}/${xxx}"
988 if test -f "$xxx"; then
991 elif test -f "$xxx.exe"; then
1002 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1004 Usually it's in /bin/sh. How did you even get this far?
1005 Please contact me (Perl Maintainers) at perlbug@perl.com and
1006 we'll try to straighten this all out.
1012 : see if sh knows # comments
1013 if `$sh -c '#' >/dev/null 2>&1`; then
1017 test -f $xcat || xcat=/usr/bin/cat
1022 if test -s today; then
1025 echo "#! $xcat" > try
1029 if test -s today; then
1037 echo "Your $sh doesn't grok # comments--I will strip them later on."
1040 echo "exec grep -v '^[ ]*#'" >spitshell
1042 $eunicefix spitshell
1043 spitshell=`pwd`/spitshell
1045 echo "I presume that if # doesn't work, #! won't work either!"
1050 : figure out how to guarantee sh startup
1052 '') startsh=${sharpbang}${sh} ;;
1064 : echo "Yup, it does."
1066 echo "Hmm... '$startsh' does not guarantee sh startup..."
1067 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1072 : Save command line options in file UU/cmdline.opt for later use in
1073 : generating config.sh.
1074 cat > cmdline.opt <<EOSH
1075 # Configure command line arguments.
1082 cat >>cmdline.opt <<EOSH
1083 config_arg$argn='$arg'
1085 argn=`expr $argn + 1`
1088 : produce awk script to parse command line options
1089 cat >options.awk <<'EOF'
1091 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1093 len = length(optstr);
1094 for (i = 1; i <= len; i++) {
1095 c = substr(optstr, i, 1);
1096 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1107 if (substr(str, 1, 1) != "-") {
1108 printf("'%s'\n", str);
1112 for (i = 2; i <= len; i++) {
1113 c = substr(str, i, 1);
1115 printf("-%s\n", substr(str, i));
1121 printf("'%s'\n", substr(str, i + 1));
1134 : process the command line options
1135 set X `for arg in "$@"; do echo "X$arg"; done |
1136 sed -e s/X// | awk -f options.awk`
1141 : set up default values
1152 cat >optdef.sh <<EOS
1158 while test $# -gt 0; do
1160 -d) shift; fastread=yes;;
1161 -e) shift; alldone=cont;;
1165 if test -r "$1"; then
1168 echo "$me: cannot read config file $1." >&2
1173 -h) shift; error=true;;
1174 -r) shift; reuseval=true;;
1175 -s) shift; silent=true; realsilent=true;;
1176 -E) shift; alldone=exit;;
1177 -K) shift; knowitall=true;;
1178 -O) shift; override=true;;
1179 -S) shift; silent=true; extractsh=true;;
1184 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1185 echo "$me: ignoring -D $1" >&2
1188 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1189 *) echo "$1='define'" >> optdef.sh;;
1196 *=) echo "$1" >> optdef.sh;;
1198 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1199 echo "$me: ignoring -U $1" >&2
1201 *) echo "$1='undef'" >> optdef.sh;;
1205 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1208 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1216 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1217 [-U symbol] [-U symbol=]
1218 -d : use defaults for all answers.
1219 -e : go on without questioning past the production of config.sh.
1220 -f : specify an alternate default configuration file.
1221 -h : print this help message and exit (with an error status).
1222 -r : reuse C symbols value if possible (skips costly nm extraction).
1223 -s : silent mode, only echoes questions and essential information.
1224 -D : define symbol to have some value:
1225 -D symbol symbol gets the value 'define'
1226 -D symbol=value symbol gets the value 'value'
1227 -E : stop at the end of questions, after having produced config.sh.
1228 -K : do not use unless you know what you are doing.
1229 -O : let -D and -U override definitions from loaded configuration file.
1230 -S : perform variable substitutions on all .SH files (can mix with -f)
1231 -U : undefine symbol:
1232 -U symbol symbol gets the value 'undef'
1233 -U symbol= symbol gets completely empty
1234 -V : print version number and exit (with a zero status).
1241 case "$fastread$alldone" in
1244 if test ! -t 0; then
1245 echo "Say 'sh Configure', not 'sh <Configure'"
1253 true) exec 1>/dev/null;;
1256 : run the defines and the undefines, if any, but leave the file out there...
1262 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1263 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1264 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1265 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1266 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1269 : Some greps do not return status, grrr.
1270 echo "grimblepritz" >grimble
1271 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1273 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1279 : the following should work in any shell
1283 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1284 cat >contains <<'EOSS'
1285 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1290 : Find the path to the source tree
1293 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1304 if test -f $rsrc/Configure && \
1305 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1307 : found it, so we are ok.
1310 for src in . .. ../.. ../../.. ../../../..; do
1311 if test -f ../$src/Configure && \
1312 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1323 Sorry, I can't seem to locate the source dir for $package. Please start
1324 Configure with an explicit path -- i.e. /some/path/Configure.
1332 echo "Sources for $package found in \"$src\"." >&4
1336 : script used to extract .SH files with variable substitutions
1337 cat >extract <<'EOS'
1339 echo "Doing variable substitutions on .SH files..."
1340 if test -f $src/MANIFEST; then
1341 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1343 echo "(Looking for .SH files under the source directory.)"
1344 set x `(cd $src; find . -name "*.SH" -print)`
1348 0) set x `(cd $src; echo *.SH)`; shift;;
1350 if test ! -f $src/$1; then
1356 while test $name; do
1357 if test ! -d "$name"; then
1358 create="$name $create";
1359 name=`echo $name | sed -e "s|^[^/]*$||"`;
1360 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1365 for file in $create; do
1374 dir=`expr X$file : 'X\(.*\)/'`
1375 file=`expr X$file : 'X.*/\(.*\)'`
1376 (cd $dir && . ./$file)
1386 dir=`expr X$file : 'X\(.*\)/'`
1387 file=`expr X$file : 'X.*/\(.*\)'`
1388 (set x $dir; shift; eval $mkdir_p)
1398 if test -f $src/config_h.SH; then
1399 if test ! -f config.h; then
1400 : oops, they left it out of MANIFEST, probably, so do it anyway.
1406 : extract files and exit if asked to do so
1407 case "$extractsh" in
1409 case "$realsilent" in
1413 case "$config_sh" in
1414 '') config_sh='config.sh';;
1417 echo "Fetching answers from $config_sh..."
1420 test "$override" && . ./optdef.sh
1429 : Eunice requires " " instead of "", can you believe it
1432 echo "Beginning of configuration questions for $package."
1434 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1436 : first determine how to suppress newline on echo command
1438 echo "Checking echo to see how to suppress newlines..."
1439 (echo "hi there\c" ; echo " ") >.echotmp
1440 if $contains c .echotmp >/dev/null 2>&1 ; then
1451 echo $n "The star should be here-->$c"
1455 : Now test for existence of everything in MANIFEST
1457 if test -f $rsrc/MANIFEST; then
1458 echo "First let's make sure your kit is complete. Checking..." >&4
1459 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1462 for filelist in x??; do
1463 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1465 if test -s missing; then
1469 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1471 You have the option of continuing the configuration process, despite the
1472 distinct possibility that your kit is damaged, by typing 'y'es. If you
1473 do, don't blame me if something goes wrong. I advise you to type 'n'o
1474 and contact the author (perlbug@perl.com).
1477 echo $n "Continue? [n] $c" >&4
1481 echo "Continuing..." >&4
1485 echo "ABORTING..." >&4
1490 echo "Looks good..."
1493 echo "There is no MANIFEST file. I hope your kit is complete !"
1498 : Find the appropriate value for a newline for tr
1499 if test -n "$DJGPP"; then
1502 if test X"$trnl" = X; then
1503 case "`echo foo|tr '\n' x 2>/dev/null`" in
1507 if test X"$trnl" = X; then
1508 case "`echo foo|tr '\012' x 2>/dev/null`" in
1509 foox) trnl='\012' ;;
1512 if test X"$trnl" = X; then
1515 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1521 : compute the number of columns on the terminal for proper question formatting
1526 : set up the echo used in my read
1527 myecho="case \"\$xxxm\" in
1528 '') echo $n \"\$rp $c\" >&4;;
1530 '') echo $n \"[\$xxxm] $c\";;
1532 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1534 echo $n \"[\$xxxm] $c\" >&4
1536 echo $n \"\$rp [\$xxxm] $c\" >&4
1542 : now set up to do reads with possible shell escape and default assignment
1548 case "\$fastread" in
1549 yes) case "\$dflt" in
1552 case "\$silent-\$rp" in
1557 *) case "\$silent" in
1558 true) case "\$rp" in
1563 while expr "X\$ans" : "X!" >/dev/null; do
1567 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1575 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1584 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1589 echo "(OK, I'll run with -d after this question.)" >&4
1592 echo "*** Sorry, \$1 not supported yet." >&4
1602 echo "*** Substitution done -- please confirm."
1604 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1609 echo "*** Error -- try again."
1616 case "\$ans\$xxxm\$nostick" in
1628 : create .config dir to save info across Configure sessions
1629 test -d ../.config || mkdir ../.config
1630 cat >../.config/README <<EOF
1631 This directory created by Configure to save information that should
1632 persist across sessions for $package.
1634 You may safely delete it if you wish.
1637 : general instructions
1640 user=`(logname) 2>/dev/null`
1642 '') user=`whoami 2>&1`;;
1644 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1647 rp='Would you like to see the instructions?'
1658 This installation shell script will examine your system and ask you questions
1659 to determine how the perl5 package should be installed. If you get
1660 stuck on a question, you may use a ! shell escape to start a subshell or
1661 execute a command. Many of the questions will have default answers in square
1662 brackets; typing carriage return will give you the default.
1664 On some of the questions which ask for file or directory names you are allowed
1665 to use the ~name construct to specify the login directory belonging to "name",
1666 even if you don't have a shell which knows about that. Questions where this is
1667 allowed will be marked "(~name ok)".
1671 dflt='Type carriage return to continue'
1675 The prompter used in this script allows you to use shell variables and
1676 backticks in your answers. You may use $1, $2, etc... to refer to the words
1677 in the default answer, as if the default line was a set of arguments given to a
1678 script shell. This means you may also use $* to repeat the whole default line,
1679 so you do not have to re-type everything to add something to the default.
1681 Everytime there is a substitution, you will have to confirm. If there is an
1682 error (e.g. an unmatched backtick), the default answer will remain unchanged
1683 and you will be prompted again.
1685 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1686 the questions and use the computed defaults (or the previous answers if there
1687 was already a config.sh file). Type 'Configure -h' for a list of options.
1688 You may also start interactively and then answer '& -d' at any prompt to turn
1689 on the non-interactive behaviour for the remainder of the execution.
1695 Much effort has been expended to ensure that this shell script will run on any
1696 Unix system. If despite that it blows up on yours, your best bet is to edit
1697 Configure and run it again. If you can't run Configure for some reason,
1698 you'll have to generate a config.sh file by hand. Whatever problems you
1699 have, let me (perlbug@perl.com) know how I blew it.
1701 This installation script affects things in two ways:
1703 1) it may do direct variable substitutions on some of the files included
1705 2) it builds a config.h file for inclusion in C programs. You may edit
1706 any of these files as the need arises after running this script.
1708 If you make a mistake on a question, there is no easy way to back up to it
1709 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1710 files. Configure will offer to let you do this before it runs the SH files.
1713 dflt='Type carriage return to continue'
1715 case "$firsttime" in
1716 true) echo $user >>../.config/instruct;;
1720 : find out where common programs are
1722 echo "Locating common programs..." >&4
1735 if test -d \$dir/\$thing; then
1741 for thisthing in \$dir/\$thing; do
1742 : just loop through to pick last item
1744 if test -f \$thisthing; then
1747 elif test -f \$dir/\$thing.exe; then
1748 if test -n "$DJGPP"; then
1749 echo \$dir/\$thing.exe
1751 : on Eunice apparently
1801 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1802 pth="$pth /lib /usr/lib"
1803 for file in $loclist; do
1807 if test -f "$xxx"; then
1810 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1811 xxx=`./loc $file $file $pth`
1814 '') xxx=`./loc $file $file $pth`;;
1815 *) xxx=`./loc $xxx $xxx $pth`;;
1821 echo $file is in $xxx.
1824 echo $file is in $xxx.
1827 echo "I don't know where '$file' is, and my life depends on it." >&4
1828 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1834 echo "Don't worry if any of the following aren't found..."
1836 for file in $trylist; do
1840 if test -f "$xxx"; then
1843 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1844 xxx=`./loc $file $file $pth`
1847 '') xxx=`./loc $file $file $pth`;;
1848 *) xxx=`./loc $xxx $xxx $pth`;;
1854 echo $file is in $xxx.
1857 echo $file is in $xxx.
1860 echo "I don't see $file out there, $say."
1867 echo "Substituting grep for egrep."
1873 echo "Substituting cp for ln."
1879 echo "Hopefully test is built into your sh."
1882 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1883 echo "Using the test built into your sh."
1891 echo "Hopefully echo is built into your sh."
1896 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1897 $echo $n "hi there$c" >foo1
1898 echo $n "hi there$c" >foo2
1899 if cmp foo1 foo2 >/dev/null 2>&1; then
1900 echo "They are compatible. In fact, they may be identical."
1907 They are not compatible! You are probably running ksh on a non-USG system.
1908 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1909 have echo built in and we may have to run some Bourne shell scripts. That
1910 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1913 $echo $n "The star should be here-->$c"
1920 : determine whether symbolic links are supported
1923 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1924 echo "Symbolic links are supported." >&4
1927 echo "Symbolic links are NOT supported." >&4
1932 : see whether [:lower:] and [:upper:] are supported character classes
1934 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1936 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1940 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1941 # (0xc9 and 0xd1), therefore that is a nice testing point.
1942 if test "X$up" = X -o "X$low" = X; then
1943 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1949 if test "X$up" = X -o "X$low" = X; then
1950 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1956 if test "X$up" = X -o "X$low" = X; then
1957 case "`echo IJ | od -x 2>/dev/null`" in
1959 echo "Hey, this might be EBCDIC." >&4
1960 if test "X$up" = X -o "X$low" = X; then
1961 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1962 ij) up='[A-IJ-RS-Z]'
1967 if test "X$up" = X -o "X$low" = X; then
1968 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1978 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1980 echo "Using $up and $low to convert case." >&4
1983 echo "I don't know how to translate letters from upper to lower case." >&4
1984 echo "Your tr is not acting any way I know of." >&4
1988 : set up the translation script tr, must be called with ./tr of course
1992 '[A-Z][a-z]') exec $tr '$up' '$low';;
1993 '[a-z][A-Z]') exec $tr '$low' '$up';;
2000 : Try to determine whether config.sh was made on this system
2001 case "$config_sh" in
2003 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2004 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2005 # because the A-Z/a-z are not consecutive.
2006 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2007 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2008 newmyuname="$myuname"
2010 case "$knowitall" in
2012 if test -f ../config.sh; then
2013 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2014 eval "`grep myuname= ../config.sh`"
2016 if test "X$myuname" = "X$newmyuname"; then
2024 : Get old answers from old config file if Configure was run on the
2025 : same system, otherwise use the hints.
2028 if test -f config.sh; then
2030 rp="I see a config.sh file. Shall I use it to set the defaults?"
2033 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2034 *) echo "Fetching default answers from your old config.sh file..." >&4
2042 : Older versions did not always set $sh. Catch re-use of such
2051 if test ! -f config.sh; then
2054 First time through, eh? I have some defaults handy for some systems
2055 that need some extra help getting the Configure answers right:
2058 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2060 : Half the following guesses are probably wrong... If you have better
2061 : tests or hints, please send them to perlbug@perl.com
2062 : The metaconfig authors would also appreciate a copy...
2063 $test -f /irix && osname=irix
2064 $test -f /xenix && osname=sco_xenix
2065 $test -f /dynix && osname=dynix
2066 $test -f /dnix && osname=dnix
2067 $test -f /lynx.os && osname=lynxos
2068 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2069 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2070 $test -f /bin/mips && /bin/mips && osname=mips
2071 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2072 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2073 $test -d /usr/apollo/bin && osname=apollo
2074 $test -f /etc/saf/_sactab && osname=svr4
2075 $test -d /usr/include/minix && osname=minix
2076 if $test -d /MachTen -o -d /MachTen_Folder; then
2078 if $test -x /sbin/version; then
2079 osvers=`/sbin/version | $awk '{print $2}' |
2080 $sed -e 's/[A-Za-z]$//'`
2081 elif $test -x /usr/etc/version; then
2082 osvers=`/usr/etc/version | $awk '{print $2}' |
2083 $sed -e 's/[A-Za-z]$//'`
2088 $test -f /sys/posix.dll &&
2089 $test -f /usr/bin/what &&
2090 set X `/usr/bin/what /sys/posix.dll` &&
2091 $test "$3" = UWIN &&
2094 if $test -f $uname; then
2102 umips) osname=umips ;;
2105 [23]100) osname=mips ;;
2106 next*) osname=next ;;
2108 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2109 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2112 elif $test -f /etc/kconfig; then
2114 if test "$lns" = "$ln -s"; then
2116 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2118 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2125 if test -n "$DJGPP"; then
2134 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2136 'not found') osvers="$4"."$3" ;;
2137 '<3240'|'<>3240') osvers=3.2.0 ;;
2138 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2139 '=3250'|'>3250') osvers=3.2.5 ;;
2143 *dc.osx) osname=dcosx
2149 domainos) osname=apollo
2155 dynixptx*) osname=dynixptx
2156 osvers=`echo "$4"|sed 's/^v//'`
2158 freebsd) osname=freebsd
2160 genix) osname=genix ;;
2162 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2178 netbsd*) osname=netbsd
2181 news-os) osvers="$3"
2183 4*) osname=newsos4 ;;
2187 bsd386) osname=bsd386
2190 POSIX-BC | posix-bc ) osname=posix-bc
2193 powerux | power_ux | powermax_os | powermaxos | \
2194 powerunix | power_unix) osname=powerux
2197 next*) osname=next ;;
2198 solaris) osname=solaris
2200 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2207 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2211 titanos) osname=titanos
2220 ultrix) osname=ultrix
2223 osf1|mls+) case "$5" in
2226 osvers=`echo "$3" | sed 's/^[xvt]//'`
2228 hp*) osname=hp_osf1 ;;
2229 mips) osname=mips_osf1 ;;
2238 $2) case "$osname" in
2242 : svr4.x or possibly later
2252 if test -f /stand/boot ; then
2253 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2254 if test -n "$INITPROG" -a -f "$INITPROG"; then
2255 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2256 if test -n "$isesix"; then
2264 *) if test -f /etc/systemid; then
2266 set `echo $3 | $sed 's/\./ /g'` $4
2267 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2269 elif $test -f $src/hints/sco_$1_$2.sh; then
2271 elif $test -f $src/hints/sco_$1.sh; then
2276 '') : Still unknown. Probably a generic Sys V.
2285 *) case "$osname" in
2286 '') : Still unknown. Probably a generic BSD.
2294 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2295 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2296 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2299 $rm -f UU/kernel.what
2300 elif test -d c:/.; then
2307 : Now look for a hint file osname_osvers, unless one has been
2308 : specified already.
2311 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2312 : Also try without trailing minor version numbers.
2313 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2314 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2315 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2316 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2319 *) case "$osvers" in
2322 *) if $test -f $src/hints/$file.sh ; then
2324 elif $test -f $src/hints/$xfile.sh ; then
2326 elif $test -f $src/hints/$xxfile.sh ; then
2328 elif $test -f $src/hints/$xxxfile.sh ; then
2330 elif $test -f $src/hints/$xxxxfile.sh ; then
2332 elif $test -f "$src/hints/${osname}.sh" ; then
2341 if $test -f Policy.sh ; then
2344 none) dflt="Policy" ;;
2345 *) dflt="Policy $dflt" ;;
2350 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2354 if $test -f Policy.sh ; then
2357 There's also a Policy hint file available, which should make the
2358 site-specific (policy) questions easier to answer.
2365 You may give one or more space-separated answers, or "none" if appropriate.
2366 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2367 is a good thing. DO NOT give a wrong version.
2371 rp="Which of these apply, if any?"
2374 for file in $tans; do
2375 if $test X$file = XPolicy -a -f Policy.sh; then
2377 $cat Policy.sh >> UU/config.sh
2378 elif $test -f $src/hints/$file.sh; then
2379 . $src/hints/$file.sh
2380 $cat $src/hints/$file.sh >> UU/config.sh
2381 elif $test X$tans = X -o X$tans = Xnone ; then
2384 : Give one chance to correct a possible typo.
2385 echo "$file.sh does not exist"
2387 rp="hint to use instead?"
2389 for file in $ans; do
2390 if $test -f "$src/hints/$file.sh"; then
2391 . $src/hints/$file.sh
2392 $cat $src/hints/$file.sh >> UU/config.sh
2393 elif $test X$ans = X -o X$ans = Xnone ; then
2396 echo "$file.sh does not exist -- ignored."
2403 : Remember our hint file for later.
2404 if $test -f "$src/hints/$file.sh" ; then
2414 echo "Fetching default answers from $config_sh..." >&4
2418 cp $config_sh config.sh 2>/dev/null
2428 test "$override" && . ./optdef.sh
2429 myuname="$newmyuname"
2431 : Restore computed paths
2432 for file in $loclist $trylist; do
2433 eval $file="\$_$file"
2438 Configure uses the operating system name and version to set some defaults.
2439 The default value is probably right if the name rings a bell. Otherwise,
2440 since spelling matters for me, either accept the default or answer "none"
2447 ''|' '|none) dflt=none ;;
2448 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2451 *) dflt="$osname" ;;
2453 rp="Operating system name?"
2457 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2463 ''|' '|none) dflt=none ;;
2464 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2465 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2467 ''|' ') dflt=none ;;
2472 *) dflt="$osvers" ;;
2474 rp="Operating system version?"
2481 : who configured the system
2482 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2483 cf_by=`(logname) 2>/dev/null`
2486 cf_by=`(whoami) 2>/dev/null`
2488 "") cf_by=unknown ;;
2492 : set up the script used to warn in case of inconsistency
2499 echo "*** WHOA THERE!!! ***" >&4
2500 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2501 rp=" Keep the $hint value?"
2504 y) td=$was; tu=$was;;
2508 : function used to set $1 to $val
2509 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2511 $define$undef) . ./whoa; eval "$var=\$td";;
2512 $undef$define) . ./whoa; eval "$var=\$tu";;
2513 *) eval "$var=$val";;
2518 Perl can be built to take advantage of threads, on some systems.
2519 To do so, Configure must be run with -Dusethreads.
2521 Note that threading is a highly experimental feature, and
2522 some known race conditions still remain. If you choose to try
2523 it, be very sure to not actually deploy it for production
2524 purposes. README.threads has more details, and is required
2525 reading if you enable threads.
2527 case "$usethreads" in
2528 $define|true|[yY]*) dflt='y';;
2531 rp='Build a threading Perl?'
2534 y|Y) val="$define" ;;
2540 case "$d_oldpthreads" in
2541 '') : Configure tests would be welcome here. For now, assume undef.
2543 *) val="$d_oldpthreads" ;;
2549 case "$usethreads" in
2550 "$define"|true|[yY]*)
2551 : Look for a hint-file generated 'call-back-unit'. If the
2552 : user has specified that a threading perl is to be built,
2553 : we may need to set or change some other defaults.
2554 if $test -f usethreads.cbu; then
2558 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2559 # Known thread-capable platforms.
2563 $osname is not known to support threads.
2564 Please let perlbug@perl.com know how to do that.
2566 Cannot continue, aborting.
2576 Perl can be built so that multiple Perl interpreters can coexist
2577 within the same Perl executable. To do so, Configure must be run with
2580 Normally you do not need this and you should answer no.
2583 case "$usemultiplicity" in
2584 $define|true|[yY]*) dflt='y';;
2587 rp='Build Perl for multiplicity?'
2590 y|Y) val="$define" ;;
2598 Perl can be built to take advantage of explicit 64-bit interfaces,
2599 on some systems. To do so, Configure must be run with -Duse64bits.
2601 If this doesn't make any sense to you, just accept the default 'n'.
2603 case "$use64bits" in
2604 $define|true|[yY]*) dflt='y';;
2607 rp='Try to use explicit 64-bit interfaces, if available?'
2620 case "$archname64" in
2621 '') archname64='' ;; # not a typo
2624 case "$use64bits" in
2625 "$define"|true|[yY]*)
2626 : Look for a hint-file generated 'call-back-unit'. If the
2627 : user has specified that a threading perl is to be built,
2628 : we may need to set or change some other defaults.
2629 if $test -f use64bits.cbu; then
2633 aix|dec_osf|hpux|irix|solaris|unicos)
2634 # Known 64-bit capable platforms.
2638 $osname is not known to support 64-bit interfaces.
2639 Please let perlbug@perl.com know how to do that.
2641 Cannot continue, aborting.
2649 : determine the architecture name
2651 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2652 tarch=`arch`"-$osname"
2653 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2654 if uname -m > tmparch 2>&1 ; then
2655 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2656 -e 's/$/'"-$osname/" tmparch`
2664 case "$myarchname" in
2667 echo "(Your architecture name used to be $myarchname.)"
2674 *) dflt="$archname";;
2676 rp='What is your architecture name'
2679 case "$usethreads" in
2681 echo "Threads selected." >&4
2683 *-thread*) echo "...and architecture name already has -thread." >&4
2685 *) archname="$archname-thread"
2686 echo "...setting architecture name to $archname." >&4
2691 case "$usemultiplicity" in
2693 echo "Multiplicity selected." >&4
2695 *-multi*) echo "...and architecture name already has -multi." >&4
2697 *) archname="$archname-multi"
2698 echo "...setting architecture name to $archname." >&4
2703 case "$use64bits" in
2705 echo "Explicit 64-bitness selected." >&4
2706 case "$archname64" in
2711 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2713 *) archname="$archname-$archname64"
2714 echo "...setting architecture name to $archname." >&4
2724 $define|true) afs=true ;;
2725 $undef|false) afs=false ;;
2726 *) if test -d /afs; then
2734 echo "AFS may be running... I'll be extra cautious then..." >&4
2736 echo "AFS does not seem to be running..." >&4
2739 : decide how portable to be. Allow command line overrides.
2740 case "$d_portable" in
2742 *) d_portable="$define" ;;
2745 : set up shell script to do ~ expansion
2751 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2754 if $test -f /bin/csh; then
2755 /bin/csh -f -c "glob \$1"
2760 name=\`$expr x\$1 : '..\([^/]*\)'\`
2761 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2762 if $test ! -d "\$dir"; then
2764 echo "\$me: can't locate home directory for: \$name" >&2
2769 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2785 : now set up to get a file name
2789 cat <<'EOSC' >>getfile
2802 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2803 fn=`echo $fn | sed 's/(.*)//'`
2809 loc_file=`expr $fn : '.*:\(.*\)'`
2810 fn=`expr $fn : '\(.*\):.*'`
2818 */*) fullpath=true;;
2827 *e*) exp_file=true;;
2830 *p*) nopath_ok=true;;
2835 *d*) type='Directory';;
2836 *l*) type='Locate';;
2841 Locate) what='File';;
2846 case "$d_portable" in
2854 while test "$type"; do
2859 true) rp="$rp (~name ok)";;
2862 if test -f UU/getfile.ok && \
2863 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2882 value=`UU/filexp $ans`
2885 if test "$ans" != "$value"; then
2886 echo "(That expands to $value on this system.)"
2900 /*) value="$ansexp" ;;
2905 echo "I shall only accept a full path name, as in /bin/ls." >&4
2906 echo "Use a ! shell escape if you wish to check pathnames." >&4
2909 echo "Please give a full path name, starting with slash." >&4
2912 echo "Note that using ~name is ok provided it expands well." >&4
2925 if test -f "$ansexp"; then
2927 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2929 echo "($value is not a plain file, but that's ok.)"
2934 if test -d "$ansexp"; then
2939 if test -d "$ansexp"; then
2940 echo "(Looking for $loc_file in directory $value.)"
2941 value="$value/$loc_file"
2942 ansexp="$ansexp/$loc_file"
2944 if test -f "$ansexp"; then
2947 case "$nopath_ok" in
2948 true) case "$value" in
2950 *) echo "Assuming $value will be in people's path."
2966 if test "$fastread" = yes; then
2971 rp="$what $value doesn't exist. Use that name anyway?"
2992 : determine root of directory hierarchy where package will be installed.
2995 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3003 By default, $package will be installed in $dflt/bin, manual
3004 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3005 all installation directories. Typically set to /usr/local, but you
3006 may choose /usr if you wish to install $package among your system
3007 binaries. If you wish to have binaries under /bin but manual pages
3008 under /usr/local/man, that's ok: you will be prompted separately
3009 for each of the installation directories, the prefix being only used
3010 to set the defaults.
3014 rp='Installation prefix to use?'
3022 *) oldprefix="$prefix";;
3029 : set the prefixit variable, to compute a suitable default value
3030 prefixit='case "$3" in
3032 case "$oldprefix" in
3033 "") eval "$1=\"\$$2\"";;
3040 ""|" ") eval "$1=\"\$$2\"";;
3046 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3048 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3049 /*-$oldprefix/*|\~*-$oldprefix/*)
3050 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3051 *) eval "$1=\"\$$2\"";;
3055 : set the base revision
3058 : get the patchlevel
3060 echo "Getting the current patchlevel..." >&4
3061 if $test -r $rsrc/patchlevel.h;then
3062 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3063 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3068 $echo $n "(You have $package" $c
3071 *) $echo $n " $baserev" $c ;;
3073 $echo $n " patchlevel $patchlevel" $c
3074 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3077 if test 0 -eq "$subversion"; then
3078 version=`LC_ALL=C; export LC_ALL; \
3079 echo $baserev $patchlevel | \
3080 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3082 version=`LC_ALL=C; export LC_ALL; \
3083 echo $baserev $patchlevel $subversion | \
3084 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3086 : Figure out perl API version. Perhaps this should be in patchlevel.h
3087 if test "$subversion" -lt 50; then
3088 apiversion=`LC_ALL=C; export LC_ALL; \
3089 LANGUAGE=C; export LANGUAGE; \
3090 echo $baserev $patchlevel | \
3091 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3093 apiversion="$version"
3096 : determine where private library files go
3097 : Usual default is /usr/local/lib/perl5/$version.
3098 : Also allow things like /opt/perl/lib/$version, since
3099 : /opt/perl/lib/perl5... would be redundant.
3101 *perl*) set dflt privlib lib/$version ;;
3102 *) set dflt privlib lib/$package/$version ;;
3107 There are some auxiliary files for $package that need to be put into a
3108 private library directory that is accessible by everyone.
3112 rp='Pathname where the private library files will reside?'
3114 if $test "X$privlibexp" != "X$ansexp"; then
3118 privlibexp="$ansexp"
3122 Since you are running AFS, I need to distinguish the directory in which
3123 private files reside from the directory in which they are installed (and from
3124 which they are presumably copied to the former directory by occult means).
3127 case "$installprivlib" in
3128 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3129 *) dflt="$installprivlib";;
3132 rp='Where will private files be installed?'
3134 installprivlib="$ans"
3136 installprivlib="$privlibexp"
3139 : set the prefixup variable, to restore leading tilda escape
3140 prefixup='case "$prefixexp" in
3142 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3145 : determine where public architecture dependent libraries go
3148 : privlib default is /usr/local/lib/$package/$version
3149 : archlib default is /usr/local/lib/$package/$version/$archname
3150 : privlib may have an optional trailing /share.
3151 tdflt=`echo $privlib | $sed 's,/share$,,'`
3152 tdflt=$tdflt/$archname
3161 $spackage contains architecture-dependent library files. If you are
3162 sharing libraries in a heterogeneous environment, you might store
3163 these files in a separate location. Otherwise, you can just include
3164 them with the rest of the public library files.
3168 rp='Where do you want to put the public architecture-dependent libraries?'
3171 archlibexp="$ansexp"
3176 Since you are running AFS, I need to distinguish the directory in
3177 which architecture-dependent library files reside from the directory
3178 in which they are installed (and from which they are presumably copied
3179 to the former directory by occult means).
3182 case "$installarchlib" in
3183 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3184 *) dflt="$installarchlib";;
3187 rp='Where will architecture-dependent library files be installed?'
3189 installarchlib="$ans"
3191 installarchlib="$archlibexp"
3193 if $test X"$archlib" = X"$privlib"; then
3199 : make some quick guesses about what we are up against
3201 $echo $n "Hmm... $c"
3211 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3212 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3214 echo "Looks kind of like an OSF/1 system, but we'll see..."
3216 elif test `echo abc | tr a-z A-Z` = Abc ; then
3217 xxx=`./loc addbib blurfl $pth`
3218 if $test -f $xxx; then
3219 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3223 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3224 echo "Looks kind of like an extended USG system, but we'll see..."
3226 echo "Looks kind of like a USG system, but we'll see..."
3230 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3231 echo "Looks kind of like a BSD system, but we'll see..."
3235 echo "Looks kind of like a Version 7 system, but we'll see..."
3238 case "$eunicefix" in
3241 There is, however, a strange, musty smell in the air that reminds me of
3242 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3246 : it so happens the Eunice I know will not run shell scripts in Unix format
3250 echo "Congratulations. You aren't running Eunice."
3254 : Detect OS2. The p_ variable is set above in the Head.U unit.
3259 I have the feeling something is not exactly right, however...don't tell me...
3260 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3265 if test -f /xenix; then
3266 echo "Actually, this looks more like a XENIX system..."
3271 echo "It's not Xenix..."
3276 if test -f /venix; then
3277 echo "Actually, this looks more like a VENIX system..."
3284 echo "Nor is it Venix..."
3287 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3288 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3291 : see if setuid scripts can be secure
3294 Some kernels have a bug that prevents setuid #! scripts from being
3295 secure. Some sites have disabled setuid #! scripts because of this.
3297 First let's decide if your kernel supports secure setuid #! scripts.
3298 (If setuid #! scripts would be secure but have been disabled anyway,
3299 don't say that they are secure if asked.)
3304 if $test -d /dev/fd; then
3305 echo "#!$ls" >reflect
3306 chmod +x,u+s reflect
3307 ./reflect >flect 2>&1
3308 if $contains "/dev/fd" flect >/dev/null; then
3309 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3313 If you are not sure if they are secure, I can check but I'll need a
3314 username and password different from the one you are using right now.
3315 If you don't have such a username or don't want me to test, simply
3319 rp='Other username to test security of setuid scripts with?'
3324 case "$d_suidsafe" in
3325 '') echo "I'll assume setuid scripts are *not* secure." >&4
3328 echo "Well, the $hint value is *not* secure." >&4
3330 *) echo "Well, the $hint value *is* secure." >&4
3335 $rm -f reflect flect
3336 echo "#!$ls" >reflect
3337 chmod +x,u+s reflect
3340 echo '"su" will (probably) prompt you for '"$ans's password."
3341 su $ans -c './reflect >flect'
3342 if $contains "/dev/fd" flect >/dev/null; then
3343 echo "Okay, it looks like setuid scripts are secure." >&4
3346 echo "I don't think setuid scripts are secure." >&4
3351 rp='Does your kernel have *secure* setuid scripts?'
3354 [yY]*) val="$define";;
3359 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3360 echo "(That's for file descriptors, not floppy disks.)"
3366 $rm -f reflect flect
3368 : now see if they want to do setuid emulation
3371 case "$d_suidsafe" in
3374 echo "No need to emulate SUID scripts since they are secure here." >& 4
3378 Some systems have disabled setuid scripts, especially systems where
3379 setuid scripts cannot be secure. On systems where setuid scripts have
3380 been disabled, the setuid/setgid bits on scripts are currently
3381 useless. It is possible for $package to detect those bits and emulate
3382 setuid/setgid in a secure fashion. This emulation will only work if
3383 setuid scripts have been disabled in your kernel.
3387 "$define") dflt=y ;;
3390 rp="Do you want to do setuid/setgid emulation?"
3393 [yY]*) val="$define";;
3401 : determine where manual pages are on this system
3405 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3406 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3407 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3408 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3409 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3410 sysman=`./loc . /usr/man/man1 $syspath`
3413 if $test -d "$sysman"; then
3414 echo "System manual is in $sysman." >&4
3416 echo "Could not find manual pages in source form." >&4
3419 : see what memory models we can support
3422 $cat >pdp11.c <<'EOP'
3431 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3432 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3433 dflt='unsplit split'
3435 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3438 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3443 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3446 if $test -d /lib/large || $test -d /usr/lib/large; then
3449 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3458 Some systems have different model sizes. On most systems they are called
3459 small, medium, large, and huge. On the PDP11 they are called unsplit and
3460 split. If your system doesn't support different memory models, say "none".
3461 If you wish to force everything to one memory model, say "none" here and
3462 put the appropriate flags later when it asks you for other cc and ld flags.
3463 Venix systems may wish to put "none" and let the compiler figure things out.
3464 (In the following question multiple model names should be space separated.)
3466 The default for most systems is "none".
3469 rp="Which memory models are supported?"
3484 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3485 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3492 rp="What flag indicates separate I and D space?"
3500 *large*|*small*|*medium*|*huge*)
3507 rp="What flag indicates large model?"
3517 *huge*) case "$huge" in
3521 rp="What flag indicates huge model?"
3531 *medium*) case "$medium" in
3535 rp="What flag indicates medium model?"
3542 *) medium="$large";;
3545 *small*) case "$small" in
3549 rp="What flag indicates small model?"
3560 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3563 $rm -f pdp11.* pdp11
3565 : see if we need a special compiler
3573 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3574 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3588 On some older systems the default C compiler will not resolve multiple global
3589 references that happen to have the same name. On some such systems the "Mcc"
3590 command may be used to force these to be resolved. On other systems a "cc -M"
3591 command is required. (Note that the -M flag on other systems indicates a
3592 memory model to use!) If you have the Gnu C compiler, you might wish to use
3598 rp="Use which C compiler?"
3606 rp="Use which C compiler?"
3610 : Look for a hint-file generated 'call-back-unit'. Now that the
3611 : user has specified the compiler, we may need to set or change some
3613 if $test -f cc.cbu; then
3617 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3618 $cat >gccvers.c <<EOM
3623 printf("%s\n", __VERSION__);
3625 printf("%s\n", "1");
3631 if $cc -o gccvers gccvers.c; then
3632 gccversion=`./gccvers`
3633 case "$gccversion" in
3634 '') echo "You are not using GNU cc." ;;
3635 *) echo "You are using GNU cc $gccversion." ;;
3639 echo "*** WHOA THERE!!! ***" >&4
3640 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3641 case "$knowitall" in
3643 echo " You'd better start hunting for one and let me know about it." >&4
3649 case "$gccversion" in
3650 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3653 : What should the include directory be ?
3655 $echo $n "Hmm... $c"
3659 if $test -f /bin/mips && /bin/mips; then
3660 echo "Looks like a MIPS system..."
3661 $cat >usr.c <<'EOCP'
3662 #ifdef SYSTYPE_BSD43
3666 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3667 dflt='/bsd43/usr/include'
3671 mips_type='System V'
3673 $rm -f usr.c usr.out
3674 echo "and you're compiling with the $mips_type compiler and libraries."
3678 echo "Doesn't look like a MIPS system."
3688 case "$xxx_prompt" in
3691 rp='Where are the include files you want to use?'
3699 : see how we invoke the C preprocessor
3701 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3702 cat <<'EOT' >testcpp.c
3708 if test ! -f cppstdin; then
3709 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3711 echo "Keeping your $hint cppstdin wrapper."
3714 wrapper=`pwd`/cppstdin
3718 if $test "X$cppstdin" != "X" && \
3719 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3720 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3722 echo "You used to use $cppstdin $cppminus so we'll use that again."
3724 '') echo "But let's see if we can live without a wrapper..." ;;
3726 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3727 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3729 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3732 echo "(However, $cpprun $cpplast does not work, let's see...)"
3740 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3747 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3748 $cc -E <testcpp.c >testcpp.out 2>&1; \
3749 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3750 echo "Yup, it does."
3753 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3754 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3755 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3756 echo "Yup, it does."
3759 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3760 $cc -P <testcpp.c >testcpp.out 2>&1; \
3761 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3762 echo "Yipee, that works!"
3765 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3766 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3767 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3768 echo "At long last!"
3771 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3772 $cpp <testcpp.c >testcpp.out 2>&1; \
3773 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3777 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3778 $cpp - <testcpp.c >testcpp.out 2>&1; \
3779 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3780 echo "Hooray, it works! I was beginning to wonder."
3783 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3784 $wrapper <testcpp.c >testcpp.out 2>&1; \
3785 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3791 rp="No dice. I can't find a C preprocessor. Name one:"
3795 $x_cpp <testcpp.c >testcpp.out 2>&1
3796 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3797 echo "OK, that will do." >&4
3799 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3814 echo "Perhaps can we force $cc -E using a wrapper..."
3815 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3816 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3822 echo "Nope, we'll have to live without it..."
3836 "$wrapper"|'cppstdin') ;;
3837 *) $rm -f $wrapper;;
3839 $rm -f testcpp.c testcpp.out
3841 : Set private lib path
3844 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3849 '') dlist="$loclibpth $plibpth $glibpth";;
3850 *) dlist="$libpth";;
3853 : Now check and see which directories actually exist, avoiding duplicates
3857 if $test -d $xxx; then
3860 *) libpth="$libpth $xxx";;
3866 Some systems have incompatible or broken versions of libraries. Among
3867 the directories listed in the question below, please remove any you
3868 know not to be holding relevant libraries, and add any that are needed.
3869 Say "none" for none.
3880 rp="Directories to use for library searches?"
3887 : compute shared library extension
3890 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3900 On some systems, shared libraries may be available. Answer 'none' if
3901 you want to suppress searching of shared libraries for the remaining
3902 of this configuration.
3905 rp='What is the file extension used for shared libraries?'
3909 : Define several unixisms.
3910 : Hints files or command line option can be used to override them.
3911 : The convoluted testing is in case hints files set either the old
3914 '') case "$exe_ext" in
3916 *) _exe="$exe_ext" ;;
3921 '') case "$lib_ext" in
3928 '') case "$obj_ext" in
3935 '') case "$path_sep" in
3946 : Which makefile gets called first. This is used by make depend.
3947 case "$firstmakefile" in
3948 '') firstmakefile='makefile';;
3953 Perl can be built to use the SOCKS proxy protocol library. To do so,
3954 Configure must be run with -Dusesocks.
3956 Normally you do not need this and you should answer no.
3960 $define|true|[yY]*) dflt='y';;
3963 rp='Build Perl for SOCKS?'
3966 y|Y) val="$define" ;;
3972 : Looking for optional libraries
3974 echo "Checking for optional libraries..." >&4
3979 case "$libswanted" in
3980 '') libswanted='c_s';;
3984 libswanted="$libswanted socks5 socks5_sh"
3987 for thislib in $libswanted; do
3989 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3990 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3991 echo "Found -l$thislib (shared)."
3994 *) dflt="$dflt -l$thislib";;
3996 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3997 echo "Found -l$thislib (shared)."
4000 *) dflt="$dflt -l$thislib";;
4002 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4003 echo "Found -l$thislib."
4006 *) dflt="$dflt -l$thislib";;
4008 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4009 echo "Found -l$thislib."
4012 *) dflt="$dflt -l$thislib";;
4014 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4015 echo "Found -l${thislib}_s."
4018 *) dflt="$dflt -l${thislib}_s";;
4020 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4021 echo "Found -l$thislib."
4024 *) dflt="$dflt -l$thislib";;
4027 echo "No -l$thislib."
4038 ' '|'') dflt='none';;
4043 In order to compile $package on your machine, a number of libraries
4044 are usually needed. Include any other special libraries here as well.
4045 Say "none" for none. The default list is almost always right.
4049 rp="What libraries to use?"
4056 : determine optimize, if desired, or use for debug flag also
4058 ' '|$undef) dflt='none';;
4060 *) dflt="$optimize";;
4064 Some C compilers have problems with their optimizers. By default, $package
4065 compiles with the -O flag to use the optimizer. Alternately, you might want
4066 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4067 systems). Either flag can be specified here. To use neither flag, specify
4071 rp="What optimizer/debugger flag should be used?"
4075 'none') optimize=" ";;
4079 : We will not override a previous value, but we might want to
4080 : augment a hint file
4083 case "$gccversion" in
4084 1*) dflt='-fpcc-struct-return' ;;
4087 *-g*) dflt="$dflt -DDEBUGGING";;
4089 case "$gccversion" in
4090 2*) if test -d /etc/conf/kconfig.d &&
4091 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4100 case "$mips_type" in
4101 *BSD*|'') inclwanted="$locincpth $usrinc";;
4102 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4104 for thisincl in $inclwanted; do
4105 if $test -d $thisincl; then
4106 if $test x$thisincl != x$usrinc; then
4109 *) dflt="$dflt -I$thisincl";;
4115 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4117 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4125 *) dflt="$dflt -D$2";;
4129 set signal.h LANGUAGE_C; eval $inctest
4133 ccflags="$ccflags -DSOCKS"
4138 none|recommended) dflt="$ccflags $dflt" ;;
4139 *) dflt="$ccflags";;
4147 Your C compiler may want other flags. For this question you should include
4148 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4149 but you should NOT include libraries or ld flags like -lwhatever. If you
4150 want $package to honor its debug switch, you should include -DDEBUGGING here.
4151 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4153 To use no flags, specify the word "none".
4159 rp="Any additional cc flags?"
4166 : the following weeds options from ccflags that are of no interest to cpp
4168 case "$gccversion" in
4169 1*) cppflags="$cppflags -D__GNUC__"
4171 case "$mips_type" in
4173 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4179 echo "Let me guess what the preprocessor flags are..." >&4
4193 *) ftry="$previous $flag";;
4195 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4196 >cpp1.out 2>/dev/null && \
4197 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4198 >cpp2.out 2>/dev/null && \
4199 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4200 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4202 cppflags="$cppflags $ftry"
4212 *-*) echo "They appear to be: $cppflags";;
4214 $rm -f cpp.c cpp?.out
4218 : flags used in final linking phase
4220 '') if ./venix; then
4226 *-posix*) dflt="$dflt -posix" ;;
4229 *) dflt="$ldflags";;
4232 : Try to guess additional flags to pick up local libraries.
4233 for thislibdir in $libpth; do
4234 case " $loclibpth " in
4237 *"-L$thislibdir "*) ;;
4238 *) dflt="$dflt -L$thislibdir" ;;
4250 Your C linker may need flags. For this question you should
4251 include -L/whatever and any other flags used by the C linker, but you
4252 should NOT include libraries like -lwhatever.
4254 Make sure you include the appropriate -L/path flags if your C linker
4255 does not normally search all of the directories you specified above,
4258 To use no flags, specify the word "none".
4262 rp="Any additional ld flags (NOT including libraries)?"
4268 rmlist="$rmlist pdp11"
4272 echo "Checking your choice of C compiler and flags for coherency..." >&4
4273 $cat > try.c <<'EOF'
4275 int main() { printf("Ok\n"); exit(0); }
4277 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4279 $cat >try.msg <<'EOM'
4280 I've tried to compile and run the following simple program:
4283 $cat try.c >> try.msg
4285 $cat >> try.msg <<EOM
4292 and I got the following output:
4296 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4297 if sh -c './try' >>try.msg 2>&1; then
4301 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4304 cat >> try.msg <<'EOQS'
4305 If $libs contains -lsfio, and sfio is mis-configured, then it
4306 sometimes (apparently) runs and exits with a 0 status, but with no
4307 output! It may have to do with sfio's use of _exit vs. exit.
4310 rp="You have a big problem. Shall I abort Configure"
4317 echo "The program compiled OK, but exited with status $?." >>try.msg
4318 rp="You have a problem. Shall I abort Configure"
4322 echo "I can't compile the test program." >>try.msg
4323 rp="You have a BIG problem. Shall I abort Configure"
4329 case "$knowitall" in
4331 echo "(The supplied flags or libraries might be incorrect.)"
4339 *) echo "Ok. Stopping Configure." >&4
4344 n) echo "OK, that should do.";;
4346 $rm -f try try.* core
4348 : determine filename position in cpp output
4350 echo "Computing filename position in cpp output for #include directives..." >&4
4351 echo '#include <stdio.h>' > foo.c
4354 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4355 $grep '^[ ]*#.*stdio\.h' | \
4356 while read cline; do
4359 while $test \$# -gt 0; do
4360 if $test -r \`echo \$1 | $tr -d '"'\`; then
4365 pos=\`expr \$pos + 1\`
4377 *) pos="${fieldn}th";;
4379 echo "Your cpp writes the filename in the $pos field of the line."
4381 : locate header file
4386 for usrincdir in $usrinc
4388 if test -f \$usrincdir/\$wanted; then
4389 echo "\$usrincdir/\$wanted"
4393 awkprg='{ print \$$fieldn }'
4394 echo "#include <\$wanted>" > foo\$\$.c
4395 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4396 $grep "^[ ]*#.*\$wanted" | \
4397 while read cline; do
4398 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4400 *[/\\\\]\$wanted) echo "\$name"; exit 0;;
4401 *[\\\\/]\$wanted) echo "\$name"; exit 0;;
4412 : define an alternate in-header-list? function
4413 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4414 cont=true; xxf="echo \"<\$1> found.\" >&4";
4415 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4416 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4418 case $# in 4) instead=instead;; *) instead="at last";; esac;
4419 while $test "$cont"; do
4421 var=$2; eval "was=\$$2";
4422 if $test "$xxx" && $test -r "$xxx";
4424 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4427 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4428 set $yyy; shift; shift; yyy=$@;
4429 case $# in 0) cont="";;
4430 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4431 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4432 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4433 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4437 do set $yyy; var=$2; eval "was=\$$2";
4438 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4439 set $yyy; shift; shift; yyy=$@;
4442 : see if this is a malloc.h system
4443 set malloc.h i_malloc
4446 : see if stdlib is available
4447 set stdlib.h i_stdlib
4450 : determine which malloc to compile in
4452 case "$usemymalloc" in
4453 ''|[yY]*|true|$define) dflt='y' ;;
4456 rp="Do you wish to attempt to use the malloc that comes with $package?"
4462 mallocsrc='malloc.c'
4463 mallocobj="malloc$_o"
4464 d_mymalloc="$define"
4467 : Remove malloc from list of libraries to use
4468 echo "Removing unneeded -lmalloc from library list" >&4
4469 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4472 echo "libs = $libs" >&4
4484 : compute the return types of malloc and free
4486 $cat >malloc.c <<END
4490 #include <sys/types.h>
4504 case "$malloctype" in
4506 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4513 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4517 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4524 echo "Your system uses $freetype free(), it would seem." >&4
4526 : Cruising for prototypes
4528 echo "Checking out function prototypes..." >&4
4529 $cat >prototype.c <<'EOCP'
4530 int main(int argc, char *argv[]) {
4533 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4534 echo "Your C compiler appears to support function prototypes."
4537 echo "Your C compiler doesn't seem to understand function prototypes."
4544 case "$prototype" in
4546 *) ansi2knr='ansi2knr'
4551 This version of $package can only be compiled by a compiler that
4552 understands function prototypes. Unfortunately, your C compiler
4554 doesn't seem to understand them. Sorry about that.
4556 If GNU cc is available for your system, perhaps you could try that instead.
4558 Eventually, we hope to support building Perl with pre-ANSI compilers.
4559 If you would like to help in that effort, please contact <perlbug@perl.org>.
4561 Aborting Configure now.
4567 : determine where public executables go
4572 rp='Pathname where the public executables will reside?'
4574 if $test "X$ansexp" != "X$binexp"; then
4582 Since you are running AFS, I need to distinguish the directory in which
4583 executables reside from the directory in which they are installed (and from
4584 which they are presumably copied to the former directory by occult means).
4587 case "$installbin" in
4588 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4589 *) dflt="$installbin";;
4592 rp='Where will public executables be installed?'
4596 installbin="$binexp"
4599 : determine whether to install perl also as /usr/bin/perl
4602 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4604 Many scripts expect to perl to be installed as /usr/bin/perl.
4605 I can install the perl you are about to compile also as /usr/bin/perl
4606 (in addition to $installbin/perl).
4608 case "$installusrbinperl" in
4609 "$undef"|[nN]*) dflt='n';;
4612 rp="Do you want to install perl as /usr/bin/perl?"
4615 [yY]*) val="$define";;
4621 set installusrbinperl
4624 : define a shorthand compile call
4628 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4629 : define a shorthand compile call for compilations that should be ok.
4633 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4636 echo "Checking for GNU C Library..." >&4
4637 cat >gnulibc.c <<EOM
4649 if eval $compile_ok && ./gnulibc; then
4651 echo "You are using the GNU C Library"
4654 echo "You are not using the GNU C Library"
4660 : see if nm is to be used to determine whether a symbol is defined or not
4664 case "$d_gnulibc" in
4667 echo "nm probably won't work on the GNU C Library." >&4
4673 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4675 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4676 echo "'nm' won't be sufficient on this sytem." >&4
4682 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4683 if $test $dflt -gt 20; then
4693 true|$define) dflt=y;;
4700 I can use $nm to extract the symbols from your C libraries. This
4701 is a time consuming task which may generate huge output on the disk (up
4702 to 3 megabytes) but that should make the symbols extraction faster. The
4703 alternative is to skip the 'nm' extraction part and to compile a small
4704 test program instead to determine whether each symbol is present. If
4705 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4706 this may be the best solution.
4708 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4711 rp="Shall I use $nm to extract C symbols from the libraries?"
4714 [Nn]*) usenm=false;;
4723 : nm options which may be necessary
4725 '') if $test -f /mach_boot; then
4727 elif $test -d /usr/ccs/lib; then
4728 nm_opt='-p' # Solaris (and SunOS?)
4729 elif $test -f /dgux; then
4731 elif $test -f /lib64/rld; then
4732 nm_opt='-p' # 64-bit Irix
4738 : nm options which may be necessary for shared libraries but illegal
4739 : for archive libraries. Thank you, Linux.
4740 case "$nm_so_opt" in
4741 '') case "$myuname" in
4743 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4744 nm_so_opt='--dynamic'
4753 : get list of predefined functions in a handy place
4758 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4765 *) for thislib in $libs; do
4768 : Handle C library specially below.
4771 thislib=`echo $thislib | $sed -e 's/^-l//'`
4772 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4774 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4776 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4778 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4780 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4782 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4784 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4789 libnames="$libnames $try"
4791 *) libnames="$libnames $thislib" ;;
4800 for xxx in $libpth; do
4801 $test -r $1 || set $xxx/libc.$so
4802 : The messy sed command sorts on library version numbers.
4804 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4805 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4807 s/[0-9][0-9]*/0000&/g
4808 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4811 sort | $sed -e 's/^.* //'`
4814 $test -r $1 || set /usr/ccs/lib/libc.$so
4815 $test -r $1 || set /lib/libsys_s$_a
4821 if $test -r "$1"; then
4822 echo "Your (shared) C library seems to be in $1."
4824 elif $test -r /lib/libc && $test -r /lib/clib; then
4825 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4827 libc='/lib/clib /lib/libc'
4828 if $test -r /lib/syslib; then
4829 echo "(Your math library is in /lib/syslib.)"
4830 libc="$libc /lib/syslib"
4832 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4833 echo "Your C library seems to be in $libc, as you said before."
4834 elif $test -r $incpath/usr/lib/libc$_a; then
4835 libc=$incpath/usr/lib/libc$_a;
4836 echo "Your C library seems to be in $libc. That's fine."
4837 elif $test -r /lib/libc$_a; then
4839 echo "Your C library seems to be in $libc. You're normal."
4841 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4843 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4844 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4845 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4847 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4849 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4852 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4854 if $test -r "$tans"; then
4855 echo "Your C library seems to be in $tans, of all places."
4861 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4865 If the guess above is wrong (which it might be if you're using a strange
4866 compiler, or your machine supports multiple models), you can override it here.
4871 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4873 I can't seem to find your C library. I've looked in the following places:
4876 $sed 's/^/ /' libpath
4879 None of these seems to contain your C library. I need to get its name...
4884 rp='Where is your C library?'
4889 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4890 set X `cat libnames`
4893 case $# in 1) xxx=file; esac
4894 echo "Extracting names from the following $xxx for later perusal:" >&4
4896 $sed 's/^/ /' libnames >&4
4898 $echo $n "This may take a while...$c" >&4
4902 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4903 *) $nm $nm_opt $file 2>/dev/null;;
4908 $grep fprintf libc.tmp > libc.ptf
4909 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4910 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4912 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4914 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4916 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4918 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4920 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4922 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4924 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4926 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4928 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4930 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4932 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4934 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4936 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4937 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4939 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4941 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4943 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4945 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4947 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4949 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4951 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4953 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4955 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4957 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4959 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4961 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4963 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4965 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4967 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4970 $nm -p $* 2>/dev/null >libc.tmp
4971 $grep fprintf libc.tmp > libc.ptf
4972 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4973 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4979 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4981 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4982 for thisname in $libnames $libc; do
4983 $ar t $thisname >>libc.tmp
4985 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4987 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4988 # Repeat libc to extract forwarders to DLL entries too
4989 for thisname in $libnames $libc; do
4990 $ar tv $thisname >>libc.tmp
4991 # Revision 50 of EMX has bug in $ar.
4992 # it will not extract forwarders to DLL entries
4993 # Use emximp which will extract exactly them.
4994 emximp -o tmp.imp $thisname \
4996 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4997 < tmp.imp >>libc.tmp
5000 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5003 echo "$ar didn't seem to work right." >&4
5004 echo "Maybe this is a Cray...trying bld instead..." >&4
5005 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5007 for thisname in $libnames; do
5009 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5010 $ar t $thisname >>libc.tmp
5014 echo "That didn't work either. Giving up." >&4
5021 if $test -f /lib/syscalls.exp; then
5023 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5024 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5028 $rm -f libnames libpath
5030 : see if dld is available
5034 : is a C symbol defined?
5037 -v) tf=libc.tmp; tc=""; tdc="";;
5038 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5039 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5042 case "$reuseval-$4" in
5044 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5050 if $contains $tlook $tf >/dev/null 2>&1;
5055 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5056 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5064 $define) tval=true;;
5070 : define an is-in-libc? function
5071 inlibc='echo " "; td=$define; tu=$undef;
5072 sym=$1; var=$2; eval "was=\$$2";
5074 case "$reuseval$was" in
5084 echo "$sym() found." >&4;
5085 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5087 echo "$sym() NOT found." >&4;
5088 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5092 $define) echo "$sym() found." >&4;;
5093 *) echo "$sym() NOT found." >&4;;
5097 : see if dlopen exists
5104 : determine which dynamic loading, if any, to compile in
5106 dldir="ext/DynaLoader"
5119 $define) dflt='y' ;;
5122 $define) dflt='y' ;;
5124 : Does a dl_xxx.xs file exist for this operating system
5125 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5128 rp="Do you wish to use dynamic loading?"
5135 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5136 dflt="$dldir/dl_${osname}.xs"
5137 elif $test "$d_dlopen" = "$define" ; then
5138 dflt="$dldir/dl_dlopen.xs"
5139 elif $test "$i_dld" = "$define" ; then
5140 dflt="$dldir/dl_dld.xs"
5145 *) dflt="$dldir/$dlsrc"
5148 echo "The following dynamic loading files are available:"
5149 : Can not go over to $dldir because getfile has path hard-coded in.
5150 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5151 rp="Source file to use for dynamic loading"
5153 # XXX This getfile call will fail the existence check if you try
5154 # building away from $src (this is not supported yet).
5158 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5162 Some systems may require passing special flags to $cc -c to
5163 compile modules that will be used to create a shared library.
5164 To use no flags, say "none".
5167 case "$cccdlflags" in
5168 '') case "$gccversion" in
5169 '') case "$osname" in
5171 next) dflt='none' ;;
5172 irix*) dflt='-KPIC' ;;
5173 svr4*|esix*|solaris) dflt='-KPIC' ;;
5174 sunos) dflt='-pic' ;;
5178 *) case "$osname" in
5179 svr4*|esix*|solaris) dflt='-fPIC' ;;
5184 *) dflt="$cccdlflags" ;;
5186 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5189 none) cccdlflags=' ' ;;
5190 *) cccdlflags="$ans" ;;
5195 Some systems use ld to create libraries that can be dynamically loaded,
5196 while other systems (such as those using ELF) use $cc.
5200 '') $cat >try.c <<'EOM'
5201 /* Test for whether ELF binaries are produced */
5206 int i = open("a.out",O_RDONLY);
5209 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5210 exit(0); /* succeed (yes, it's ELF) */
5215 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5217 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5221 echo "I'll use ld to build dynamic libraries."
5230 rp="What command should be used to create dynamic libraries?"
5236 Some systems may require passing special flags to $ld to create a
5237 library that can be dynamically loaded. If your ld flags include
5238 -L/other/path options to locate libraries outside your loader's normal
5239 search path, you may need to specify those -L options here as well. To
5240 use no flags, say "none".
5243 case "$lddlflags" in
5244 '') case "$osname" in
5245 beos) dflt='-nostart' ;;
5247 linux|irix*) dflt='-shared' ;;
5248 next) dflt='none' ;;
5249 solaris) dflt='-G' ;;
5250 sunos) dflt='-assert nodefinitions' ;;
5251 svr4*|esix*) dflt="-G $ldflags" ;;
5255 *) dflt="$lddlflags" ;;
5258 : Try to guess additional flags to pick up local libraries.
5259 : Be careful not to append to a plain 'none'
5263 for thisflag in $ldflags; do
5268 *) dflt="$dflt $thisflag" ;;
5275 ''|' ') dflt='none' ;;
5278 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5281 none) lddlflags=' ' ;;
5282 *) lddlflags="$ans" ;;
5287 Some systems may require passing special flags to $cc to indicate that
5288 the resulting executable will use dynamic linking. To use no flags,
5292 case "$ccdlflags" in
5293 '') case "$osname" in
5294 hpux) dflt='-Wl,-E' ;;
5295 linux) dflt='-rdynamic' ;;
5296 next) dflt='none' ;;
5297 sunos) dflt='none' ;;
5301 *) dflt="$ccdlflags" ;;
5303 rp="Any special flags to pass to $cc to use dynamic loading?"
5306 none) ccdlflags=' ' ;;
5307 *) ccdlflags="$ans" ;;
5321 # No dynamic loading being used, so don't bother even to prompt.
5324 *) case "$useshrplib" in
5325 '') case "$osname" in
5326 svr4*|dgux|dynixptx|esix|powerux|beos)
5328 also='Building a shared libperl is required for dynamic loading to work on your system.'
5333 also='Building a shared libperl is needed for MAB support.'
5351 The perl executable is normally obtained by linking perlmain.c with
5352 libperl${_a}, any static extensions (usually just DynaLoader), and
5353 any other libraries needed on this system (such as -lm, etc.). Since
5354 your system supports dynamic loading, it is probably possible to build
5355 a shared libperl.$so. If you will have more than one executable linked
5356 to libperl.$so, this will significantly reduce the size of each
5357 executable, but it may have a noticeable affect on performance. The
5358 default is probably sensible for your system.
5362 rp="Build a shared libperl.$so (y/n)"
5367 # Why does next4 have to be so different?
5368 case "${osname}${osvers}" in
5370 xxx='DYLD_LIBRARY_PATH' ;;
5371 os2*) xxx='' ;; # Nothing special needed.
5373 *) xxx='LD_LIBRARY_PATH' ;;
5376 *) useshrplib='false' ;;
5381 case "$useshrplib" in
5385 # Figure out a good name for libperl.so. Since it gets stored in
5386 # a version-specific architecture-dependent library, the version
5387 # number isn't really that important, except for making cc/ld happy.
5389 # A name such as libperl.so.3.1
5390 majmin="libperl.$so.$patchlevel.$subversion"
5391 # A name such as libperl.so.301
5392 majonly=`echo $patchlevel $subversion |
5393 $awk '{printf "%d%02d", $1, $2}'`
5394 majonly=libperl.$so.$majonly
5395 # I'd prefer to keep the os-specific stuff here to a minimum, and
5396 # rely on figuring it out from the naming of libc.
5397 case "${osname}${osvers}" in
5400 # XXX How handle the --version stuff for MAB?
5402 linux*) # ld won't link with a bare -lperl otherwise.
5405 *) # Try to guess based on whether libc has major.minor.
5407 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5408 *libc.$so.[0-9]*) dflt=$majonly ;;
5409 *) dflt=libperl.$so ;;
5419 I need to select a good name for the shared libperl. If your system uses
5420 library names with major and minor numbers, then you might want something
5421 like $majmin. Alternatively, if your system uses a single version
5422 number for shared libraries, then you might want to use $majonly.
5423 Or, your system might be quite happy with a simple libperl.$so.
5425 Since the shared libperl will get installed into a version-specific
5426 architecture-dependent directory, the version number of the shared perl
5427 library probably isn't important, so the default should be o.k.
5430 rp='What name do you want to give to the shared libperl?'
5433 echo "Ok, I'll use $libperl"
5436 libperl="libperl${_a}"
5440 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5444 WARNING: Use of the shrpdir variable for the installation location of
5445 the shared $libperl is not supported. It was never documented and
5446 will not work in this version. Let me (perlbug@perl.com)
5447 know of any problems this may cause.
5453 But your current setting of $shrpdir is
5454 the default anyway, so it's harmless.
5459 Further, your current attempted setting of $shrpdir
5460 conflicts with the value of $archlibexp/CORE
5461 that installperl will use.
5468 # How will the perl executable find the installed shared $libperl?
5469 # Add $xxx to ccdlflags.
5470 # If we can't figure out a command-line option, use $shrpenv to
5471 # set env LD_RUN_PATH. The main perl makefile uses this.
5472 shrpdir=$archlibexp/CORE
5475 if "$useshrplib"; then
5478 # We'll set it in Makefile.SH...
5484 xxx="-Wl,-R$shrpdir"
5486 linux|irix*|dec_osf)
5487 xxx="-Wl,-rpath,$shrpdir"
5490 # next doesn't like the default...
5493 # beos doesn't like the default, either.
5496 # hpux doesn't like the default, either.
5497 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5500 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5506 # Only add $xxx if it isn't already in ccdlflags.
5507 case " $ccdlflags " in
5509 *) ccdlflags="$ccdlflags $xxx"
5512 Adding $xxx to the flags
5513 passed to $ld so that the perl executable will find the
5514 installed shared $libperl.
5522 # Respect a hint or command-line value.
5524 '') shrpenv="$tmp_shrpenv" ;;
5527 : determine where manual pages go
5528 set man1dir man1dir none
5532 $spackage has manual pages available in source form.
5536 echo "However, you don't have nroff, so they're probably useless to you."
5538 '') man1dir="none";;
5541 echo "If you don't want the manual sources installed, answer 'none'."
5546 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5547 lookpath="$lookpath $prefixexp/man/p_man/man1"
5548 lookpath="$lookpath $prefixexp/man/u_man/man1"
5549 lookpath="$lookpath $prefixexp/man/man.1"
5551 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5552 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5562 rp="Where do the main $spackage manual pages (source) go?"
5564 if $test "X$man1direxp" != "X$ansexp"; then
5568 man1direxp="$ansexp"
5576 Since you are running AFS, I need to distinguish the directory in which
5577 manual pages reside from the directory in which they are installed (and from
5578 which they are presumably copied to the former directory by occult means).
5581 case "$installman1dir" in
5582 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5583 *) dflt="$installman1dir";;
5586 rp='Where will man pages be installed?'
5588 installman1dir="$ans"
5590 installman1dir="$man1direxp"
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 '') case "$prefix" in
5698 *$prog*) dflt=`echo $man1dir |
5699 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5700 *) dflt="$privlib/man/man3" ;;
5704 *) dflt="$man3dir" ;;
5709 rp="Where do the $package library man pages (source) go?"
5711 if test "X$man3direxp" != "X$ansexp"; then
5716 man3direxp="$ansexp"
5724 Since you are running AFS, I need to distinguish the directory in which
5725 manual pages reside from the directory in which they are installed (and from
5726 which they are presumably copied to the former directory by occult means).
5729 case "$installman3dir" in
5730 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5731 *) dflt="$installman3dir";;
5734 rp='Where will man pages be installed?'
5736 installman3dir="$ans"
5738 installman3dir="$man3direxp"
5741 : What suffix to use on installed man pages
5748 rp="What suffix should be used for the $package library man pages?"
5750 '') case "$man3dir" in
5764 *) dflt="$man3ext";;
5771 : see if we have to deal with yellow pages, now NIS.
5772 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5773 if $test -f /usr/etc/nibindd; then
5775 echo "I'm fairly confident you're on a NeXT."
5777 rp='Do you get the hosts file via NetInfo?'
5786 y*) hostcat='nidump hosts .';;
5787 *) case "$hostcat" in
5788 nidump*) hostcat='';;
5798 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5806 rp='Are you getting the hosts file via yellow pages?'
5809 y*) hostcat='ypcat hosts';;
5810 *) hostcat='cat /etc/hosts';;
5816 '') hostcat='cat /etc/hosts';;
5819 '') groupcat='cat /etc/group';;
5822 '') passcat='cat /etc/passwd';;
5825 : now get the host name
5827 echo "Figuring out host name..." >&4
5828 case "$myhostname" in
5830 echo 'Maybe "hostname" will work...'
5831 if tans=`sh -c hostname 2>&1` ; then
5839 if $test "$cont"; then
5841 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5842 if tans=`cat /etc/systemid 2>&1` ; then
5844 phostname='cat /etc/systemid'
5845 echo "Whadyaknow. Xenix always was a bit strange..."
5848 elif $test -r /etc/systemid; then
5849 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5852 if $test "$cont"; then
5853 echo 'No, maybe "uuname -l" will work...'
5854 if tans=`sh -c 'uuname -l' 2>&1` ; then
5856 phostname='uuname -l'
5858 echo 'Strange. Maybe "uname -n" will work...'
5859 if tans=`sh -c 'uname -n' 2>&1` ; then
5861 phostname='uname -n'
5863 echo 'Oh well, maybe I can mine it out of whoami.h...'
5864 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5865 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5866 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5868 case "$myhostname" in
5869 '') echo "Does this machine have an identity crisis or something?"
5872 echo "Well, you said $myhostname before..."
5873 phostname='echo $myhostname';;
5879 : you do not want to know about this
5884 if $test "$myhostname" ; then
5886 rp='Your host name appears to be "'$myhostname'".'" Right?"
5894 : bad guess or no guess
5895 while $test "X$myhostname" = X ; do
5897 rp="Please type the (one word) name of your host:"
5902 : translate upper to lower if necessary
5903 case "$myhostname" in
5905 echo "(Normalizing case in your host name)"
5906 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5910 case "$myhostname" in
5912 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5913 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5914 echo "(Trimming domain name from host name--host name is now $myhostname)"
5916 *) case "$mydomain" in
5919 test "X$hostcat" = "Xypcat hosts" &&
5920 ypmatch "$myhostname" hosts 2>/dev/null |\
5921 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5924 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5925 /[ ]$myhostname[ . ]/p" > hosts
5928 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5929 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5930 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5931 hosts | $sort | $uniq | \
5932 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5933 case `$echo X$dflt` in
5934 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5937 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5942 tans=`./loc resolv.conf X /etc /usr/etc`
5943 if $test -f "$tans"; then
5944 echo "(Attempting domain name extraction from $tans)"
5945 dflt=.`$sed -n -e 's/ / /g' \
5946 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5947 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5949 .) dflt=.`$sed -n -e 's/ / /g' \
5950 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5951 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5958 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5959 dflt=.`sh -c domainname 2>/dev/null`
5962 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5967 .) echo "(Lost all hope -- silly guess then)"
5973 *) dflt="$mydomain";;
5977 rp="What is your domain name?"
5987 : translate upper to lower if necessary
5990 echo "(Normalizing case in your domain name)"
5991 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5995 : a little sanity check here
5996 case "$phostname" in
5999 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6000 $myhostname$mydomain|$myhostname) ;;
6002 case "$phostname" in
6004 echo "(That doesn't agree with your whoami.h file, by the way.)"
6007 echo "(That doesn't agree with your $phostname command, by the way.)"
6017 I need to get your e-mail address in Internet format if possible, i.e.
6018 something like user@host.domain. Please answer accurately since I have
6019 no easy means to double check it. The default value provided below
6020 is most probably close to the reality but may not be valid from outside
6021 your organization...
6025 while test "$cont"; do
6027 '') dflt="$cf_by@$myhostname$mydomain";;
6028 *) dflt="$cf_email";;
6030 rp='What is your e-mail address?'
6036 rp='Address does not look like an Internet one. Use it anyway?'
6052 If you or somebody else will be maintaining perl at your site, please
6053 fill in the correct e-mail address here so that they may be contacted
6054 if necessary. Currently, the "perlbug" program included with perl
6055 will send mail to this address in addition to perlbug@perl.com. You may
6056 enter "none" for no administrator.
6059 case "$perladmin" in
6060 '') dflt="$cf_email";;
6061 *) dflt="$perladmin";;
6063 rp='Perl administrator e-mail address'
6067 : figure out how to guarantee perl startup
6068 case "$startperl" in
6070 case "$sharpbang" in
6074 I can use the #! construct to start perl on your system. This will
6075 make startup of perl scripts faster, but may cause problems if you
6076 want to share those scripts and perl is not in a standard place
6077 ($binexp/perl) on all your platforms. The alternative is to force
6078 a shell by starting the script with a single ':' character.
6082 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6085 none) startperl=": # use perl";;
6086 *) startperl="#!$ans"
6087 if $test 30 -lt `echo "$ans" | wc -c`; then
6090 WARNING: Some systems limit the #! command to 32 characters.
6091 If you experience difficulty running Perl scripts with #!, try
6092 installing Perl in a directory with a shorter pathname.
6098 *) startperl=": # use perl"
6103 echo "I'll use $startperl to start perl scripts."
6105 : figure best path for perl in scripts
6108 perlpath="$binexp/perl"
6109 case "$startperl" in
6114 I will use the "eval 'exec'" idiom to start Perl on your system.
6115 I can use the full path of your Perl binary for this purpose, but
6116 doing so may cause problems if you want to share those scripts and
6117 Perl is not always in a standard place ($binexp/perl).
6121 rp="What path shall I use in \"eval 'exec'\"?"
6128 case "$startperl" in
6130 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6133 : determine where public executable scripts go
6134 set scriptdir scriptdir
6136 case "$scriptdir" in
6139 : guess some guesses
6140 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6141 $test -d /usr/share/bin && dflt=/usr/share/bin
6142 $test -d /usr/local/script && dflt=/usr/local/script
6143 $test -d $prefixexp/script && dflt=$prefixexp/script
6147 *) dflt="$scriptdir"
6152 Some installations have a separate directory just for executable scripts so
6153 that they can mount it across multiple architectures but keep the scripts in
6154 one spot. You might, for example, have a subdirectory of /usr/share for this.
6155 Or you might just lump your scripts in with all your other executables.
6159 rp='Where do you keep publicly executable scripts?'
6161 if $test "X$ansexp" != "X$scriptdirexp"; then
6165 scriptdirexp="$ansexp"
6169 Since you are running AFS, I need to distinguish the directory in which
6170 scripts reside from the directory in which they are installed (and from
6171 which they are presumably copied to the former directory by occult means).
6174 case "$installscript" in
6175 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6176 *) dflt="$installscript";;
6179 rp='Where will public scripts be installed?'
6181 installscript="$ans"
6183 installscript="$scriptdirexp"
6186 : determine where site specific libraries go.
6187 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6188 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6190 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6191 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6196 The installation process will also create a directory for
6197 site-specific extensions and modules. Some users find it convenient
6198 to place all site-specific files in this directory rather than in the
6199 main distribution directory.
6203 rp='Pathname for the site-specific library files?'
6205 if $test "X$sitelibexp" != "X$ansexp"; then
6209 sitelibexp="$ansexp"
6213 Since you are running AFS, I need to distinguish the directory in
6214 which site-specific files reside from the directory in which they are
6215 installed (and from which they are presumably copied to the former
6216 directory by occult means).
6219 case "$installsitelib" in
6220 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6221 *) dflt="$installsitelib";;
6224 rp='Where will site-specific files be installed?'
6226 installsitelib="$ans"
6228 installsitelib="$sitelibexp"
6231 : determine where site specific architecture-dependent libraries go.
6232 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6233 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6234 : sitelib may have an optional trailing /share.
6235 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6236 tdflt="$tdflt/$archname"
6237 set sitearch sitearch none
6240 '') dflt="$tdflt" ;;
6241 *) dflt="$sitearch" ;;
6245 The installation process will also create a directory for
6246 architecture-dependent site-specific extensions and modules.
6250 rp='Pathname for the site-specific architecture-dependent library files?'
6252 if $test "X$sitearchexp" != "X$ansexp"; then
6256 sitearchexp="$ansexp"
6260 Since you are running AFS, I need to distinguish the directory in
6261 which site-specific architecture-dependent library files reside from
6262 the directory in which they are installed (and from which they are
6263 presumably copied to the former directory by occult means).
6266 case "$installsitearch" in
6267 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6268 *) dflt="$installsitearch";;
6271 rp='Where will site-specific architecture-dependent files be installed?'
6273 installsitearch="$ans"
6275 installsitearch="$sitearchexp"
6280 Previous version of $package used the standard IO mechanisms as defined
6281 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6282 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6283 the default. This abstraction layer can use AT&T's sfio (if you already
6284 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6285 problems with some extension modules. Using PerlIO with stdio is safe,
6286 but it is slower than plain stdio and therefore is not the default.
6288 If this doesn't make any sense to you, just accept the default 'n'.
6290 case "$useperlio" in
6291 $define|true|[yY]*) dflt='y';;
6294 rp='Use the experimental PerlIO abstraction layer?'
6301 echo "Ok, doing things the stdio way"
6308 : Check how to convert floats to strings.
6309 if test "X$d_Gconvert" = X; then
6311 echo "Checking for an efficient way to convert floats to strings."
6314 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6315 char *myname = "gconvert";
6318 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6319 char *myname = "gcvt";
6322 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6323 char *myname = "sprintf";
6329 checkit(expect, got)
6333 if (strcmp(expect, got)) {
6334 printf("%s oddity: Expected %s, got %s\n",
6335 myname, expect, got);
6345 /* This must be 1st test on (which?) platform */
6346 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6347 Gconvert(0.1, 8, 0, buf);
6348 checkit("0.1", buf);
6350 Gconvert(1.0, 8, 0, buf);
6353 Gconvert(0.0, 8, 0, buf);
6356 Gconvert(-1.0, 8, 0, buf);
6359 /* Some Linux gcvt's give 1.e+5 here. */
6360 Gconvert(100000.0, 8, 0, buf);
6361 checkit("100000", buf);
6363 /* Some Linux gcvt's give -1.e+5 here. */
6364 Gconvert(-100000.0, 8, 0, buf);
6365 checkit("-100000", buf);
6370 case "$d_Gconvert" in
6371 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6372 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6373 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6374 *) xxx_list='gconvert gcvt sprintf' ;;
6377 for xxx_convert in $xxx_list; do
6378 echo "Trying $xxx_convert"
6380 set try -DTRY_$xxx_convert
6381 if eval $compile; then
6382 echo "$xxx_convert" found. >&4
6384 echo "I'll use $xxx_convert to convert floats into a string." >&4
6387 echo "...But $xxx_convert didn't work as I expected."
6390 echo "$xxx_convert NOT found." >&4
6394 case "$xxx_convert" in
6395 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6396 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6397 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6401 : Initialize h_fcntl
6404 : Initialize h_sysfile
6407 : access call always available on UNIX
6411 : locate the flags for 'access()'
6415 $cat >access.c <<'EOCP'
6416 #include <sys/types.h>
6421 #include <sys/file.h>
6430 : check sys/file.h first, no particular reason here
6431 if $test `./findhdr sys/file.h` && \
6432 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6434 echo "<sys/file.h> defines the *_OK access constants." >&4
6435 elif $test `./findhdr fcntl.h` && \
6436 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6438 echo "<fcntl.h> defines the *_OK access constants." >&4
6439 elif $test `./findhdr unistd.h` && \
6440 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6441 echo "<unistd.h> defines the *_OK access constants." >&4
6443 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6449 : see if accessx exists
6450 set accessx d_accessx
6453 : see if alarm exists
6457 : Look for GNU-cc style attribute checking
6459 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6460 $cat >attrib.c <<'EOCP'
6462 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6464 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6465 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6466 echo "Your C compiler doesn't fully support __attribute__."
6469 echo "Your C compiler supports __attribute__."
6473 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6480 : see if bcmp exists
6484 : see if bcopy exists
6488 : see if this is a unistd.h system
6489 set unistd.h i_unistd
6492 : see if getpgrp exists
6493 set getpgrp d_getpgrp
6496 case "$d_getpgrp" in
6499 echo "Checking to see which flavor of getpgrp is in use..."
6502 #include <sys/types.h>
6504 # include <unistd.h>
6508 if (getuid() == 0) {
6509 printf("(I see you are running Configure as super-user...)\n");
6513 if (getpgrp(1) == 0)
6522 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6523 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6525 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6526 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6529 echo "I can't seem to compile and run the test program."
6531 xxx="a USG one, i.e. you use getpgrp()."
6533 # SVR4 systems can appear rather BSD-ish.
6536 xxx="a BSD one, i.e. you use getpgrp(pid)."
6540 xxx="probably a USG one, i.e. you use getpgrp()."
6545 echo "Assuming your getpgrp is $xxx" >&4
6554 : see if setpgrp exists
6555 set setpgrp d_setpgrp
6558 case "$d_setpgrp" in
6561 echo "Checking to see which flavor of setpgrp is in use..."
6564 #include <sys/types.h>
6566 # include <unistd.h>
6570 if (getuid() == 0) {
6571 printf("(I see you are running Configure as super-user...)\n");
6575 if (-1 == setpgrp(1, 1))
6578 if (setpgrp() != -1)
6584 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6585 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6587 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6588 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6591 echo "(I can't seem to compile and run the test program.)"
6593 xxx="a USG one, i.e. you use setpgrp()."
6595 # SVR4 systems can appear rather BSD-ish.
6598 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6602 xxx="probably a USG one, i.e. you use setpgrp()."
6607 echo "Assuming your setpgrp is $xxx" >&4
6615 : see if bzero exists
6619 : check for lengths of integral types
6623 echo "Checking to see how big your integers are..." >&4
6624 $cat >intsize.c <<'EOCP'
6628 printf("intsize=%d;\n", sizeof(int));
6629 printf("longsize=%d;\n", sizeof(long));
6630 printf("shortsize=%d;\n", sizeof(short));
6635 if eval $compile_ok && ./intsize > /dev/null; then
6637 echo "Your integers are $intsize bytes long."
6638 echo "Your long integers are $longsize bytes long."
6639 echo "Your short integers are $shortsize bytes long."
6643 Help! I can't compile and run the intsize test program: please enlighten me!
6644 (This is probably a misconfiguration in your system or libraries, and
6645 you really ought to fix it. Still, I'll try anyway.)
6649 rp="What is the size of an integer (in bytes)?"
6653 rp="What is the size of a long integer (in bytes)?"
6657 rp="What is the size of a short integer (in bytes)?"
6663 $rm -f intsize intsize.*
6665 : see if signal is declared as pointer to function returning int or void
6667 xxx=`./findhdr signal.h`
6668 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6669 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6670 echo "You have int (*signal())() instead of void." >&4
6672 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6673 echo "You have void (*signal())()." >&4
6675 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6676 echo "You have int (*signal())() instead of void." >&4
6678 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6679 echo "You have void (*signal())()." >&4
6682 case "$d_voidsig" in
6684 echo "I can't determine whether signal handler returns void or int..." >&4
6686 rp="What type does your signal handler return?"
6693 echo "As you already told me, signal handler returns void." >&4
6696 *) echo "As you already told me, signal handler returns int." >&4
6703 case "$d_voidsig" in
6704 "$define") signal_t="void";;
6709 : check for ability to cast large floats to 32-bit ints.
6711 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6712 if $test "$intsize" -ge 4; then
6719 #include <sys/types.h>
6721 $signal_t blech(s) int s; { exit(3); }
6728 signal(SIGFPE, blech);
6730 /* Don't let compiler optimize the test away. Store the number
6731 in a writable string for gcc to pass to sscanf under HP/UX.
6733 sprintf(str, "2147483647");
6734 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6738 /* x86 processors will probably give 0x8000 0000, which is a
6739 sign change. We don't want that. We want to mimic SPARC
6740 behavior here, which is to preserve the sign and give
6743 if (i32 != ($xxx) f)
6749 if eval $compile_ok; then
6753 echo "(I can't seem to compile the test program--assuming it can't)"
6761 echo "Nope, it can't."
6768 : check for ability to cast negative floats to unsigned
6770 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6773 #include <sys/types.h>
6775 $signal_t blech(s) int s; { exit(7); }
6776 $signal_t blech_in_list(s) int s; { exit(4); }
6777 unsigned long dummy_long(p) unsigned long p; { return p; }
6778 unsigned int dummy_int(p) unsigned int p; { return p; }
6779 unsigned short dummy_short(p) unsigned short p; { return p; }
6783 unsigned long along;
6785 unsigned short ashort;
6789 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6790 a direct f = -123. assignment. gcc-2.8.0 reportedly
6791 optimized the whole file away
6793 /* Store the number in a writable string for gcc to pass to
6796 sprintf(str, "-123");
6797 sscanf(str, "%lf", &f); /* f = -123.; */
6799 signal(SIGFPE, blech);
6800 along = (unsigned long)f;
6801 aint = (unsigned int)f;
6802 ashort = (unsigned short)f;
6803 if (along != (unsigned long)-123)
6805 if (aint != (unsigned int)-123)
6807 if (ashort != (unsigned short)-123)
6809 sprintf(str, "1073741824.");
6810 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6813 along = (unsigned long)f;
6814 if (along != 0x80000000)
6818 along = (unsigned long)f;
6819 if (along != 0x7fffffff)
6823 along = (unsigned long)f;
6824 if (along != 0x80000001)
6828 signal(SIGFPE, blech_in_list);
6829 sprintf(str, "123.");
6830 sscanf(str, "%lf", &f); /* f = 123.; */
6831 along = dummy_long((unsigned long)f);
6832 aint = dummy_int((unsigned int)f);
6833 ashort = dummy_short((unsigned short)f);
6834 if (along != (unsigned long)123)
6836 if (aint != (unsigned int)123)
6838 if (ashort != (unsigned short)123)
6845 if eval $compile_ok; then
6849 echo "(I can't seem to compile the test program--assuming it can't)"
6852 case "$castflags" in
6857 echo "Nope, it can't."
6864 : see if vprintf exists
6866 if set vprintf val -f d_vprintf; eval $csym; $val; then
6867 echo 'vprintf() found.' >&4
6869 $cat >vprintf.c <<'EOF'
6870 #include <varargs.h>
6872 int main() { xxx("foo"); }
6881 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6885 if eval $compile && ./vprintf; then
6886 echo "Your vsprintf() returns (int)." >&4
6889 echo "Your vsprintf() returns (char*)." >&4
6893 echo 'vprintf() NOT found.' >&4
6903 : see if chown exists
6907 : see if chroot exists
6911 : see if chsize exists
6915 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6916 while $test $# -ge 2; do
6918 $define) echo "#include <$2>";;
6922 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6923 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6932 : see if this is a sys/uio.h system
6933 set sys/uio.h i_sysuio
6936 echo "Checking to see if your system supports struct iovec..." >&4
6937 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6939 case "$d_iovec_s" in
6940 "$define") echo "Yup, it does." >&4
6942 *) echo "Nope, it doesn't." >&4
6948 : see whether socket exists
6950 $echo $n "Hmm... $c" >&4
6951 if set socket val -f d_socket; eval $csym; $val; then
6952 echo "Looks like you have Berkeley networking support." >&4
6954 if set setsockopt val -f; eval $csym; $val; then
6957 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6961 if $contains socklib libc.list >/dev/null 2>&1; then
6962 echo "Looks like you have Berkeley networking support." >&4
6964 : we will have to assume that it supports the 4.2 BSD interface
6967 echo "You don't have Berkeley networking in libc$_a..." >&4
6968 if test "X$d_socket" = "X$define"; then
6969 echo "...but you seem to believe that you have sockets." >&4
6971 for net in net socket
6973 if test -f /usr/lib/lib$net$_a; then
6974 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6975 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6976 if $contains socket libc.list >/dev/null 2>&1; then
6981 echo "...but the Wollongong group seems to have hacked it in." >&4
6982 sockethdr="-I/usr/netinclude"
6985 echo "Found Berkeley sockets interface in lib$net." >& 4
6986 if $contains setsockopt libc.list >/dev/null 2>&1; then
6989 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6996 if test "X$d_socket" != "X$define"; then
6997 echo "or anywhere else I see." >&4
7005 : see if socketpair exists
7006 set socketpair d_sockpair
7011 echo "Checking the availability of certain socket constants..." >& 4
7012 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
7013 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
7015 #include <sys/types.h>
7016 #include <sys/socket.h>
7022 set try; if eval $compile; then
7025 set d_${enum}; eval $setvar
7029 set sendmsg d_sendmsg
7032 set recvmsg d_recvmsg
7036 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7037 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7039 case "$d_msghdr_s" in
7040 "$define") echo "Yup, it does." >&4
7042 *) echo "Nope, it doesn't." >&4
7046 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7047 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7049 case "$d_cmsghdr_s" in
7050 "$define") echo "Yup, it does." >&4
7052 *) echo "Nope, it doesn't." >&4
7056 : check for const keyword
7058 echo 'Checking to see if your C compiler knows about "const"...' >&4
7059 $cat >const.c <<'EOCP'
7060 typedef struct spug { int drokk; } spug;
7067 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7069 echo "Yup, it does."
7072 echo "Nope, it doesn't."
7077 : see if crypt exists
7079 if set crypt val -f d_crypt; eval $csym; $val; then
7080 echo 'crypt() found.' >&4
7084 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7085 if $test -z "$cryptlib"; then
7086 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7090 if $test -z "$cryptlib"; then
7091 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7095 if $test -z "$cryptlib"; then
7096 cryptlib=`./loc libcrypt$_a "" $libpth`
7100 if $test -z "$cryptlib"; then
7101 echo 'crypt() NOT found.' >&4
7110 : get csh whereabouts
7112 'csh') val="$undef" ;;
7117 : Respect a hint or command line value for full_csh.
7119 '') full_csh=$csh ;;
7122 : see if cuserid exists
7123 set cuserid d_cuserid
7126 : see if this is a limits.h system
7127 set limits.h i_limits
7130 : see if this is a float.h system
7134 : See if number of significant digits in a double precision number is known
7136 $cat >dbl_dig.c <<EOM
7146 printf("Contains DBL_DIG");
7149 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7150 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7151 echo "DBL_DIG found." >&4
7154 echo "DBL_DIG NOT found." >&4
7162 if $test X"$use64bits" = X"$define"; then
7163 : see if dbminit64 exists
7164 set dbminit64 d_dbminit64
7167 : see if dbmclose64 exists
7168 set dbmclose64 d_dbmclose64
7171 : see if fetch64 exists
7172 set fetch64 d_fetch64
7175 : see if store64 exists
7176 set store64 d_store64
7179 : see if delete64 exists
7180 set delete64 d_delete64
7183 : see if firstkey64 exists
7184 set firstkey64 d_firstkey64
7187 : see if nextkey64 exists
7188 set nextkey64 d_nextkey64
7192 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7199 : see if difftime exists
7200 set difftime d_difftime
7203 : see if sys/stat.h is available
7204 set sys/stat.h i_sysstat
7207 : see if this is a dirent system
7209 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7211 echo "<dirent.h> found." >&4
7214 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7215 echo "<sys/dir.h> found." >&4
7218 xinc=`./findhdr sys/ndir.h`
7220 echo "<dirent.h> NOT found." >&4
7225 : Look for type of directory structure.
7227 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7229 case "$direntrytype" in
7232 $define) guess1='struct dirent' ;;
7233 *) guess1='struct direct' ;;
7236 *) guess1="$direntrytype"
7241 'struct dirent') guess2='struct direct' ;;
7242 *) guess2='struct dirent' ;;
7245 if $contains "$guess1" try.c >/dev/null 2>&1; then
7246 direntrytype="$guess1"
7247 echo "Your directory entries are $direntrytype." >&4
7248 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7249 direntrytype="$guess2"
7250 echo "Your directory entries seem to be $direntrytype." >&4
7252 echo "I don't recognize your system's directory entries." >&4
7253 rp="What type is used for directory entries on this system?"
7261 : see if the directory entry stores field length
7263 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7264 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7265 echo "Good, your directory entry keeps length information in d_namlen." >&4
7268 echo "Your directory entry does not know about the d_namlen field." >&4
7276 if $test X"$use64bits" = X"$define"; then
7277 : see if fstat64 exists
7278 set fstat64 d_fstat64
7281 : see if ftruncate64 exists
7282 set ftruncate64 d_ftruncate64
7285 : see if lockf64 exists
7286 set lockf64 d_lockf64
7289 : see if llseek exists
7293 : see if lseek64 exists
7294 set lseek64 d_lseek64
7297 : see if lstat64 exists
7298 set lstat64 d_lstat64
7301 : see if open64 exists
7305 : see if opendir64 exists
7306 set opendir64 d_opendir64
7309 : see if readdir64 exists
7310 set readdir64 d_readdir64
7313 : see if seekdir64 exists
7314 set seekdir64 d_seekdir64
7317 : see if stat64 exists
7321 : see if telldir64 exists
7322 set telldir64 d_telldir64
7325 : see if truncate64 exists
7326 set truncate64 d_truncate64
7331 echo $n "Checking to see if your system supports off64_t...$c" >&4
7333 #include <sys/types.h>
7335 off64_t foo() { off64_t x; x = 7; return x; }'
7337 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7339 echo " Yup, it does." >&4
7342 echo " Nope, it doesn't." >&4
7348 : check for offset_t
7350 echo $n "Checking to see if your system supports offset_t...$c" >&4
7352 #include <sys/types.h>
7354 offset_t foo() { offset_t x; x = 7; return x; }'
7356 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7358 echo " Yup, it does." >&4
7361 echo " Nope, it doesn't." >&4
7369 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7371 case "$i_sysstat" in
7374 #include <sys/types.h>
7375 #include <sys/stat.h>
7376 ino64_t foo() { ino64_t x; x = 7; return x; }'
7378 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7384 if $test "X$val" = X"$define"; then
7385 echo " Yup, it does." >&4
7387 echo " Nope, it doesn't." >&4
7392 : check for struct flock64
7394 echo "Checking to see if your system supports struct flock64..." >&4
7396 set d_flock64_s flock64 l_len define fcntl.h
7403 case "$d_flock64_s" in
7404 "$define") echo "Yup, it does." >&4
7406 *) echo "Nope, it doesn't." >&4
7410 : check for struct dirent64
7412 echo "Checking to see if your system supports struct dirent64..." >&4
7413 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7415 case "$d_dirent64_s" in
7416 "$define") echo "Yup, it does." >&4
7418 *) echo "Nope, it doesn't." >&4
7424 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
7431 : see if dlerror exists
7434 set dlerror d_dlerror
7438 : see if dlfcn is available
7446 On a few systems, the dynamically loaded modules that perl generates and uses
7447 will need a different extension than shared libs. The default will probably
7455 rp='What is the extension of dynamically loaded modules'
7464 : Check if dlsym need a leading underscore
7470 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7471 $cat >dyna.c <<'EOM'
7480 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7482 #include <sys/types.h>
7496 int mode = RTLD_LAZY ;
7498 handle = dlopen("./dyna.$dlext", mode) ;
7499 if (handle == NULL) {
7504 symbol = dlsym(handle, "fred") ;
7505 if (symbol == NULL) {
7506 /* try putting a leading underscore */
7507 symbol = dlsym(handle, "_fred") ;
7508 if (symbol == NULL) {
7521 : Call the object file tmp-dyna.o in case dlext=o.
7522 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7523 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7524 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7525 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7528 1) echo "Test program failed using dlopen." >&4
7529 echo "Perhaps you should not use dynamic loading." >&4;;
7530 2) echo "Test program failed using dlsym." >&4
7531 echo "Perhaps you should not use dynamic loading." >&4;;
7532 3) echo "dlsym needs a leading underscore" >&4
7534 4) echo "dlsym doesn't need a leading underscore." >&4;;
7537 echo "I can't compile and run the test program." >&4
7542 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7547 hasproto='varname=$1; func=$2; shift; shift;
7548 while $test $# -ge 2; do
7550 $define) echo "#include <$2>";;
7554 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7555 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7556 echo "$func() prototype found.";
7559 echo "$func() prototype NOT found.";
7564 $rm -f try.c tryout.c'
7566 : see if prototype for drand48 is available
7568 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7571 : see if dup2 exists
7575 : see if eaccess exists
7576 set eaccess d_eaccess
7579 : see if endgrent exists
7580 set endgrent d_endgrent
7583 : see if endhostent exists
7584 set endhostent d_endhent
7587 : see if endnetent exists
7588 set endnetent d_endnent
7591 : see if endprotoent exists
7592 set endprotoent d_endpent
7595 : see if endpwent exists
7596 set endpwent d_endpwent
7599 : see if endservent exists
7600 set endservent d_endsent
7603 : see if endspent exists
7604 set endspent d_endspent
7607 : Locate the flags for 'open()'
7609 $cat >open3.c <<'EOCP'
7610 #include <sys/types.h>
7615 #include <sys/file.h>
7626 : check sys/file.h first to get FREAD on Sun
7627 if $test `./findhdr sys/file.h` && \
7628 set open3 -DI_SYS_FILE && eval $compile; then
7630 echo "<sys/file.h> defines the O_* constants..." >&4
7632 echo "and you have the 3 argument form of open()." >&4
7635 echo "but not the 3 argument form of open(). Oh, well." >&4
7638 elif $test `./findhdr fcntl.h` && \
7639 set open3 -DI_FCNTL && eval $compile; then
7641 echo "<fcntl.h> defines the O_* constants..." >&4
7643 echo "and you have the 3 argument form of open()." >&4
7646 echo "but not the 3 argument form of open(). Oh, well." >&4
7651 echo "I can't find the O_* constant definitions! You got problems." >&4
7657 : check for non-blocking I/O stuff
7658 case "$h_sysfile" in
7659 true) echo "#include <sys/file.h>" > head.c;;
7662 true) echo "#include <fcntl.h>" > head.c;;
7663 *) echo "#include <sys/fcntl.h>" > head.c;;
7668 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7669 case "$o_nonblock" in
7672 $cat >>try.c <<'EOCP'
7675 printf("O_NONBLOCK\n");
7679 printf("O_NDELAY\n");
7683 printf("FNDELAY\n");
7690 if eval $compile_ok; then
7692 case "$o_nonblock" in
7693 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7694 *) echo "Seems like we can use $o_nonblock.";;
7697 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7700 *) echo "Using $hint value $o_nonblock.";;
7702 $rm -f try try.* .out core
7705 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7711 #include <sys/types.h>
7713 #define MY_O_NONBLOCK $o_nonblock
7714 #ifndef errno /* XXX need better Configure test */
7717 $signal_t blech(x) int x; { exit(3); }
7719 $cat >> try.c <<'EOCP'
7727 pipe(pd); /* Down: child -> parent */
7728 pipe(pu); /* Up: parent -> child */
7731 close(pd[1]); /* Parent reads from pd[0] */
7732 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7733 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7735 signal(SIGALRM, blech);
7737 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7739 sprintf(string, "%d\n", ret);
7740 write(2, string, strlen(string));
7743 if (errno == EAGAIN) {
7749 if (errno == EWOULDBLOCK)
7750 printf("EWOULDBLOCK\n");
7753 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7754 sleep(2); /* Give it time to close our pipe */
7756 ret = read(pd[0], buf, 1); /* Should read EOF */
7758 sprintf(string, "%d\n", ret);
7759 write(3, string, strlen(string));
7763 close(pd[0]); /* We write to pd[1] */
7764 close(pu[1]); /* We read from pu[0] */
7765 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7766 close(pd[1]); /* Pipe pd is now fully closed! */
7767 exit(0); /* Bye bye, thank you for playing! */
7771 if eval $compile_ok; then
7772 echo "$startsh" >mtry
7773 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7775 ./mtry >/dev/null 2>&1
7777 0) eagain=`$cat try.out`;;
7778 1) echo "Could not perform non-blocking setting!";;
7779 2) echo "I did a successful read() for something that was not there!";;
7780 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7781 *) echo "Something terribly wrong happened during testing.";;
7783 rd_nodata=`$cat try.ret`
7784 echo "A read() system call with no data present returns $rd_nodata."
7785 case "$rd_nodata" in
7788 echo "(That's peculiar, fixing that to be -1.)"
7794 echo "Forcing errno EAGAIN on read() with no data available."
7798 echo "Your read() sets errno to $eagain when no data is available."
7801 status=`$cat try.err`
7803 0) echo "And it correctly returns 0 to signal EOF.";;
7804 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7805 *) echo "However, your read() returns '$status' on EOF??";;
7808 if test "$status" = "$rd_nodata"; then
7809 echo "WARNING: you can't distinguish between EOF and no data!"
7813 echo "I can't compile the test program--assuming errno EAGAIN will do."
7820 echo "Using $hint value $eagain."
7821 echo "Your read() returns $rd_nodata when no data is present."
7822 case "$d_eofnblk" in
7823 "$define") echo "And you can see EOF because read() returns 0.";;
7824 "$undef") echo "But you can't see EOF status from read() returned value.";;
7826 echo "(Assuming you can't see EOF status from read anyway.)"
7832 $rm -f try try.* .out core head.c mtry
7834 : see if fchmod exists
7838 : see if fchown exists
7842 : see if this is an fcntl system
7846 : see if sys/select.h has to be included
7847 set sys/select.h i_sysselct
7850 : see if we should include time.h, sys/time.h, or both
7852 if test "X$timeincl" = X; then
7853 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7854 $echo $n "I'm now running the test program...$c"
7855 $cat >try.c <<'EOCP'
7856 #include <sys/types.h>
7861 #ifdef SYSTIMEKERNEL
7864 #include <sys/time.h>
7867 #include <sys/select.h>
7876 struct timezone tzp;
7878 if (foo.tm_sec == foo.tm_sec)
7881 if (bar.tv_sec == bar.tv_sec)
7888 for s_timezone in '-DS_TIMEZONE' ''; do
7890 for s_timeval in '-DS_TIMEVAL' ''; do
7891 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7892 for i_time in '' '-DI_TIME'; do
7893 for i_systime in '-DI_SYSTIME' ''; do
7896 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7897 if eval $compile; then
7898 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7902 $echo $n "Succeeded with $flags$c"
7914 *SYSTIMEKERNEL*) i_systimek="$define"
7915 timeincl=`./findhdr sys/time.h`
7916 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7917 *) i_systimek="$undef";;
7920 *I_TIME*) i_time="$define"
7921 timeincl=`./findhdr time.h`" $timeincl"
7922 echo "We'll include <time.h>." >&4;;
7923 *) i_time="$undef";;
7926 *I_SYSTIME*) i_systime="$define"
7927 timeincl=`./findhdr sys/time.h`" $timeincl"
7928 echo "We'll include <sys/time.h>." >&4;;
7929 *) i_systime="$undef";;
7934 : check for fd_set items
7937 Checking to see how well your C compiler handles fd_set and friends ...
7939 $cat >fd_set.c <<EOCP
7940 #$i_systime I_SYS_TIME
7941 #$i_sysselct I_SYS_SELECT
7942 #$d_socket HAS_SOCKET
7943 #include <sys/types.h>
7945 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7948 #include <sys/time.h>
7951 #include <sys/select.h>
7960 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7967 set fd_set -DTRYBITS
7968 if eval $compile; then
7969 d_fds_bits="$define"
7971 echo "Well, your system knows about the normal fd_set typedef..." >&4
7973 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7974 d_fd_macros="$define"
7977 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7979 d_fd_macros="$undef"
7983 Hmm, your compiler has some difficulty with fd_set. Checking further...
7986 if eval $compile; then
7989 echo "Well, your system has some sort of fd_set available..." >&4
7991 echo "and you have the normal fd_set macros." >&4
7992 d_fd_macros="$define"
7995 but not the normal fd_set macros! Gross! More work for me...
7997 d_fd_macros="$undef"
8000 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8003 d_fd_macros="$undef"
8008 : see if fgetpos exists
8009 set fgetpos d_fgetpos
8013 if $test X"$use64bits" = X"$define"; then
8014 : see if fgetpos64 exists
8015 set fgetpos64 d_fgetpos64
8018 : see if fopen64 exists
8019 set freopen64 d_fopen64
8022 : see if freopen64 exists
8023 set freopen64 d_freopen64
8026 : see if fseek64 exists
8027 set fseek64 d_fseek64
8030 : see if fseeko64 exists
8031 set fseeko64 d_fseeko64
8034 : see if fsetpos64 exists
8035 set fsetpos64 d_fsetpos64
8038 : see if ftell64 exists
8039 set ftell64 d_ftell64
8042 : see if ftello64 exists
8043 set ftello64 d_ftello64
8046 : see if tmpfile64 exists
8047 set tmpfile64 d_tmpfile64
8051 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8058 : see if flock exists
8062 : see if fork exists
8066 : see if pathconf exists
8067 set pathconf d_pathconf
8070 : see if fpathconf exists
8071 set fpathconf d_fpathconf
8074 : see if fseeko exists
8078 : see if fsetpos exists
8079 set fsetpos d_fsetpos
8082 : see if this is a sys/param system
8083 set sys/param.h i_sysparam
8086 : see if this is a sys/mount.h system
8087 set sys/mount.h i_sysmount
8091 : see if statfs exists
8095 : see if fstatfs exists
8096 set fstatfs d_fstatfs
8099 : see if statfs knows about mount flags
8100 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8104 : see if statvfs exists
8105 set statvfs d_statvfs
8108 : see if fstatvfs exists
8109 set fstatvfs d_fstatvfs
8113 : see if ftello exists
8117 : see if getgrent exists
8118 set getgrent d_getgrent
8121 : see if gethostbyaddr exists
8122 set gethostbyaddr d_gethbyaddr
8125 : see if gethostbyname exists
8126 set gethostbyname d_gethbyname
8129 : see if gethostent exists
8130 set gethostent d_gethent
8133 : see how we will look up host name
8136 if set gethostname val -f d_gethname; eval $csym; $val; then
8137 echo 'gethostname() found.' >&4
8138 d_gethname="$define"
8141 if set uname val -f d_uname; eval $csym; $val; then
8144 uname() was found, but you're running xenix, and older versions of xenix
8145 have a broken uname(). If you don't really know whether your xenix is old
8146 enough to have a broken system call, use the default answer.
8153 rp='Is your uname() broken?'
8156 n*) d_uname="$define"; call=uname;;
8159 echo 'uname() found.' >&4
8166 case "$d_gethname" in
8167 '') d_gethname="$undef";;
8170 '') d_uname="$undef";;
8172 case "$d_uname$d_gethname" in
8177 Every now and then someone has a $call() that lies about the hostname
8178 but can't be fixed for political or economic reasons. If you wish, I can
8179 pretend $call() isn't there and maybe compute hostname at run-time
8180 thanks to the '$phostname' command.
8183 rp="Shall I ignore $call() from now on?"
8186 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8189 case "$phostname" in
8191 *) case "$aphostname" in
8197 file=`./loc $file $file $pth`
8198 aphostname=`echo $file $*`
8203 case "$d_uname$d_gethname" in
8206 case "$phostname" in
8208 echo "There will be no way for $package to get your hostname." >&4;;
8210 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8214 case "$d_phostname" in
8215 '') d_phostname="$undef";;
8218 : see if this is a netdb.h system
8222 : see if prototypes for various gethostxxx netdb.h functions are available
8224 set d_gethostprotos gethostent $i_netdb netdb.h
8227 : see if getlogin exists
8228 set getlogin d_getlogin
8231 : see if getmntent exists
8232 set getmntent d_getmntent
8235 : see if getnetbyaddr exists
8236 set getnetbyaddr d_getnbyaddr
8239 : see if getnetbyname exists
8240 set getnetbyname d_getnbyname
8243 : see if getnetent exists
8244 set getnetent d_getnent
8247 : see if prototypes for various getnetxxx netdb.h functions are available
8249 set d_getnetprotos getnetent $i_netdb netdb.h
8253 : see if getprotobyname exists
8254 set getprotobyname d_getpbyname
8257 : see if getprotobynumber exists
8258 set getprotobynumber d_getpbynumber
8261 : see if getprotoent exists
8262 set getprotoent d_getpent
8265 : see if getpgid exists
8266 set getpgid d_getpgid
8269 : see if getpgrp2 exists
8270 set getpgrp2 d_getpgrp2
8273 : see if getppid exists
8274 set getppid d_getppid
8277 : see if getpriority exists
8278 set getpriority d_getprior
8281 : see if prototypes for various getprotoxxx netdb.h functions are available
8283 set d_getprotoprotos getprotoent $i_netdb netdb.h
8286 : see if getpwent exists
8287 set getpwent d_getpwent
8291 : see if getservbyname exists
8292 set getservbyname d_getsbyname
8295 : see if getservbyport exists
8296 set getservbyport d_getsbyport
8299 : see if getservent exists
8300 set getservent d_getsent
8303 : see if prototypes for various getservxxx netdb.h functions are available
8305 set d_getservprotos getservent $i_netdb netdb.h
8308 : see if getspent exists
8309 set getspent d_getspent
8312 : see if getspnam exists
8313 set getspnam d_getspnam
8316 : see if gettimeofday or ftime exists
8317 set gettimeofday d_gettimeod
8319 case "$d_gettimeod" in
8325 val="$undef"; set d_ftime; eval $setvar
8328 case "$d_gettimeod$d_ftime" in
8331 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8335 : see if this is an grp system
8341 xxx=`./findhdr grp.h`
8342 $cppstdin $cppflags $cppminus < $xxx >$$.h
8344 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8356 set d_grpasswd; eval $setvar
8360 : see if hasmntopt exists
8361 set hasmntopt d_hasmntopt
8364 : see if this is a netinet/in.h or sys/in.h system
8365 set netinet/in.h i_niin sys/in.h i_sysin
8368 : see if arpa/inet.h has to be included
8369 set arpa/inet.h i_arpainet
8372 : see if htonl --and friends-- exists
8377 : Maybe they are macros.
8382 #include <sys/types.h>
8383 #$i_niin I_NETINET_IN
8385 #$i_arpainet I_ARPA_INET
8387 #include <netinet/in.h>
8393 #include <arpa/inet.h>
8396 printf("Defined as a macro.");
8399 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8400 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8402 echo "But it seems to be defined as a macro." >&4
8410 : see which of string.h or strings.h is needed
8412 strings=`./findhdr string.h`
8413 if $test "$strings" && $test -r "$strings"; then
8414 echo "Using <string.h> instead of <strings.h>." >&4
8418 strings=`./findhdr strings.h`
8419 if $test "$strings" && $test -r "$strings"; then
8420 echo "Using <strings.h> instead of <string.h>." >&4
8422 echo "No string header found -- You'll surely have problems." >&4
8428 "$undef") strings=`./findhdr strings.h`;;
8429 *) strings=`./findhdr string.h`;;
8434 if set index val -f; eval $csym; $val; then
8435 if set strchr val -f d_strchr; eval $csym; $val; then
8436 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8439 echo "strchr() found." >&4
8443 echo "index() found." >&4
8448 echo "index() found." >&4
8451 if set strchr val -f d_strchr; eval $csym; $val; then
8454 echo "strchr() found." >&4
8456 echo "No index() or strchr() found!" >&4
8461 set d_strchr; eval $setvar
8463 set d_index; eval $setvar
8465 : check whether inet_aton exists
8466 set inet_aton d_inetaton
8469 : see if inttypes.h is available
8470 : we want a real compile instead of Inhdr because some systems
8471 : have an inttypes.h which includes non-existent headers
8474 #include <inttypes.h>
8476 static int32_t foo32 = 0x12345678;
8480 if eval $compile; then
8481 echo "<inttypes.h> found." >&4
8484 echo "<inttypes.h> NOT found." >&4
8492 case "$use64bits" in
8495 echo $n "Checking to see if your system supports int64_t...$c" >&4
8497 #include <sys/types.h>
8498 #$i_inttypes I_INTTYPES
8500 #include <inttypes.h>
8502 int64_t foo() { int64_t x; x = 7; return x; }
8504 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8506 echo " Yup, it does." >&4
8509 echo " Nope, it doesn't." >&4
8522 $cat >isascii.c <<'EOCP'
8534 if eval $compile; then
8535 echo "isascii() found." >&4
8538 echo "isascii() NOT found." >&4
8545 : see if killpg exists
8549 : see if lchown exists
8551 $cat > try.c <<'EOCP'
8552 /* System header to define __stub macros and hopefully few prototypes,
8553 which can conflict with char lchown(); below. */
8555 /* Override any gcc2 internal prototype to avoid an error. */
8556 /* We use char because int might match the return type of a gcc2
8557 builtin and then its argument prototype would still apply. */
8560 /* The GNU C library defines this for functions which it implements
8561 to always fail with ENOSYS. Some functions are actually named
8562 something starting with __ and the normal name is an alias. */
8563 #if defined (__stub_lchown) || defined (__stub___lchown)
8571 if eval $compile; then
8572 $echo "lchown() found." >&4
8575 $echo "lchown() NOT found." >&4
8581 : see if link exists
8585 : see if localeconv exists
8586 set localeconv d_locconv
8589 : see if lockf exists
8593 : check for length of double
8595 case "$doublesize" in
8597 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8598 $cat >try.c <<'EOCP'
8602 printf("%d\n", sizeof(double));
8606 if eval $compile_ok; then
8608 $echo " $doublesize bytes." >&4
8611 echo "(I can't seem to compile the test program. Guessing...)"
8612 rp="What is the size of a double precision number (in bytes)?"
8620 : check for long doubles
8622 echo $n "Checking to see if your system supports long doubles...$c" >&4
8623 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8624 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8626 echo " Yup, it does." >&4
8629 echo " Nope, it doesn't." >&4
8635 : check for length of long double
8636 case "${d_longdbl}${longdblsize}" in
8639 $echo $n "Checking to see how big your long doubles are...$c" >&4
8640 $cat >try.c <<'EOCP'
8644 printf("%d\n", sizeof(long double));
8648 if eval $compile; then
8650 $echo " $longdblsize bytes." >&4
8654 echo "(I can't seem to compile the test program. Guessing...)" >&4
8655 rp="What is the size of a long double (in bytes)?"
8659 if $test "X$doublesize" = "X$longdblsize"; then
8660 echo "(That isn't any different from an ordinary double.)"
8666 : check for long long
8668 echo $n "Checking to see if your system supports long long...$c" >&4
8669 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8670 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8672 echo " Yup, it does." >&4
8675 echo " Nope, it doesn't." >&4
8681 : check for length of long long
8682 case "${d_longlong}${longlongsize}" in
8685 $echo $n "Checking to see how big your long longs are...$c" >&4
8686 $cat >try.c <<'EOCP'
8690 printf("%d\n", sizeof(long long));
8694 if eval $compile_ok; then
8695 longlongsize=`./try`
8696 $echo " $longlongsize bytes." >&4
8700 echo "(I can't seem to compile the test program. Guessing...)"
8701 rp="What is the size of a long long (in bytes)?"
8705 if $test "X$longsize" = "X$longlongsize"; then
8706 echo "(That isn't any different from an ordinary long.)"
8712 : see if lstat exists
8716 : see if madvise exists
8717 set madvise d_madvise
8720 : see if mblen exists
8724 : see if mbstowcs exists
8725 set mbstowcs d_mbstowcs
8728 : see if mbtowc exists
8732 : see if memchr exists
8736 : see if memcmp exists
8740 : see if memcpy exists
8744 : see if memmove exists
8745 set memmove d_memmove
8748 : see if memset exists
8752 : see if mkdir exists
8756 : see if mkfifo exists
8760 : see if mktime exists
8764 : see if this is a sys/mman.h system
8765 set sys/mman.h i_sysmman
8768 : see if mmap exists
8771 : see what shmat returns
8772 : default to something harmless
8774 case "$i_sysmman$d_mmap" in
8776 $cat >mmap.c <<'END'
8777 #include <sys/mman.h>
8780 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8785 echo "and it returns ($mmaptype)." >&4
8791 : see if mprotect exists
8792 set mprotect d_mprotect
8795 : see if msgctl exists
8799 : see if msgget exists
8803 : see if msgsnd exists
8807 : see if msgrcv exists
8811 : see how much of the 'msg*(2)' library is present.
8814 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8815 *"$undef"*) h_msg=false;;
8819 case "`ipcs 2>&1`" in
8820 "SVID messages"*"not configured"*)
8821 echo "Your $osname does not have the msg*(2) configured." >&4
8836 : we could also check for sys/ipc.h ...
8837 if $h_msg && $test `./findhdr sys/msg.h`; then
8838 echo "You have the full msg*(2) library." >&4
8841 echo "You don't have the full msg*(2) library." >&4
8847 : see if msync exists
8851 : see if munmap exists
8855 : see if nice exists
8859 : see if POSIX threads are available
8860 if test "X$usethreads" = "X$define"; then
8861 set pthread.h i_pthread
8869 : how to create joinable pthreads
8870 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8872 echo "Checking what constant to use for creating joinable pthreads..." >&4
8873 $cat >try.c <<'EOCP'
8874 #include <pthread.h>
8876 int detachstate = JOINABLE;
8879 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8880 if eval $compile; then
8881 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8882 val="$undef" # Yes, undef.
8883 set d_old_pthread_create_joinable
8886 set old_pthread_create_joinable
8889 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8890 if eval $compile; then
8891 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8893 set d_old_pthread_create_joinable
8895 val=PTHREAD_CREATE_UNDETACHED
8896 set old_pthread_create_joinable
8899 set try -DJOINABLE=__UNDETACHED
8900 if eval $compile; then
8901 echo "You seem to use __UNDETACHED." >&4
8903 set d_old_pthread_create_joinable
8906 set old_pthread_create_joinable
8909 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
8911 set d_old_pthread_create_joinable
8914 set old_pthread_create_joinable
8921 d_old_pthread_create_joinable="$undef"
8922 old_pthread_create_joinable=""
8925 : see if pause exists
8929 : see if pipe exists
8933 : see if poll exists
8938 : see whether the various POSIXish _yields exist
8940 #include <pthread.h>
8946 #ifdef PTHREAD_YIELD
8949 #ifdef PTHREAD_YIELD_NULL
8950 pthread_yield(NULL);
8956 : see if sched_yield exists
8957 set try -DSCHED_YIELD
8958 if eval $compile; then
8960 sched_yield='sched_yield()'
8964 case "$usethreads" in
8967 $define) echo 'sched_yield() found.' >&4 ;;
8968 *) echo 'sched_yield() NOT found.' >&4 ;;
8974 : see if pthread_yield exists
8975 set try -DPTHREAD_YIELD
8976 if eval $compile; then
8978 case "$sched_yield" in
8979 '') sched_yield='pthread_yield()' ;;
8982 set try -DPTHREAD_YIELD_NULL
8983 if eval $compile; then
8985 case "$sched_yield" in
8986 '') sched_yield='pthread_yield(NULL)' ;;
8992 case "$usethreads" in
8995 $define) echo 'pthread_yield() found.' >&4 ;;
8996 *) echo 'pthread_yield() NOT found.' >&4 ;;
9003 case "$sched_yield" in
9004 '') sched_yield=undef ;;
9009 : see if this is a pwd.h system
9015 xxx=`./findhdr pwd.h`
9016 $cppstdin $cppflags $cppminus < $xxx >$$.h
9018 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9026 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9034 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9042 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9050 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9058 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9066 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9074 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9086 set d_pwquota; eval $setvar
9087 set d_pwage; eval $setvar
9088 set d_pwchange; eval $setvar
9089 set d_pwclass; eval $setvar
9090 set d_pwexpire; eval $setvar
9091 set d_pwcomment; eval $setvar
9092 set d_pwgecos; eval $setvar
9093 set d_pwpasswd; eval $setvar
9097 : see if readdir and friends exist
9098 set readdir d_readdir
9100 set seekdir d_seekdir
9102 set telldir d_telldir
9104 set rewinddir d_rewinddir
9107 : see if readlink exists
9108 set readlink d_readlink
9111 : see if readv exists
9115 : see if rename exists
9119 : see if rmdir exists
9123 : see if memory.h is available.
9128 : See if it conflicts with string.h
9134 $cppstdin $cppflags $cppminus < $strings > mem.h
9135 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9137 echo "We won't be including <memory.h>."
9147 : can bcopy handle overlapping blocks?
9152 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9159 $cat >>try.c <<'EOCP'
9162 # include <memory.h>
9165 # include <stdlib.h>
9168 # include <string.h>
9170 # include <strings.h>
9173 # include <unistd.h> /* Needed for NetBSD */
9177 char buf[128], abc[128];
9183 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9185 for (align = 7; align >= 0; align--) {
9186 for (len = 36; len; len--) {
9189 for (off = 1; off <= len; off++) {
9190 bcopy(b, b+off, len);
9191 bcopy(b+off, b, len);
9192 if (bcmp(b, abc, len))
9201 if eval $compile_ok; then
9202 if ./try 2>/dev/null; then
9206 echo "It can't, sorry."
9207 case "$d_memmove" in
9208 "$define") echo "But that's Ok since you have memmove()." ;;
9212 echo "(I can't compile the test program, so we'll assume not...)"
9213 case "$d_memmove" in
9214 "$define") echo "But that's Ok since you have memmove()." ;;
9219 $rm -f try.* try core
9223 : can memcpy handle overlapping blocks?
9228 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9235 $cat >>try.c <<'EOCP'
9238 # include <memory.h>
9241 # include <stdlib.h>
9244 # include <string.h>
9246 # include <strings.h>
9249 # include <unistd.h> /* Needed for NetBSD */
9253 char buf[128], abc[128];
9259 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9260 try to store the string in read-only memory. */
9261 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9263 for (align = 7; align >= 0; align--) {
9264 for (len = 36; len; len--) {
9266 memcpy(b, abc, len);
9267 for (off = 1; off <= len; off++) {
9268 memcpy(b+off, b, len);
9269 memcpy(b, b+off, len);
9270 if (memcmp(b, abc, len))
9279 if eval $compile_ok; then
9280 if ./try 2>/dev/null; then
9284 echo "It can't, sorry."
9285 case "$d_memmove" in
9286 "$define") echo "But that's Ok since you have memmove()." ;;
9290 echo "(I can't compile the test program, so we'll assume not...)"
9291 case "$d_memmove" in
9292 "$define") echo "But that's Ok since you have memmove()." ;;
9297 $rm -f try.* try core
9301 : can memcmp be trusted to compare relative magnitude?
9306 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9313 $cat >>try.c <<'EOCP'
9316 # include <memory.h>
9319 # include <stdlib.h>
9322 # include <string.h>
9324 # include <strings.h>
9327 # include <unistd.h> /* Needed for NetBSD */
9333 if ((a < b) && memcmp(&a, &b, 1) < 0)
9339 if eval $compile_ok; then
9340 if ./try 2>/dev/null; then
9344 echo "No, it can't (it uses signed chars)."
9347 echo "(I can't compile the test program, so we'll assume not...)"
9351 $rm -f try.* try core
9355 : see if select exists
9359 : see if semctl exists
9363 : see if semget exists
9367 : see if semop exists
9371 : see how much of the 'sem*(2)' library is present.
9374 case "$d_semctl$d_semget$d_semop" in
9375 *"$undef"*) h_sem=false;;
9379 case "`ipcs 2>&1`" in
9380 "SVID messages"*"not configured"*)
9381 echo "Your $osname does not have the sem*(2) configured." >&4
9394 : we could also check for sys/ipc.h ...
9395 if $h_sem && $test `./findhdr sys/sem.h`; then
9396 echo "You have the full sem*(2) library." >&4
9399 echo "You don't have the full sem*(2) library." >&4
9405 : see whether sys/sem.h defines union semun
9407 $cat > try.c <<'END'
9408 #include <sys/types.h>
9409 #include <sys/ipc.h>
9410 #include <sys/sem.h>
9411 int main () { union semun semun; semun.buf = 0; }
9414 if eval $compile; then
9415 echo "You have union semun in <sys/sem.h>." >&4
9418 echo "You do not have union semun in <sys/sem.h>." >&4
9421 $rm -f try try.c try.h
9425 : see how to do semctl IPC_STAT
9428 : see whether semctl IPC_STAT can use union semun
9433 # define S_IRUSR S_IREAD
9434 # define S_IWUSR S_IWRITE
9435 # define S_IXUSR S_IEXEC
9437 # define S_IRUSR 0400
9438 # define S_IWUSR 0200
9439 # define S_IXUSR 0100
9441 # define S_IRGRP (S_IRUSR>>3)
9442 # define S_IWGRP (S_IWUSR>>3)
9443 # define S_IXGRP (S_IXUSR>>3)
9444 # define S_IROTH (S_IRUSR>>6)
9445 # define S_IWOTH (S_IWUSR>>6)
9446 # define S_IXOTH (S_IXUSR>>6)
9449 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9450 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9451 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9456 #include <sys/types.h>
9457 #include <sys/ipc.h>
9458 #include <sys/sem.h>
9459 #include <sys/stat.h>
9466 #$d_union_semun HAS_UNION_SEMUN
9469 #ifndef HAS_UNION_SEMUN
9472 struct semid_ds *buf;
9473 unsigned short *array;
9479 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9480 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9482 struct semid_ds argbuf;
9485 st = semctl(sem, 0, IPC_STAT, arg);
9489 # endif /* IPC_STAT */
9490 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9492 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9493 # endif /* IPC_RMID */
9494 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9496 #endif /* IPC_PRIVATE && ... */
9497 printf("semget failed: errno = %d\n", errno);
9503 if eval $compile; then
9506 semun) val="$define" ;;
9512 case "$d_semctl_semun" in
9514 echo "You can use union semun for semctl IPC_STAT." >&4
9517 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9522 : see whether semctl IPC_STAT can use struct semid_ds pointer
9523 $cat > try.c <<'END'
9524 #include <sys/types.h>
9525 #include <sys/ipc.h>
9526 #include <sys/sem.h>
9527 #include <sys/stat.h>
9535 struct semid_ds arg;
9538 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9539 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9542 st = semctl(sem, 0, IPC_STAT, &arg);
9544 printf("semid_ds\n");
9546 # endif /* IPC_STAT */
9547 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9549 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9550 # endif /* IPC_RMID */
9551 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9553 #endif /* IPC_PRIVATE && ... */
9554 printf("semget failed: errno = %d\n", errno);
9561 if eval $compile; then
9564 semid_ds) val="$define" ;;
9568 set d_semctl_semid_ds
9570 case "$d_semctl_semid_ds" in
9572 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9574 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9581 # We do not have the full sem*(2) library, so assume we can not
9587 set d_semctl_semid_ds
9592 : see if setegid exists
9593 set setegid d_setegid
9596 : see if seteuid exists
9597 set seteuid d_seteuid
9600 : see if setgrent exists
9601 set setgrent d_setgrent
9604 : see if sethostent exists
9605 set sethostent d_sethent
9608 : see if setlinebuf exists
9609 set setlinebuf d_setlinebuf
9612 : see if setlocale exists
9613 set setlocale d_setlocale
9616 : see if setnetent exists
9617 set setnetent d_setnent
9620 : see if setprotoent exists
9621 set setprotoent d_setpent
9624 : see if setpgid exists
9625 set setpgid d_setpgid
9628 : see if setpgrp2 exists
9629 set setpgrp2 d_setpgrp2
9632 : see if setpriority exists
9633 set setpriority d_setprior
9636 : see if setpwent exists
9637 set setpwent d_setpwent
9640 : see if setregid exists
9641 set setregid d_setregid
9643 set setresgid d_setresgid
9646 : see if setreuid exists
9647 set setreuid d_setreuid
9649 set setresuid d_setresuid
9652 : see if setrgid exists
9653 set setrgid d_setrgid
9656 : see if setruid exists
9657 set setruid d_setruid
9660 : see if setservent exists
9661 set setservent d_setsent
9664 : see if setsid exists
9668 : see if setspent exists
9669 set setspent d_setspent
9672 : see if setvbuf exists
9673 set setvbuf d_setvbuf
9676 : see if sfio.h is available
9681 : see if sfio library is available
9692 : Ok, but do we want to use it.
9696 true|$define|[yY]*) dflt='y';;
9699 echo "$package can use the sfio library, but it is experimental."
9700 rp="You seem to have sfio available, do you want to try using it?"
9704 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9706 : Remove sfio from list of libraries to use
9707 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9710 echo "libs = $libs" >&4
9714 *) case "$usesfio" in
9716 echo "Sorry, cannot find sfio on this machine" >&4
9717 echo "Ignoring your setting of usesfio=$usesfio" >&4
9725 $define) usesfio='true';;
9726 *) usesfio='false';;
9729 : see if shmctl exists
9733 : see if shmget exists
9737 : see if shmat exists
9740 : see what shmat returns
9743 $cat >shmat.c <<'END'
9744 #include <sys/shm.h>
9747 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9752 echo "and it returns ($shmattype)." >&4
9753 : see if a prototype for shmat is available
9754 xxx=`./findhdr sys/shm.h`
9755 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9756 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9767 set d_shmatprototype
9770 : see if shmdt exists
9774 : see how much of the 'shm*(2)' library is present.
9777 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9778 *"$undef"*) h_shm=false;;
9782 case "`ipcs 2>&1`" in
9783 "SVID shared memory"*"not configured"*)
9784 echo "Your $osname does not have the shm*(2) configured." >&4
9799 : we could also check for sys/ipc.h ...
9800 if $h_shm && $test `./findhdr sys/shm.h`; then
9801 echo "You have the full shm*(2) library." >&4
9804 echo "You don't have the full shm*(2) library." >&4
9811 : see if we have sigaction
9812 if set sigaction val -f d_sigaction; eval $csym; $val; then
9813 echo 'sigaction() found.' >&4
9814 $cat > try.c <<'EOP'
9816 #include <sys/types.h>
9820 struct sigaction act, oact;
9824 if eval $compile_ok; then
9827 echo "But you don't seem to have a useable struct sigaction." >&4
9831 echo 'sigaction NOT found.' >&4
9834 set d_sigaction; eval $setvar
9835 $rm -f try try$_o try.c
9837 : see if sigsetjmp exists
9839 case "$d_sigsetjmp" in
9847 if (sigsetjmp(env,1))
9855 if eval $compile; then
9856 if ./try >/dev/null 2>&1; then
9857 echo "POSIX sigsetjmp found." >&4
9861 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9867 echo "sigsetjmp not found." >&4
9871 *) val="$d_sigsetjmp"
9872 case "$d_sigsetjmp" in
9873 $define) echo "POSIX sigsetjmp found." >&4;;
9874 $undef) echo "sigsetjmp not found." >&4;;
9882 : see if stat knows about block sizes
9884 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9887 : see if _ptr and _cnt from stdio act std
9889 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
9890 echo "(Looks like you have stdio.h from Linux.)"
9891 case "$stdio_ptr" in
9892 '') stdio_ptr='((fp)->_IO_read_ptr)'
9895 *) ptr_lval=$d_stdio_ptr_lval;;
9897 case "$stdio_cnt" in
9898 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9901 *) cnt_lval=$d_stdio_cnt_lval;;
9903 case "$stdio_base" in
9904 '') stdio_base='((fp)->_IO_read_base)';;
9906 case "$stdio_bufsiz" in
9907 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9910 case "$stdio_ptr" in
9911 '') stdio_ptr='((fp)->_ptr)'
9914 *) ptr_lval=$d_stdio_ptr_lval;;
9916 case "$stdio_cnt" in
9917 '') stdio_cnt='((fp)->_cnt)'
9920 *) cnt_lval=$d_stdio_cnt_lval;;
9922 case "$stdio_base" in
9923 '') stdio_base='((fp)->_base)';;
9925 case "$stdio_bufsiz" in
9926 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9929 : test whether _ptr and _cnt really work
9930 echo "Checking how std your stdio is..." >&4
9933 #define FILE_ptr(fp) $stdio_ptr
9934 #define FILE_cnt(fp) $stdio_cnt
9936 FILE *fp = fopen("try.c", "r");
9939 18 <= FILE_cnt(fp) &&
9940 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9948 if eval $compile; then
9950 echo "Your stdio acts pretty std."
9953 echo "Your stdio isn't very std."
9956 echo "Your stdio doesn't appear very std."
9962 : Can _ptr be used as an lvalue?
9963 case "$d_stdstdio$ptr_lval" in
9964 $define$define) val=$define ;;
9967 set d_stdio_ptr_lval
9970 : Can _cnt be used as an lvalue?
9971 case "$d_stdstdio$cnt_lval" in
9972 $define$define) val=$define ;;
9975 set d_stdio_cnt_lval
9978 : see if _base is also standard
9980 case "$d_stdstdio" in
9984 #define FILE_base(fp) $stdio_base
9985 #define FILE_bufsiz(fp) $stdio_bufsiz
9987 FILE *fp = fopen("try.c", "r");
9990 19 <= FILE_bufsiz(fp) &&
9991 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9998 if eval $compile; then
10000 echo "And its _base field acts std."
10003 echo "But its _base field isn't std."
10006 echo "However, it seems to be lacking the _base field."
10015 Checking how to access stdio streams by file descriptor number...
10017 case "$stdio_stream_array" in
10018 '') $cat >try.c <<EOCP
10021 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10025 for s in _iob __iob __sF
10027 set try -DSTDIO_STREAM_ARRAY=$s
10028 if eval $compile; then
10029 case "`./try$exe_ext`" in
10030 yes) stdio_stream_array=$s; break ;;
10034 $rm -f try.* try$exe_ext
10036 case "$stdio_stream_array" in
10038 I can't figure out how to access stdio streams by file descriptor number.
10040 d_stdio_stream_array="$undef"
10043 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10045 d_stdio_stream_array="$define"
10049 : see if strcoll exists
10050 set strcoll d_strcoll
10053 : check for structure copying
10055 echo "Checking to see if your C compiler can copy structs..." >&4
10056 $cat >try.c <<'EOCP'
10066 if $cc -c try.c >/dev/null 2>&1 ; then
10068 echo "Yup, it can."
10071 echo "Nope, it can't."
10077 : see if strerror and/or sys_errlist[] exist
10079 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10080 if set strerror val -f d_strerror; eval $csym; $val; then
10081 echo 'strerror() found.' >&4
10082 d_strerror="$define"
10083 d_strerrm='strerror(e)'
10084 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10085 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10086 d_syserrlst="$define"
10088 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10089 d_syserrlst="$undef"
10091 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10092 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10093 echo 'strerror() found in string header.' >&4
10094 d_strerror="$define"
10095 d_strerrm='strerror(e)'
10096 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10097 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10098 d_syserrlst="$define"
10100 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10101 d_syserrlst="$undef"
10103 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10104 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10105 d_strerror="$undef"
10106 d_syserrlst="$define"
10107 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10109 echo 'strerror() and sys_errlist[] NOT found.' >&4
10110 d_strerror="$undef"
10111 d_syserrlst="$undef"
10112 d_strerrm='"unknown"'
10116 : see if strtod exists
10117 set strtod d_strtod
10120 : see if strtol exists
10121 set strtol d_strtol
10124 : see if strtoul exists
10125 set strtoul d_strtoul
10128 : see if strxfrm exists
10129 set strxfrm d_strxfrm
10132 : see if symlink exists
10133 set symlink d_symlink
10136 : see if syscall exists
10137 set syscall d_syscall
10140 : see if sysconf exists
10141 set sysconf d_sysconf
10144 : see if system exists
10145 set system d_system
10148 : see if tcgetpgrp exists
10149 set tcgetpgrp d_tcgetpgrp
10152 : see if tcsetpgrp exists
10153 set tcsetpgrp d_tcsetpgrp
10156 : see if sys/types.h has to be included
10157 set sys/types.h i_systypes
10160 : see if prototype for telldir is available
10162 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10165 : define an is-a-typedef? function
10166 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10168 "") inclist="sys/types.h";;
10170 eval "varval=\$$var";
10174 for inc in $inclist; do
10175 echo "#include <$inc>" >>temp.c;
10177 echo "#ifdef $type" >> temp.c;
10178 echo "printf(\"We have $type\");" >> temp.c;
10179 echo "#endif" >> temp.c;
10180 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10181 if $contains $type temp.E >/dev/null 2>&1; then
10182 eval "$var=\$type";
10187 *) eval "$var=\$varval";;
10190 : define an is-a-typedef? function that prompts if the type is not available.
10191 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10193 "") inclist="sys/types.h";;
10195 eval "varval=\$$var";
10199 for inc in $inclist; do
10200 echo "#include <$inc>" >>temp.c;
10202 echo "#ifdef $type" >> temp.c;
10203 echo "printf(\"We have $type\");" >> temp.c;
10204 echo "#endif" >> temp.c;
10205 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10207 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10208 if $contains $type temp.E >/dev/null 2>&1; then
10209 echo "$type found." >&4;
10210 eval "$var=\$type";
10212 echo "$type NOT found." >&4;
10218 *) eval "$var=\$varval";;
10221 : see if this is a sys/times.h system
10222 set sys/times.h i_systimes
10225 : see if times exists
10227 if set times val -f d_times; eval $csym; $val; then
10228 echo 'times() found.' >&4
10231 case "$i_systimes" in
10232 "$define") inc='sys/times.h';;
10234 rp="What is the type returned by times() on this system?"
10235 set clock_t clocktype long stdio.h sys/types.h $inc
10238 echo 'times() NOT found, hope that will do.' >&4
10243 : see if truncate exists
10244 set truncate d_truncate
10247 : see if tzname[] exists
10249 if set tzname val -a d_tzname; eval $csym; $val; then
10251 echo 'tzname[] found.' >&4
10254 echo 'tzname[] NOT found.' >&4
10259 : see if umask exists
10263 : backward compatibility for d_hvfork
10264 if test X$d_hvfork != X; then
10265 d_vfork="$d_hvfork"
10268 : see if there is a vfork
10273 : Ok, but do we want to use it. vfork is reportedly unreliable in
10274 : perl on Solaris 2.x, and probably elsewhere.
10278 case "$usevfork" in
10284 Perl can only use a vfork() that doesn't suffer from strict
10285 restrictions on calling functions or modifying global data in
10286 the child. For example, glibc-2.1 contains such a vfork()
10287 that is unsuitable. If your system provides a proper fork()
10288 call, chances are that you do NOT want perl to use vfork().
10291 rp="Do you still want to use vfork()?"
10296 echo "Ok, we won't use vfork()."
10305 $define) usevfork='true';;
10306 *) usevfork='false';;
10309 : see if this is an sysdir system
10310 set sys/dir.h i_sysdir
10313 : see if this is an sysndir system
10314 set sys/ndir.h i_sysndir
10317 : see if closedir exists
10318 set closedir d_closedir
10321 case "$d_closedir" in
10324 echo "Checking whether closedir() returns a status..." >&4
10325 cat > closedir.c <<EOM
10326 #$i_dirent I_DIRENT /**/
10327 #$i_sysdir I_SYS_DIR /**/
10328 #$i_sysndir I_SYS_NDIR /**/
10329 #$i_systypes I_SYS_TYPES /**/
10331 #if defined(I_SYS_TYPES)
10332 #include <sys/types.h>
10334 #if defined(I_DIRENT)
10335 #include <dirent.h>
10336 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10337 #include <sys/dir.h>
10341 #include <sys/ndir.h>
10345 #include <ndir.h> /* may be wrong in the future */
10347 #include <sys/dir.h>
10352 int main() { return closedir(opendir(".")); }
10355 if eval $compile_ok; then
10356 if ./closedir > /dev/null 2>&1 ; then
10357 echo "Yes, it does."
10360 echo "No, it doesn't."
10364 echo "(I can't seem to compile the test program--assuming it doesn't)"
10372 set d_void_closedir
10375 : check for volatile keyword
10377 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10378 $cat >try.c <<'EOCP'
10381 typedef struct _goo_struct goo_struct;
10382 goo_struct * volatile goo = ((goo_struct *)0);
10383 struct _goo_struct {
10388 typedef unsigned short foo_t;
10389 char *volatile foo;
10391 volatile foo_t blech;
10395 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10397 echo "Yup, it does."
10400 echo "Nope, it doesn't."
10406 : see if there is a wait4
10410 : see if waitpid exists
10411 set waitpid d_waitpid
10414 : see if wcstombs exists
10415 set wcstombs d_wcstombs
10418 : see if wctomb exists
10419 set wctomb d_wctomb
10422 : see if writev exists
10423 set writev d_writev
10426 : preserve RCS keywords in files with variable substitution, grrr
10431 Revision='$Revision'
10433 case "$crosscompile" in
10434 ''|[nN]*) crosscompile="$undef" ;;
10438 next|rhapsody) multiarch="$define" ;;
10440 case "$multiarch" in
10441 ''|[nN]*) multiarch="$undef" ;;
10444 : check for alignment requirements
10446 case "$crosscompile$multiarch" in
10449 You seem to be either cross-compiling or doing a multiarchitecture build,
10450 skipping the memory alignment check.
10453 case "$alignbytes" in
10454 '') alignbytes=8 ;;
10458 case "$alignbytes" in
10459 '') echo "Checking alignment constraints..." >&4
10460 $cat >try.c <<'EOCP'
10467 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10471 if eval $compile_ok; then
10475 echo "(I can't seem to compile the test program...)"
10478 *) dflt="$alignbytes"
10481 rp="Doubles must be aligned on a how-many-byte boundary?"
10489 : check for ordering of bytes in a long
10491 case "$crosscompile$multiarch" in
10494 You seem to be either cross-compiling or doing a multiarchitecture build,
10495 skipping the byteorder check.
10501 case "$byteorder" in
10504 In the following, larger digits indicate more significance. A big-endian
10505 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10506 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10507 machines may have weird orders like 3412. A Cray will report 87654321. If
10508 the test program works the default is probably right.
10509 I'm now running the test program...
10511 $cat >try.c <<'EOCP'
10518 char c[sizeof(long)];
10521 if (sizeof(long) > 4)
10522 u.l = (0x08070605L << 32) | 0x04030201L;
10525 for (i = 0; i < sizeof(long); i++)
10526 printf("%c", u.c[i]+'0');
10533 if eval $compile && ./try > /dev/null; then
10536 [1-4][1-4][1-4][1-4]|12345678|87654321)
10537 echo "(The test program ran ok.)"
10538 echo "byteorder=$dflt"
10541 ????|????????) echo "(The test program ran ok.)" ;;
10542 *) echo "(The test program didn't run right for some reason.)" ;;
10547 (I can't seem to compile the test program. Guessing big-endian...)
10550 case "$xxx_prompt" in
10552 rp="What is the order of bytes in a long?"
10566 : how do we catenate cpp tokens here?
10568 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10569 $cat >cpp_stuff.c <<'EOCP'
10570 #define RCAT(a,b)a/**/b
10571 #define ACAT(a,b)a ## b
10575 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10576 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10577 echo "Oh! Smells like ANSI's been here." >&4
10578 echo "We can catify or stringify, separately or together!"
10580 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10581 echo "Ah, yes! The good old days!" >&4
10582 echo "However, in the good old days we don't know how to stringify and"
10583 echo "catify at the same time."
10587 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10588 to have to edit the values of CAT[2-5] in config.h...
10590 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10594 : see if this is a db.h system
10600 : Check db version.
10602 echo "Checking Berkeley DB version ..." >&4
10608 #include <sys/types.h>
10613 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10614 int Major, Minor, Patch ;
10615 unsigned long Version ;
10616 (void)db_version(&Major, &Minor, &Patch) ;
10617 printf("You have Berkeley DB Version 2 or greater\n");
10619 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10620 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10621 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10622 Major, Minor, Patch) ;
10624 /* check that db.h & libdb are compatible */
10625 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10626 printf("db.h and libdb are incompatible\n") ;
10630 printf("db.h and libdb are compatible\n") ;
10632 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10633 + DB_VERSION_PATCH ;
10635 /* needs to be >= 2.3.4 */
10636 if (Version < 2003004) {
10637 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10638 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10644 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10645 printf("You have Berkeley DB Version 1\n");
10646 exit(0); /* DB version < 2: the coast is clear. */
10648 exit(1); /* <db.h> not Berkeley DB? */
10654 if eval $compile && ./try; then
10655 echo 'Looks OK.' >&4
10657 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10661 : Remove db from list of libraries to use
10662 echo "Removing unusable -ldb from library list" >&4
10663 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10666 echo "libs = $libs" >&4
10676 : Check the return type needed for hash
10678 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10684 #include <sys/types.h>
10687 #ifndef DB_VERSION_MAJOR
10688 u_int32_t hash_cb (ptr, size)
10696 info.hash = hash_cb;
10700 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10701 if $contains warning try.out >>/dev/null 2>&1 ; then
10704 db_hashtype='u_int32_t'
10707 : XXX Maybe we should just give up here.
10708 db_hashtype=u_int32_t
10710 echo "Help: I can't seem to compile the db test program." >&4
10711 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10714 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10716 *) db_hashtype=u_int32_t
10721 : Check the return type needed for prefix
10723 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10729 #include <sys/types.h>
10732 #ifndef DB_VERSION_MAJOR
10733 size_t prefix_cb (key1, key2)
10741 info.prefix = prefix_cb;
10745 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10746 if $contains warning try.out >>/dev/null 2>&1 ; then
10747 db_prefixtype='int'
10749 db_prefixtype='size_t'
10752 db_prefixtype='size_t'
10753 : XXX Maybe we should just give up here.
10755 echo "Help: I can't seem to compile the db test program." >&4
10756 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10759 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10761 *) db_prefixtype='size_t'
10765 : check for void type
10767 echo "Checking to see how well your C compiler groks the void type..." >&4
10768 case "$voidflags" in
10770 $cat >try.c <<'EOCP'
10776 extern void moo(); /* function returning void */
10777 void (*goo)(); /* ptr to func returning void */
10779 void *hue; /* generic ptr */
10792 int main() { sub(); }
10794 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10795 voidflags=$defvoidused
10796 echo "Good. It appears to support void to the level $package wants.">&4
10797 if $contains warning .out >/dev/null 2>&1; then
10798 echo "However, you might get some warnings that look like this:"
10802 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10803 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10804 echo "It supports 1..."
10805 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10806 echo "It also supports 2..."
10807 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10809 echo "And it supports 4 but not 8 definitely."
10811 echo "It doesn't support 4..."
10812 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10814 echo "But it supports 8."
10817 echo "Neither does it support 8."
10821 echo "It does not support 2..."
10822 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10824 echo "But it supports 4 and 8."
10826 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10828 echo "And it supports 4 but has not heard about 8."
10830 echo "However it supports 8 but not 4."
10835 echo "There is no support at all for void."
10840 case "$voidflags" in
10842 *) $cat >&4 <<'EOM'
10843 Support flag bits are:
10844 1: basic void declarations.
10845 2: arrays of pointers to functions returning void.
10846 4: operations between pointers to and addresses of void functions.
10847 8: generic void pointers.
10850 rp="Your void support flags add up to what?"
10858 : How can we generate normalized random numbers ?
10860 echo "Looking for a random number function..." >&4
10861 case "$randfunc" in
10863 if set drand48 val -f; eval $csym; $val; then
10865 echo "Good, found drand48()." >&4
10866 elif set random val -f; eval $csym; $val; then
10868 echo "OK, found random()." >&4
10871 echo "Yick, looks like I have to use rand()." >&4
10882 *-Dmy_rand=*|*-Dmy_srand=*)
10883 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10884 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10885 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10886 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10890 while $test "$cont"; do
10891 rp="Use which function to generate random numbers?"
10893 if $test "$ans" = "$dflt"; then
10899 if set $ans val -f; eval $csym; $val; then
10903 rp="I cannot find function $ans. Use that name anyway?"
10912 case "$randfunc" in
10914 drand01="drand48()"
10920 case "$randbits" in
10922 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10924 #$i_unistd I_UNISTD
10925 #$i_stdlib I_STDLIB
10928 # include <unistd.h>
10931 # include <stdlib.h>
10936 register unsigned long tmp;
10937 register unsigned long max = 0L;
10939 for (i = 1000; i; i--) {
10940 tmp = (unsigned long) $randfunc();
10941 if (tmp > max) max = tmp;
10943 for (i = 0; max; i++)
10949 if eval $compile_ok; then
10953 echo "(I can't seem to compile the test program...)"
10960 rp="How many bits does your $randfunc() function produce?"
10964 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10965 seedfunc="s$randfunc"
10966 randseedtype=unsigned
10970 rp="How many bits does your $randfunc() function produce?"
10973 seedfunc="s$randfunc"
10974 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10975 if set $seedfunc val -f; eval $csym; $val; then
10976 echo "(Using $seedfunc() to seed random generator)"
10978 echo "(Warning: no $seedfunc() to seed random generator)"
10981 randseedtype=unsigned
10989 echo "Determining whether or not we are on an EBCDIC system..." >&4
10990 $cat >tebcdic.c <<'EOM'
10993 if ('M'==0xd4) return 0;
11000 if eval $compile_ok; then
11002 echo "You have EBCDIC." >&4
11005 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
11008 echo "I'm unable to compile the test program." >&4
11009 echo "I'll assume ASCII or some ISO Latin." >&4
11011 $rm -f tebcdic.c tebcdic
11017 Checking how to flush all pending stdio output...
11019 # I only know how to find the first 32 possibly open files on SunOS.
11020 # See also hints/sunos_4_1.sh and util.c --AD
11022 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11024 $cat >>try.c <<EOCP
11026 #$i_unistd I_UNISTD
11028 # include <unistd.h>
11030 #$d_sysconf HAS_SYSCONF
11031 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11032 #ifdef HAS_STDIO_STREAM_ARRAY
11033 # define STDIO_STREAM_ARRAY $stdio_stream_array
11036 FILE* p = fopen("try.out", "w");
11040 # ifdef TRY_FPRINTF
11044 #ifdef TRY_FFLUSH_NULL
11047 #ifdef TRY_FFLUSH_ALL
11049 long open_max = -1;
11050 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11051 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11053 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11054 open_max = sysconf(_SC_OPEN_MAX);
11057 open_max = FOPEN_MAX;
11060 open_max = OPEN_MAX;
11069 # ifdef HAS_STDIO_STREAM_ARRAY
11070 if (open_max > 0) {
11072 for (i = 0; i < open_max; i++)
11073 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11074 STDIO_STREAM_ARRAY[i]._file < open_max &&
11075 STDIO_STREAM_ARRAY[i]._flag)
11076 fflush(&STDIO_STREAM_ARRAY[i]);
11084 : first we have to find out how _not_ to flush
11085 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11087 set try -DTRY_FPUTC
11088 if eval $compile; then
11090 ./try$exe_ext 2>/dev/null
11091 if $test ! -s try.out -a "X$?" = X42; then
11097 set try -DTRY_FPRINTF
11099 if eval $compile; then
11101 ./try$exe_ext 2>/dev/null
11102 if $test ! -s try.out -a "X$?" = X42; then
11103 output=-DTRY_FPRINTF
11109 : check for fflush NULL behaviour
11110 case "$fflushNULL" in
11111 '') set try -DTRY_FFLUSH_NULL $output
11112 if eval $compile; then
11114 ./try$exe_ext 2>/dev/null
11116 if $test -s try.out -a "X$code" = X42; then
11117 fflushNULL="`$cat try.out`"
11119 if $test "X$code" != X42; then
11121 (If this test failed, don't worry, we'll try another method shortly.)
11126 $rm -f core try.core core.try.*
11127 case "$fflushNULL" in
11129 Your fflush(NULL) works okay.
11131 fflushNULL="$define"
11134 Your fflush(NULL) isn't working (contrary to ANSI C).
11136 fflushNULL="$undef"
11139 Cannot figure out whether your fflush(NULL) works or not.
11140 I'm assuming it doesn't (contrary to ANSI C).
11142 fflushNULL="$undef"
11146 $define|true|[yY]*)
11147 fflushNULL="$define"
11150 fflushNULL="$undef"
11153 : check explicit looping only if NULL did not work
11154 case "$fflushNULL" in
11156 : check for fflush all behaviour
11157 case "$fflushall" in
11158 '') set try -DTRY_FFLUSH_ALL $output
11159 if eval $compile; then
11161 (Now testing the other method--but note that also this may fail.)
11164 ./try$exe_ext 2>/dev/null
11165 if $test -s try.out -a "X$?" = X42; then
11166 fflushall="`$cat try.out`"
11169 $rm -f core try.core core.try.*
11170 case "$fflushall" in
11172 Whew. Flushing explicitly all the stdio streams works.
11174 fflushall="$define"
11177 Sigh. Flushing explicitly all the stdio streams doesn't work.
11182 Cannot figure out whether flushing stdio streams explicitly works or not.
11183 I'm assuming it doesn't.
11189 "$define"|true|[yY]*)
11190 fflushall="$define"
11197 *) fflushall="$undef"
11200 case "$fflushNULL$fflushall" in
11203 I cannot figure out how to flush pending stdio output.
11207 $rm -f try.* try$exe_ext
11209 : see what type file positions are declared as in the library
11210 rp="What is the type for file position used by fsetpos()?"
11211 set fpos_t fpostype long stdio.h sys/types.h
11214 : Store the full pathname to the ar program for use in the C program
11215 : Respect a hint or command line value for full_ar.
11220 : Store the full pathname to the sed program for use in the C program
11223 : see what type gids are declared as in the kernel
11225 echo "Looking for the type for group ids returned by getgid()."
11226 set gid_t gidtype xxx stdio.h sys/types.h
11230 xxx=`./findhdr sys/user.h`
11231 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11233 unsigned) dflt="$1 $2" ;;
11237 *) dflt="$gidtype";;
11240 gid_t) echo "gid_t found." ;;
11241 *) rp="What is the type for group ids returned by getgid()?"
11247 : see if getgroups exists
11248 set getgroups d_getgrps
11251 : see if setgroups exists
11252 set setgroups d_setgrps
11256 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11258 case "$d_getgrps$d_setgrps" in
11260 case "$groupstype" in
11261 '') dflt="$gidtype" ;;
11262 *) dflt="$groupstype" ;;
11265 What type of pointer is the second argument to getgroups() and setgroups()?
11266 Usually this is the same as group ids, $gidtype, but not always.
11269 rp='What type pointer is the second argument to getgroups() and setgroups()?'
11273 *) groupstype="$gidtype";;
11276 : see what type lseek is declared as in the kernel
11277 rp="What is the type used for lseek's offset on this system?"
11278 set off_t lseektype long stdio.h sys/types.h
11282 $echo $n "Checking to see how big your file offsets are...$c" >&4
11284 #include <sys/types.h>
11288 printf("%d\n", sizeof($lseektype));
11292 if eval $compile_ok; then
11294 $echo " $lseeksize bytes." >&4
11298 echo "(I can't seem to compile the test program. Guessing...)"
11299 rp="What is the size of your file offsets (in bytes)?"
11306 echo "Checking if your $make program sets \$(MAKE)..." >&4
11307 case "$make_set_make" in
11309 $sed 's/^X //' > testmake.mak << 'EOF'
11311 X @echo 'maketemp="$(MAKE)"'
11313 case "`$make -f testmake.mak 2>/dev/null`" in
11314 *maketemp=*) make_set_make='#' ;;
11315 *) make_set_make="MAKE=$make" ;;
11317 $rm -f testmake.mak
11320 case "$make_set_make" in
11321 '#') echo "Yup, it does.";;
11322 *) echo "Nope, it doesn't.";;
11325 : see what type is used for mode_t
11326 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11327 set mode_t modetype int stdio.h sys/types.h
11330 : define a fucntion to check prototypes
11331 $cat > protochk <<EOSH
11334 optimize="$optimize"
11336 prototype="$prototype"
11341 $cat >> protochk <<'EOSH'
11346 while test $# -ge 2; do
11348 $define) echo "#include <$2>" >> try.c ;;
11349 literal) echo "$2" >> try.c ;;
11353 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11354 cat >> try.c <<'EOCP'
11355 #ifdef CAN_PROTOTYPE
11356 #define _(args) args
11361 echo "$foo" >> try.c
11362 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11363 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11369 $eunicefix protochk
11371 : see what type is used for size_t
11372 rp="What is the type used for the length parameter for string functions?"
11373 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11376 : check for type of arguments to gethostbyaddr.
11377 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11378 case "$d_gethbyaddr" in
11382 Checking to see what type of arguments are accepted by gethostbyaddr().
11384 hdrs="$define sys/types.h
11385 $d_socket sys/socket.h
11386 $i_niin netinet/in.h
11388 $i_unistd unistd.h"
11389 : The first arg can 'char *' or 'void *'
11390 : The second arg is some of integral type
11391 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11392 for yyy in size_t long int; do
11393 case "$netdb_host_type" in
11394 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11395 if ./protochk "$try" $hdrs; then
11396 echo "Your system accepts $xxx for the first arg."
11397 echo "...and $yyy for the second arg."
11398 netdb_host_type="$xxx"
11399 netdb_hlen_type="$yyy"
11405 : In case none of those worked, prompt the user.
11406 case "$netdb_host_type" in
11407 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11410 netdb_host_type=$ans
11411 rp='What is the type for the 2nd argument to gethostbyaddr?'
11414 netdb_hlen_type=$ans
11418 *) : no gethostbyaddr, so pick harmless defaults
11419 netdb_host_type='char *'
11420 netdb_hlen_type="$sizetype"
11423 # Remove the "const" if needed. -- but then we'll have a
11425 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11428 : check for type of argument to gethostbyname.
11429 if test "X$netdb_name_type" = X ; then
11430 case "$d_gethbyname" in
11434 Checking to see what type of argument is accepted by gethostbyname().
11436 hdrs="$define sys/types.h
11437 $d_socket sys/socket.h
11438 $i_niin netinet/in.h
11440 $i_unistd unistd.h"
11441 for xxx in "const char *" "char *"; do
11442 case "$netdb_name_type" in
11443 '') try="extern struct hostent *gethostbyname($xxx);"
11444 if ./protochk "$try" $hdrs; then
11445 echo "Your system accepts $xxx."
11446 netdb_name_type="$xxx"
11451 : In case none of those worked, prompt the user.
11452 case "$netdb_name_type" in
11453 '') rp='What is the type for the 1st argument to gethostbyname?'
11456 netdb_name_type=$ans
11460 *) : no gethostbyname, so pick harmless default
11461 netdb_name_type='char *'
11466 : check for type of 1st argument to getnetbyaddr.
11467 if test "X$netdb_net_type" = X ; then
11468 case "$d_getnbyaddr" in
11472 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11474 hdrs="$define sys/types.h
11475 $d_socket sys/socket.h
11476 $i_niin netinet/in.h
11478 $i_unistd unistd.h"
11479 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11480 case "$netdb_net_type" in
11481 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11482 if ./protochk "$try" $hdrs; then
11483 echo "Your system accepts $xxx."
11484 netdb_net_type="$xxx"
11489 : In case none of those worked, prompt the user.
11490 case "$netdb_net_type" in
11491 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11494 netdb_net_type=$ans
11498 *) : no getnetbyaddr, so pick harmless default
11499 netdb_net_type='long'
11503 : locate the preferred pager for this system
11517 '') dflt=/usr/ucb/more;;
11524 rp='What pager is used on your system?'
11528 : see what type pids are declared as in the kernel
11529 rp="What is the type of process ids on this system?"
11530 set pid_t pidtype int stdio.h sys/types.h
11533 : check for length of pointer
11537 $echo $n "Checking to see how big your pointers are...$c" >&4
11538 if test "$voidflags" -gt 7; then
11539 echo '#define VOID_PTR char *' > try.c
11541 echo '#define VOID_PTR void *' > try.c
11543 $cat >>try.c <<'EOCP'
11547 printf("%d\n", sizeof(VOID_PTR));
11552 if eval $compile_ok; then
11554 $echo " $ptrsize bytes." >&4
11557 echo "(I can't seem to compile the test program. Guessing...)" >&4
11558 rp="What is the size of a pointer (in bytes)?"
11566 : see if ar generates random libraries by itself
11568 echo "Checking how to generate random libraries on your machine..." >&4
11569 echo 'int bar1() { return bar2(); }' > bar1.c
11570 echo 'int bar2() { return 2; }' > bar2.c
11571 $cat > foo.c <<'EOP'
11572 int main() { printf("%d\n", bar1()); exit(0); }
11574 $cc $ccflags -c bar1.c >/dev/null 2>&1
11575 $cc $ccflags -c bar2.c >/dev/null 2>&1
11576 $cc $ccflags -c foo.c >/dev/null 2>&1
11577 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11578 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11579 ./foobar >/dev/null 2>&1; then
11580 echo "$ar appears to generate random libraries itself."
11583 elif $ar ts bar$_a >/dev/null 2>&1 &&
11584 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11585 ./foobar >/dev/null 2>&1; then
11586 echo "a table of contents needs to be added with '$ar ts'."
11593 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11594 $test -f $ranlib || ranlib=''
11597 if $test -n "$ranlib"; then
11598 echo "your system has '$ranlib'; we'll use that."
11601 echo "your system doesn't seem to support random libraries"
11602 echo "so we'll use lorder and tsort to order the libraries."
11609 : check for type of arguments to select.
11610 case "$selecttype" in
11611 '') case "$d_select" in
11614 Checking to see what type of arguments are accepted by select().
11616 hdrs="$define sys/types.h
11617 $i_systime sys/time.h
11618 $i_sysselct sys/select.h
11619 $d_socket sys/socket.h"
11620 : The first arg can be int, unsigned, or size_t
11621 : The last arg may or may not be 'const'
11623 : void pointer has been seen but using that
11624 : breaks the selectminbits test
11625 for xxx in 'fd_set *' 'int *'; do
11626 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11627 for tmo in 'struct timeval *' 'const struct timeval *'; do
11629 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11630 if ./protochk "$try" $hdrs; then
11631 echo "Your system accepts $xxx."
11640 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11641 case "$d_fd_set" in
11642 $define) dflt="fd_set *" ;;
11651 *) : no select, so pick a harmless default
11658 : check for the select 'width'
11659 case "$selectminbits" in
11660 '') case "$d_select" in
11664 Checking to see on how many bits at a time your select() operates...
11667 #include <sys/types.h>
11669 #$i_systime I_SYS_TIME
11670 #$i_systimek I_SYS_TIME_KERNEL
11675 # ifdef I_SYS_TIME_KERNEL
11678 # include <sys/time.h>
11679 # ifdef I_SYS_TIME_KERNEL
11683 #$i_sysselct I_SYS_SELECT
11684 #ifdef I_SYS_SELECT
11685 #include <sys/select.h>
11687 #$d_socket HAS_SOCKET
11689 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11693 #define S sizeof(*(b))
11695 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11696 #define NBITS (NBYTES * 8)
11705 fp = fopen("try.c", "r");
11711 b = ($selecttype)s;
11712 for (i = 0; i < NBITS; i++)
11716 select(fd + 1, b, 0, 0, &t);
11717 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11718 printf("%d\n", i + 1);
11723 if eval $compile_ok; then
11724 selectminbits=`./try`
11725 case "$selectminbits" in
11727 Cannot figure out on how many bits at a time your select() operates.
11728 I'll play safe and guess it is 32 bits.
11734 *) bits="$selectminbits bits" ;;
11736 echo "Your select() operates on $bits at a time." >&4
11738 rp='What is the minimum number of bits your select() operates on?'
11739 case "$byteorder" in
11740 1234|12345678) dflt=32 ;;
11745 selectminbits="$val"
11749 *) : no select, so pick a harmless default
11756 : Trace out the files included by signal.h, then look for SIGxxx names.
11757 : Remove SIGARRAYSIZE used by HPUX.
11758 : Remove SIGSTKSIZE used by Linux.
11759 : Remove SIGSTKSZ used by Posix.
11760 : Remove SIGTYP void lines used by OS2.
11761 xxx=`echo '#include <signal.h>' |
11762 $cppstdin $cppminus $cppflags 2>/dev/null |
11763 $grep '^[ ]*#.*include' |
11764 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11765 : Check this list of files to be sure we have parsed the cpp output ok.
11766 : This will also avoid potentially non-existent files, such
11769 for xx in $xxx /dev/null ; do
11770 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11772 : If we have found no files, at least try signal.h
11773 case "$xxxfiles" in
11774 '') xxxfiles=`./findhdr signal.h` ;;
11777 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11778 print substr($2, 4, 20)
11780 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11781 print substr($3, 4, 20)
11783 : Append some common names just in case the awk scan failed.
11784 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11785 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11786 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11787 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11788 : generate a few handy files for later
11789 $cat > signal.c <<'EOCP'
11790 #include <sys/types.h>
11791 #include <signal.h>
11795 /* Strange style to avoid deeply-nested #if/#else/#endif */
11798 # define NSIG (_NSIG)
11804 # define NSIG (SIGMAX+1)
11810 # define NSIG (SIG_MAX+1)
11816 # define NSIG (MAXSIG+1)
11822 # define NSIG (MAX_SIG+1)
11827 # ifdef SIGARRAYSIZE
11828 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11834 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11838 /* Default to some arbitrary number that's big enough to get most
11839 of the common signals.
11845 printf("NSIG %d\n", NSIG);
11851 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11853 printf "#ifdef SIG"; printf $1; printf "\n"
11854 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11855 printf $1; printf ");\n"
11859 printf "#endif /* JUST_NSIG */\n";
11863 $cat >signal.awk <<'EOP'
11864 BEGIN { ndups = 0 }
11865 $1 ~ /^NSIG$/ { nsig = $2 }
11866 ($1 !~ /^NSIG$/) && (NF == 2) {
11867 if ($2 > maxsig) { maxsig = $2 }
11868 if (sig_name[$2]) {
11869 dup_name[ndups] = $1
11870 dup_num[ndups] = $2
11882 printf("NSIG %d\n", nsig);
11883 for (n = 1; n < nsig; n++) {
11885 printf("%s %d\n", sig_name[n], sig_num[n])
11888 printf("NUM%d %d\n", n, n)
11891 for (n = 0; n < ndups; n++) {
11892 printf("%s %d\n", dup_name[n], dup_num[n])
11896 $cat >signal_cmd <<EOS
11898 if $test -s signal.lst; then
11899 echo "Using your existing signal.lst file"
11904 $cat >>signal_cmd <<'EOS'
11907 if eval $compile_ok; then
11908 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11910 echo "(I can't seem be able to compile the whole test program)" >&4
11911 echo "(I'll try it in little pieces.)" >&4
11912 set signal -DJUST_NSIG
11913 if eval $compile_ok; then
11914 ./signal$_exe > signal.nsg
11917 echo "I can't seem to figure out how many signals you have." >&4
11918 echo "Guessing 50." >&4
11919 echo 'NSIG 50' > signal.nsg
11921 : Now look at all the signal names, one at a time.
11922 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11923 $cat > signal.c <<EOCP
11924 #include <sys/types.h>
11925 #include <signal.h>
11928 printf("$xx %d\n", SIG${xx});
11933 if eval $compile; then
11934 echo "SIG${xx} found."
11935 ./signal$_exe >> signal.ls1
11937 echo "SIG${xx} NOT found."
11940 if $test -s signal.ls1; then
11941 $cat signal.nsg signal.ls1 |
11942 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11946 if $test -s signal.lst; then
11949 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11950 echo 'kill -l' >signal
11951 set X `csh -f <signal`
11955 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11957 echo $@ | $tr ' ' $trnl | \
11958 $awk '{ printf "%s %d\n", $1, ++s; }
11959 END { printf "NSIG %d\n", ++s }' >signal.lst
11961 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11963 chmod a+x signal_cmd
11964 $eunicefix signal_cmd
11966 : generate list of signal names
11968 case "$sig_name_init" in
11970 *) case "$sig_num_init" in
11971 ''|*,*) doinit=yes ;;
11976 echo "Generating a list of signal names and numbers..." >&4
11978 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11979 sig_name=`$awk 'BEGIN { printf "ZERO " }
11980 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11981 sig_num=`$awk 'BEGIN { printf "0 " }
11982 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11983 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11984 !/^NSIG/ { printf "\"%s\", ", $1 }
11985 END { printf "0\n" }' signal.lst`
11986 sig_num_init=`$awk 'BEGIN { printf "0, " }
11987 !/^NSIG/ { printf "%d, ", $2}
11988 END { printf "0\n"}' signal.lst`
11991 echo "The following $sig_count signals are available:"
11993 echo $sig_name | $awk \
11994 'BEGIN { linelen = 0 }
11996 for (i = 1; i <= NF; i++) {
11997 name = "SIG" $i " "
11998 linelen = linelen + length(name)
11999 if (linelen > 70) {
12001 linelen = length(name)
12007 $rm -f signal signal.c signal.awk signal.lst signal_cmd
12009 : see what type is used for signed size_t
12010 set ssize_t ssizetype int stdio.h sys/types.h
12013 $cat > ssize.c <<EOM
12015 #include <sys/types.h>
12016 #define Size_t $sizetype
12017 #define SSize_t $dflt
12020 if (sizeof(Size_t) == sizeof(SSize_t))
12022 else if (sizeof(Size_t) == sizeof(int))
12031 if eval $compile_ok && ./ssize > /dev/null; then
12032 ssizetype=`./ssize`
12033 echo "I'll be using $ssizetype for functions returning a byte count." >&4
12036 Help! I can't compile and run the ssize_t test program: please enlighten me!
12037 (This is probably a misconfiguration in your system or libraries, and
12038 you really ought to fix it. Still, I'll try anyway.)
12040 I need a type that is the same size as $sizetype, but is guaranteed to
12041 be signed. Common values are ssize_t, int and long.
12044 rp="What signed type is the same size as $sizetype?"
12048 $rm -f ssize ssize.*
12050 : see what type of char stdio uses.
12052 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12053 echo "Your stdio uses unsigned chars." >&4
12054 stdchar="unsigned char"
12056 echo "Your stdio uses signed chars." >&4
12060 : see if time exists
12062 if test "X$d_time" = X -o X"$timetype" = X; then
12063 if set time val -f d_time; eval $csym; $val; then
12064 echo 'time() found.' >&4
12066 rp="What is the type returned by time() on this system?"
12067 set time_t timetype long stdio.h sys/types.h
12070 echo 'time() not found, hope that will do.' >&4
12078 : see what type uids are declared as in the kernel
12080 echo "Looking for the type for user ids returned by getuid()."
12081 set uid_t uidtype xxx stdio.h sys/types.h
12085 xxx=`./findhdr sys/user.h`
12086 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12088 unsigned) dflt="$1 $2" ;;
12092 *) dflt="$uidtype";;
12095 uid_t) echo "uid_t found." ;;
12096 *) rp="What is the type for user ids returned by getuid()?"
12102 : see if dbm.h is available
12103 : see if dbmclose exists
12104 set dbmclose d_dbmclose
12107 case "$d_dbmclose" in
12117 *) set rpcsvc/dbm.h i_rpcsvcdbm
12122 *) echo "We won't be including <dbm.h>"
12132 : see if this is a sys/file.h system
12137 : do we need to include sys/file.h ?
12141 if $h_sysfile; then
12143 echo "We'll be including <sys/file.h>." >&4
12146 echo "We won't be including <sys/file.h>." >&4
12156 : see if fcntl.h is there
12161 : see if we can include fcntl.h
12167 echo "We'll be including <fcntl.h>." >&4
12170 if $h_sysfile; then
12171 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12173 echo "We won't be including <fcntl.h>." >&4
12185 : see if locale.h is available
12186 set locale.h i_locale
12189 : see if mach cthreads are available
12190 if test "X$usethreads" = "X$define"; then
12191 set mach/cthreads.h i_machcthr
12194 i_machcthr="$undef"
12199 : see if this is a math.h system
12203 : see if this is a mntent.h system
12204 set mntent.h i_mntent
12207 : see if ndbm.h is available
12212 : see if dbm_open exists
12213 set dbm_open d_dbm_open
12215 case "$d_dbm_open" in
12218 echo "We won't be including <ndbm.h>"
12227 : see if net/errno.h is available
12229 set net/errno.h val
12232 : Unfortunately, it causes problems on some systems. Arrgh.
12235 cat > try.c <<'EOM'
12238 #include <net/errno.h>
12244 if $cc $ccflags -c try.c >/dev/null 2>&1; then
12245 echo "We'll be including <net/errno.h>." >&4
12247 echo "We won't be including <net/errno.h>." >&4
12256 : see if netinet/tcp.h is available
12257 set netinet/tcp.h i_netinettcp
12260 : see if this is a poll.h system
12264 : get C preprocessor symbols handy
12266 $echo $n "Hmm... $c"
12267 echo $al | $tr ' ' $trnl >Cppsym.know
12268 $cat <<EOSS >Cppsym
12276 case "\$list\$#" in
12279 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12281 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12284 unknown="\$unknown \$sym"
12294 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12296 exit 0; _ _ _ _\1\\ \1\\
12299 echo "exit 1; _ _ _" >>Cppsym\$\$
12300 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
12302 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12308 $rm -f Cppsym\$\$ Cppsym2\$\$
12313 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12315 : now check the C compiler for additional symbols
12316 postprocess_cc_v=''
12318 aix) postprocess_cc_v="|$tr , ' '" ;;
12325 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12328 -D*) echo "\$i" | $sed 's/^-D//';;
12329 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12334 postprocess_cc_v=''
12337 ./ccsym > ccsym1.raw
12338 if $test -s ccsym1.raw; then
12339 $sort ccsym1.raw | $uniq >ccsym.raw
12341 mv ccsym1.raw ccsym.raw
12344 $awk '/\=/ { print $0; next }
12345 { print $0"=1" }' ccsym.raw >ccsym.list
12346 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12347 $comm -13 ccsym.true ccsym.list >ccsym.own
12348 $comm -12 ccsym.true ccsym.list >ccsym.com
12349 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12351 if $test -z ccsym.raw; then
12352 echo "Your C compiler doesn't seem to define any symbols!" >&4
12354 echo "However, your C preprocessor defines the following symbols:"
12357 cppsymbols=`$cat Cppsym.true`
12358 cppsymbols=`echo $cppsymbols`
12359 cppccsymbols="$cppsymbols"
12361 if $test -s ccsym.com; then
12362 echo "Your C compiler and pre-processor define these symbols:"
12363 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12366 cppccsymbols=`$cat ccsym.com`
12367 cppccsymbols=`echo $cppccsymbols`
12368 $test "$silent" || sleep 1
12370 if $test -s ccsym.cpp; then
12371 $test "$also" && echo " "
12372 echo "Your C pre-processor ${also}defines the following symbols:"
12373 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12375 cppsymbols=`$cat ccsym.cpp`
12376 cppsymbols=`echo $cppsymbols`
12377 $test "$silent" || sleep 1
12379 if $test -s ccsym.own; then
12380 $test "$also" && echo " "
12381 echo "Your C compiler ${also}defines the following cpp symbols:"
12382 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12383 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12384 ccsymbols=`$cat ccsym.own`
12385 ccsymbols=`echo $ccsymbols`
12386 $test "$silent" || sleep 1
12391 : see if this is a termio system
12395 if $test `./findhdr termios.h`; then
12396 set tcsetattr i_termios
12402 "$define") echo "You have POSIX termios.h... good!" >&4;;
12403 *) if ./Cppsym pyr; then
12404 case "`/bin/universe`" in
12405 ucb) if $test `./findhdr sgtty.h`; then
12407 echo "<sgtty.h> found." >&4
12409 echo "System is pyramid with BSD universe."
12410 echo "<sgtty.h> not found--you could have problems." >&4
12412 *) if $test `./findhdr termio.h`; then
12414 echo "<termio.h> found." >&4
12416 echo "System is pyramid with USG universe."
12417 echo "<termio.h> not found--you could have problems." >&4
12421 if $test `./findhdr termio.h`; then
12422 echo "<termio.h> found." >&4
12424 elif $test `./findhdr sgtty.h`; then
12425 echo "<sgtty.h> found." >&4
12428 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12431 if $test `./findhdr sgtty.h`; then
12432 echo "<sgtty.h> found." >&4
12434 elif $test `./findhdr termio.h`; then
12435 echo "<termio.h> found." >&4
12438 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12442 set i_termio; eval $setvar
12443 val=$val2; set i_sgtty; eval $setvar
12444 val=$val3; set i_termios; eval $setvar
12446 : see if this is a shadow.h system
12447 set shadow.h i_shadow
12450 : see if this is a socks.h system
12451 set socks.h i_socks
12454 : see if stdarg is available
12456 if $test `./findhdr stdarg.h`; then
12457 echo "<stdarg.h> found." >&4
12460 echo "<stdarg.h> NOT found." >&4
12464 : see if varags is available
12466 if $test `./findhdr varargs.h`; then
12467 echo "<varargs.h> found." >&4
12469 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12472 : set up the varargs testing programs
12473 $cat > varargs.c <<EOP
12475 #include <stdarg.h>
12478 #include <varargs.h>
12482 int f(char *p, ...)
12496 p = va_arg(ap, char *);
12501 $cat > varargs <<EOP
12503 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12512 : now check which varargs header should be included
12517 if `./varargs I_STDARG`; then
12519 elif `./varargs I_VARARGS`; then
12524 if `./varargs I_VARARGS`; then
12531 echo "I could not find the definition for va_dcl... You have problems..." >&4
12532 val="$undef"; set i_stdarg; eval $setvar
12533 val="$undef"; set i_varargs; eval $setvar
12538 case "$i_varhdr" in
12540 val="$define"; set i_stdarg; eval $setvar
12541 val="$undef"; set i_varargs; eval $setvar
12544 val="$undef"; set i_stdarg; eval $setvar
12545 val="$define"; set i_varargs; eval $setvar
12548 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12552 : see if stddef is available
12553 set stddef.h i_stddef
12556 : see if sys/access.h is available
12557 set sys/access.h i_sysaccess
12560 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12561 set sys/filio.h i_sysfilio
12564 if $test `./findhdr sys/ioctl.h`; then
12566 echo '<sys/ioctl.h> found.' >&4
12569 if $test $i_sysfilio = "$define"; then
12570 echo '<sys/ioctl.h> NOT found.' >&4
12572 $test $i_sgtty = "$define" && xxx="sgtty.h"
12573 $test $i_termio = "$define" && xxx="termio.h"
12574 $test $i_termios = "$define" && xxx="termios.h"
12575 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12581 : see if sys/resource.h has to be included
12582 set sys/resource.h i_sysresrc
12585 : see if sys/security.h is available
12586 set sys/security.h i_syssecrt
12589 : see if this is a sys/statvfs.h system
12590 set sys/statvfs.h i_sysstatvfs
12593 : see if this is a sys/un.h system
12594 set sys/un.h i_sysun
12597 : see if this is a syswait system
12598 set sys/wait.h i_syswait
12601 : see if this is an utime system
12602 set utime.h i_utime
12605 : see if this is a values.h system
12606 set values.h i_values
12609 : see if this is a vfork system
12612 set vfork.h i_vfork
12620 : see if gdbm.h is available
12625 : see if gdbm_open exists
12626 set gdbm_open d_gdbm_open
12628 case "$d_gdbm_open" in
12631 echo "We won't be including <gdbm.h>"
12641 echo "Looking for extensions..." >&4
12644 : If we are using the old config.sh, known_extensions may contain
12645 : old or inaccurate or duplicate values.
12646 known_extensions=''
12647 nonxs_extensions=''
12648 : We do not use find because it might not be available.
12649 : We do not just use MANIFEST because the user may have dropped
12650 : some additional extensions into the source tree and expect them
12654 DynaLoader|dynaload) ;;
12655 *) if $test -f $xxx/$xxx.xs; then
12656 known_extensions="$known_extensions $xxx"
12657 elif $test -f $xxx/Makefile.PL; then
12658 nonxs_extensions="$nonxs_extensions $xxx"
12660 if $test -d $xxx; then
12661 # Look for nested extensions, eg. Devel/Dprof.
12664 if $test -f $yyy/$yyy.xs; then
12665 known_extensions="$known_extensions $xxx/$yyy"
12666 elif $test -f $yyy/Makefile.PL; then
12667 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12676 set X $nonxs_extensions
12678 nonxs_extensions="$*"
12679 set X $known_extensions
12681 known_extensions="$*"
12684 : Now see which are supported on this system.
12686 for xxx in $known_extensions ; do
12690 $define) avail_ext="$avail_ext $xxx" ;;
12693 GDBM_File|gdbm_fil)
12695 $define) avail_ext="$avail_ext $xxx" ;;
12698 NDBM_File|ndbm_fil)
12700 $define) avail_ext="$avail_ext $xxx" ;;
12703 ODBM_File|odbm_fil)
12704 case "${i_dbm}${i_rpcsvcdbm}" in
12705 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12709 case "$useposix" in
12710 true|define|y) avail_ext="$avail_ext $xxx" ;;
12714 case "$useopcode" in
12715 true|define|y) avail_ext="$avail_ext $xxx" ;;
12719 case "$d_socket" in
12720 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12724 case "$usethreads" in
12725 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12729 : XXX Do we need a useipcsysv variable here
12730 case "${d_msg}${d_sem}${d_shm}" in
12731 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12734 *) avail_ext="$avail_ext $xxx"
12743 : Now see which nonxs extensions are supported on this system.
12744 : For now assume all are.
12746 for xxx in $nonxs_extensions ; do
12748 *) nonxs_ext="$nonxs_ext $xxx"
12760 A number of extensions are supplied with $package. You may choose to
12761 compile these extensions for dynamic loading (the default), compile
12762 them into the $package executable (static loading), or not include
12763 them at all. Answer "none" to include no extensions.
12764 Note that DynaLoader is always built and need not be mentioned here.
12767 case "$dynamic_ext" in
12768 '') dflt="$avail_ext" ;;
12769 *) dflt="$dynamic_ext"
12770 # Perhaps we are reusing an old out-of-date config.sh.
12773 if test X"$dynamic_ext" != X"$avail_ext"; then
12775 NOTICE: Your previous config.sh list may be incorrect.
12776 The extensions now available to you are
12778 but the default list from your previous config.sh is
12790 rp="What extensions do you wish to load dynamically?"
12793 none) dynamic_ext=' ' ;;
12794 *) dynamic_ext="$ans" ;;
12797 case "$static_ext" in
12799 : Exclude those already listed in dynamic linking
12801 for xxx in $avail_ext; do
12802 case " $dynamic_ext " in
12804 *) dflt="$dflt $xxx" ;;
12811 *) dflt="$static_ext"
12818 rp="What extensions do you wish to load statically?"
12821 none) static_ext=' ' ;;
12822 *) static_ext="$ans" ;;
12827 A number of extensions are supplied with $package. Answer "none"
12828 to include no extensions.
12829 Note that DynaLoader is always built and need not be mentioned here.
12832 case "$static_ext" in
12833 '') dflt="$avail_ext" ;;
12834 *) dflt="$static_ext"
12835 # Perhaps we are reusing an old out-of-date config.sh.
12838 if test X"$static_ext" != X"$avail_ext"; then
12840 NOTICE: Your previous config.sh list may be incorrect.
12841 The extensions now available to you are
12843 but the default list from your previous config.sh is
12852 : Exclude those that are not xs extensions
12856 rp="What extensions do you wish to include?"
12859 none) static_ext=' ' ;;
12860 *) static_ext="$ans" ;;
12865 set X $dynamic_ext $static_ext $nonxs_ext
12869 : Remove build directory name from cppstdin so it can be used from
12870 : either the present location or the final installed location.
12872 : Get out of the UU directory to get correct path name.
12874 case "$cppstdin" in
12876 echo "Stripping down cppstdin path name"
12882 : end of configuration questions
12884 echo "End of configuration questions."
12887 : back to where it started
12888 if test -d ../UU; then
12892 : configuration may be patched via a 'config.over' file
12893 if $test -f config.over; then
12896 rp='I see a config.over file. Do you wish to load it?'
12899 n*) echo "OK, I'll ignore it.";;
12901 echo "Configuration override changes have been loaded."
12906 : in case they want portability, strip down executable paths
12907 case "$d_portable" in
12910 echo "Stripping down executable paths..." >&4
12911 for file in $loclist $trylist; do
12912 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12913 eval $file="\$file"
12919 : create config.sh file
12921 echo "Creating config.sh..." >&4
12922 $spitshell <<EOT >config.sh
12925 # This file was produced by running the Configure script. It holds all the
12926 # definitions figured out by Configure. Should you modify one of these values,
12927 # do not forget to propagate your changes by running "Configure -der". You may
12928 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12931 # Package name : $package
12932 # Source directory : $src
12933 # Configuration time: $cf_time
12934 # Configured by : $cf_by
12935 # Target system : $myuname
12945 Revision='$Revision'
12952 alignbytes='$alignbytes'
12953 ansi2knr='$ansi2knr'
12954 aphostname='$aphostname'
12955 apiversion='$apiversion'
12958 archlibexp='$archlibexp'
12959 archname64='$archname64'
12960 archname='$archname'
12961 archobjs='$archobjs'
12969 byteorder='$byteorder'
12971 castflags='$castflags'
12974 cccdlflags='$cccdlflags'
12975 ccdlflags='$ccdlflags'
12977 ccsymbols='$ccsymbols'
12979 cf_email='$cf_email'
12984 clocktype='$clocktype'
12986 compress='$compress'
12987 contains='$contains'
12991 cpp_stuff='$cpp_stuff'
12992 cppccsymbols='$cppccsymbols'
12993 cppflags='$cppflags'
12995 cppminus='$cppminus'
12997 cppstdin='$cppstdin'
12998 cppsymbols='$cppsymbols'
12999 crosscompile='$crosscompile'
13000 cryptlib='$cryptlib'
13002 d_Gconvert='$d_Gconvert'
13003 d_access='$d_access'
13004 d_accessx='$d_accessx'
13006 d_archlib='$d_archlib'
13007 d_attribut='$d_attribut'
13011 d_bsdgetpgrp='$d_bsdgetpgrp'
13012 d_bsdsetpgrp='$d_bsdsetpgrp'
13014 d_casti32='$d_casti32'
13015 d_castneg='$d_castneg'
13016 d_charvspr='$d_charvspr'
13018 d_chroot='$d_chroot'
13019 d_chsize='$d_chsize'
13020 d_closedir='$d_closedir'
13021 d_cmsghdr_s='$d_cmsghdr_s'
13025 d_cuserid='$d_cuserid'
13026 d_dbl_dig='$d_dbl_dig'
13027 d_dbmclose64='$d_dbmclose64'
13028 d_dbminit64='$d_dbminit64'
13029 d_delete64='$d_delete64'
13030 d_difftime='$d_difftime'
13031 d_dirent64_s='$d_dirent64_s'
13032 d_dirnamlen='$d_dirnamlen'
13033 d_dlerror='$d_dlerror'
13034 d_dlopen='$d_dlopen'
13035 d_dlsymun='$d_dlsymun'
13036 d_dosuid='$d_dosuid'
13037 d_drand48proto='$d_drand48proto'
13039 d_eaccess='$d_eaccess'
13040 d_endgrent='$d_endgrent'
13041 d_endhent='$d_endhent'
13042 d_endnent='$d_endnent'
13043 d_endpent='$d_endpent'
13044 d_endpwent='$d_endpwent'
13045 d_endsent='$d_endsent'
13046 d_endspent='$d_endspent'
13047 d_eofnblk='$d_eofnblk'
13048 d_eunice='$d_eunice'
13049 d_fchmod='$d_fchmod'
13050 d_fchown='$d_fchown'
13052 d_fd_macros='$d_fd_macros'
13053 d_fd_set='$d_fd_set'
13054 d_fds_bits='$d_fds_bits'
13055 d_fetch64='$d_fetch64'
13056 d_fgetpos64='$d_fgetpos64'
13057 d_fgetpos='$d_fgetpos'
13058 d_firstkey64='$d_firstkey64'
13059 d_flexfnam='$d_flexfnam'
13060 d_flock64_s='$d_flock64_s'
13062 d_fopen64='$d_fopen64'
13064 d_fpathconf='$d_fpathconf'
13065 d_freopen64='$d_freopen64'
13066 d_fseek64='$d_fseek64'
13067 d_fseeko64='$d_fseeko64'
13068 d_fseeko='$d_fseeko'
13069 d_fsetpos64='$d_fsetpos64'
13070 d_fsetpos='$d_fsetpos'
13071 d_fstat64='$d_fstat64'
13072 d_fstatfs='$d_fstatfs'
13073 d_fstatvfs='$d_fstatvfs'
13074 d_ftell64='$d_ftell64'
13075 d_ftello64='$d_ftello64'
13076 d_ftello='$d_ftello'
13078 d_ftruncate64='$d_ftruncate64'
13079 d_getgrent='$d_getgrent'
13080 d_getgrps='$d_getgrps'
13081 d_gethbyaddr='$d_gethbyaddr'
13082 d_gethbyname='$d_gethbyname'
13083 d_gethent='$d_gethent'
13084 d_gethname='$d_gethname'
13085 d_gethostprotos='$d_gethostprotos'
13086 d_getlogin='$d_getlogin'
13087 d_getmntent='$d_getmntent'
13088 d_getnbyaddr='$d_getnbyaddr'
13089 d_getnbyname='$d_getnbyname'
13090 d_getnent='$d_getnent'
13091 d_getnetprotos='$d_getnetprotos'
13092 d_getpbyname='$d_getpbyname'
13093 d_getpbynumber='$d_getpbynumber'
13094 d_getpent='$d_getpent'
13095 d_getpgid='$d_getpgid'
13096 d_getpgrp2='$d_getpgrp2'
13097 d_getpgrp='$d_getpgrp'
13098 d_getppid='$d_getppid'
13099 d_getprior='$d_getprior'
13100 d_getprotoprotos='$d_getprotoprotos'
13101 d_getpwent='$d_getpwent'
13102 d_getsbyname='$d_getsbyname'
13103 d_getsbyport='$d_getsbyport'
13104 d_getsent='$d_getsent'
13105 d_getservprotos='$d_getservprotos'
13106 d_getspent='$d_getspent'
13107 d_getspnam='$d_getspnam'
13108 d_gettimeod='$d_gettimeod'
13109 d_gnulibc='$d_gnulibc'
13110 d_grpasswd='$d_grpasswd'
13111 d_hasmntopt='$d_hasmntopt'
13114 d_inetaton='$d_inetaton'
13115 d_ino64_t='$d_ino64_t'
13116 d_int64t='$d_int64t'
13117 d_iovec_s='$d_iovec_s'
13118 d_isascii='$d_isascii'
13119 d_killpg='$d_killpg'
13120 d_lchown='$d_lchown'
13122 d_llseek='$d_llseek'
13123 d_locconv='$d_locconv'
13124 d_lockf64='$d_lockf64'
13126 d_longdbl='$d_longdbl'
13127 d_longlong='$d_longlong'
13128 d_lseek64='$d_lseek64'
13129 d_lstat64='$d_lstat64'
13131 d_madvise='$d_madvise'
13133 d_mbstowcs='$d_mbstowcs'
13134 d_mbtowc='$d_mbtowc'
13135 d_memchr='$d_memchr'
13136 d_memcmp='$d_memcmp'
13137 d_memcpy='$d_memcpy'
13138 d_memmove='$d_memmove'
13139 d_memset='$d_memset'
13141 d_mkfifo='$d_mkfifo'
13142 d_mktime='$d_mktime'
13144 d_mprotect='$d_mprotect'
13146 d_msg_ctrunc='$d_msg_ctrunc'
13147 d_msg_dontroute='$d_msg_dontroute'
13148 d_msg_oob='$d_msg_oob'
13149 d_msg_peek='$d_msg_peek'
13150 d_msg_proxy='$d_msg_proxy'
13151 d_msgctl='$d_msgctl'
13152 d_msgget='$d_msgget'
13153 d_msghdr_s='$d_msghdr_s'
13154 d_msgrcv='$d_msgrcv'
13155 d_msgsnd='$d_msgsnd'
13157 d_munmap='$d_munmap'
13158 d_mymalloc='$d_mymalloc'
13159 d_nextkey64='$d_nextkey64'
13161 d_off64_t='$d_off64_t'
13162 d_offset_t='$d_offset_t'
13163 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13164 d_oldpthreads='$d_oldpthreads'
13165 d_oldsock='$d_oldsock'
13167 d_open64='$d_open64'
13168 d_opendir64='$d_opendir64'
13169 d_pathconf='$d_pathconf'
13171 d_phostname='$d_phostname'
13174 d_portable='$d_portable'
13175 d_pthread_yield='$d_pthread_yield'
13177 d_pwchange='$d_pwchange'
13178 d_pwclass='$d_pwclass'
13179 d_pwcomment='$d_pwcomment'
13180 d_pwexpire='$d_pwexpire'
13181 d_pwgecos='$d_pwgecos'
13182 d_pwpasswd='$d_pwpasswd'
13183 d_pwquota='$d_pwquota'
13184 d_readdir64='$d_readdir64'
13185 d_readdir='$d_readdir'
13186 d_readlink='$d_readlink'
13188 d_recvmsg='$d_recvmsg'
13189 d_rename='$d_rename'
13190 d_rewinddir='$d_rewinddir'
13192 d_safebcpy='$d_safebcpy'
13193 d_safemcpy='$d_safemcpy'
13194 d_sanemcmp='$d_sanemcmp'
13195 d_sched_yield='$d_sched_yield'
13196 d_scm_rights='$d_scm_rights'
13197 d_seekdir64='$d_seekdir64'
13198 d_seekdir='$d_seekdir'
13199 d_select='$d_select'
13201 d_semctl='$d_semctl'
13202 d_semctl_semid_ds='$d_semctl_semid_ds'
13203 d_semctl_semun='$d_semctl_semun'
13204 d_semget='$d_semget'
13206 d_sendmsg='$d_sendmsg'
13207 d_setegid='$d_setegid'
13208 d_seteuid='$d_seteuid'
13209 d_setgrent='$d_setgrent'
13210 d_setgrps='$d_setgrps'
13211 d_sethent='$d_sethent'
13212 d_setlinebuf='$d_setlinebuf'
13213 d_setlocale='$d_setlocale'
13214 d_setnent='$d_setnent'
13215 d_setpent='$d_setpent'
13216 d_setpgid='$d_setpgid'
13217 d_setpgrp2='$d_setpgrp2'
13218 d_setpgrp='$d_setpgrp'
13219 d_setprior='$d_setprior'
13220 d_setpwent='$d_setpwent'
13221 d_setregid='$d_setregid'
13222 d_setresgid='$d_setresgid'
13223 d_setresuid='$d_setresuid'
13224 d_setreuid='$d_setreuid'
13225 d_setrgid='$d_setrgid'
13226 d_setruid='$d_setruid'
13227 d_setsent='$d_setsent'
13228 d_setsid='$d_setsid'
13229 d_setspent='$d_setspent'
13230 d_setvbuf='$d_setvbuf'
13234 d_shmatprototype='$d_shmatprototype'
13235 d_shmctl='$d_shmctl'
13237 d_shmget='$d_shmget'
13238 d_sigaction='$d_sigaction'
13239 d_sigsetjmp='$d_sigsetjmp'
13240 d_socket='$d_socket'
13241 d_sockpair='$d_sockpair'
13242 d_stat64='$d_stat64'
13243 d_statblks='$d_statblks'
13244 d_statfs='$d_statfs'
13245 d_statfsflags='$d_statfsflags'
13246 d_statvfs='$d_statvfs'
13247 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13248 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13249 d_stdio_stream_array='$d_stdio_stream_array'
13250 d_stdiobase='$d_stdiobase'
13251 d_stdstdio='$d_stdstdio'
13252 d_store64='$d_store64'
13253 d_strchr='$d_strchr'
13254 d_strcoll='$d_strcoll'
13255 d_strctcpy='$d_strctcpy'
13256 d_strerrm='$d_strerrm'
13257 d_strerror='$d_strerror'
13258 d_strtod='$d_strtod'
13259 d_strtol='$d_strtol'
13260 d_strtoul='$d_strtoul'
13261 d_strxfrm='$d_strxfrm'
13262 d_suidsafe='$d_suidsafe'
13263 d_symlink='$d_symlink'
13264 d_syscall='$d_syscall'
13265 d_sysconf='$d_sysconf'
13266 d_sysernlst='$d_sysernlst'
13267 d_syserrlst='$d_syserrlst'
13268 d_system='$d_system'
13269 d_tcgetpgrp='$d_tcgetpgrp'
13270 d_tcsetpgrp='$d_tcsetpgrp'
13271 d_telldir64='$d_telldir64'
13272 d_telldir='$d_telldir'
13273 d_telldirproto='$d_telldirproto'
13276 d_tmpfile64='$d_tmpfile64'
13277 d_truncate64='$d_truncate64'
13278 d_truncate='$d_truncate'
13279 d_tzname='$d_tzname'
13282 d_union_semun='$d_union_semun'
13284 d_void_closedir='$d_void_closedir'
13285 d_voidsig='$d_voidsig'
13286 d_voidtty='$d_voidtty'
13287 d_volatile='$d_volatile'
13288 d_vprintf='$d_vprintf'
13290 d_waitpid='$d_waitpid'
13291 d_wcstombs='$d_wcstombs'
13292 d_wctomb='$d_wctomb'
13293 d_writev='$d_writev'
13296 db_hashtype='$db_hashtype'
13297 db_prefixtype='$db_prefixtype'
13298 defvoidused='$defvoidused'
13299 direntrytype='$direntrytype'
13302 doublesize='$doublesize'
13304 dynamic_ext='$dynamic_ext'
13310 eunicefix='$eunicefix'
13313 extensions='$extensions'
13314 fflushNULL='$fflushNULL'
13315 fflushall='$fflushall'
13317 firstmakefile='$firstmakefile'
13319 fpostype='$fpostype'
13320 freetype='$freetype'
13322 full_csh='$full_csh'
13323 full_sed='$full_sed'
13324 gccversion='$gccversion'
13328 groupcat='$groupcat'
13329 groupstype='$groupstype'
13332 h_sysfile='$h_sysfile'
13336 i_arpainet='$i_arpainet'
13337 i_bsdioctl='$i_bsdioctl'
13340 i_dirent='$i_dirent'
13347 i_inttypes='$i_inttypes'
13348 i_limits='$i_limits'
13349 i_locale='$i_locale'
13350 i_machcthr='$i_machcthr'
13351 i_malloc='$i_malloc'
13353 i_memory='$i_memory'
13354 i_mntent='$i_mntent'
13357 i_neterrno='$i_neterrno'
13358 i_netinettcp='$i_netinettcp'
13361 i_pthread='$i_pthread'
13363 i_rpcsvcdbm='$i_rpcsvcdbm'
13366 i_shadow='$i_shadow'
13368 i_stdarg='$i_stdarg'
13369 i_stddef='$i_stddef'
13370 i_stdlib='$i_stdlib'
13371 i_string='$i_string'
13372 i_sysaccess='$i_sysaccess'
13373 i_sysdir='$i_sysdir'
13374 i_sysfile='$i_sysfile'
13375 i_sysfilio='$i_sysfilio'
13377 i_sysioctl='$i_sysioctl'
13378 i_sysmman='$i_sysmman'
13379 i_sysmount='$i_sysmount'
13380 i_sysndir='$i_sysndir'
13381 i_sysparam='$i_sysparam'
13382 i_sysresrc='$i_sysresrc'
13383 i_syssecrt='$i_syssecrt'
13384 i_sysselct='$i_sysselct'
13385 i_syssockio='$i_syssockio'
13386 i_sysstat='$i_sysstat'
13387 i_sysstatvfs='$i_sysstatvfs'
13388 i_systime='$i_systime'
13389 i_systimek='$i_systimek'
13390 i_systimes='$i_systimes'
13391 i_systypes='$i_systypes'
13392 i_sysuio='$i_sysuio'
13394 i_syswait='$i_syswait'
13395 i_termio='$i_termio'
13396 i_termios='$i_termios'
13398 i_unistd='$i_unistd'
13400 i_values='$i_values'
13401 i_varargs='$i_varargs'
13402 i_varhdr='$i_varhdr'
13404 ignore_versioned_solibs='$ignore_versioned_solibs'
13407 installarchlib='$installarchlib'
13408 installbin='$installbin'
13409 installman1dir='$installman1dir'
13410 installman3dir='$installman3dir'
13411 installprivlib='$installprivlib'
13412 installscript='$installscript'
13413 installsitearch='$installsitearch'
13414 installsitelib='$installsitelib'
13415 installusrbinperl='$installusrbinperl'
13417 known_extensions='$known_extensions'
13421 lddlflags='$lddlflags'
13429 libswanted='$libswanted'
13435 locincpth='$locincpth'
13436 loclibpth='$loclibpth'
13437 longdblsize='$longdblsize'
13438 longlongsize='$longlongsize'
13439 longsize='$longsize'
13443 lseeksize='$lseeksize'
13444 lseektype='$lseektype'
13448 make_set_make='$make_set_make'
13449 mallocobj='$mallocobj'
13450 mallocsrc='$mallocsrc'
13451 malloctype='$malloctype'
13453 man1direxp='$man1direxp'
13456 man3direxp='$man3direxp'
13460 mips_type='$mips_type'
13462 mmaptype='$mmaptype'
13464 modetype='$modetype'
13466 multiarch='$multiarch'
13468 myarchname='$myarchname'
13469 mydomain='$mydomain'
13470 myhostname='$myhostname'
13473 netdb_hlen_type='$netdb_hlen_type'
13474 netdb_host_type='$netdb_host_type'
13475 netdb_name_type='$netdb_name_type'
13476 netdb_net_type='$netdb_net_type'
13479 nm_so_opt='$nm_so_opt'
13480 nonxs_ext='$nonxs_ext'
13482 o_nonblock='$o_nonblock'
13484 old_pthread_create_joinable='$old_pthread_create_joinable'
13485 optimize='$optimize'
13486 orderlib='$orderlib'
13492 patchlevel='$patchlevel'
13493 path_sep='$path_sep'
13495 perladmin='$perladmin'
13496 perlpath='$perlpath'
13498 phostname='$phostname'
13504 prefixexp='$prefixexp'
13506 privlibexp='$privlibexp'
13507 prototype='$prototype'
13509 randbits='$randbits'
13510 randfunc='$randfunc'
13511 randseedtype='$randseedtype'
13513 rd_nodata='$rd_nodata'
13517 sched_yield='$sched_yield'
13518 scriptdir='$scriptdir'
13519 scriptdirexp='$scriptdirexp'
13521 seedfunc='$seedfunc'
13522 selectminbits='$selectminbits'
13523 selecttype='$selecttype'
13524 sendmail='$sendmail'
13527 sharpbang='$sharpbang'
13528 shmattype='$shmattype'
13529 shortsize='$shortsize'
13532 sig_count='$sig_count'
13533 sig_name='$sig_name'
13534 sig_name_init='$sig_name_init'
13536 sig_num_init='$sig_num_init'
13537 signal_t='$signal_t'
13538 sitearch='$sitearch'
13539 sitearchexp='$sitearchexp'
13541 sitelibexp='$sitelibexp'
13542 sizetype='$sizetype'
13547 sockethdr='$sockethdr'
13548 socketlib='$socketlib'
13550 spackage='$spackage'
13551 spitshell='$spitshell'
13554 ssizetype='$ssizetype'
13555 startperl='$startperl'
13557 static_ext='$static_ext'
13559 stdio_base='$stdio_base'
13560 stdio_bufsiz='$stdio_bufsiz'
13561 stdio_cnt='$stdio_cnt'
13562 stdio_filbuf='$stdio_filbuf'
13563 stdio_ptr='$stdio_ptr'
13564 stdio_stream_array='$stdio_stream_array'
13567 subversion='$subversion'
13574 timeincl='$timeincl'
13575 timetype='$timetype'
13583 use64bits='$use64bits'
13585 usemultiplicity='$usemultiplicity'
13586 usemymalloc='$usemymalloc'
13588 useopcode='$useopcode'
13589 useperlio='$useperlio'
13590 useposix='$useposix'
13592 useshrplib='$useshrplib'
13593 usesocks='$usesocks'
13594 usethreads='$usethreads'
13595 usevfork='$usevfork'
13600 voidflags='$voidflags'
13606 : Add in command line options if available
13607 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13609 : add special variables
13610 $test -f $src/patchlevel.h && \
13611 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13612 echo "CONFIGDOTSH=true" >>config.sh
13614 : propagate old symbols
13615 if $test -f UU/config.sh; then
13616 <UU/config.sh sort | uniq >UU/oldconfig.sh
13617 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13618 sort | uniq -u >UU/oldsyms
13619 set X `cat UU/oldsyms`
13625 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13627 echo "# Variables propagated from previous config.sh file." >>config.sh
13628 for sym in `cat UU/oldsyms`; do
13629 echo " Propagating $hint variable "'$'"$sym..."
13630 eval 'tmp="$'"${sym}"'"'
13632 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13638 : Finish up by extracting the .SH files
13652 If you'd like to make any changes to the config.sh file before I begin
13653 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13656 rp="Press return or use a shell escape to edit config.sh:"
13661 *) : in case they cannot read
13662 sh 1>&4 -c "$ans";;
13667 : if this fails, just run all the .SH files by hand
13674 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13681 Now you need to generate make dependencies by running "$make depend".
13682 You might prefer to run it in background: "$make depend > makedepend.out &"
13683 It can take a while, so you might not want to run it right now.
13688 rp="Run $make depend now?"
13692 $make depend && echo "Now you must run a $make."
13695 echo "You must run '$make depend' then '$make'."
13698 elif test -f [Mm]akefile; then
13700 echo "Now you must run a $make."
13705 if $test -f Policy.sh; then
13708 If you compile $package on a different machine or from a different object
13709 directory, copy the Policy.sh file from this object directory to the
13710 new one before you run Configure -- this will help you with most of
13711 the policy defaults.
13715 if $test -f config.msg; then
13716 echo "Hmm. I also noted the following information while running:"
13718 $cat config.msg >&4
13721 $rm -f kit*isdone ark*isdone