3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Sun May 30 15:51:19 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=''
703 ignore_versioned_solibs=''
807 d_stdio_stream_array=''
808 stdio_stream_array=''
832 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
835 : We must find out about Eunice early
837 if test -f /etc/unixtovms; then
838 eunicefix=/etc/unixtovms
840 if test -f /etc/unixtovms.exe; then
841 eunicefix=/etc/unixtovms.exe
845 : Possible local include directories to search.
846 : Set locincpth to "" in a hint file to defeat local include searches.
847 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
848 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
850 : no include file wanted by default
853 : list of known cpp symbols, sorted alphabetically
854 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
855 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
856 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
857 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
858 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
859 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
860 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
861 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
862 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
863 al="$al VMS Xenix286"
864 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
865 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
866 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
867 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
868 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
869 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
870 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
871 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
872 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
873 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
874 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
875 al="$al __SVR4_2__ __UMAXV__"
876 al="$al ____386BSD____ __alpha __alpha__ __amiga"
877 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
878 al="$al __host_mips__"
879 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
880 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
881 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
882 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
883 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
884 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
885 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
886 al="$al __mc88100 __mc88100__ __mips __mips__"
887 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
888 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
889 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
890 al="$al _host_mips _mips _unix"
891 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
892 al="$al apollo ardent att386 att3b"
893 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
894 al="$al cadmus clipper concurrent convex cray ctix"
895 al="$al dmert encore gcos gcx gimpel gould"
896 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
897 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
898 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
899 al="$al i186 i286 i386 i486 i8086"
900 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
901 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
902 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
903 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
904 al="$al mc88000 mc88100 merlin mert mips mvs n16"
905 al="$al ncl_el ncl_mr"
906 al="$al news1500 news1700 news1800 news1900 news3700"
907 al="$al news700 news800 news900 ns16000 ns32000"
908 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
909 al="$al parisc pc532 pdp11 plexus posix pyr"
910 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
911 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
912 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
913 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
914 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
915 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
918 : Trailing extension. Override this in a hint file, if needed.
920 : Extra object files, if any, needed on this platform.
923 : change the next line if compiling for Xenix/286 on Xenix/386
924 xlibpth='/usr/lib/386 /lib/386'
926 : Possible local library directories to search.
927 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
928 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
930 : general looking path for locating libraries
931 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
932 glibpth="$glibpth /lib /usr/lib $xlibpth"
933 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
934 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
936 : Private path used by Configure to find libraries. Its value
937 : is prepended to libpth. This variable takes care of special
938 : machines, like the mips. Usually, it should be empty.
941 : default library list
943 : some systems want to use only the non-versioned libso:s
944 ignore_versioned_solibs=''
945 : full support for void wanted by default
948 : set useposix=false in your hint file to disable the POSIX extension.
950 : set useopcode=false in your hint file to disable the Opcode extension.
952 : set usemultiplicity on the Configure command line to enable multiplicity.
953 : set usethreads on the Configure command line to enable threads.
954 : List of libraries we want.
955 : If anyone needs -lnet, put it in a hint file.
956 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
957 libswanted="$libswanted dld ld sun m rt c cposix posix"
958 libswanted="$libswanted ndir dir crypt sec"
959 libswanted="$libswanted ucb bsd BSD PW x"
960 : We probably want to search /usr/shlib before most other libraries.
961 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
962 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
963 glibpth="/usr/shlib $glibpth"
964 : Do not use vfork unless overridden by a hint file.
967 : Find the basic shell for Bourne shell scripts
971 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
974 if test -f "$xxx"; then
977 : Build up a list and do a single loop so we can 'break' out.
978 pth=`echo $PATH | sed -e "s/$p_/ /g"`
979 for xxx in sh bash ksh pdksh ash; do
981 try="$try ${p}/${xxx}"
985 if test -f "$xxx"; then
988 elif test -f "$xxx.exe"; then
999 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1001 Usually it's in /bin/sh. How did you even get this far?
1002 Please contact me (Perl Maintainers) at perlbug@perl.com and
1003 we'll try to straighten this all out.
1009 : see if sh knows # comments
1010 if `$sh -c '#' >/dev/null 2>&1`; then
1014 test -f $xcat || xcat=/usr/bin/cat
1019 if test -s today; then
1022 echo "#! $xcat" > try
1026 if test -s today; then
1034 echo "Your $sh doesn't grok # comments--I will strip them later on."
1037 echo "exec grep -v '^[ ]*#'" >spitshell
1039 $eunicefix spitshell
1040 spitshell=`pwd`/spitshell
1042 echo "I presume that if # doesn't work, #! won't work either!"
1047 : figure out how to guarantee sh startup
1049 '') startsh=${sharpbang}${sh} ;;
1061 : echo "Yup, it does."
1063 echo "Hmm... '$startsh' does not guarantee sh startup..."
1064 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1069 : Save command line options in file UU/cmdline.opt for later use in
1070 : generating config.sh.
1071 cat > cmdline.opt <<EOSH
1072 # Configure command line arguments.
1079 cat >>cmdline.opt <<EOSH
1080 config_arg$argn='$arg'
1082 argn=`expr $argn + 1`
1085 : produce awk script to parse command line options
1086 cat >options.awk <<'EOF'
1088 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1090 len = length(optstr);
1091 for (i = 1; i <= len; i++) {
1092 c = substr(optstr, i, 1);
1093 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1104 if (substr(str, 1, 1) != "-") {
1105 printf("'%s'\n", str);
1109 for (i = 2; i <= len; i++) {
1110 c = substr(str, i, 1);
1112 printf("-%s\n", substr(str, i));
1118 printf("'%s'\n", substr(str, i + 1));
1131 : process the command line options
1132 set X `for arg in "$@"; do echo "X$arg"; done |
1133 sed -e s/X// | awk -f options.awk`
1138 : set up default values
1149 cat >optdef.sh <<EOS
1155 while test $# -gt 0; do
1157 -d) shift; fastread=yes;;
1158 -e) shift; alldone=cont;;
1162 if test -r "$1"; then
1165 echo "$me: cannot read config file $1." >&2
1170 -h) shift; error=true;;
1171 -r) shift; reuseval=true;;
1172 -s) shift; silent=true; realsilent=true;;
1173 -E) shift; alldone=exit;;
1174 -K) shift; knowitall=true;;
1175 -O) shift; override=true;;
1176 -S) shift; silent=true; extractsh=true;;
1181 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1182 echo "$me: ignoring -D $1" >&2
1185 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1186 *) echo "$1='define'" >> optdef.sh;;
1193 *=) echo "$1" >> optdef.sh;;
1195 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1196 echo "$me: ignoring -U $1" >&2
1198 *) echo "$1='undef'" >> optdef.sh;;
1202 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1205 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1213 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1214 [-U symbol] [-U symbol=]
1215 -d : use defaults for all answers.
1216 -e : go on without questioning past the production of config.sh.
1217 -f : specify an alternate default configuration file.
1218 -h : print this help message and exit (with an error status).
1219 -r : reuse C symbols value if possible (skips costly nm extraction).
1220 -s : silent mode, only echoes questions and essential information.
1221 -D : define symbol to have some value:
1222 -D symbol symbol gets the value 'define'
1223 -D symbol=value symbol gets the value 'value'
1224 -E : stop at the end of questions, after having produced config.sh.
1225 -K : do not use unless you know what you are doing.
1226 -O : let -D and -U override definitions from loaded configuration file.
1227 -S : perform variable substitutions on all .SH files (can mix with -f)
1228 -U : undefine symbol:
1229 -U symbol symbol gets the value 'undef'
1230 -U symbol= symbol gets completely empty
1231 -V : print version number and exit (with a zero status).
1238 case "$fastread$alldone" in
1241 if test ! -t 0; then
1242 echo "Say 'sh Configure', not 'sh <Configure'"
1250 true) exec 1>/dev/null;;
1253 : run the defines and the undefines, if any, but leave the file out there...
1259 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1260 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1261 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1262 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1263 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1266 : Some greps do not return status, grrr.
1267 echo "grimblepritz" >grimble
1268 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1270 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1276 : the following should work in any shell
1280 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1281 cat >contains <<'EOSS'
1282 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1287 : Find the path to the source tree
1290 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1301 if test -f $rsrc/Configure && \
1302 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1304 : found it, so we are ok.
1307 for src in . .. ../.. ../../.. ../../../..; do
1308 if test -f ../$src/Configure && \
1309 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1320 Sorry, I can't seem to locate the source dir for $package. Please start
1321 Configure with an explicit path -- i.e. /some/path/Configure.
1329 echo "Sources for $package found in \"$src\"." >&4
1333 : script used to extract .SH files with variable substitutions
1334 cat >extract <<'EOS'
1336 echo "Doing variable substitutions on .SH files..."
1337 if test -f $src/MANIFEST; then
1338 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1340 echo "(Looking for .SH files under the source directory.)"
1341 set x `(cd $src; find . -name "*.SH" -print)`
1345 0) set x `(cd $src; echo *.SH)`; shift;;
1347 if test ! -f $src/$1; then
1353 while test $name; do
1354 if test ! -d "$name"; then
1355 create="$name $create";
1356 name=`echo $name | sed -e "s|^[^/]*$||"`;
1357 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1362 for file in $create; do
1371 dir=`expr X$file : 'X\(.*\)/'`
1372 file=`expr X$file : 'X.*/\(.*\)'`
1373 (cd $dir && . ./$file)
1383 dir=`expr X$file : 'X\(.*\)/'`
1384 file=`expr X$file : 'X.*/\(.*\)'`
1385 (set x $dir; shift; eval $mkdir_p)
1395 if test -f $src/config_h.SH; then
1396 if test ! -f config.h; then
1397 : oops, they left it out of MANIFEST, probably, so do it anyway.
1403 : extract files and exit if asked to do so
1404 case "$extractsh" in
1406 case "$realsilent" in
1410 case "$config_sh" in
1411 '') config_sh='config.sh';;
1414 echo "Fetching answers from $config_sh..."
1417 test "$override" && . ./optdef.sh
1426 : Eunice requires " " instead of "", can you believe it
1429 echo "Beginning of configuration questions for $package."
1431 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1433 : first determine how to suppress newline on echo command
1435 echo "Checking echo to see how to suppress newlines..."
1436 (echo "hi there\c" ; echo " ") >.echotmp
1437 if $contains c .echotmp >/dev/null 2>&1 ; then
1448 echo $n "The star should be here-->$c"
1452 : Now test for existence of everything in MANIFEST
1454 if test -f $rsrc/MANIFEST; then
1455 echo "First let's make sure your kit is complete. Checking..." >&4
1456 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1459 for filelist in x??; do
1460 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1462 if test -s missing; then
1466 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1468 You have the option of continuing the configuration process, despite the
1469 distinct possibility that your kit is damaged, by typing 'y'es. If you
1470 do, don't blame me if something goes wrong. I advise you to type 'n'o
1471 and contact the author (perlbug@perl.com).
1474 echo $n "Continue? [n] $c" >&4
1478 echo "Continuing..." >&4
1482 echo "ABORTING..." >&4
1487 echo "Looks good..."
1490 echo "There is no MANIFEST file. I hope your kit is complete !"
1495 : Find the appropriate value for a newline for tr
1496 if test -n "$DJGPP"; then
1499 if test X"$trnl" = X; then
1500 case "`echo foo|tr '\n' x 2>/dev/null`" in
1504 if test X"$trnl" = X; then
1505 case "`echo foo|tr '\012' x 2>/dev/null`" in
1506 foox) trnl='\012' ;;
1509 if test X"$trnl" = X; then
1512 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1518 : compute the number of columns on the terminal for proper question formatting
1523 : set up the echo used in my read
1524 myecho="case \"\$xxxm\" in
1525 '') echo $n \"\$rp $c\" >&4;;
1527 '') echo $n \"[\$xxxm] $c\";;
1529 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1531 echo $n \"[\$xxxm] $c\" >&4
1533 echo $n \"\$rp [\$xxxm] $c\" >&4
1539 : now set up to do reads with possible shell escape and default assignment
1545 case "\$fastread" in
1546 yes) case "\$dflt" in
1549 case "\$silent-\$rp" in
1554 *) case "\$silent" in
1555 true) case "\$rp" in
1560 while expr "X\$ans" : "X!" >/dev/null; do
1564 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1572 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1581 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1586 echo "(OK, I'll run with -d after this question.)" >&4
1589 echo "*** Sorry, \$1 not supported yet." >&4
1599 echo "*** Substitution done -- please confirm."
1601 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1606 echo "*** Error -- try again."
1613 case "\$ans\$xxxm\$nostick" in
1625 : create .config dir to save info across Configure sessions
1626 test -d ../.config || mkdir ../.config
1627 cat >../.config/README <<EOF
1628 This directory created by Configure to save information that should
1629 persist across sessions for $package.
1631 You may safely delete it if you wish.
1634 : general instructions
1637 user=`(logname) 2>/dev/null`
1639 '') user=`whoami 2>&1`;;
1641 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1644 rp='Would you like to see the instructions?'
1655 This installation shell script will examine your system and ask you questions
1656 to determine how the perl5 package should be installed. If you get
1657 stuck on a question, you may use a ! shell escape to start a subshell or
1658 execute a command. Many of the questions will have default answers in square
1659 brackets; typing carriage return will give you the default.
1661 On some of the questions which ask for file or directory names you are allowed
1662 to use the ~name construct to specify the login directory belonging to "name",
1663 even if you don't have a shell which knows about that. Questions where this is
1664 allowed will be marked "(~name ok)".
1668 dflt='Type carriage return to continue'
1672 The prompter used in this script allows you to use shell variables and
1673 backticks in your answers. You may use $1, $2, etc... to refer to the words
1674 in the default answer, as if the default line was a set of arguments given to a
1675 script shell. This means you may also use $* to repeat the whole default line,
1676 so you do not have to re-type everything to add something to the default.
1678 Everytime there is a substitution, you will have to confirm. If there is an
1679 error (e.g. an unmatched backtick), the default answer will remain unchanged
1680 and you will be prompted again.
1682 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1683 the questions and use the computed defaults (or the previous answers if there
1684 was already a config.sh file). Type 'Configure -h' for a list of options.
1685 You may also start interactively and then answer '& -d' at any prompt to turn
1686 on the non-interactive behaviour for the remainder of the execution.
1692 Much effort has been expended to ensure that this shell script will run on any
1693 Unix system. If despite that it blows up on yours, your best bet is to edit
1694 Configure and run it again. If you can't run Configure for some reason,
1695 you'll have to generate a config.sh file by hand. Whatever problems you
1696 have, let me (perlbug@perl.com) know how I blew it.
1698 This installation script affects things in two ways:
1700 1) it may do direct variable substitutions on some of the files included
1702 2) it builds a config.h file for inclusion in C programs. You may edit
1703 any of these files as the need arises after running this script.
1705 If you make a mistake on a question, there is no easy way to back up to it
1706 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1707 files. Configure will offer to let you do this before it runs the SH files.
1710 dflt='Type carriage return to continue'
1712 case "$firsttime" in
1713 true) echo $user >>../.config/instruct;;
1717 : find out where common programs are
1719 echo "Locating common programs..." >&4
1732 if test -d \$dir/\$thing; then
1738 for thisthing in \$dir/\$thing; do
1739 : just loop through to pick last item
1741 if test -f \$thisthing; then
1744 elif test -f \$dir/\$thing.exe; then
1745 if test -n "$DJGPP"; then
1746 echo \$dir/\$thing.exe
1748 : on Eunice apparently
1798 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1799 pth="$pth /lib /usr/lib"
1800 for file in $loclist; do
1804 if test -f "$xxx"; then
1807 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1808 xxx=`./loc $file $file $pth`
1811 '') xxx=`./loc $file $file $pth`;;
1812 *) xxx=`./loc $xxx $xxx $pth`;;
1818 echo $file is in $xxx.
1821 echo $file is in $xxx.
1824 echo "I don't know where '$file' is, and my life depends on it." >&4
1825 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1831 echo "Don't worry if any of the following aren't found..."
1833 for file in $trylist; do
1837 if test -f "$xxx"; then
1840 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1841 xxx=`./loc $file $file $pth`
1844 '') xxx=`./loc $file $file $pth`;;
1845 *) xxx=`./loc $xxx $xxx $pth`;;
1851 echo $file is in $xxx.
1854 echo $file is in $xxx.
1857 echo "I don't see $file out there, $say."
1864 echo "Substituting grep for egrep."
1870 echo "Substituting cp for ln."
1876 echo "Hopefully test is built into your sh."
1879 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1880 echo "Using the test built into your sh."
1888 echo "Hopefully echo is built into your sh."
1893 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1894 $echo $n "hi there$c" >foo1
1895 echo $n "hi there$c" >foo2
1896 if cmp foo1 foo2 >/dev/null 2>&1; then
1897 echo "They are compatible. In fact, they may be identical."
1904 They are not compatible! You are probably running ksh on a non-USG system.
1905 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1906 have echo built in and we may have to run some Bourne shell scripts. That
1907 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1910 $echo $n "The star should be here-->$c"
1917 : determine whether symbolic links are supported
1920 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1921 echo "Symbolic links are supported." >&4
1924 echo "Symbolic links are NOT supported." >&4
1929 : see whether [:lower:] and [:upper:] are supported character classes
1931 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1933 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1937 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1938 # (0xc9 and 0xd1), therefore that is a nice testing point.
1939 if test "X$up" = X -o "X$low" = X; then
1940 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1946 if test "X$up" = X -o "X$low" = X; then
1947 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1953 if test "X$up" = X -o "X$low" = X; then
1954 case "`echo IJ | od -x 2>/dev/null`" in
1956 echo "Hey, this might be EBCDIC." >&4
1957 if test "X$up" = X -o "X$low" = X; then
1958 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1959 ij) up='[A-IJ-RS-Z]'
1964 if test "X$up" = X -o "X$low" = X; then
1965 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1975 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1977 echo "Using $up and $low to convert case." >&4
1980 echo "I don't know how to translate letters from upper to lower case." >&4
1981 echo "Your tr is not acting any way I know of." >&4
1985 : set up the translation script tr, must be called with ./tr of course
1989 '[A-Z][a-z]') exec $tr '$up' '$low';;
1990 '[a-z][A-Z]') exec $tr '$low' '$up';;
1997 : Try to determine whether config.sh was made on this system
1998 case "$config_sh" in
2000 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2001 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2002 # because the A-Z/a-z are not consecutive.
2003 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2004 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2005 newmyuname="$myuname"
2007 case "$knowitall" in
2009 if test -f ../config.sh; then
2010 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2011 eval "`grep myuname= ../config.sh`"
2013 if test "X$myuname" = "X$newmyuname"; then
2021 : Get old answers from old config file if Configure was run on the
2022 : same system, otherwise use the hints.
2025 if test -f config.sh; then
2027 rp="I see a config.sh file. Shall I use it to set the defaults?"
2030 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2031 *) echo "Fetching default answers from your old config.sh file..." >&4
2039 : Older versions did not always set $sh. Catch re-use of such
2048 if test ! -f config.sh; then
2051 First time through, eh? I have some defaults handy for some systems
2052 that need some extra help getting the Configure answers right:
2055 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2057 : Half the following guesses are probably wrong... If you have better
2058 : tests or hints, please send them to perlbug@perl.com
2059 : The metaconfig authors would also appreciate a copy...
2060 $test -f /irix && osname=irix
2061 $test -f /xenix && osname=sco_xenix
2062 $test -f /dynix && osname=dynix
2063 $test -f /dnix && osname=dnix
2064 $test -f /lynx.os && osname=lynxos
2065 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2066 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2067 $test -f /bin/mips && /bin/mips && osname=mips
2068 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2069 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2070 $test -d /usr/apollo/bin && osname=apollo
2071 $test -f /etc/saf/_sactab && osname=svr4
2072 $test -d /usr/include/minix && osname=minix
2073 if $test -d /MachTen -o -d /MachTen_Folder; then
2075 if $test -x /sbin/version; then
2076 osvers=`/sbin/version | $awk '{print $2}' |
2077 $sed -e 's/[A-Za-z]$//'`
2078 elif $test -x /usr/etc/version; then
2079 osvers=`/usr/etc/version | $awk '{print $2}' |
2080 $sed -e 's/[A-Za-z]$//'`
2085 $test -f /sys/posix.dll &&
2086 $test -f /usr/bin/what &&
2087 set X `/usr/bin/what /sys/posix.dll` &&
2088 $test "$3" = UWIN &&
2091 if $test -f $uname; then
2099 umips) osname=umips ;;
2102 [23]100) osname=mips ;;
2103 next*) osname=next ;;
2105 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2106 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2109 elif $test -f /etc/kconfig; then
2111 if test "$lns" = "$ln -s"; then
2113 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2115 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2122 if test -n "$DJGPP"; then
2131 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2133 'not found') osvers="$4"."$3" ;;
2134 '<3240'|'<>3240') osvers=3.2.0 ;;
2135 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2136 '=3250'|'>3250') osvers=3.2.5 ;;
2140 *dc.osx) osname=dcosx
2146 domainos) osname=apollo
2152 dynixptx*) osname=dynixptx
2153 osvers=`echo "$4"|sed 's/^v//'`
2155 freebsd) osname=freebsd
2157 genix) osname=genix ;;
2159 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2175 netbsd*) osname=netbsd
2178 news-os) osvers="$3"
2180 4*) osname=newsos4 ;;
2184 bsd386) osname=bsd386
2187 POSIX-BC | posix-bc ) osname=posix-bc
2190 powerux | power_ux | powermax_os | powermaxos | \
2191 powerunix | power_unix) osname=powerux
2194 next*) osname=next ;;
2195 solaris) osname=solaris
2197 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2204 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2208 titanos) osname=titanos
2217 ultrix) osname=ultrix
2220 osf1|mls+) case "$5" in
2223 osvers=`echo "$3" | sed 's/^[xvt]//'`
2225 hp*) osname=hp_osf1 ;;
2226 mips) osname=mips_osf1 ;;
2235 $2) case "$osname" in
2239 : svr4.x or possibly later
2249 if test -f /stand/boot ; then
2250 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2251 if test -n "$INITPROG" -a -f "$INITPROG"; then
2252 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2253 if test -n "$isesix"; then
2261 *) if test -f /etc/systemid; then
2263 set `echo $3 | $sed 's/\./ /g'` $4
2264 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2266 elif $test -f $src/hints/sco_$1_$2.sh; then
2268 elif $test -f $src/hints/sco_$1.sh; then
2273 '') : Still unknown. Probably a generic Sys V.
2282 *) case "$osname" in
2283 '') : Still unknown. Probably a generic BSD.
2291 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2292 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2293 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2296 $rm -f UU/kernel.what
2297 elif test -d c:/.; then
2304 : Now look for a hint file osname_osvers, unless one has been
2305 : specified already.
2308 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2309 : Also try without trailing minor version numbers.
2310 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2311 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2312 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2313 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2316 *) case "$osvers" in
2319 *) if $test -f $src/hints/$file.sh ; then
2321 elif $test -f $src/hints/$xfile.sh ; then
2323 elif $test -f $src/hints/$xxfile.sh ; then
2325 elif $test -f $src/hints/$xxxfile.sh ; then
2327 elif $test -f $src/hints/$xxxxfile.sh ; then
2329 elif $test -f "$src/hints/${osname}.sh" ; then
2338 if $test -f Policy.sh ; then
2341 none) dflt="Policy" ;;
2342 *) dflt="Policy $dflt" ;;
2347 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2351 if $test -f Policy.sh ; then
2354 There's also a Policy hint file available, which should make the
2355 site-specific (policy) questions easier to answer.
2362 You may give one or more space-separated answers, or "none" if appropriate.
2363 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2364 is a good thing. DO NOT give a wrong version.
2368 rp="Which of these apply, if any?"
2371 for file in $tans; do
2372 if $test X$file = XPolicy -a -f Policy.sh; then
2374 $cat Policy.sh >> UU/config.sh
2375 elif $test -f $src/hints/$file.sh; then
2376 . $src/hints/$file.sh
2377 $cat $src/hints/$file.sh >> UU/config.sh
2378 elif $test X$tans = X -o X$tans = Xnone ; then
2381 : Give one chance to correct a possible typo.
2382 echo "$file.sh does not exist"
2384 rp="hint to use instead?"
2386 for file in $ans; do
2387 if $test -f "$src/hints/$file.sh"; then
2388 . $src/hints/$file.sh
2389 $cat $src/hints/$file.sh >> UU/config.sh
2390 elif $test X$ans = X -o X$ans = Xnone ; then
2393 echo "$file.sh does not exist -- ignored."
2400 : Remember our hint file for later.
2401 if $test -f "$src/hints/$file.sh" ; then
2411 echo "Fetching default answers from $config_sh..." >&4
2415 cp $config_sh config.sh 2>/dev/null
2425 test "$override" && . ./optdef.sh
2426 myuname="$newmyuname"
2428 : Restore computed paths
2429 for file in $loclist $trylist; do
2430 eval $file="\$_$file"
2435 Configure uses the operating system name and version to set some defaults.
2436 The default value is probably right if the name rings a bell. Otherwise,
2437 since spelling matters for me, either accept the default or answer "none"
2444 ''|' '|none) dflt=none ;;
2445 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2448 *) dflt="$osname" ;;
2450 rp="Operating system name?"
2454 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2460 ''|' '|none) dflt=none ;;
2461 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2462 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2464 ''|' ') dflt=none ;;
2469 *) dflt="$osvers" ;;
2471 rp="Operating system version?"
2478 : who configured the system
2479 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2480 cf_by=`(logname) 2>/dev/null`
2483 cf_by=`(whoami) 2>/dev/null`
2485 "") cf_by=unknown ;;
2489 : set up the script used to warn in case of inconsistency
2496 echo "*** WHOA THERE!!! ***" >&4
2497 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2498 rp=" Keep the $hint value?"
2501 y) td=$was; tu=$was;;
2505 : function used to set $1 to $val
2506 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2508 $define$undef) . ./whoa; eval "$var=\$td";;
2509 $undef$define) . ./whoa; eval "$var=\$tu";;
2510 *) eval "$var=$val";;
2515 Perl can be built to take advantage of threads, on some systems.
2516 To do so, Configure must be run with -Dusethreads.
2518 Note that threading is a highly experimental feature, and
2519 some known race conditions still remain. If you choose to try
2520 it, be very sure to not actually deploy it for production
2521 purposes. README.threads has more details, and is required
2522 reading if you enable threads.
2524 case "$usethreads" in
2525 $define|true|[yY]*) dflt='y';;
2528 rp='Build a threading Perl?'
2531 y|Y) val="$define" ;;
2537 case "$d_oldpthreads" in
2538 '') : Configure tests would be welcome here. For now, assume undef.
2540 *) val="$d_oldpthreads" ;;
2546 case "$usethreads" in
2547 "$define"|true|[yY]*)
2548 : Look for a hint-file generated 'call-back-unit'. If the
2549 : user has specified that a threading perl is to be built,
2550 : we may need to set or change some other defaults.
2551 if $test -f usethreads.cbu; then
2555 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|next|openbsd|os2|solaris|vmesa)
2556 # Known thread-capable platforms.
2560 $osname is not known to support threads.
2561 Please let perlbug@perl.com know how to do that.
2563 Cannot continue, aborting.
2573 Perl can be built so that multiple Perl interpreters can coexist
2574 within the same Perl executable. To do so, Configure must be run with
2577 Normally you do not need this and you should answer no.
2580 case "$usemultiplicity" in
2581 $define|true|[yY]*) dflt='y';;
2584 rp='Build Perl for multiplicity?'
2587 y|Y) val="$define" ;;
2595 Perl can be built to take advantage of explicit 64-bit interfaces,
2596 on some systems. To do so, Configure must be run with -Duse64bits.
2598 If this doesn't make any sense to you, just accept the default 'n'.
2600 case "$use64bits" in
2601 $define|true|[yY]*) dflt='y';;
2604 rp='Try to use explicit 64-bit interfaces, if available?'
2617 case "$archname64" in
2618 '') archname64='' ;; # not a typo
2621 case "$use64bits" in
2622 "$define"|true|[yY]*)
2623 : Look for a hint-file generated 'call-back-unit'. If the
2624 : user has specified that a threading perl is to be built,
2625 : we may need to set or change some other defaults.
2626 if $test -f use64bits.cbu; then
2630 dec_osf|hpux|irix|solaris|unicos)
2631 # Known 64-bit capable platforms.
2635 $osname is not known to support 64-bit interfaces.
2636 Please let perlbug@perl.com know how to do that.
2638 Cannot continue, aborting.
2646 : determine the architecture name
2648 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2649 tarch=`arch`"-$osname"
2650 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2651 if uname -m > tmparch 2>&1 ; then
2652 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2653 -e 's/$/'"-$osname/" tmparch`
2661 case "$myarchname" in
2664 echo "(Your architecture name used to be $myarchname.)"
2671 *) dflt="$archname";;
2673 rp='What is your architecture name'
2676 case "$usethreads" in
2678 echo "Threads selected." >&4
2680 *-thread*) echo "...and architecture name already has -thread." >&4
2682 *) archname="$archname-thread"
2683 echo "...setting architecture name to $archname." >&4
2688 case "$usemultiplicity" in
2690 echo "Multiplicity selected." >&4
2692 *-multi*) echo "...and architecture name already has -multi." >&4
2694 *) archname="$archname-multi"
2695 echo "...setting architecture name to $archname." >&4
2700 case "$use64bits" in
2702 echo "Explicit 64-bitness selected." >&4
2703 case "$archname64" in
2708 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2710 *) archname="$archname-$archname64"
2711 echo "...setting architecture name to $archname." >&4
2721 $define|true) afs=true ;;
2722 $undef|false) afs=false ;;
2723 *) if test -d /afs; then
2731 echo "AFS may be running... I'll be extra cautious then..." >&4
2733 echo "AFS does not seem to be running..." >&4
2736 : decide how portable to be. Allow command line overrides.
2737 case "$d_portable" in
2739 *) d_portable="$define" ;;
2742 : set up shell script to do ~ expansion
2748 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2751 if $test -f /bin/csh; then
2752 /bin/csh -f -c "glob \$1"
2757 name=\`$expr x\$1 : '..\([^/]*\)'\`
2758 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2759 if $test ! -d "\$dir"; then
2761 echo "\$me: can't locate home directory for: \$name" >&2
2766 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2782 : now set up to get a file name
2786 cat <<'EOSC' >>getfile
2799 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2800 fn=`echo $fn | sed 's/(.*)//'`
2806 loc_file=`expr $fn : '.*:\(.*\)'`
2807 fn=`expr $fn : '\(.*\):.*'`
2815 */*) fullpath=true;;
2824 *e*) exp_file=true;;
2827 *p*) nopath_ok=true;;
2832 *d*) type='Directory';;
2833 *l*) type='Locate';;
2838 Locate) what='File';;
2843 case "$d_portable" in
2851 while test "$type"; do
2856 true) rp="$rp (~name ok)";;
2859 if test -f UU/getfile.ok && \
2860 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2879 value=`UU/filexp $ans`
2882 if test "$ans" != "$value"; then
2883 echo "(That expands to $value on this system.)"
2897 /*) value="$ansexp" ;;
2902 echo "I shall only accept a full path name, as in /bin/ls." >&4
2903 echo "Use a ! shell escape if you wish to check pathnames." >&4
2906 echo "Please give a full path name, starting with slash." >&4
2909 echo "Note that using ~name is ok provided it expands well." >&4
2922 if test -f "$ansexp"; then
2924 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2926 echo "($value is not a plain file, but that's ok.)"
2931 if test -d "$ansexp"; then
2936 if test -d "$ansexp"; then
2937 echo "(Looking for $loc_file in directory $value.)"
2938 value="$value/$loc_file"
2939 ansexp="$ansexp/$loc_file"
2941 if test -f "$ansexp"; then
2944 case "$nopath_ok" in
2945 true) case "$value" in
2947 *) echo "Assuming $value will be in people's path."
2963 if test "$fastread" = yes; then
2968 rp="$what $value doesn't exist. Use that name anyway?"
2989 : determine root of directory hierarchy where package will be installed.
2992 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3000 By default, $package will be installed in $dflt/bin, manual
3001 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3002 all installation directories. Typically set to /usr/local, but you
3003 may choose /usr if you wish to install $package among your system
3004 binaries. If you wish to have binaries under /bin but manual pages
3005 under /usr/local/man, that's ok: you will be prompted separately
3006 for each of the installation directories, the prefix being only used
3007 to set the defaults.
3011 rp='Installation prefix to use?'
3019 *) oldprefix="$prefix";;
3026 : set the prefixit variable, to compute a suitable default value
3027 prefixit='case "$3" in
3029 case "$oldprefix" in
3030 "") eval "$1=\"\$$2\"";;
3037 ""|" ") eval "$1=\"\$$2\"";;
3043 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3045 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3046 /*-$oldprefix/*|\~*-$oldprefix/*)
3047 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3048 *) eval "$1=\"\$$2\"";;
3052 : set the base revision
3055 : get the patchlevel
3057 echo "Getting the current patchlevel..." >&4
3058 if $test -r $rsrc/patchlevel.h;then
3059 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3060 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3065 $echo $n "(You have $package" $c
3068 *) $echo $n " $baserev" $c ;;
3070 $echo $n " patchlevel $patchlevel" $c
3071 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3074 if test 0 -eq "$subversion"; then
3075 version=`LC_ALL=C; export LC_ALL; \
3076 echo $baserev $patchlevel | \
3077 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3079 version=`LC_ALL=C; export LC_ALL; \
3080 echo $baserev $patchlevel $subversion | \
3081 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3083 : Figure out perl API version. Perhaps this should be in patchlevel.h
3084 if test "$subversion" -lt 50; then
3085 apiversion=`LC_ALL=C; export LC_ALL; \
3086 LANGUAGE=C; export LANGUAGE; \
3087 echo $baserev $patchlevel | \
3088 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3090 apiversion="$version"
3093 : determine where private library files go
3094 : Usual default is /usr/local/lib/perl5/$version.
3095 : Also allow things like /opt/perl/lib/$version, since
3096 : /opt/perl/lib/perl5... would be redundant.
3098 *perl*) set dflt privlib lib/$version ;;
3099 *) set dflt privlib lib/$package/$version ;;
3104 There are some auxiliary files for $package that need to be put into a
3105 private library directory that is accessible by everyone.
3109 rp='Pathname where the private library files will reside?'
3111 if $test "X$privlibexp" != "X$ansexp"; then
3115 privlibexp="$ansexp"
3119 Since you are running AFS, I need to distinguish the directory in which
3120 private files reside from the directory in which they are installed (and from
3121 which they are presumably copied to the former directory by occult means).
3124 case "$installprivlib" in
3125 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3126 *) dflt="$installprivlib";;
3129 rp='Where will private files be installed?'
3131 installprivlib="$ans"
3133 installprivlib="$privlibexp"
3136 : set the prefixup variable, to restore leading tilda escape
3137 prefixup='case "$prefixexp" in
3139 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3142 : determine where public architecture dependent libraries go
3145 : privlib default is /usr/local/lib/$package/$version
3146 : archlib default is /usr/local/lib/$package/$version/$archname
3147 : privlib may have an optional trailing /share.
3148 tdflt=`echo $privlib | $sed 's,/share$,,'`
3149 tdflt=$tdflt/$archname
3158 $spackage contains architecture-dependent library files. If you are
3159 sharing libraries in a heterogeneous environment, you might store
3160 these files in a separate location. Otherwise, you can just include
3161 them with the rest of the public library files.
3165 rp='Where do you want to put the public architecture-dependent libraries?'
3168 archlibexp="$ansexp"
3173 Since you are running AFS, I need to distinguish the directory in
3174 which architecture-dependent library files reside from the directory
3175 in which they are installed (and from which they are presumably copied
3176 to the former directory by occult means).
3179 case "$installarchlib" in
3180 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3181 *) dflt="$installarchlib";;
3184 rp='Where will architecture-dependent library files be installed?'
3186 installarchlib="$ans"
3188 installarchlib="$archlibexp"
3190 if $test X"$archlib" = X"$privlib"; then
3196 : make some quick guesses about what we are up against
3198 $echo $n "Hmm... $c"
3208 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3209 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3211 echo "Looks kind of like an OSF/1 system, but we'll see..."
3213 elif test `echo abc | tr a-z A-Z` = Abc ; then
3214 xxx=`./loc addbib blurfl $pth`
3215 if $test -f $xxx; then
3216 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3220 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3221 echo "Looks kind of like an extended USG system, but we'll see..."
3223 echo "Looks kind of like a USG system, but we'll see..."
3227 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3228 echo "Looks kind of like a BSD system, but we'll see..."
3232 echo "Looks kind of like a Version 7 system, but we'll see..."
3235 case "$eunicefix" in
3238 There is, however, a strange, musty smell in the air that reminds me of
3239 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3243 : it so happens the Eunice I know will not run shell scripts in Unix format
3247 echo "Congratulations. You aren't running Eunice."
3251 : Detect OS2. The p_ variable is set above in the Head.U unit.
3256 I have the feeling something is not exactly right, however...don't tell me...
3257 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3262 if test -f /xenix; then
3263 echo "Actually, this looks more like a XENIX system..."
3268 echo "It's not Xenix..."
3273 if test -f /venix; then
3274 echo "Actually, this looks more like a VENIX system..."
3281 echo "Nor is it Venix..."
3284 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3285 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3288 : see if setuid scripts can be secure
3291 Some kernels have a bug that prevents setuid #! scripts from being
3292 secure. Some sites have disabled setuid #! scripts because of this.
3294 First let's decide if your kernel supports secure setuid #! scripts.
3295 (If setuid #! scripts would be secure but have been disabled anyway,
3296 don't say that they are secure if asked.)
3301 if $test -d /dev/fd; then
3302 echo "#!$ls" >reflect
3303 chmod +x,u+s reflect
3304 ./reflect >flect 2>&1
3305 if $contains "/dev/fd" flect >/dev/null; then
3306 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3310 If you are not sure if they are secure, I can check but I'll need a
3311 username and password different from the one you are using right now.
3312 If you don't have such a username or don't want me to test, simply
3316 rp='Other username to test security of setuid scripts with?'
3321 case "$d_suidsafe" in
3322 '') echo "I'll assume setuid scripts are *not* secure." >&4
3325 echo "Well, the $hint value is *not* secure." >&4
3327 *) echo "Well, the $hint value *is* secure." >&4
3332 $rm -f reflect flect
3333 echo "#!$ls" >reflect
3334 chmod +x,u+s reflect
3337 echo '"su" will (probably) prompt you for '"$ans's password."
3338 su $ans -c './reflect >flect'
3339 if $contains "/dev/fd" flect >/dev/null; then
3340 echo "Okay, it looks like setuid scripts are secure." >&4
3343 echo "I don't think setuid scripts are secure." >&4
3348 rp='Does your kernel have *secure* setuid scripts?'
3351 [yY]*) val="$define";;
3356 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3357 echo "(That's for file descriptors, not floppy disks.)"
3363 $rm -f reflect flect
3365 : now see if they want to do setuid emulation
3368 case "$d_suidsafe" in
3371 echo "No need to emulate SUID scripts since they are secure here." >& 4
3375 Some systems have disabled setuid scripts, especially systems where
3376 setuid scripts cannot be secure. On systems where setuid scripts have
3377 been disabled, the setuid/setgid bits on scripts are currently
3378 useless. It is possible for $package to detect those bits and emulate
3379 setuid/setgid in a secure fashion. This emulation will only work if
3380 setuid scripts have been disabled in your kernel.
3384 "$define") dflt=y ;;
3387 rp="Do you want to do setuid/setgid emulation?"
3390 [yY]*) val="$define";;
3398 : determine where manual pages are on this system
3402 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3403 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3404 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3405 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3406 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3407 sysman=`./loc . /usr/man/man1 $syspath`
3410 if $test -d "$sysman"; then
3411 echo "System manual is in $sysman." >&4
3413 echo "Could not find manual pages in source form." >&4
3416 : see what memory models we can support
3419 $cat >pdp11.c <<'EOP'
3428 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3429 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3430 dflt='unsplit split'
3432 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3435 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3440 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3443 if $test -d /lib/large || $test -d /usr/lib/large; then
3446 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3455 Some systems have different model sizes. On most systems they are called
3456 small, medium, large, and huge. On the PDP11 they are called unsplit and
3457 split. If your system doesn't support different memory models, say "none".
3458 If you wish to force everything to one memory model, say "none" here and
3459 put the appropriate flags later when it asks you for other cc and ld flags.
3460 Venix systems may wish to put "none" and let the compiler figure things out.
3461 (In the following question multiple model names should be space separated.)
3463 The default for most systems is "none".
3466 rp="Which memory models are supported?"
3481 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3482 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3489 rp="What flag indicates separate I and D space?"
3497 *large*|*small*|*medium*|*huge*)
3504 rp="What flag indicates large model?"
3514 *huge*) case "$huge" in
3518 rp="What flag indicates huge model?"
3528 *medium*) case "$medium" in
3532 rp="What flag indicates medium model?"
3539 *) medium="$large";;
3542 *small*) case "$small" in
3546 rp="What flag indicates small model?"
3557 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3560 $rm -f pdp11.* pdp11
3562 : see if we need a special compiler
3570 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3571 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3585 On some older systems the default C compiler will not resolve multiple global
3586 references that happen to have the same name. On some such systems the "Mcc"
3587 command may be used to force these to be resolved. On other systems a "cc -M"
3588 command is required. (Note that the -M flag on other systems indicates a
3589 memory model to use!) If you have the Gnu C compiler, you might wish to use
3595 rp="Use which C compiler?"
3603 rp="Use which C compiler?"
3607 : Look for a hint-file generated 'call-back-unit'. Now that the
3608 : user has specified the compiler, we may need to set or change some
3610 if $test -f cc.cbu; then
3614 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3615 $cat >gccvers.c <<EOM
3620 printf("%s\n", __VERSION__);
3622 printf("%s\n", "1");
3628 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3629 gccversion=`./gccvers`
3630 case "$gccversion" in
3631 '') echo "You are not using GNU cc." ;;
3632 *) echo "You are using GNU cc $gccversion." ;;
3636 echo "*** WHOA THERE!!! ***" >&4
3637 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3638 case "$knowitall" in
3640 echo " You'd better start hunting for one and let me know about it." >&4
3646 case "$gccversion" in
3647 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3650 : What should the include directory be ?
3652 $echo $n "Hmm... $c"
3656 if $test -f /bin/mips && /bin/mips; then
3657 echo "Looks like a MIPS system..."
3658 $cat >usr.c <<'EOCP'
3659 #ifdef SYSTYPE_BSD43
3663 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3664 dflt='/bsd43/usr/include'
3668 mips_type='System V'
3670 $rm -f usr.c usr.out
3671 echo "and you're compiling with the $mips_type compiler and libraries."
3675 echo "Doesn't look like a MIPS system."
3685 case "$xxx_prompt" in
3688 rp='Where are the include files you want to use?'
3696 : see how we invoke the C preprocessor
3698 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3699 cat <<'EOT' >testcpp.c
3705 if test ! -f cppstdin; then
3706 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3708 echo "Keeping your $hint cppstdin wrapper."
3711 wrapper=`pwd`/cppstdin
3715 if $test "X$cppstdin" != "X" && \
3716 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3717 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3719 echo "You used to use $cppstdin $cppminus so we'll use that again."
3721 '') echo "But let's see if we can live without a wrapper..." ;;
3723 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3724 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3726 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3729 echo "(However, $cpprun $cpplast does not work, let's see...)"
3737 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3744 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3745 $cc -E <testcpp.c >testcpp.out 2>&1; \
3746 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3747 echo "Yup, it does."
3750 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3751 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3752 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3753 echo "Yup, it does."
3756 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3757 $cc -P <testcpp.c >testcpp.out 2>&1; \
3758 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3759 echo "Yipee, that works!"
3762 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3763 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3764 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3765 echo "At long last!"
3768 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3769 $cpp <testcpp.c >testcpp.out 2>&1; \
3770 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3774 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3775 $cpp - <testcpp.c >testcpp.out 2>&1; \
3776 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3777 echo "Hooray, it works! I was beginning to wonder."
3780 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3781 $wrapper <testcpp.c >testcpp.out 2>&1; \
3782 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3788 rp="No dice. I can't find a C preprocessor. Name one:"
3792 $x_cpp <testcpp.c >testcpp.out 2>&1
3793 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3794 echo "OK, that will do." >&4
3796 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3811 echo "Perhaps can we force $cc -E using a wrapper..."
3812 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3813 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3819 echo "Nope, we'll have to live without it..."
3833 "$wrapper"|'cppstdin') ;;
3834 *) $rm -f $wrapper;;
3836 $rm -f testcpp.c testcpp.out
3838 : Set private lib path
3841 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3846 '') dlist="$loclibpth $plibpth $glibpth";;
3847 *) dlist="$libpth";;
3850 : Now check and see which directories actually exist, avoiding duplicates
3854 if $test -d $xxx; then
3857 *) libpth="$libpth $xxx";;
3863 Some systems have incompatible or broken versions of libraries. Among
3864 the directories listed in the question below, please remove any you
3865 know not to be holding relevant libraries, and add any that are needed.
3866 Say "none" for none.
3877 rp="Directories to use for library searches?"
3884 : compute shared library extension
3887 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3897 On some systems, shared libraries may be available. Answer 'none' if
3898 you want to suppress searching of shared libraries for the remaining
3899 of this configuration.
3902 rp='What is the file extension used for shared libraries?'
3906 : Define several unixisms.
3907 : Hints files or command line option can be used to override them.
3908 : The convoluted testing is in case hints files set either the old
3911 '') case "$exe_ext" in
3913 *) _exe="$exe_ext" ;;
3918 '') case "$lib_ext" in
3925 '') case "$obj_ext" in
3932 '') case "$path_sep" in
3943 : Which makefile gets called first. This is used by make depend.
3944 case "$firstmakefile" in
3945 '') firstmakefile='makefile';;
3948 : Looking for optional libraries
3950 echo "Checking for optional libraries..." >&4
3955 case "$libswanted" in
3956 '') libswanted='c_s';;
3958 for thislib in $libswanted; do
3960 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3961 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3962 echo "Found -l$thislib (shared)."
3965 *) dflt="$dflt -l$thislib";;
3967 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3968 echo "Found -l$thislib (shared)."
3971 *) dflt="$dflt -l$thislib";;
3973 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3974 echo "Found -l$thislib."
3977 *) dflt="$dflt -l$thislib";;
3979 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3980 echo "Found -l$thislib."
3983 *) dflt="$dflt -l$thislib";;
3985 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3986 echo "Found -l${thislib}_s."
3989 *) dflt="$dflt -l${thislib}_s";;
3991 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3992 echo "Found -l$thislib."
3995 *) dflt="$dflt -l$thislib";;
3998 echo "No -l$thislib."
4009 ' '|'') dflt='none';;
4014 Some versions of Unix support shared libraries, which make executables smaller
4015 but make load time slightly longer.
4017 On some systems, mostly System V Release 3's, the shared library is included
4018 by putting the option "-lc_s" as the last thing on the cc command line when
4019 linking. Other systems use shared libraries by default. There may be other
4020 libraries needed to compile $package on your machine as well. If your system
4021 needs the "-lc_s" option, include it here. Include any other special libraries
4022 here as well. Say "none" for none.
4026 rp="Any additional libraries?"
4033 : determine optimize, if desired, or use for debug flag also
4035 ' '|$undef) dflt='none';;
4037 *) dflt="$optimize";;
4041 Some C compilers have problems with their optimizers. By default, $package
4042 compiles with the -O flag to use the optimizer. Alternately, you might want
4043 to use the symbolic debugger, which uses the -g flag (on traditional Unix
4044 systems). Either flag can be specified here. To use neither flag, specify
4048 rp="What optimizer/debugger flag should be used?"
4052 'none') optimize=" ";;
4056 : We will not override a previous value, but we might want to
4057 : augment a hint file
4060 case "$gccversion" in
4061 1*) dflt='-fpcc-struct-return' ;;
4064 *-g*) dflt="$dflt -DDEBUGGING";;
4066 case "$gccversion" in
4067 2*) if test -d /etc/conf/kconfig.d &&
4068 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4077 case "$mips_type" in
4078 *BSD*|'') inclwanted="$locincpth $usrinc";;
4079 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4081 for thisincl in $inclwanted; do
4082 if $test -d $thisincl; then
4083 if $test x$thisincl != x$usrinc; then
4086 *) dflt="$dflt -I$thisincl";;
4092 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4094 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4102 *) dflt="$dflt -D$2";;
4106 set signal.h LANGUAGE_C; eval $inctest
4109 none|recommended) dflt="$ccflags $dflt" ;;
4110 *) dflt="$ccflags";;
4118 Your C compiler may want other flags. For this question you should include
4119 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4120 but you should NOT include libraries or ld flags like -lwhatever. If you
4121 want $package to honor its debug switch, you should include -DDEBUGGING here.
4122 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4124 To use no flags, specify the word "none".
4130 rp="Any additional cc flags?"
4137 : the following weeds options from ccflags that are of no interest to cpp
4139 case "$gccversion" in
4140 1*) cppflags="$cppflags -D__GNUC__"
4142 case "$mips_type" in
4144 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4150 echo "Let me guess what the preprocessor flags are..." >&4
4164 *) ftry="$previous $flag";;
4166 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4167 >cpp1.out 2>/dev/null && \
4168 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4169 >cpp2.out 2>/dev/null && \
4170 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4171 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4173 cppflags="$cppflags $ftry"
4183 *-*) echo "They appear to be: $cppflags";;
4185 $rm -f cpp.c cpp?.out
4189 : flags used in final linking phase
4191 '') if ./venix; then
4197 *-posix*) dflt="$dflt -posix" ;;
4200 *) dflt="$ldflags";;
4203 : Try to guess additional flags to pick up local libraries.
4204 for thislibdir in $libpth; do
4205 case " $loclibpth " in
4208 *"-L$thislibdir "*) ;;
4209 *) dflt="$dflt -L$thislibdir" ;;
4221 Your C linker may need flags. For this question you should
4222 include -L/whatever and any other flags used by the C linker, but you
4223 should NOT include libraries like -lwhatever.
4225 Make sure you include the appropriate -L/path flags if your C linker
4226 does not normally search all of the directories you specified above,
4229 To use no flags, specify the word "none".
4233 rp="Any additional ld flags (NOT including libraries)?"
4239 rmlist="$rmlist pdp11"
4243 echo "Checking your choice of C compiler and flags for coherency..." >&4
4244 $cat > try.c <<'EOF'
4246 int main() { printf("Ok\n"); exit(0); }
4248 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4250 $cat >try.msg <<'EOM'
4251 I've tried to compile and run the following simple program:
4254 $cat try.c >> try.msg
4256 $cat >> try.msg <<EOM
4263 and I got the following output:
4267 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4268 if sh -c './try' >>try.msg 2>&1; then
4272 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4275 cat >> try.msg <<'EOQS'
4276 If $libs contains -lsfio, and sfio is mis-configured, then it
4277 sometimes (apparently) runs and exits with a 0 status, but with no
4278 output! It may have to do with sfio's use of _exit vs. exit.
4281 rp="You have a big problem. Shall I abort Configure"
4288 echo "The program compiled OK, but exited with status $?." >>try.msg
4289 rp="You have a problem. Shall I abort Configure"
4293 echo "I can't compile the test program." >>try.msg
4294 rp="You have a BIG problem. Shall I abort Configure"
4300 case "$knowitall" in
4302 echo "(The supplied flags or libraries might be incorrect.)"
4310 *) echo "Ok. Stopping Configure." >&4
4315 n) echo "OK, that should do.";;
4317 $rm -f try try.* core
4319 : determine filename position in cpp output
4321 echo "Computing filename position in cpp output for #include directives..." >&4
4322 echo '#include <stdio.h>' > foo.c
4325 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4326 $grep '^[ ]*#.*stdio\.h' | \
4327 while read cline; do
4330 while $test \$# -gt 0; do
4331 if $test -r \`echo \$1 | $tr -d '"'\`; then
4336 pos=\`expr \$pos + 1\`
4348 *) pos="${fieldn}th";;
4350 echo "Your cpp writes the filename in the $pos field of the line."
4352 : locate header file
4357 for usrincdir in $usrinc
4359 if test -f \$usrincdir/\$wanted; then
4360 echo "\$usrincdir/\$wanted"
4364 awkprg='{ print \$$fieldn }'
4365 echo "#include <\$wanted>" > foo\$\$.c
4366 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4367 $grep "^[ ]*#.*\$wanted" | \
4368 while read cline; do
4369 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4371 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4372 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4377 #status=0: grep returned 0 lines, case statement not executed
4378 #status=1: headerfile found
4379 #status=2: while loop executed, no headerfile found
4383 if test \$status -eq 1; then
4391 : define an alternate in-header-list? function
4392 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4393 cont=true; xxf="echo \"<\$1> found.\" >&4";
4394 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4395 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4397 case $# in 4) instead=instead;; *) instead="at last";; esac;
4398 while $test "$cont"; do
4400 var=$2; eval "was=\$$2";
4401 if $test "$xxx" && $test -r "$xxx";
4403 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4406 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4407 set $yyy; shift; shift; yyy=$@;
4408 case $# in 0) cont="";;
4409 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4410 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4411 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4412 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4416 do set $yyy; var=$2; eval "was=\$$2";
4417 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4418 set $yyy; shift; shift; yyy=$@;
4421 : see if this is a malloc.h system
4422 set malloc.h i_malloc
4425 : see if stdlib is available
4426 set stdlib.h i_stdlib
4429 : determine which malloc to compile in
4431 case "$usemymalloc" in
4432 ''|[yY]*|true|$define) dflt='y' ;;
4435 rp="Do you wish to attempt to use the malloc that comes with $package?"
4441 mallocsrc='malloc.c'
4442 mallocobj="malloc$_o"
4443 d_mymalloc="$define"
4446 : Remove malloc from list of libraries to use
4447 echo "Removing unneeded -lmalloc from library list" >&4
4448 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4451 echo "libs = $libs" >&4
4463 : compute the return types of malloc and free
4465 $cat >malloc.c <<END
4469 #include <sys/types.h>
4483 case "$malloctype" in
4485 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4492 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4496 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4503 echo "Your system uses $freetype free(), it would seem." >&4
4505 : Cruising for prototypes
4507 echo "Checking out function prototypes..." >&4
4508 $cat >prototype.c <<'EOCP'
4509 int main(int argc, char *argv[]) {
4512 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4513 echo "Your C compiler appears to support function prototypes."
4516 echo "Your C compiler doesn't seem to understand function prototypes."
4523 case "$prototype" in
4525 *) ansi2knr='ansi2knr'
4530 This version of $package can only be compiled by a compiler that
4531 understands function prototypes. Unfortunately, your C compiler
4533 doesn't seem to understand them. Sorry about that.
4535 If GNU cc is available for your system, perhaps you could try that instead.
4537 Eventually, we hope to support building Perl with pre-ANSI compilers.
4538 If you would like to help in that effort, please contact <perlbug@perl.org>.
4540 Aborting Configure now.
4546 : determine where public executables go
4551 rp='Pathname where the public executables will reside?'
4553 if $test "X$ansexp" != "X$binexp"; then
4561 Since you are running AFS, I need to distinguish the directory in which
4562 executables reside from the directory in which they are installed (and from
4563 which they are presumably copied to the former directory by occult means).
4566 case "$installbin" in
4567 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4568 *) dflt="$installbin";;
4571 rp='Where will public executables be installed?'
4575 installbin="$binexp"
4578 : determine whether to install perl also as /usr/bin/perl
4581 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4583 Many scripts expect to perl to be installed as /usr/bin/perl.
4584 I can install the perl you are about to compile also as /usr/bin/perl
4585 (in addition to $installbin/perl).
4587 case "$installusrbinperl" in
4588 "$undef"|[nN]*) dflt='n';;
4591 rp="Do you want to install perl as /usr/bin/perl?"
4594 [yY]*) val="$define";;
4600 set installusrbinperl
4603 : define a shorthand compile call
4607 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4608 : define a shorthand compile call for compilations that should be ok.
4612 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4615 echo "Checking for GNU C Library..." >&4
4616 cat >gnulibc.c <<EOM
4628 if eval $compile_ok && ./gnulibc; then
4630 echo "You are using the GNU C Library"
4633 echo "You are not using the GNU C Library"
4639 : see if nm is to be used to determine whether a symbol is defined or not
4643 case "$d_gnulibc" in
4646 echo "nm probably won't work on the GNU C Library." >&4
4652 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4654 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4655 echo "'nm' won't be sufficient on this sytem." >&4
4661 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4662 if $test $dflt -gt 20; then
4672 true|$define) dflt=y;;
4679 I can use $nm to extract the symbols from your C libraries. This
4680 is a time consuming task which may generate huge output on the disk (up
4681 to 3 megabytes) but that should make the symbols extraction faster. The
4682 alternative is to skip the 'nm' extraction part and to compile a small
4683 test program instead to determine whether each symbol is present. If
4684 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4685 this may be the best solution.
4687 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4690 rp="Shall I use $nm to extract C symbols from the libraries?"
4693 [Nn]*) usenm=false;;
4702 : nm options which may be necessary
4704 '') if $test -f /mach_boot; then
4706 elif $test -d /usr/ccs/lib; then
4707 nm_opt='-p' # Solaris (and SunOS?)
4708 elif $test -f /dgux; then
4710 elif $test -f /lib64/rld; then
4711 nm_opt='-p' # 64-bit Irix
4717 : nm options which may be necessary for shared libraries but illegal
4718 : for archive libraries. Thank you, Linux.
4719 case "$nm_so_opt" in
4720 '') case "$myuname" in
4722 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4723 nm_so_opt='--dynamic'
4732 : get list of predefined functions in a handy place
4737 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4744 *) for thislib in $libs; do
4747 : Handle C library specially below.
4750 thislib=`echo $thislib | $sed -e 's/^-l//'`
4751 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4753 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4755 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4757 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4759 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4761 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4763 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4768 libnames="$libnames $try"
4770 *) libnames="$libnames $thislib" ;;
4779 for xxx in $libpth; do
4780 $test -r $1 || set $xxx/libc.$so
4781 : The messy sed command sorts on library version numbers.
4783 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4784 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4786 s/[0-9][0-9]*/0000&/g
4787 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4790 sort | $sed -e 's/^.* //'`
4793 $test -r $1 || set /usr/ccs/lib/libc.$so
4794 $test -r $1 || set /lib/libsys_s$_a
4800 if $test -r "$1"; then
4801 echo "Your (shared) C library seems to be in $1."
4803 elif $test -r /lib/libc && $test -r /lib/clib; then
4804 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4806 libc='/lib/clib /lib/libc'
4807 if $test -r /lib/syslib; then
4808 echo "(Your math library is in /lib/syslib.)"
4809 libc="$libc /lib/syslib"
4811 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4812 echo "Your C library seems to be in $libc, as you said before."
4813 elif $test -r $incpath/usr/lib/libc$_a; then
4814 libc=$incpath/usr/lib/libc$_a;
4815 echo "Your C library seems to be in $libc. That's fine."
4816 elif $test -r /lib/libc$_a; then
4818 echo "Your C library seems to be in $libc. You're normal."
4820 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4822 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4823 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4824 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4826 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4828 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4831 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4833 if $test -r "$tans"; then
4834 echo "Your C library seems to be in $tans, of all places."
4840 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4844 If the guess above is wrong (which it might be if you're using a strange
4845 compiler, or your machine supports multiple models), you can override it here.
4850 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4852 I can't seem to find your C library. I've looked in the following places:
4855 $sed 's/^/ /' libpath
4858 None of these seems to contain your C library. I need to get its name...
4863 rp='Where is your C library?'
4868 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4869 set X `cat libnames`
4872 case $# in 1) xxx=file; esac
4873 echo "Extracting names from the following $xxx for later perusal:" >&4
4875 $sed 's/^/ /' libnames >&4
4877 $echo $n "This may take a while...$c" >&4
4881 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4882 *) $nm $nm_opt $file 2>/dev/null;;
4887 $grep fprintf libc.tmp > libc.ptf
4888 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4889 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4891 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4893 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4897 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4899 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4901 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4903 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4905 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4907 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4909 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4911 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4913 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4915 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4916 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4918 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4920 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4922 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4924 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4926 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4928 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4930 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4932 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4934 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4936 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4938 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4940 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4942 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4944 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4946 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4949 $nm -p $* 2>/dev/null >libc.tmp
4950 $grep fprintf libc.tmp > libc.ptf
4951 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4952 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4958 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4960 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4961 for thisname in $libnames $libc; do
4962 $ar t $thisname >>libc.tmp
4964 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4966 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4967 # Repeat libc to extract forwarders to DLL entries too
4968 for thisname in $libnames $libc; do
4969 $ar tv $thisname >>libc.tmp
4970 # Revision 50 of EMX has bug in $ar.
4971 # it will not extract forwarders to DLL entries
4972 # Use emximp which will extract exactly them.
4973 emximp -o tmp.imp $thisname \
4975 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4976 < tmp.imp >>libc.tmp
4979 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4982 echo "$ar didn't seem to work right." >&4
4983 echo "Maybe this is a Cray...trying bld instead..." >&4
4984 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4986 for thisname in $libnames; do
4988 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4989 $ar t $thisname >>libc.tmp
4993 echo "That didn't work either. Giving up." >&4
5000 if $test -f /lib/syscalls.exp; then
5002 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5003 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5007 $rm -f libnames libpath
5009 : see if dld is available
5013 : is a C symbol defined?
5016 -v) tf=libc.tmp; tc=""; tdc="";;
5017 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5018 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5021 case "$reuseval-$4" in
5023 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5029 if $contains $tlook $tf >/dev/null 2>&1;
5034 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5035 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5043 $define) tval=true;;
5049 : define an is-in-libc? function
5050 inlibc='echo " "; td=$define; tu=$undef;
5051 sym=$1; var=$2; eval "was=\$$2";
5053 case "$reuseval$was" in
5063 echo "$sym() found." >&4;
5064 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5066 echo "$sym() NOT found." >&4;
5067 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5071 $define) echo "$sym() found." >&4;;
5072 *) echo "$sym() NOT found." >&4;;
5076 : see if dlopen exists
5083 : determine which dynamic loading, if any, to compile in
5085 dldir="ext/DynaLoader"
5098 $define) dflt='y' ;;
5101 $define) dflt='y' ;;
5103 : Does a dl_xxx.xs file exist for this operating system
5104 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5107 rp="Do you wish to use dynamic loading?"
5114 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5115 dflt="$dldir/dl_${osname}.xs"
5116 elif $test "$d_dlopen" = "$define" ; then
5117 dflt="$dldir/dl_dlopen.xs"
5118 elif $test "$i_dld" = "$define" ; then
5119 dflt="$dldir/dl_dld.xs"
5124 *) dflt="$dldir/$dlsrc"
5127 echo "The following dynamic loading files are available:"
5128 : Can not go over to $dldir because getfile has path hard-coded in.
5129 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5130 rp="Source file to use for dynamic loading"
5132 # XXX This getfile call will fail the existence check if you try
5133 # building away from $src (this is not supported yet).
5137 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5141 Some systems may require passing special flags to $cc -c to
5142 compile modules that will be used to create a shared library.
5143 To use no flags, say "none".
5146 case "$cccdlflags" in
5147 '') case "$gccversion" in
5148 '') case "$osname" in
5150 next) dflt='none' ;;
5151 irix*) dflt='-KPIC' ;;
5152 svr4*|esix*|solaris) dflt='-KPIC' ;;
5153 sunos) dflt='-pic' ;;
5157 *) case "$osname" in
5158 svr4*|esix*|solaris) dflt='-fPIC' ;;
5163 *) dflt="$cccdlflags" ;;
5165 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5168 none) cccdlflags=' ' ;;
5169 *) cccdlflags="$ans" ;;
5174 Some systems use ld to create libraries that can be dynamically loaded,
5175 while other systems (such as those using ELF) use $cc.
5179 '') $cat >try.c <<'EOM'
5180 /* Test for whether ELF binaries are produced */
5185 int i = open("a.out",O_RDONLY);
5188 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5189 exit(0); /* succeed (yes, it's ELF) */
5194 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5196 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5200 echo "I'll use ld to build dynamic libraries."
5209 rp="What command should be used to create dynamic libraries?"
5215 Some systems may require passing special flags to $ld to create a
5216 library that can be dynamically loaded. If your ld flags include
5217 -L/other/path options to locate libraries outside your loader's normal
5218 search path, you may need to specify those -L options here as well. To
5219 use no flags, say "none".
5222 case "$lddlflags" in
5223 '') case "$osname" in
5224 beos) dflt='-nostart' ;;
5226 linux|irix*) dflt='-shared' ;;
5227 next) dflt='none' ;;
5228 solaris) dflt='-G' ;;
5229 sunos) dflt='-assert nodefinitions' ;;
5230 svr4*|esix*) dflt="-G $ldflags" ;;
5234 *) dflt="$lddlflags" ;;
5237 : Try to guess additional flags to pick up local libraries.
5238 : Be careful not to append to a plain 'none'
5242 for thisflag in $ldflags; do
5247 *) dflt="$dflt $thisflag" ;;
5254 ''|' ') dflt='none' ;;
5257 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5260 none) lddlflags=' ' ;;
5261 *) lddlflags="$ans" ;;
5266 Some systems may require passing special flags to $cc to indicate that
5267 the resulting executable will use dynamic linking. To use no flags,
5271 case "$ccdlflags" in
5272 '') case "$osname" in
5273 hpux) dflt='-Wl,-E' ;;
5274 linux) dflt='-rdynamic' ;;
5275 next) dflt='none' ;;
5276 sunos) dflt='none' ;;
5280 *) dflt="$ccdlflags" ;;
5282 rp="Any special flags to pass to $cc to use dynamic loading?"
5285 none) ccdlflags=' ' ;;
5286 *) ccdlflags="$ans" ;;
5300 # No dynamic loading being used, so don't bother even to prompt.
5303 *) case "$useshrplib" in
5304 '') case "$osname" in
5305 svr4*|dgux|dynixptx|esix|powerux|beos)
5307 also='Building a shared libperl is required for dynamic loading to work on your system.'
5312 also='Building a shared libperl is needed for MAB support.'
5330 The perl executable is normally obtained by linking perlmain.c with
5331 libperl${_a}, any static extensions (usually just DynaLoader), and
5332 any other libraries needed on this system (such as -lm, etc.). Since
5333 your system supports dynamic loading, it is probably possible to build
5334 a shared libperl.$so. If you will have more than one executable linked
5335 to libperl.$so, this will significantly reduce the size of each
5336 executable, but it may have a noticeable affect on performance. The
5337 default is probably sensible for your system.
5341 rp="Build a shared libperl.$so (y/n)"
5346 # Why does next4 have to be so different?
5347 case "${osname}${osvers}" in
5349 xxx='DYLD_LIBRARY_PATH' ;;
5350 os2*) xxx='' ;; # Nothing special needed.
5352 *) xxx='LD_LIBRARY_PATH' ;;
5355 *) useshrplib='false' ;;
5360 case "$useshrplib" in
5364 # Figure out a good name for libperl.so. Since it gets stored in
5365 # a version-specific architecture-dependent library, the version
5366 # number isn't really that important, except for making cc/ld happy.
5368 # A name such as libperl.so.3.1
5369 majmin="libperl.$so.$patchlevel.$subversion"
5370 # A name such as libperl.so.301
5371 majonly=`echo $patchlevel $subversion |
5372 $awk '{printf "%d%02d", $1, $2}'`
5373 majonly=libperl.$so.$majonly
5374 # I'd prefer to keep the os-specific stuff here to a minimum, and
5375 # rely on figuring it out from the naming of libc.
5376 case "${osname}${osvers}" in
5379 # XXX How handle the --version stuff for MAB?
5381 linux*) # ld won't link with a bare -lperl otherwise.
5384 *) # Try to guess based on whether libc has major.minor.
5386 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5387 *libc.$so.[0-9]*) dflt=$majonly ;;
5388 *) dflt=libperl.$so ;;
5398 I need to select a good name for the shared libperl. If your system uses
5399 library names with major and minor numbers, then you might want something
5400 like $majmin. Alternatively, if your system uses a single version
5401 number for shared libraries, then you might want to use $majonly.
5402 Or, your system might be quite happy with a simple libperl.$so.
5404 Since the shared libperl will get installed into a version-specific
5405 architecture-dependent directory, the version number of the shared perl
5406 library probably isn't important, so the default should be o.k.
5409 rp='What name do you want to give to the shared libperl?'
5412 echo "Ok, I'll use $libperl"
5415 libperl="libperl${_a}"
5419 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5423 WARNING: Use of the shrpdir variable for the installation location of
5424 the shared $libperl is not supported. It was never documented and
5425 will not work in this version. Let me (perlbug@perl.com)
5426 know of any problems this may cause.
5432 But your current setting of $shrpdir is
5433 the default anyway, so it's harmless.
5438 Further, your current attempted setting of $shrpdir
5439 conflicts with the value of $archlibexp/CORE
5440 that installperl will use.
5447 # How will the perl executable find the installed shared $libperl?
5448 # Add $xxx to ccdlflags.
5449 # If we can't figure out a command-line option, use $shrpenv to
5450 # set env LD_RUN_PATH. The main perl makefile uses this.
5451 shrpdir=$archlibexp/CORE
5454 if "$useshrplib"; then
5457 # We'll set it in Makefile.SH...
5463 xxx="-Wl,-R$shrpdir"
5465 linux|irix*|dec_osf)
5466 xxx="-Wl,-rpath,$shrpdir"
5469 # next doesn't like the default...
5472 # beos doesn't like the default, either.
5475 # hpux doesn't like the default, either.
5476 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
5479 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5485 # Only add $xxx if it isn't already in ccdlflags.
5486 case " $ccdlflags " in
5488 *) ccdlflags="$ccdlflags $xxx"
5491 Adding $xxx to the flags
5492 passed to $ld so that the perl executable will find the
5493 installed shared $libperl.
5501 # Respect a hint or command-line value.
5503 '') shrpenv="$tmp_shrpenv" ;;
5506 : determine where manual pages go
5507 set man1dir man1dir none
5511 $spackage has manual pages available in source form.
5515 echo "However, you don't have nroff, so they're probably useless to you."
5517 '') man1dir="none";;
5520 echo "If you don't want the manual sources installed, answer 'none'."
5525 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5526 lookpath="$lookpath $prefixexp/man/p_man/man1"
5527 lookpath="$lookpath $prefixexp/man/u_man/man1"
5528 lookpath="$lookpath $prefixexp/man/man.1"
5530 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5531 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5541 rp="Where do the main $spackage manual pages (source) go?"
5543 if $test "X$man1direxp" != "X$ansexp"; then
5547 man1direxp="$ansexp"
5555 Since you are running AFS, I need to distinguish the directory in which
5556 manual pages reside from the directory in which they are installed (and from
5557 which they are presumably copied to the former directory by occult means).
5560 case "$installman1dir" in
5561 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5562 *) dflt="$installman1dir";;
5565 rp='Where will man pages be installed?'
5567 installman1dir="$ans"
5569 installman1dir="$man1direxp"
5572 : What suffix to use on installed man pages
5579 rp="What suffix should be used for the main $spackage man pages?"
5581 '') case "$man1dir" in
5595 *) dflt="$man1ext";;
5602 : see if we can have long filenames
5604 rmlist="$rmlist /tmp/cf$$"
5605 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5606 first=123456789abcdef
5607 second=/tmp/cf$$/$first
5608 $rm -f $first $second
5609 if (echo hi >$first) 2>/dev/null; then
5610 if $test -f 123456789abcde; then
5611 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5614 if (echo hi >$second) 2>/dev/null; then
5615 if $test -f /tmp/cf$$/123456789abcde; then
5617 That's peculiar... You can have filenames longer than 14 characters, but only
5618 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5619 I shall consider your system cannot support long filenames at all.
5623 echo 'You can have filenames longer than 14 characters.' >&4
5628 How confusing! Some of your filesystems are sane enough to allow filenames
5629 longer than 14 characters but some others like /tmp can't even think about them.
5630 So, for now on, I shall assume your kernel does not allow them at all.
5637 You can't have filenames longer than 14 chars. You can't even think about them!
5643 $rm -rf /tmp/cf$$ 123456789abcde*
5645 : determine where library module manual pages go
5646 set man3dir man3dir none
5650 $spackage has manual pages for many of the library modules.
5656 However, you don't have nroff, so they're probably useless to you.
5659 '') man3dir="none";;
5663 case "$d_flexfnam" in
5666 However, your system can't handle the long file names like File::Basename.3.
5669 '') man3dir="none";;
5673 echo "If you don't want the manual sources installed, answer 'none'."
5674 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5676 '') case "$prefix" in
5677 *$prog*) dflt=`echo $man1dir |
5678 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5679 *) dflt="$privlib/man/man3" ;;
5683 *) dflt="$man3dir" ;;
5688 rp="Where do the $package library man pages (source) go?"
5690 if test "X$man3direxp" != "X$ansexp"; then
5695 man3direxp="$ansexp"
5703 Since you are running AFS, I need to distinguish the directory in which
5704 manual pages reside from the directory in which they are installed (and from
5705 which they are presumably copied to the former directory by occult means).
5708 case "$installman3dir" in
5709 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5710 *) dflt="$installman3dir";;
5713 rp='Where will man pages be installed?'
5715 installman3dir="$ans"
5717 installman3dir="$man3direxp"
5720 : What suffix to use on installed man pages
5727 rp="What suffix should be used for the $package library man pages?"
5729 '') case "$man3dir" in
5743 *) dflt="$man3ext";;
5750 : see if we have to deal with yellow pages, now NIS.
5751 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5752 if $test -f /usr/etc/nibindd; then
5754 echo "I'm fairly confident you're on a NeXT."
5756 rp='Do you get the hosts file via NetInfo?'
5765 y*) hostcat='nidump hosts .';;
5766 *) case "$hostcat" in
5767 nidump*) hostcat='';;
5777 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5785 rp='Are you getting the hosts file via yellow pages?'
5788 y*) hostcat='ypcat hosts';;
5789 *) hostcat='cat /etc/hosts';;
5795 '') hostcat='cat /etc/hosts';;
5798 '') groupcat='cat /etc/group';;
5801 '') passcat='cat /etc/passwd';;
5804 : now get the host name
5806 echo "Figuring out host name..." >&4
5807 case "$myhostname" in
5809 echo 'Maybe "hostname" will work...'
5810 if tans=`sh -c hostname 2>&1` ; then
5818 if $test "$cont"; then
5820 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5821 if tans=`cat /etc/systemid 2>&1` ; then
5823 phostname='cat /etc/systemid'
5824 echo "Whadyaknow. Xenix always was a bit strange..."
5827 elif $test -r /etc/systemid; then
5828 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5831 if $test "$cont"; then
5832 echo 'No, maybe "uuname -l" will work...'
5833 if tans=`sh -c 'uuname -l' 2>&1` ; then
5835 phostname='uuname -l'
5837 echo 'Strange. Maybe "uname -n" will work...'
5838 if tans=`sh -c 'uname -n' 2>&1` ; then
5840 phostname='uname -n'
5842 echo 'Oh well, maybe I can mine it out of whoami.h...'
5843 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5844 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5845 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5847 case "$myhostname" in
5848 '') echo "Does this machine have an identity crisis or something?"
5851 echo "Well, you said $myhostname before..."
5852 phostname='echo $myhostname';;
5858 : you do not want to know about this
5863 if $test "$myhostname" ; then
5865 rp='Your host name appears to be "'$myhostname'".'" Right?"
5873 : bad guess or no guess
5874 while $test "X$myhostname" = X ; do
5876 rp="Please type the (one word) name of your host:"
5881 : translate upper to lower if necessary
5882 case "$myhostname" in
5884 echo "(Normalizing case in your host name)"
5885 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5889 case "$myhostname" in
5891 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5892 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5893 echo "(Trimming domain name from host name--host name is now $myhostname)"
5895 *) case "$mydomain" in
5898 test "X$hostcat" = "Xypcat hosts" &&
5899 ypmatch "$myhostname" hosts 2>/dev/null |\
5900 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5903 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5904 /[ ]$myhostname[ . ]/p" > hosts
5907 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5908 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5909 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5910 hosts | $sort | $uniq | \
5911 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5912 case `$echo X$dflt` in
5913 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5916 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5921 tans=`./loc resolv.conf X /etc /usr/etc`
5922 if $test -f "$tans"; then
5923 echo "(Attempting domain name extraction from $tans)"
5924 dflt=.`$sed -n -e 's/ / /g' \
5925 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5926 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5928 .) dflt=.`$sed -n -e 's/ / /g' \
5929 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5930 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5937 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5938 dflt=.`sh -c domainname 2>/dev/null`
5941 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5946 .) echo "(Lost all hope -- silly guess then)"
5952 *) dflt="$mydomain";;
5956 rp="What is your domain name?"
5966 : translate upper to lower if necessary
5969 echo "(Normalizing case in your domain name)"
5970 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5974 : a little sanity check here
5975 case "$phostname" in
5978 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5979 $myhostname$mydomain|$myhostname) ;;
5981 case "$phostname" in
5983 echo "(That doesn't agree with your whoami.h file, by the way.)"
5986 echo "(That doesn't agree with your $phostname command, by the way.)"
5996 I need to get your e-mail address in Internet format if possible, i.e.
5997 something like user@host.domain. Please answer accurately since I have
5998 no easy means to double check it. The default value provided below
5999 is most probably close to the reality but may not be valid from outside
6000 your organization...
6004 while test "$cont"; do
6006 '') dflt="$cf_by@$myhostname$mydomain";;
6007 *) dflt="$cf_email";;
6009 rp='What is your e-mail address?'
6015 rp='Address does not look like an Internet one. Use it anyway?'
6031 If you or somebody else will be maintaining perl at your site, please
6032 fill in the correct e-mail address here so that they may be contacted
6033 if necessary. Currently, the "perlbug" program included with perl
6034 will send mail to this address in addition to perlbug@perl.com. You may
6035 enter "none" for no administrator.
6038 case "$perladmin" in
6039 '') dflt="$cf_email";;
6040 *) dflt="$perladmin";;
6042 rp='Perl administrator e-mail address'
6046 : figure out how to guarantee perl startup
6047 case "$startperl" in
6049 case "$sharpbang" in
6053 I can use the #! construct to start perl on your system. This will
6054 make startup of perl scripts faster, but may cause problems if you
6055 want to share those scripts and perl is not in a standard place
6056 ($binexp/perl) on all your platforms. The alternative is to force
6057 a shell by starting the script with a single ':' character.
6061 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6064 none) startperl=": # use perl";;
6065 *) startperl="#!$ans"
6066 if $test 30 -lt `echo "$ans" | wc -c`; then
6069 WARNING: Some systems limit the #! command to 32 characters.
6070 If you experience difficulty running Perl scripts with #!, try
6071 installing Perl in a directory with a shorter pathname.
6077 *) startperl=": # use perl"
6082 echo "I'll use $startperl to start perl scripts."
6084 : figure best path for perl in scripts
6087 perlpath="$binexp/perl"
6088 case "$startperl" in
6093 I will use the "eval 'exec'" idiom to start Perl on your system.
6094 I can use the full path of your Perl binary for this purpose, but
6095 doing so may cause problems if you want to share those scripts and
6096 Perl is not always in a standard place ($binexp/perl).
6100 rp="What path shall I use in \"eval 'exec'\"?"
6107 case "$startperl" in
6109 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6112 : determine where public executable scripts go
6113 set scriptdir scriptdir
6115 case "$scriptdir" in
6118 : guess some guesses
6119 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6120 $test -d /usr/share/bin && dflt=/usr/share/bin
6121 $test -d /usr/local/script && dflt=/usr/local/script
6122 $test -d $prefixexp/script && dflt=$prefixexp/script
6126 *) dflt="$scriptdir"
6131 Some installations have a separate directory just for executable scripts so
6132 that they can mount it across multiple architectures but keep the scripts in
6133 one spot. You might, for example, have a subdirectory of /usr/share for this.
6134 Or you might just lump your scripts in with all your other executables.
6138 rp='Where do you keep publicly executable scripts?'
6140 if $test "X$ansexp" != "X$scriptdirexp"; then
6144 scriptdirexp="$ansexp"
6148 Since you are running AFS, I need to distinguish the directory in which
6149 scripts reside from the directory in which they are installed (and from
6150 which they are presumably copied to the former directory by occult means).
6153 case "$installscript" in
6154 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6155 *) dflt="$installscript";;
6158 rp='Where will public scripts be installed?'
6160 installscript="$ans"
6162 installscript="$scriptdirexp"
6165 : determine where site specific libraries go.
6166 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6167 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6169 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6170 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6175 The installation process will also create a directory for
6176 site-specific extensions and modules. Some users find it convenient
6177 to place all site-specific files in this directory rather than in the
6178 main distribution directory.
6182 rp='Pathname for the site-specific library files?'
6184 if $test "X$sitelibexp" != "X$ansexp"; then
6188 sitelibexp="$ansexp"
6192 Since you are running AFS, I need to distinguish the directory in
6193 which site-specific files reside from the directory in which they are
6194 installed (and from which they are presumably copied to the former
6195 directory by occult means).
6198 case "$installsitelib" in
6199 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6200 *) dflt="$installsitelib";;
6203 rp='Where will site-specific files be installed?'
6205 installsitelib="$ans"
6207 installsitelib="$sitelibexp"
6210 : determine where site specific architecture-dependent libraries go.
6211 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6212 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6213 : sitelib may have an optional trailing /share.
6214 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6215 tdflt="$tdflt/$archname"
6216 set sitearch sitearch none
6219 '') dflt="$tdflt" ;;
6220 *) dflt="$sitearch" ;;
6224 The installation process will also create a directory for
6225 architecture-dependent site-specific extensions and modules.
6229 rp='Pathname for the site-specific architecture-dependent library files?'
6231 if $test "X$sitearchexp" != "X$ansexp"; then
6235 sitearchexp="$ansexp"
6239 Since you are running AFS, I need to distinguish the directory in
6240 which site-specific architecture-dependent library files reside from
6241 the directory in which they are installed (and from which they are
6242 presumably copied to the former directory by occult means).
6245 case "$installsitearch" in
6246 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6247 *) dflt="$installsitearch";;
6250 rp='Where will site-specific architecture-dependent files be installed?'
6252 installsitearch="$ans"
6254 installsitearch="$sitearchexp"
6259 Previous version of $package used the standard IO mechanisms as defined
6260 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6261 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6262 the default. This abstraction layer can use AT&T's sfio (if you already
6263 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6264 problems with some extension modules. Using PerlIO with stdio is safe,
6265 but it is slower than plain stdio and therefore is not the default.
6267 If this doesn't make any sense to you, just accept the default 'n'.
6269 case "$useperlio" in
6270 $define|true|[yY]*) dflt='y';;
6273 rp='Use the experimental PerlIO abstraction layer?'
6280 echo "Ok, doing things the stdio way"
6287 : Check how to convert floats to strings.
6288 if test "X$d_Gconvert" = X; then
6290 echo "Checking for an efficient way to convert floats to strings."
6293 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6294 char *myname = "gconvert";
6297 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6298 char *myname = "gcvt";
6301 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6302 char *myname = "sprintf";
6308 checkit(expect, got)
6312 if (strcmp(expect, got)) {
6313 printf("%s oddity: Expected %s, got %s\n",
6314 myname, expect, got);
6324 /* This must be 1st test on (which?) platform */
6325 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6326 Gconvert(0.1, 8, 0, buf);
6327 checkit("0.1", buf);
6329 Gconvert(1.0, 8, 0, buf);
6332 Gconvert(0.0, 8, 0, buf);
6335 Gconvert(-1.0, 8, 0, buf);
6338 /* Some Linux gcvt's give 1.e+5 here. */
6339 Gconvert(100000.0, 8, 0, buf);
6340 checkit("100000", buf);
6342 /* Some Linux gcvt's give -1.e+5 here. */
6343 Gconvert(-100000.0, 8, 0, buf);
6344 checkit("-100000", buf);
6349 case "$d_Gconvert" in
6350 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6351 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6352 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6353 *) xxx_list='gconvert gcvt sprintf' ;;
6356 for xxx_convert in $xxx_list; do
6357 echo "Trying $xxx_convert"
6359 set try -DTRY_$xxx_convert
6360 if eval $compile; then
6361 echo "$xxx_convert" found. >&4
6363 echo "I'll use $xxx_convert to convert floats into a string." >&4
6366 echo "...But $xxx_convert didn't work as I expected."
6369 echo "$xxx_convert NOT found." >&4
6373 case "$xxx_convert" in
6374 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6375 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6376 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6380 : Initialize h_fcntl
6383 : Initialize h_sysfile
6386 : access call always available on UNIX
6390 : locate the flags for 'access()'
6394 $cat >access.c <<'EOCP'
6395 #include <sys/types.h>
6400 #include <sys/file.h>
6409 : check sys/file.h first, no particular reason here
6410 if $test `./findhdr sys/file.h` && \
6411 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6413 echo "<sys/file.h> defines the *_OK access constants." >&4
6414 elif $test `./findhdr fcntl.h` && \
6415 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6417 echo "<fcntl.h> defines the *_OK access constants." >&4
6418 elif $test `./findhdr unistd.h` && \
6419 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6420 echo "<unistd.h> defines the *_OK access constants." >&4
6422 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6428 : see if accessx exists
6429 set accessx d_accessx
6432 : see if alarm exists
6436 : Look for GNU-cc style attribute checking
6438 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6439 $cat >attrib.c <<'EOCP'
6441 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6443 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6444 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6445 echo "Your C compiler doesn't fully support __attribute__."
6448 echo "Your C compiler supports __attribute__."
6452 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6459 : see if bcmp exists
6463 : see if bcopy exists
6467 : see if this is a unistd.h system
6468 set unistd.h i_unistd
6471 : see if getpgrp exists
6472 set getpgrp d_getpgrp
6475 case "$d_getpgrp" in
6478 echo "Checking to see which flavor of getpgrp is in use..."
6481 #include <sys/types.h>
6483 # include <unistd.h>
6487 if (getuid() == 0) {
6488 printf("(I see you are running Configure as super-user...)\n");
6492 if (getpgrp(1) == 0)
6501 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6502 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6504 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6505 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6508 echo "I can't seem to compile and run the test program."
6510 xxx="a USG one, i.e. you use getpgrp()."
6512 # SVR4 systems can appear rather BSD-ish.
6515 xxx="a BSD one, i.e. you use getpgrp(pid)."
6519 xxx="probably a USG one, i.e. you use getpgrp()."
6524 echo "Assuming your getpgrp is $xxx" >&4
6533 : see if setpgrp exists
6534 set setpgrp d_setpgrp
6537 case "$d_setpgrp" in
6540 echo "Checking to see which flavor of setpgrp is in use..."
6543 #include <sys/types.h>
6545 # include <unistd.h>
6549 if (getuid() == 0) {
6550 printf("(I see you are running Configure as super-user...)\n");
6554 if (-1 == setpgrp(1, 1))
6557 if (setpgrp() != -1)
6563 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6564 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6566 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6567 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6570 echo "(I can't seem to compile and run the test program.)"
6572 xxx="a USG one, i.e. you use setpgrp()."
6574 # SVR4 systems can appear rather BSD-ish.
6577 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6581 xxx="probably a USG one, i.e. you use setpgrp()."
6586 echo "Assuming your setpgrp is $xxx" >&4
6594 : see if bzero exists
6598 : check for lengths of integral types
6602 echo "Checking to see how big your integers are..." >&4
6603 $cat >intsize.c <<'EOCP'
6607 printf("intsize=%d;\n", sizeof(int));
6608 printf("longsize=%d;\n", sizeof(long));
6609 printf("shortsize=%d;\n", sizeof(short));
6614 if eval $compile_ok && ./intsize > /dev/null; then
6616 echo "Your integers are $intsize bytes long."
6617 echo "Your long integers are $longsize bytes long."
6618 echo "Your short integers are $shortsize bytes long."
6622 Help! I can't compile and run the intsize test program: please enlighten me!
6623 (This is probably a misconfiguration in your system or libraries, and
6624 you really ought to fix it. Still, I'll try anyway.)
6628 rp="What is the size of an integer (in bytes)?"
6632 rp="What is the size of a long integer (in bytes)?"
6636 rp="What is the size of a short integer (in bytes)?"
6642 $rm -f intsize intsize.*
6644 : see if signal is declared as pointer to function returning int or void
6646 xxx=`./findhdr signal.h`
6647 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6648 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6649 echo "You have int (*signal())() instead of void." >&4
6651 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6652 echo "You have void (*signal())()." >&4
6654 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6655 echo "You have int (*signal())() instead of void." >&4
6657 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6658 echo "You have void (*signal())()." >&4
6661 case "$d_voidsig" in
6663 echo "I can't determine whether signal handler returns void or int..." >&4
6665 rp="What type does your signal handler return?"
6672 echo "As you already told me, signal handler returns void." >&4
6675 *) echo "As you already told me, signal handler returns int." >&4
6682 case "$d_voidsig" in
6683 "$define") signal_t="void";;
6688 : check for ability to cast large floats to 32-bit ints.
6690 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6691 if $test "$intsize" -ge 4; then
6698 #include <sys/types.h>
6700 $signal_t blech(s) int s; { exit(3); }
6707 signal(SIGFPE, blech);
6709 /* Don't let compiler optimize the test away. Store the number
6710 in a writable string for gcc to pass to sscanf under HP/UX.
6712 sprintf(str, "2147483647");
6713 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6717 /* x86 processors will probably give 0x8000 0000, which is a
6718 sign change. We don't want that. We want to mimic SPARC
6719 behavior here, which is to preserve the sign and give
6722 if (i32 != ($xxx) f)
6728 if eval $compile_ok; then
6732 echo "(I can't seem to compile the test program--assuming it can't)"
6740 echo "Nope, it can't."
6747 : check for ability to cast negative floats to unsigned
6749 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6752 #include <sys/types.h>
6754 $signal_t blech(s) int s; { exit(7); }
6755 $signal_t blech_in_list(s) int s; { exit(4); }
6756 unsigned long dummy_long(p) unsigned long p; { return p; }
6757 unsigned int dummy_int(p) unsigned int p; { return p; }
6758 unsigned short dummy_short(p) unsigned short p; { return p; }
6762 unsigned long along;
6764 unsigned short ashort;
6768 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6769 a direct f = -123. assignment. gcc-2.8.0 reportedly
6770 optimized the whole file away
6772 /* Store the number in a writable string for gcc to pass to
6775 sprintf(str, "-123");
6776 sscanf(str, "%lf", &f); /* f = -123.; */
6778 signal(SIGFPE, blech);
6779 along = (unsigned long)f;
6780 aint = (unsigned int)f;
6781 ashort = (unsigned short)f;
6782 if (along != (unsigned long)-123)
6784 if (aint != (unsigned int)-123)
6786 if (ashort != (unsigned short)-123)
6788 sprintf(str, "1073741824.");
6789 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6792 along = (unsigned long)f;
6793 if (along != 0x80000000)
6797 along = (unsigned long)f;
6798 if (along != 0x7fffffff)
6802 along = (unsigned long)f;
6803 if (along != 0x80000001)
6807 signal(SIGFPE, blech_in_list);
6808 sprintf(str, "123.");
6809 sscanf(str, "%lf", &f); /* f = 123.; */
6810 along = dummy_long((unsigned long)f);
6811 aint = dummy_int((unsigned int)f);
6812 ashort = dummy_short((unsigned short)f);
6813 if (along != (unsigned long)123)
6815 if (aint != (unsigned int)123)
6817 if (ashort != (unsigned short)123)
6824 if eval $compile_ok; then
6828 echo "(I can't seem to compile the test program--assuming it can't)"
6831 case "$castflags" in
6836 echo "Nope, it can't."
6843 : see if vprintf exists
6845 if set vprintf val -f d_vprintf; eval $csym; $val; then
6846 echo 'vprintf() found.' >&4
6848 $cat >vprintf.c <<'EOF'
6849 #include <varargs.h>
6851 int main() { xxx("foo"); }
6860 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6864 if eval $compile && ./vprintf; then
6865 echo "Your vsprintf() returns (int)." >&4
6868 echo "Your vsprintf() returns (char*)." >&4
6872 echo 'vprintf() NOT found.' >&4
6882 : see if chown exists
6886 : see if chroot exists
6890 : see if chsize exists
6894 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6895 while $test $# -ge 2; do
6897 $define) echo "#include <$2>";;
6901 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6902 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6911 : see if this is a sys/uio.h system
6912 set sys/uio.h i_sysuio
6915 echo "Checking to see if your system supports struct iovec..." >&4
6916 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6918 case "$d_iovec_s" in
6919 "$define") echo "Yup, it does." >&4
6921 *) echo "Nope, it doesn't." >&4
6927 : see whether socket exists
6929 $echo $n "Hmm... $c" >&4
6930 if set socket val -f d_socket; eval $csym; $val; then
6931 echo "Looks like you have Berkeley networking support." >&4
6933 if set setsockopt val -f; eval $csym; $val; then
6936 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6940 if $contains socklib libc.list >/dev/null 2>&1; then
6941 echo "Looks like you have Berkeley networking support." >&4
6943 : we will have to assume that it supports the 4.2 BSD interface
6946 echo "You don't have Berkeley networking in libc$_a..." >&4
6947 if test "X$d_socket" = "X$define"; then
6948 echo "...but you seem to believe that you have sockets." >&4
6950 for net in net socket
6952 if test -f /usr/lib/lib$net$_a; then
6953 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6954 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6955 if $contains socket libc.list >/dev/null 2>&1; then
6960 echo "...but the Wollongong group seems to have hacked it in." >&4
6961 sockethdr="-I/usr/netinclude"
6964 echo "Found Berkeley sockets interface in lib$net." >& 4
6965 if $contains setsockopt libc.list >/dev/null 2>&1; then
6968 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6975 if test "X$d_socket" != "X$define"; then
6976 echo "or anywhere else I see." >&4
6984 : see if socketpair exists
6985 set socketpair d_sockpair
6990 echo "Checking the availability of certain socket constants..." >& 4
6991 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6992 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6994 #include <sys/types.h>
6995 #include <sys/socket.h>
7001 set try; if eval $compile; then
7004 set d_${enum}; eval $setvar
7008 set sendmsg d_sendmsg
7011 set recvmsg d_recvmsg
7015 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
7016 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7018 case "$d_msghdr_s" in
7019 "$define") echo "Yup, it does." >&4
7021 *) echo "Nope, it doesn't." >&4
7025 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
7026 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
7028 case "$d_cmsghdr_s" in
7029 "$define") echo "Yup, it does." >&4
7031 *) echo "Nope, it doesn't." >&4
7035 : check for const keyword
7037 echo 'Checking to see if your C compiler knows about "const"...' >&4
7038 $cat >const.c <<'EOCP'
7039 typedef struct spug { int drokk; } spug;
7046 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7048 echo "Yup, it does."
7051 echo "Nope, it doesn't."
7056 : see if crypt exists
7058 if set crypt val -f d_crypt; eval $csym; $val; then
7059 echo 'crypt() found.' >&4
7063 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7064 if $test -z "$cryptlib"; then
7065 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7069 if $test -z "$cryptlib"; then
7070 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7074 if $test -z "$cryptlib"; then
7075 cryptlib=`./loc libcrypt$_a "" $libpth`
7079 if $test -z "$cryptlib"; then
7080 echo 'crypt() NOT found.' >&4
7089 : get csh whereabouts
7091 'csh') val="$undef" ;;
7096 : Respect a hint or command line value for full_csh.
7098 '') full_csh=$csh ;;
7101 : see if cuserid exists
7102 set cuserid d_cuserid
7105 : see if this is a limits.h system
7106 set limits.h i_limits
7109 : see if this is a float.h system
7113 : See if number of significant digits in a double precision number is known
7115 $cat >dbl_dig.c <<EOM
7125 printf("Contains DBL_DIG");
7128 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7129 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7130 echo "DBL_DIG found." >&4
7133 echo "DBL_DIG NOT found." >&4
7141 if $test X"$use64bits" = X"$define"; then
7142 : see if dbminit64 exists
7143 set dbminit64 d_dbminit64
7146 : see if dbmclose64 exists
7147 set dbmclose64 d_dbmclose64
7150 : see if fetch64 exists
7151 set fetch64 d_fetch64
7154 : see if store64 exists
7155 set store64 d_store64
7158 : see if delete64 exists
7159 set delete64 d_delete64
7162 : see if firstkey64 exists
7163 set firstkey64 d_firstkey64
7166 : see if nextkey64 exists
7167 set nextkey64 d_nextkey64
7171 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7178 : see if difftime exists
7179 set difftime d_difftime
7182 : see if sys/stat.h is available
7183 set sys/stat.h i_sysstat
7186 : see if this is a dirent system
7188 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7190 echo "<dirent.h> found." >&4
7193 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7194 echo "<sys/dir.h> found." >&4
7197 xinc=`./findhdr sys/ndir.h`
7199 echo "<dirent.h> NOT found." >&4
7204 : Look for type of directory structure.
7206 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7208 case "$direntrytype" in
7211 $define) guess1='struct dirent' ;;
7212 *) guess1='struct direct' ;;
7215 *) guess1="$direntrytype"
7220 'struct dirent') guess2='struct direct' ;;
7221 *) guess2='struct dirent' ;;
7224 if $contains "$guess1" try.c >/dev/null 2>&1; then
7225 direntrytype="$guess1"
7226 echo "Your directory entries are $direntrytype." >&4
7227 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7228 direntrytype="$guess2"
7229 echo "Your directory entries seem to be $direntrytype." >&4
7231 echo "I don't recognize your system's directory entries." >&4
7232 rp="What type is used for directory entries on this system?"
7240 : see if the directory entry stores field length
7242 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7243 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7244 echo "Good, your directory entry keeps length information in d_namlen." >&4
7247 echo "Your directory entry does not know about the d_namlen field." >&4
7255 if $test X"$use64bits" = X"$define"; then
7256 : see if fstat64 exists
7257 set fstat64 d_fstat64
7260 : see if ftruncate64 exists
7261 set ftruncate64 d_ftruncate64
7264 : see if lockf64 exists
7265 set lockf64 d_lockf64
7268 : see if llseek exists
7272 : see if lseek64 exists
7273 set lseek64 d_lseek64
7276 : see if lstat64 exists
7277 set lstat64 d_lstat64
7280 : see if open64 exists
7284 : see if opendir64 exists
7285 set opendir64 d_opendir64
7288 : see if readdir64 exists
7289 set readdir64 d_readdir64
7292 : see if seekdir64 exists
7293 set seekdir64 d_seekdir64
7296 : see if stat64 exists
7300 : see if telldir64 exists
7301 set telldir64 d_telldir64
7304 : see if truncate64 exists
7305 set truncate64 d_truncate64
7310 echo $n "Checking to see if your system supports off64_t...$c" >&4
7312 #include <sys/types.h>
7314 off64_t foo() { off64_t x; x = 7; return x; }'
7316 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7318 echo " Yup, it does." >&4
7321 echo " Nope, it doesn't." >&4
7327 : check for offset_t
7329 echo $n "Checking to see if your system supports offset_t...$c" >&4
7331 #include <sys/types.h>
7333 offset_t foo() { offset_t x; x = 7; return x; }'
7335 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7337 echo " Yup, it does." >&4
7340 echo " Nope, it doesn't." >&4
7348 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7350 case "$i_sysstat" in
7353 #include <sys/types.h>
7354 #include <sys/stat.h>
7355 ino64_t foo() { ino64_t x; x = 7; return x; }'
7357 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7363 if $test "X$val" = X"$define"; then
7364 echo " Yup, it does." >&4
7366 echo " Nope, it doesn't." >&4
7371 : check for struct flock64
7373 echo "Checking to see if your system supports struct flock64..." >&4
7375 set d_flock64_s flock64 l_len define fcntl.h
7382 case "$d_flock64_s" in
7383 "$define") echo "Yup, it does." >&4
7385 *) echo "Nope, it doesn't." >&4
7389 : check for struct dirent64
7391 echo "Checking to see if your system supports struct dirent64..." >&4
7392 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7394 case "$d_dirent64_s" in
7395 "$define") echo "Yup, it does." >&4
7397 *) echo "Nope, it doesn't." >&4
7403 for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64_t d_offset_t d_ino64_t d_flock64_s d_dirent64_s
7410 : see if dlerror exists
7413 set dlerror d_dlerror
7417 : see if dlfcn is available
7425 On a few systems, the dynamically loaded modules that perl generates and uses
7426 will need a different extension than shared libs. The default will probably
7434 rp='What is the extension of dynamically loaded modules'
7443 : Check if dlsym need a leading underscore
7449 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7450 $cat >dyna.c <<'EOM'
7459 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7461 #include <sys/types.h>
7475 int mode = RTLD_LAZY ;
7477 handle = dlopen("./dyna.$dlext", mode) ;
7478 if (handle == NULL) {
7483 symbol = dlsym(handle, "fred") ;
7484 if (symbol == NULL) {
7485 /* try putting a leading underscore */
7486 symbol = dlsym(handle, "_fred") ;
7487 if (symbol == NULL) {
7500 : Call the object file tmp-dyna.o in case dlext=o.
7501 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7502 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7503 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7504 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7507 1) echo "Test program failed using dlopen." >&4
7508 echo "Perhaps you should not use dynamic loading." >&4;;
7509 2) echo "Test program failed using dlsym." >&4
7510 echo "Perhaps you should not use dynamic loading." >&4;;
7511 3) echo "dlsym needs a leading underscore" >&4
7513 4) echo "dlsym doesn't need a leading underscore." >&4;;
7516 echo "I can't compile and run the test program." >&4
7521 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7526 hasproto='varname=$1; func=$2; shift; shift;
7527 while $test $# -ge 2; do
7529 $define) echo "#include <$2>";;
7533 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7534 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7535 echo "$func() prototype found.";
7538 echo "$func() prototype NOT found.";
7543 $rm -f try.c tryout.c'
7545 : see if prototype for drand48 is available
7547 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7550 : see if dup2 exists
7554 : see if eaccess exists
7555 set eaccess d_eaccess
7558 : see if endgrent exists
7559 set endgrent d_endgrent
7562 : see if endhostent exists
7563 set endhostent d_endhent
7566 : see if endnetent exists
7567 set endnetent d_endnent
7570 : see if endprotoent exists
7571 set endprotoent d_endpent
7574 : see if endpwent exists
7575 set endpwent d_endpwent
7578 : see if endservent exists
7579 set endservent d_endsent
7582 : see if endspent exists
7583 set endspent d_endspent
7586 : Locate the flags for 'open()'
7588 $cat >open3.c <<'EOCP'
7589 #include <sys/types.h>
7594 #include <sys/file.h>
7605 : check sys/file.h first to get FREAD on Sun
7606 if $test `./findhdr sys/file.h` && \
7607 set open3 -DI_SYS_FILE && eval $compile; then
7609 echo "<sys/file.h> defines the O_* constants..." >&4
7611 echo "and you have the 3 argument form of open()." >&4
7614 echo "but not the 3 argument form of open(). Oh, well." >&4
7617 elif $test `./findhdr fcntl.h` && \
7618 set open3 -DI_FCNTL && eval $compile; then
7620 echo "<fcntl.h> defines the O_* constants..." >&4
7622 echo "and you have the 3 argument form of open()." >&4
7625 echo "but not the 3 argument form of open(). Oh, well." >&4
7630 echo "I can't find the O_* constant definitions! You got problems." >&4
7636 : check for non-blocking I/O stuff
7637 case "$h_sysfile" in
7638 true) echo "#include <sys/file.h>" > head.c;;
7641 true) echo "#include <fcntl.h>" > head.c;;
7642 *) echo "#include <sys/fcntl.h>" > head.c;;
7647 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7648 case "$o_nonblock" in
7651 $cat >>try.c <<'EOCP'
7654 printf("O_NONBLOCK\n");
7658 printf("O_NDELAY\n");
7662 printf("FNDELAY\n");
7669 if eval $compile_ok; then
7671 case "$o_nonblock" in
7672 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7673 *) echo "Seems like we can use $o_nonblock.";;
7676 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7679 *) echo "Using $hint value $o_nonblock.";;
7681 $rm -f try try.* .out core
7684 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7690 #include <sys/types.h>
7692 #define MY_O_NONBLOCK $o_nonblock
7693 #ifndef errno /* XXX need better Configure test */
7696 $signal_t blech(x) int x; { exit(3); }
7698 $cat >> try.c <<'EOCP'
7706 pipe(pd); /* Down: child -> parent */
7707 pipe(pu); /* Up: parent -> child */
7710 close(pd[1]); /* Parent reads from pd[0] */
7711 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7712 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7714 signal(SIGALRM, blech);
7716 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7718 sprintf(string, "%d\n", ret);
7719 write(2, string, strlen(string));
7722 if (errno == EAGAIN) {
7728 if (errno == EWOULDBLOCK)
7729 printf("EWOULDBLOCK\n");
7732 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7733 sleep(2); /* Give it time to close our pipe */
7735 ret = read(pd[0], buf, 1); /* Should read EOF */
7737 sprintf(string, "%d\n", ret);
7738 write(3, string, strlen(string));
7742 close(pd[0]); /* We write to pd[1] */
7743 close(pu[1]); /* We read from pu[0] */
7744 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7745 close(pd[1]); /* Pipe pd is now fully closed! */
7746 exit(0); /* Bye bye, thank you for playing! */
7750 if eval $compile_ok; then
7751 echo "$startsh" >mtry
7752 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7754 ./mtry >/dev/null 2>&1
7756 0) eagain=`$cat try.out`;;
7757 1) echo "Could not perform non-blocking setting!";;
7758 2) echo "I did a successful read() for something that was not there!";;
7759 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7760 *) echo "Something terribly wrong happened during testing.";;
7762 rd_nodata=`$cat try.ret`
7763 echo "A read() system call with no data present returns $rd_nodata."
7764 case "$rd_nodata" in
7767 echo "(That's peculiar, fixing that to be -1.)"
7773 echo "Forcing errno EAGAIN on read() with no data available."
7777 echo "Your read() sets errno to $eagain when no data is available."
7780 status=`$cat try.err`
7782 0) echo "And it correctly returns 0 to signal EOF.";;
7783 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7784 *) echo "However, your read() returns '$status' on EOF??";;
7787 if test "$status" = "$rd_nodata"; then
7788 echo "WARNING: you can't distinguish between EOF and no data!"
7792 echo "I can't compile the test program--assuming errno EAGAIN will do."
7799 echo "Using $hint value $eagain."
7800 echo "Your read() returns $rd_nodata when no data is present."
7801 case "$d_eofnblk" in
7802 "$define") echo "And you can see EOF because read() returns 0.";;
7803 "$undef") echo "But you can't see EOF status from read() returned value.";;
7805 echo "(Assuming you can't see EOF status from read anyway.)"
7811 $rm -f try try.* .out core head.c mtry
7813 : see if fchmod exists
7817 : see if fchown exists
7821 : see if this is an fcntl system
7825 : see if sys/select.h has to be included
7826 set sys/select.h i_sysselct
7829 : see if we should include time.h, sys/time.h, or both
7831 if test "X$timeincl" = X; then
7832 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7833 $echo $n "I'm now running the test program...$c"
7834 $cat >try.c <<'EOCP'
7835 #include <sys/types.h>
7840 #ifdef SYSTIMEKERNEL
7843 #include <sys/time.h>
7846 #include <sys/select.h>
7855 struct timezone tzp;
7857 if (foo.tm_sec == foo.tm_sec)
7860 if (bar.tv_sec == bar.tv_sec)
7867 for s_timezone in '-DS_TIMEZONE' ''; do
7869 for s_timeval in '-DS_TIMEVAL' ''; do
7870 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7871 for i_time in '' '-DI_TIME'; do
7872 for i_systime in '-DI_SYSTIME' ''; do
7875 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7876 if eval $compile; then
7877 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7881 $echo $n "Succeeded with $flags$c"
7893 *SYSTIMEKERNEL*) i_systimek="$define"
7894 timeincl=`./findhdr sys/time.h`
7895 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7896 *) i_systimek="$undef";;
7899 *I_TIME*) i_time="$define"
7900 timeincl=`./findhdr time.h`" $timeincl"
7901 echo "We'll include <time.h>." >&4;;
7902 *) i_time="$undef";;
7905 *I_SYSTIME*) i_systime="$define"
7906 timeincl=`./findhdr sys/time.h`" $timeincl"
7907 echo "We'll include <sys/time.h>." >&4;;
7908 *) i_systime="$undef";;
7913 : check for fd_set items
7916 Checking to see how well your C compiler handles fd_set and friends ...
7918 $cat >fd_set.c <<EOCP
7919 #$i_systime I_SYS_TIME
7920 #$i_sysselct I_SYS_SELECT
7921 #$d_socket HAS_SOCKET
7922 #include <sys/types.h>
7924 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7927 #include <sys/time.h>
7930 #include <sys/select.h>
7939 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7946 set fd_set -DTRYBITS
7947 if eval $compile; then
7948 d_fds_bits="$define"
7950 echo "Well, your system knows about the normal fd_set typedef..." >&4
7952 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7953 d_fd_macros="$define"
7956 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7958 d_fd_macros="$undef"
7962 Hmm, your compiler has some difficulty with fd_set. Checking further...
7965 if eval $compile; then
7968 echo "Well, your system has some sort of fd_set available..." >&4
7970 echo "and you have the normal fd_set macros." >&4
7971 d_fd_macros="$define"
7974 but not the normal fd_set macros! Gross! More work for me...
7976 d_fd_macros="$undef"
7979 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7982 d_fd_macros="$undef"
7987 : see if fgetpos exists
7988 set fgetpos d_fgetpos
7992 if $test X"$use64bits" = X"$define"; then
7993 : see if fgetpos64 exists
7994 set fgetpos64 d_fgetpos64
7997 : see if fopen64 exists
7998 set freopen64 d_fopen64
8001 : see if freopen64 exists
8002 set freopen64 d_freopen64
8005 : see if fseek64 exists
8006 set fseek64 d_fseek64
8009 : see if fseeko64 exists
8010 set fseeko64 d_fseeko64
8013 : see if fsetpos64 exists
8014 set fsetpos64 d_fsetpos64
8017 : see if ftell64 exists
8018 set ftell64 d_ftell64
8021 : see if ftello64 exists
8022 set ftello64 d_ftello64
8025 : see if tmpfile64 exists
8026 set tmpfile64 d_tmpfile64
8030 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
8037 : see if flock exists
8041 : see if fork exists
8045 : see if pathconf exists
8046 set pathconf d_pathconf
8049 : see if fpathconf exists
8050 set fpathconf d_fpathconf
8053 : see if fseeko exists
8057 : see if fsetpos exists
8058 set fsetpos d_fsetpos
8061 : see if this is a sys/param system
8062 set sys/param.h i_sysparam
8065 : see if this is a sys/mount.h system
8066 set sys/mount.h i_sysmount
8070 : see if statfs exists
8074 : see if fstatfs exists
8075 set fstatfs d_fstatfs
8078 : see if statfs knows about mount flags
8079 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8083 : see if statvfs exists
8084 set statvfs d_statvfs
8087 : see if fstatvfs exists
8088 set fstatvfs d_fstatvfs
8092 : see if ftello exists
8096 : see if getgrent exists
8097 set getgrent d_getgrent
8100 : see if gethostbyaddr exists
8101 set gethostbyaddr d_gethbyaddr
8104 : see if gethostbyname exists
8105 set gethostbyname d_gethbyname
8108 : see if gethostent exists
8109 set gethostent d_gethent
8112 : see how we will look up host name
8115 if set gethostname val -f d_gethname; eval $csym; $val; then
8116 echo 'gethostname() found.' >&4
8117 d_gethname="$define"
8120 if set uname val -f d_uname; eval $csym; $val; then
8123 uname() was found, but you're running xenix, and older versions of xenix
8124 have a broken uname(). If you don't really know whether your xenix is old
8125 enough to have a broken system call, use the default answer.
8132 rp='Is your uname() broken?'
8135 n*) d_uname="$define"; call=uname;;
8138 echo 'uname() found.' >&4
8145 case "$d_gethname" in
8146 '') d_gethname="$undef";;
8149 '') d_uname="$undef";;
8151 case "$d_uname$d_gethname" in
8156 Every now and then someone has a $call() that lies about the hostname
8157 but can't be fixed for political or economic reasons. If you wish, I can
8158 pretend $call() isn't there and maybe compute hostname at run-time
8159 thanks to the '$phostname' command.
8162 rp="Shall I ignore $call() from now on?"
8165 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8168 case "$phostname" in
8170 *) case "$aphostname" in
8176 file=`./loc $file $file $pth`
8177 aphostname=`echo $file $*`
8182 case "$d_uname$d_gethname" in
8185 case "$phostname" in
8187 echo "There will be no way for $package to get your hostname." >&4;;
8189 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8193 case "$d_phostname" in
8194 '') d_phostname="$undef";;
8197 : see if this is a netdb.h system
8201 : see if prototypes for various gethostxxx netdb.h functions are available
8203 set d_gethostprotos gethostent $i_netdb netdb.h
8206 : see if getlogin exists
8207 set getlogin d_getlogin
8210 : see if getmntent exists
8211 set getmntent d_getmntent
8214 : see if getnetbyaddr exists
8215 set getnetbyaddr d_getnbyaddr
8218 : see if getnetbyname exists
8219 set getnetbyname d_getnbyname
8222 : see if getnetent exists
8223 set getnetent d_getnent
8226 : see if prototypes for various getnetxxx netdb.h functions are available
8228 set d_getnetprotos getnetent $i_netdb netdb.h
8232 : see if getprotobyname exists
8233 set getprotobyname d_getpbyname
8236 : see if getprotobynumber exists
8237 set getprotobynumber d_getpbynumber
8240 : see if getprotoent exists
8241 set getprotoent d_getpent
8244 : see if getpgid exists
8245 set getpgid d_getpgid
8248 : see if getpgrp2 exists
8249 set getpgrp2 d_getpgrp2
8252 : see if getppid exists
8253 set getppid d_getppid
8256 : see if getpriority exists
8257 set getpriority d_getprior
8260 : see if prototypes for various getprotoxxx netdb.h functions are available
8262 set d_getprotoprotos getprotoent $i_netdb netdb.h
8265 : see if getpwent exists
8266 set getpwent d_getpwent
8270 : see if getservbyname exists
8271 set getservbyname d_getsbyname
8274 : see if getservbyport exists
8275 set getservbyport d_getsbyport
8278 : see if getservent exists
8279 set getservent d_getsent
8282 : see if prototypes for various getservxxx netdb.h functions are available
8284 set d_getservprotos getservent $i_netdb netdb.h
8287 : see if getspent exists
8288 set getspent d_getspent
8291 : see if getspnam exists
8292 set getspnam d_getspnam
8295 : see if gettimeofday or ftime exists
8296 set gettimeofday d_gettimeod
8298 case "$d_gettimeod" in
8304 val="$undef"; set d_ftime; eval $setvar
8307 case "$d_gettimeod$d_ftime" in
8310 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8314 : see if this is an grp system
8320 xxx=`./findhdr grp.h`
8321 $cppstdin $cppflags $cppminus < $xxx >$$.h
8323 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8335 set d_grpasswd; eval $setvar
8339 : see if hasmntopt exists
8340 set hasmntopt d_hasmntopt
8343 : see if this is a netinet/in.h or sys/in.h system
8344 set netinet/in.h i_niin sys/in.h i_sysin
8347 : see if arpa/inet.h has to be included
8348 set arpa/inet.h i_arpainet
8351 : see if htonl --and friends-- exists
8356 : Maybe they are macros.
8361 #include <sys/types.h>
8362 #$i_niin I_NETINET_IN
8364 #$i_arpainet I_ARPA_INET
8366 #include <netinet/in.h>
8372 #include <arpa/inet.h>
8375 printf("Defined as a macro.");
8378 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8379 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8381 echo "But it seems to be defined as a macro." >&4
8389 : see which of string.h or strings.h is needed
8391 strings=`./findhdr string.h`
8392 if $test "$strings" && $test -r "$strings"; then
8393 echo "Using <string.h> instead of <strings.h>." >&4
8397 strings=`./findhdr strings.h`
8398 if $test "$strings" && $test -r "$strings"; then
8399 echo "Using <strings.h> instead of <string.h>." >&4
8401 echo "No string header found -- You'll surely have problems." >&4
8407 "$undef") strings=`./findhdr strings.h`;;
8408 *) strings=`./findhdr string.h`;;
8413 if set index val -f; eval $csym; $val; then
8414 if set strchr val -f d_strchr; eval $csym; $val; then
8415 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8418 echo "strchr() found." >&4
8422 echo "index() found." >&4
8427 echo "index() found." >&4
8430 if set strchr val -f d_strchr; eval $csym; $val; then
8433 echo "strchr() found." >&4
8435 echo "No index() or strchr() found!" >&4
8440 set d_strchr; eval $setvar
8442 set d_index; eval $setvar
8444 : check whether inet_aton exists
8445 set inet_aton d_inetaton
8448 : see if inttypes.h is available
8449 : we want a real compile instead of Inhdr because some systems
8450 : have an inttypes.h which includes non-existent headers
8453 #include <inttypes.h>
8455 static int32_t foo32 = 0x12345678;
8459 if eval $compile; then
8460 echo "<inttypes.h> found." >&4
8463 echo "<inttypes.h> NOT found." >&4
8471 case "$use64bits" in
8474 echo $n "Checking to see if your system supports int64_t...$c" >&4
8476 #include <sys/types.h>
8477 #$i_inttypes I_INTTYPES
8479 #include <inttypes.h>
8481 int64_t foo() { int64_t x; x = 7; return x; }
8483 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8485 echo " Yup, it does." >&4
8488 echo " Nope, it doesn't." >&4
8501 $cat >isascii.c <<'EOCP'
8513 if eval $compile; then
8514 echo "isascii() found." >&4
8517 echo "isascii() NOT found." >&4
8524 : see if killpg exists
8528 : see if lchown exists
8530 $cat > try.c <<'EOCP'
8531 /* System header to define __stub macros and hopefully few prototypes,
8532 which can conflict with char lchown(); below. */
8534 /* Override any gcc2 internal prototype to avoid an error. */
8535 /* We use char because int might match the return type of a gcc2
8536 builtin and then its argument prototype would still apply. */
8539 /* The GNU C library defines this for functions which it implements
8540 to always fail with ENOSYS. Some functions are actually named
8541 something starting with __ and the normal name is an alias. */
8542 #if defined (__stub_lchown) || defined (__stub___lchown)
8550 if eval $compile; then
8551 $echo "lchown() found." >&4
8554 $echo "lchown() NOT found." >&4
8560 : see if link exists
8564 : see if localeconv exists
8565 set localeconv d_locconv
8568 : see if lockf exists
8572 : check for length of double
8574 case "$doublesize" in
8576 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8577 $cat >try.c <<'EOCP'
8581 printf("%d\n", sizeof(double));
8585 if eval $compile_ok; then
8587 $echo " $doublesize bytes." >&4
8590 echo "(I can't seem to compile the test program. Guessing...)"
8591 rp="What is the size of a double precision number (in bytes)?"
8599 : check for long doubles
8601 echo $n "Checking to see if your system supports long doubles...$c" >&4
8602 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8603 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8605 echo " Yup, it does." >&4
8608 echo " Nope, it doesn't." >&4
8614 : check for length of long double
8615 case "${d_longdbl}${longdblsize}" in
8618 $echo $n "Checking to see how big your long doubles are...$c" >&4
8619 $cat >try.c <<'EOCP'
8623 printf("%d\n", sizeof(long double));
8627 if eval $compile; then
8629 $echo " $longdblsize bytes." >&4
8633 echo "(I can't seem to compile the test program. Guessing...)" >&4
8634 rp="What is the size of a long double (in bytes)?"
8638 if $test "X$doublesize" = "X$longdblsize"; then
8639 echo "(That isn't any different from an ordinary double.)"
8645 : check for long long
8647 echo $n "Checking to see if your system supports long long...$c" >&4
8648 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8649 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8651 echo " Yup, it does." >&4
8654 echo " Nope, it doesn't." >&4
8660 : check for length of long long
8661 case "${d_longlong}${longlongsize}" in
8664 $echo $n "Checking to see how big your long longs are...$c" >&4
8665 $cat >try.c <<'EOCP'
8669 printf("%d\n", sizeof(long long));
8673 if eval $compile_ok; then
8674 longlongsize=`./try`
8675 $echo " $longlongsize bytes." >&4
8679 echo "(I can't seem to compile the test program. Guessing...)"
8680 rp="What is the size of a long long (in bytes)?"
8684 if $test "X$longsize" = "X$longlongsize"; then
8685 echo "(That isn't any different from an ordinary long.)"
8691 : see if lstat exists
8695 : see if madvise exists
8696 set madvise d_madvise
8699 : see if mblen exists
8703 : see if mbstowcs exists
8704 set mbstowcs d_mbstowcs
8707 : see if mbtowc exists
8711 : see if memchr exists
8715 : see if memcmp exists
8719 : see if memcpy exists
8723 : see if memmove exists
8724 set memmove d_memmove
8727 : see if memset exists
8731 : see if mkdir exists
8735 : see if mkfifo exists
8739 : see if mktime exists
8743 : see if this is a sys/mman.h system
8744 set sys/mman.h i_sysmman
8747 : see if mmap exists
8750 : see what shmat returns
8751 : default to something harmless
8753 case "$i_sysmman$d_mmap" in
8755 $cat >mmap.c <<'END'
8756 #include <sys/mman.h>
8759 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
8764 echo "and it returns ($mmaptype)." >&4
8770 : see if mprotect exists
8771 set mprotect d_mprotect
8774 : see if msgctl exists
8778 : see if msgget exists
8782 : see if msgsnd exists
8786 : see if msgrcv exists
8790 : see how much of the 'msg*(2)' library is present.
8793 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8794 *"$undef"*) h_msg=false;;
8798 case "`ipcs 2>&1`" in
8799 "SVID messages"*"not configured"*)
8800 echo "Your $osname does not have the msg*(2) configured." >&4
8815 : we could also check for sys/ipc.h ...
8816 if $h_msg && $test `./findhdr sys/msg.h`; then
8817 echo "You have the full msg*(2) library." >&4
8820 echo "You don't have the full msg*(2) library." >&4
8826 : see if msync exists
8830 : see if munmap exists
8834 : see if nice exists
8838 : see if POSIX threads are available
8839 if test "X$usethreads" = "X$define"; then
8840 set pthread.h i_pthread
8848 : how to create joinable pthreads
8849 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
8851 echo "Checking what constant to use for creating joinable pthreads..." >&4
8852 $cat >try.c <<'EOCP'
8853 #include <pthread.h>
8855 int detachstate = JOINABLE;
8858 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8859 if eval $compile; then
8860 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
8861 val="$undef" # Yes, undef.
8862 set d_old_pthread_create_joinable
8865 set old_pthread_create_joinable
8868 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8869 if eval $compile; then
8870 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
8872 set d_old_pthread_create_joinable
8874 val=PTHREAD_CREATE_UNDETACHED
8875 set old_pthread_create_joinable
8878 set try -DJOINABLE=__UNDETACHED
8879 if eval $compile; then
8880 echo "You seem to use __UNDETACHED." >&4
8882 set d_old_pthread_create_joinable
8885 set old_pthread_create_joinable
8888 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
8890 set d_old_pthread_create_joinable
8893 set old_pthread_create_joinable
8900 d_old_pthread_create_joinable="$undef"
8901 old_pthread_create_joinable=""
8904 : see if pause exists
8908 : see if pipe exists
8912 : see if poll exists
8917 : see whether the various POSIXish _yields exist
8919 #include <pthread.h>
8925 #ifdef PTHREAD_YIELD
8928 #ifdef PTHREAD_YIELD_NULL
8929 pthread_yield(NULL);
8935 : see if sched_yield exists
8936 set try -DSCHED_YIELD
8937 if eval $compile; then
8939 sched_yield='sched_yield()'
8943 case "$usethreads" in
8946 $define) echo 'sched_yield() found.' >&4 ;;
8947 *) echo 'sched_yield() NOT found.' >&4 ;;
8953 : see if pthread_yield exists
8954 set try -DPTHREAD_YIELD
8955 if eval $compile; then
8957 case "$sched_yield" in
8958 '') sched_yield='pthread_yield()' ;;
8961 set try -DPTHREAD_YIELD_NULL
8962 if eval $compile; then
8964 case "$sched_yield" in
8965 '') sched_yield='pthread_yield(NULL)' ;;
8971 case "$usethreads" in
8974 $define) echo 'pthread_yield() found.' >&4 ;;
8975 *) echo 'pthread_yield() NOT found.' >&4 ;;
8982 case "$sched_yield" in
8983 '') sched_yield=undef ;;
8988 : see if this is a pwd.h system
8994 xxx=`./findhdr pwd.h`
8995 $cppstdin $cppflags $cppminus < $xxx >$$.h
8997 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
9005 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
9013 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
9021 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
9029 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
9037 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
9045 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
9053 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
9065 set d_pwquota; eval $setvar
9066 set d_pwage; eval $setvar
9067 set d_pwchange; eval $setvar
9068 set d_pwclass; eval $setvar
9069 set d_pwexpire; eval $setvar
9070 set d_pwcomment; eval $setvar
9071 set d_pwgecos; eval $setvar
9072 set d_pwpasswd; eval $setvar
9076 : see if readdir and friends exist
9077 set readdir d_readdir
9079 set seekdir d_seekdir
9081 set telldir d_telldir
9083 set rewinddir d_rewinddir
9086 : see if readlink exists
9087 set readlink d_readlink
9090 : see if readv exists
9094 : see if rename exists
9098 : see if rmdir exists
9102 : see if memory.h is available.
9107 : See if it conflicts with string.h
9113 $cppstdin $cppflags $cppminus < $strings > mem.h
9114 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
9116 echo "We won't be including <memory.h>."
9126 : can bcopy handle overlapping blocks?
9131 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
9138 $cat >>try.c <<'EOCP'
9141 # include <memory.h>
9144 # include <stdlib.h>
9147 # include <string.h>
9149 # include <strings.h>
9152 # include <unistd.h> /* Needed for NetBSD */
9156 char buf[128], abc[128];
9162 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9164 for (align = 7; align >= 0; align--) {
9165 for (len = 36; len; len--) {
9168 for (off = 1; off <= len; off++) {
9169 bcopy(b, b+off, len);
9170 bcopy(b+off, b, len);
9171 if (bcmp(b, abc, len))
9180 if eval $compile_ok; then
9181 if ./try 2>/dev/null; then
9185 echo "It can't, sorry."
9186 case "$d_memmove" in
9187 "$define") echo "But that's Ok since you have memmove()." ;;
9191 echo "(I can't compile the test program, so we'll assume not...)"
9192 case "$d_memmove" in
9193 "$define") echo "But that's Ok since you have memmove()." ;;
9198 $rm -f try.* try core
9202 : can memcpy handle overlapping blocks?
9207 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9214 $cat >>try.c <<'EOCP'
9217 # include <memory.h>
9220 # include <stdlib.h>
9223 # include <string.h>
9225 # include <strings.h>
9228 # include <unistd.h> /* Needed for NetBSD */
9232 char buf[128], abc[128];
9238 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9239 try to store the string in read-only memory. */
9240 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9242 for (align = 7; align >= 0; align--) {
9243 for (len = 36; len; len--) {
9245 memcpy(b, abc, len);
9246 for (off = 1; off <= len; off++) {
9247 memcpy(b+off, b, len);
9248 memcpy(b, b+off, len);
9249 if (memcmp(b, abc, len))
9258 if eval $compile_ok; then
9259 if ./try 2>/dev/null; then
9263 echo "It can't, sorry."
9264 case "$d_memmove" in
9265 "$define") echo "But that's Ok since you have memmove()." ;;
9269 echo "(I can't compile the test program, so we'll assume not...)"
9270 case "$d_memmove" in
9271 "$define") echo "But that's Ok since you have memmove()." ;;
9276 $rm -f try.* try core
9280 : can memcmp be trusted to compare relative magnitude?
9285 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9292 $cat >>try.c <<'EOCP'
9295 # include <memory.h>
9298 # include <stdlib.h>
9301 # include <string.h>
9303 # include <strings.h>
9306 # include <unistd.h> /* Needed for NetBSD */
9312 if ((a < b) && memcmp(&a, &b, 1) < 0)
9318 if eval $compile_ok; then
9319 if ./try 2>/dev/null; then
9323 echo "No, it can't (it uses signed chars)."
9326 echo "(I can't compile the test program, so we'll assume not...)"
9330 $rm -f try.* try core
9334 : see if select exists
9338 : see if semctl exists
9342 : see if semget exists
9346 : see if semop exists
9350 : see how much of the 'sem*(2)' library is present.
9353 case "$d_semctl$d_semget$d_semop" in
9354 *"$undef"*) h_sem=false;;
9358 case "`ipcs 2>&1`" in
9359 "SVID messages"*"not configured"*)
9360 echo "Your $osname does not have the sem*(2) configured." >&4
9373 : we could also check for sys/ipc.h ...
9374 if $h_sem && $test `./findhdr sys/sem.h`; then
9375 echo "You have the full sem*(2) library." >&4
9378 echo "You don't have the full sem*(2) library." >&4
9384 : see whether sys/sem.h defines union semun
9386 $cat > try.c <<'END'
9387 #include <sys/types.h>
9388 #include <sys/ipc.h>
9389 #include <sys/sem.h>
9390 int main () { union semun semun; semun.buf = 0; }
9393 if eval $compile; then
9394 echo "You have union semun in <sys/sem.h>." >&4
9397 echo "You do not have union semun in <sys/sem.h>." >&4
9400 $rm -f try try.c try.h
9404 : see how to do semctl IPC_STAT
9407 : see whether semctl IPC_STAT can use union semun
9412 # define S_IRUSR S_IREAD
9413 # define S_IWUSR S_IWRITE
9414 # define S_IXUSR S_IEXEC
9416 # define S_IRUSR 0400
9417 # define S_IWUSR 0200
9418 # define S_IXUSR 0100
9420 # define S_IRGRP (S_IRUSR>>3)
9421 # define S_IWGRP (S_IWUSR>>3)
9422 # define S_IXGRP (S_IXUSR>>3)
9423 # define S_IROTH (S_IRUSR>>6)
9424 # define S_IWOTH (S_IWUSR>>6)
9425 # define S_IXOTH (S_IXUSR>>6)
9428 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9429 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9430 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9435 #include <sys/types.h>
9436 #include <sys/ipc.h>
9437 #include <sys/sem.h>
9438 #include <sys/stat.h>
9445 #$d_union_semun HAS_UNION_SEMUN
9448 #ifndef HAS_UNION_SEMUN
9451 struct semid_ds *buf;
9452 unsigned short *array;
9458 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9459 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9461 struct semid_ds argbuf;
9464 st = semctl(sem, 0, IPC_STAT, arg);
9468 # endif /* IPC_STAT */
9469 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9471 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9472 # endif /* IPC_RMID */
9473 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9475 #endif /* IPC_PRIVATE && ... */
9476 printf("semget failed: errno = %d\n", errno);
9482 if eval $compile; then
9485 semun) val="$define" ;;
9491 case "$d_semctl_semun" in
9493 echo "You can use union semun for semctl IPC_STAT." >&4
9496 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9501 : see whether semctl IPC_STAT can use struct semid_ds pointer
9502 $cat > try.c <<'END'
9503 #include <sys/types.h>
9504 #include <sys/ipc.h>
9505 #include <sys/sem.h>
9506 #include <sys/stat.h>
9514 struct semid_ds arg;
9517 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9518 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9521 st = semctl(sem, 0, IPC_STAT, &arg);
9523 printf("semid_ds\n");
9525 # endif /* IPC_STAT */
9526 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9528 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9529 # endif /* IPC_RMID */
9530 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9532 #endif /* IPC_PRIVATE && ... */
9533 printf("semget failed: errno = %d\n", errno);
9540 if eval $compile; then
9543 semid_ds) val="$define" ;;
9547 set d_semctl_semid_ds
9549 case "$d_semctl_semid_ds" in
9551 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9553 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9560 # We do not have the full sem*(2) library, so assume we can not
9566 set d_semctl_semid_ds
9571 : see if setegid exists
9572 set setegid d_setegid
9575 : see if seteuid exists
9576 set seteuid d_seteuid
9579 : see if setgrent exists
9580 set setgrent d_setgrent
9583 : see if sethostent exists
9584 set sethostent d_sethent
9587 : see if setlinebuf exists
9588 set setlinebuf d_setlinebuf
9591 : see if setlocale exists
9592 set setlocale d_setlocale
9595 : see if setnetent exists
9596 set setnetent d_setnent
9599 : see if setprotoent exists
9600 set setprotoent d_setpent
9603 : see if setpgid exists
9604 set setpgid d_setpgid
9607 : see if setpgrp2 exists
9608 set setpgrp2 d_setpgrp2
9611 : see if setpriority exists
9612 set setpriority d_setprior
9615 : see if setpwent exists
9616 set setpwent d_setpwent
9619 : see if setregid exists
9620 set setregid d_setregid
9622 set setresgid d_setresgid
9625 : see if setreuid exists
9626 set setreuid d_setreuid
9628 set setresuid d_setresuid
9631 : see if setrgid exists
9632 set setrgid d_setrgid
9635 : see if setruid exists
9636 set setruid d_setruid
9639 : see if setservent exists
9640 set setservent d_setsent
9643 : see if setsid exists
9647 : see if setspent exists
9648 set setspent d_setspent
9651 : see if setvbuf exists
9652 set setvbuf d_setvbuf
9655 : see if sfio.h is available
9660 : see if sfio library is available
9671 : Ok, but do we want to use it.
9675 true|$define|[yY]*) dflt='y';;
9678 echo "$package can use the sfio library, but it is experimental."
9679 rp="You seem to have sfio available, do you want to try using it?"
9683 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9685 : Remove sfio from list of libraries to use
9686 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9689 echo "libs = $libs" >&4
9693 *) case "$usesfio" in
9695 echo "Sorry, cannot find sfio on this machine" >&4
9696 echo "Ignoring your setting of usesfio=$usesfio" >&4
9704 $define) usesfio='true';;
9705 *) usesfio='false';;
9708 : see if shmctl exists
9712 : see if shmget exists
9716 : see if shmat exists
9719 : see what shmat returns
9722 $cat >shmat.c <<'END'
9723 #include <sys/shm.h>
9726 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9731 echo "and it returns ($shmattype)." >&4
9732 : see if a prototype for shmat is available
9733 xxx=`./findhdr sys/shm.h`
9734 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9735 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9746 set d_shmatprototype
9749 : see if shmdt exists
9753 : see how much of the 'shm*(2)' library is present.
9756 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9757 *"$undef"*) h_shm=false;;
9761 case "`ipcs 2>&1`" in
9762 "SVID shared memory"*"not configured"*)
9763 echo "Your $osname does not have the shm*(2) configured." >&4
9778 : we could also check for sys/ipc.h ...
9779 if $h_shm && $test `./findhdr sys/shm.h`; then
9780 echo "You have the full shm*(2) library." >&4
9783 echo "You don't have the full shm*(2) library." >&4
9790 : see if we have sigaction
9791 if set sigaction val -f d_sigaction; eval $csym; $val; then
9792 echo 'sigaction() found.' >&4
9793 $cat > try.c <<'EOP'
9795 #include <sys/types.h>
9799 struct sigaction act, oact;
9803 if eval $compile_ok; then
9806 echo "But you don't seem to have a useable struct sigaction." >&4
9810 echo 'sigaction NOT found.' >&4
9813 set d_sigaction; eval $setvar
9814 $rm -f try try$_o try.c
9816 : see if sigsetjmp exists
9818 case "$d_sigsetjmp" in
9826 if (sigsetjmp(env,1))
9834 if eval $compile; then
9835 if ./try >/dev/null 2>&1; then
9836 echo "POSIX sigsetjmp found." >&4
9840 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9846 echo "sigsetjmp not found." >&4
9850 *) val="$d_sigsetjmp"
9851 case "$d_sigsetjmp" in
9852 $define) echo "POSIX sigsetjmp found." >&4;;
9853 $undef) echo "sigsetjmp not found." >&4;;
9861 : see if stat knows about block sizes
9863 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9866 : see if _ptr and _cnt from stdio act std
9868 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
9869 echo "(Looks like you have stdio.h from Linux.)"
9870 case "$stdio_ptr" in
9871 '') stdio_ptr='((fp)->_IO_read_ptr)'
9874 *) ptr_lval=$d_stdio_ptr_lval;;
9876 case "$stdio_cnt" in
9877 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9880 *) cnt_lval=$d_stdio_cnt_lval;;
9882 case "$stdio_base" in
9883 '') stdio_base='((fp)->_IO_read_base)';;
9885 case "$stdio_bufsiz" in
9886 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9889 case "$stdio_ptr" in
9890 '') stdio_ptr='((fp)->_ptr)'
9893 *) ptr_lval=$d_stdio_ptr_lval;;
9895 case "$stdio_cnt" in
9896 '') stdio_cnt='((fp)->_cnt)'
9899 *) cnt_lval=$d_stdio_cnt_lval;;
9901 case "$stdio_base" in
9902 '') stdio_base='((fp)->_base)';;
9904 case "$stdio_bufsiz" in
9905 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9908 : test whether _ptr and _cnt really work
9909 echo "Checking how std your stdio is..." >&4
9912 #define FILE_ptr(fp) $stdio_ptr
9913 #define FILE_cnt(fp) $stdio_cnt
9915 FILE *fp = fopen("try.c", "r");
9918 18 <= FILE_cnt(fp) &&
9919 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9927 if eval $compile; then
9929 echo "Your stdio acts pretty std."
9932 echo "Your stdio isn't very std."
9935 echo "Your stdio doesn't appear very std."
9941 : Can _ptr be used as an lvalue?
9942 case "$d_stdstdio$ptr_lval" in
9943 $define$define) val=$define ;;
9946 set d_stdio_ptr_lval
9949 : Can _cnt be used as an lvalue?
9950 case "$d_stdstdio$cnt_lval" in
9951 $define$define) val=$define ;;
9954 set d_stdio_cnt_lval
9957 : see if _base is also standard
9959 case "$d_stdstdio" in
9963 #define FILE_base(fp) $stdio_base
9964 #define FILE_bufsiz(fp) $stdio_bufsiz
9966 FILE *fp = fopen("try.c", "r");
9969 19 <= FILE_bufsiz(fp) &&
9970 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9977 if eval $compile; then
9979 echo "And its _base field acts std."
9982 echo "But its _base field isn't std."
9985 echo "However, it seems to be lacking the _base field."
9994 Checking how to access stdio streams by file descriptor number...
9996 case "$stdio_stream_array" in
9997 '') $cat >try.c <<EOCP
10000 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
10004 for s in _iob __iob __sF
10006 set try -DSTDIO_STREAM_ARRAY=$s
10007 if eval $compile; then
10008 case "`./try$exe_ext`" in
10009 yes) stdio_stream_array=$s; break ;;
10013 $rm -f try.* try$exe_ext
10015 case "$stdio_stream_array" in
10017 I can't figure out how to access stdio streams by file descriptor number.
10019 d_stdio_stream_array="$undef"
10022 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
10024 d_stdio_stream_array="$define"
10028 : see if strcoll exists
10029 set strcoll d_strcoll
10032 : check for structure copying
10034 echo "Checking to see if your C compiler can copy structs..." >&4
10035 $cat >try.c <<'EOCP'
10045 if $cc -c try.c >/dev/null 2>&1 ; then
10047 echo "Yup, it can."
10050 echo "Nope, it can't."
10056 : see if strerror and/or sys_errlist[] exist
10058 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
10059 if set strerror val -f d_strerror; eval $csym; $val; then
10060 echo 'strerror() found.' >&4
10061 d_strerror="$define"
10062 d_strerrm='strerror(e)'
10063 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10064 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
10065 d_syserrlst="$define"
10067 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
10068 d_syserrlst="$undef"
10070 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
10071 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
10072 echo 'strerror() found in string header.' >&4
10073 d_strerror="$define"
10074 d_strerrm='strerror(e)'
10075 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10076 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
10077 d_syserrlst="$define"
10079 echo "(You don't appear to have any sys_errlist[], how can this be?)"
10080 d_syserrlst="$undef"
10082 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
10083 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
10084 d_strerror="$undef"
10085 d_syserrlst="$define"
10086 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
10088 echo 'strerror() and sys_errlist[] NOT found.' >&4
10089 d_strerror="$undef"
10090 d_syserrlst="$undef"
10091 d_strerrm='"unknown"'
10095 : see if strtod exists
10096 set strtod d_strtod
10099 : see if strtol exists
10100 set strtol d_strtol
10103 : see if strtoul exists
10104 set strtoul d_strtoul
10107 : see if strxfrm exists
10108 set strxfrm d_strxfrm
10111 : see if symlink exists
10112 set symlink d_symlink
10115 : see if syscall exists
10116 set syscall d_syscall
10119 : see if sysconf exists
10120 set sysconf d_sysconf
10123 : see if system exists
10124 set system d_system
10127 : see if tcgetpgrp exists
10128 set tcgetpgrp d_tcgetpgrp
10131 : see if tcsetpgrp exists
10132 set tcsetpgrp d_tcsetpgrp
10135 : see if sys/types.h has to be included
10136 set sys/types.h i_systypes
10139 : see if prototype for telldir is available
10141 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
10144 : define an is-a-typedef? function
10145 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10147 "") inclist="sys/types.h";;
10149 eval "varval=\$$var";
10153 for inc in $inclist; do
10154 echo "#include <$inc>" >>temp.c;
10156 echo "#ifdef $type" >> temp.c;
10157 echo "printf(\"We have $type\");" >> temp.c;
10158 echo "#endif" >> temp.c;
10159 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10160 if $contains $type temp.E >/dev/null 2>&1; then
10161 eval "$var=\$type";
10166 *) eval "$var=\$varval";;
10169 : define an is-a-typedef? function that prompts if the type is not available.
10170 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
10172 "") inclist="sys/types.h";;
10174 eval "varval=\$$var";
10178 for inc in $inclist; do
10179 echo "#include <$inc>" >>temp.c;
10181 echo "#ifdef $type" >> temp.c;
10182 echo "printf(\"We have $type\");" >> temp.c;
10183 echo "#endif" >> temp.c;
10184 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
10186 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
10187 if $contains $type temp.E >/dev/null 2>&1; then
10188 echo "$type found." >&4;
10189 eval "$var=\$type";
10191 echo "$type NOT found." >&4;
10197 *) eval "$var=\$varval";;
10200 : see if this is a sys/times.h system
10201 set sys/times.h i_systimes
10204 : see if times exists
10206 if set times val -f d_times; eval $csym; $val; then
10207 echo 'times() found.' >&4
10210 case "$i_systimes" in
10211 "$define") inc='sys/times.h';;
10213 rp="What is the type returned by times() on this system?"
10214 set clock_t clocktype long stdio.h sys/types.h $inc
10217 echo 'times() NOT found, hope that will do.' >&4
10222 : see if truncate exists
10223 set truncate d_truncate
10226 : see if tzname[] exists
10228 if set tzname val -a d_tzname; eval $csym; $val; then
10230 echo 'tzname[] found.' >&4
10233 echo 'tzname[] NOT found.' >&4
10238 : see if umask exists
10242 : backward compatibility for d_hvfork
10243 if test X$d_hvfork != X; then
10244 d_vfork="$d_hvfork"
10247 : see if there is a vfork
10252 : Ok, but do we want to use it. vfork is reportedly unreliable in
10253 : perl on Solaris 2.x, and probably elsewhere.
10257 case "$usevfork" in
10263 Perl can only use a vfork() that doesn't suffer from strict
10264 restrictions on calling functions or modifying global data in
10265 the child. For example, glibc-2.1 contains such a vfork()
10266 that is unsuitable. If your system provides a proper fork()
10267 call, chances are that you do NOT want perl to use vfork().
10270 rp="Do you still want to use vfork()?"
10275 echo "Ok, we won't use vfork()."
10284 $define) usevfork='true';;
10285 *) usevfork='false';;
10288 : see if this is an sysdir system
10289 set sys/dir.h i_sysdir
10292 : see if this is an sysndir system
10293 set sys/ndir.h i_sysndir
10296 : see if closedir exists
10297 set closedir d_closedir
10300 case "$d_closedir" in
10303 echo "Checking whether closedir() returns a status..." >&4
10304 cat > closedir.c <<EOM
10305 #$i_dirent I_DIRENT /**/
10306 #$i_sysdir I_SYS_DIR /**/
10307 #$i_sysndir I_SYS_NDIR /**/
10308 #$i_systypes I_SYS_TYPES /**/
10310 #if defined(I_SYS_TYPES)
10311 #include <sys/types.h>
10313 #if defined(I_DIRENT)
10314 #include <dirent.h>
10315 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10316 #include <sys/dir.h>
10320 #include <sys/ndir.h>
10324 #include <ndir.h> /* may be wrong in the future */
10326 #include <sys/dir.h>
10331 int main() { return closedir(opendir(".")); }
10334 if eval $compile_ok; then
10335 if ./closedir > /dev/null 2>&1 ; then
10336 echo "Yes, it does."
10339 echo "No, it doesn't."
10343 echo "(I can't seem to compile the test program--assuming it doesn't)"
10351 set d_void_closedir
10354 : check for volatile keyword
10356 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10357 $cat >try.c <<'EOCP'
10360 typedef struct _goo_struct goo_struct;
10361 goo_struct * volatile goo = ((goo_struct *)0);
10362 struct _goo_struct {
10367 typedef unsigned short foo_t;
10368 char *volatile foo;
10370 volatile foo_t blech;
10374 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10376 echo "Yup, it does."
10379 echo "Nope, it doesn't."
10385 : see if there is a wait4
10389 : see if waitpid exists
10390 set waitpid d_waitpid
10393 : see if wcstombs exists
10394 set wcstombs d_wcstombs
10397 : see if wctomb exists
10398 set wctomb d_wctomb
10401 : see if writev exists
10402 set writev d_writev
10405 : preserve RCS keywords in files with variable substitution, grrr
10410 Revision='$Revision'
10412 case "$crosscompile" in
10413 ''|[nN]*) crosscompile="$undef" ;;
10417 next|rhapsody) multiarch="$define" ;;
10419 case "$multiarch" in
10420 ''|[nN]*) multiarch="$undef" ;;
10423 : check for alignment requirements
10425 case "$crosscompile$multiarch" in
10428 You seem to be either cross-compiling or doing a multiarchitecture build,
10429 skipping the memory alignment check.
10432 case "$alignbytes" in
10433 '') alignbytes=8 ;;
10437 case "$alignbytes" in
10438 '') echo "Checking alignment constraints..." >&4
10439 $cat >try.c <<'EOCP'
10446 printf("%d\n", (char *)&try_algn.bar - (char *)&try_algn.foo);
10450 if eval $compile_ok; then
10454 echo "(I can't seem to compile the test program...)"
10457 *) dflt="$alignbytes"
10460 rp="Doubles must be aligned on a how-many-byte boundary?"
10468 : check for ordering of bytes in a long
10470 case "$crosscompile$multiarch" in
10473 You seem to be either cross-compiling or doing a multiarchitecture build,
10474 skipping the byteorder check.
10480 case "$byteorder" in
10483 In the following, larger digits indicate more significance. A big-endian
10484 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10485 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10486 machines may have weird orders like 3412. A Cray will report 87654321. If
10487 the test program works the default is probably right.
10488 I'm now running the test program...
10490 $cat >try.c <<'EOCP'
10497 char c[sizeof(long)];
10500 if (sizeof(long) > 4)
10501 u.l = (0x08070605L << 32) | 0x04030201L;
10504 for (i = 0; i < sizeof(long); i++)
10505 printf("%c", u.c[i]+'0');
10512 if eval $compile && ./try > /dev/null; then
10515 [1-4][1-4][1-4][1-4]|12345678|87654321)
10516 echo "(The test program ran ok.)"
10517 echo "byteorder=$dflt"
10520 ????|????????) echo "(The test program ran ok.)" ;;
10521 *) echo "(The test program didn't run right for some reason.)" ;;
10526 (I can't seem to compile the test program. Guessing big-endian...)
10529 case "$xxx_prompt" in
10531 rp="What is the order of bytes in a long?"
10545 : how do we catenate cpp tokens here?
10547 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10548 $cat >cpp_stuff.c <<'EOCP'
10549 #define RCAT(a,b)a/**/b
10550 #define ACAT(a,b)a ## b
10554 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10555 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10556 echo "Oh! Smells like ANSI's been here." >&4
10557 echo "We can catify or stringify, separately or together!"
10559 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10560 echo "Ah, yes! The good old days!" >&4
10561 echo "However, in the good old days we don't know how to stringify and"
10562 echo "catify at the same time."
10566 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10567 to have to edit the values of CAT[2-5] in config.h...
10569 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10573 : see if this is a db.h system
10579 : Check db version.
10581 echo "Checking Berkeley DB version ..." >&4
10587 #include <sys/types.h>
10592 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10593 int Major, Minor, Patch ;
10594 unsigned long Version ;
10595 (void)db_version(&Major, &Minor, &Patch) ;
10596 printf("You have Berkeley DB Version 2 or greater\n");
10598 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10599 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10600 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10601 Major, Minor, Patch) ;
10603 /* check that db.h & libdb are compatible */
10604 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10605 printf("db.h and libdb are incompatible\n") ;
10609 printf("db.h and libdb are compatible\n") ;
10611 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10612 + DB_VERSION_PATCH ;
10614 /* needs to be >= 2.3.4 */
10615 if (Version < 2003004) {
10616 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10617 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10623 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10624 printf("You have Berkeley DB Version 1\n");
10625 exit(0); /* DB version < 2: the coast is clear. */
10627 exit(1); /* <db.h> not Berkeley DB? */
10633 if eval $compile && ./try; then
10634 echo 'Looks OK.' >&4
10636 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10640 : Remove db from list of libraries to use
10641 echo "Removing unusable -ldb from library list" >&4
10642 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10645 echo "libs = $libs" >&4
10655 : Check the return type needed for hash
10657 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10663 #include <sys/types.h>
10666 #ifndef DB_VERSION_MAJOR
10667 u_int32_t hash_cb (ptr, size)
10675 info.hash = hash_cb;
10679 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10680 if $contains warning try.out >>/dev/null 2>&1 ; then
10683 db_hashtype='u_int32_t'
10686 : XXX Maybe we should just give up here.
10687 db_hashtype=u_int32_t
10689 echo "Help: I can't seem to compile the db test program." >&4
10690 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10693 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10695 *) db_hashtype=u_int32_t
10700 : Check the return type needed for prefix
10702 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10708 #include <sys/types.h>
10711 #ifndef DB_VERSION_MAJOR
10712 size_t prefix_cb (key1, key2)
10720 info.prefix = prefix_cb;
10724 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10725 if $contains warning try.out >>/dev/null 2>&1 ; then
10726 db_prefixtype='int'
10728 db_prefixtype='size_t'
10731 db_prefixtype='size_t'
10732 : XXX Maybe we should just give up here.
10734 echo "Help: I can't seem to compile the db test program." >&4
10735 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10738 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10740 *) db_prefixtype='size_t'
10744 : check for void type
10746 echo "Checking to see how well your C compiler groks the void type..." >&4
10747 case "$voidflags" in
10749 $cat >try.c <<'EOCP'
10755 extern void moo(); /* function returning void */
10756 void (*goo)(); /* ptr to func returning void */
10758 void *hue; /* generic ptr */
10771 int main() { sub(); }
10773 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10774 voidflags=$defvoidused
10775 echo "Good. It appears to support void to the level $package wants.">&4
10776 if $contains warning .out >/dev/null 2>&1; then
10777 echo "However, you might get some warnings that look like this:"
10781 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10782 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10783 echo "It supports 1..."
10784 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10785 echo "It also supports 2..."
10786 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10788 echo "And it supports 4 but not 8 definitely."
10790 echo "It doesn't support 4..."
10791 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10793 echo "But it supports 8."
10796 echo "Neither does it support 8."
10800 echo "It does not support 2..."
10801 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10803 echo "But it supports 4 and 8."
10805 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10807 echo "And it supports 4 but has not heard about 8."
10809 echo "However it supports 8 but not 4."
10814 echo "There is no support at all for void."
10819 case "$voidflags" in
10821 *) $cat >&4 <<'EOM'
10822 Support flag bits are:
10823 1: basic void declarations.
10824 2: arrays of pointers to functions returning void.
10825 4: operations between pointers to and addresses of void functions.
10826 8: generic void pointers.
10829 rp="Your void support flags add up to what?"
10837 : How can we generate normalized random numbers ?
10839 echo "Looking for a random number function..." >&4
10840 case "$randfunc" in
10842 if set drand48 val -f; eval $csym; $val; then
10844 echo "Good, found drand48()." >&4
10845 elif set random val -f; eval $csym; $val; then
10847 echo "OK, found random()." >&4
10850 echo "Yick, looks like I have to use rand()." >&4
10861 *-Dmy_rand=*|*-Dmy_srand=*)
10862 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10863 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10864 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10865 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10869 while $test "$cont"; do
10870 rp="Use which function to generate random numbers?"
10872 if $test "$ans" = "$dflt"; then
10878 if set $ans val -f; eval $csym; $val; then
10882 rp="I cannot find function $ans. Use that name anyway?"
10891 case "$randfunc" in
10893 drand01="drand48()"
10899 case "$randbits" in
10901 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10903 #$i_unistd I_UNISTD
10904 #$i_stdlib I_STDLIB
10907 # include <unistd.h>
10910 # include <stdlib.h>
10915 register unsigned long tmp;
10916 register unsigned long max = 0L;
10918 for (i = 1000; i; i--) {
10919 tmp = (unsigned long) $randfunc();
10920 if (tmp > max) max = tmp;
10922 for (i = 0; max; i++)
10928 if eval $compile_ok; then
10932 echo "(I can't seem to compile the test program...)"
10939 rp="How many bits does your $randfunc() function produce?"
10943 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10944 seedfunc="s$randfunc"
10945 randseedtype=unsigned
10949 rp="How many bits does your $randfunc() function produce?"
10952 seedfunc="s$randfunc"
10953 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10954 if set $seedfunc val -f; eval $csym; $val; then
10955 echo "(Using $seedfunc() to seed random generator)"
10957 echo "(Warning: no $seedfunc() to seed random generator)"
10960 randseedtype=unsigned
10968 echo "Determining whether or not we are on an EBCDIC system..." >&4
10969 $cat >tebcdic.c <<'EOM'
10972 if ('M'==0xd4) return 0;
10979 if eval $compile_ok; then
10981 echo "You have EBCDIC." >&4
10984 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10987 echo "I'm unable to compile the test program." >&4
10988 echo "I'll assume ASCII or some ISO Latin." >&4
10990 $rm -f tebcdic.c tebcdic
10995 Checking how to flush all pending stdio output...
10997 # I only know how to find the first 32 possibly open files on SunOS.
10998 # See also hints/sunos_4_1.sh and util.c --AD
11000 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
11002 $cat >>try.c <<EOCP
11004 #$i_unistd I_UNISTD
11006 # include <unistd.h>
11008 #$d_sysconf HAS_SYSCONF
11009 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
11010 #ifdef HAS_STDIO_STREAM_ARRAY
11011 # define STDIO_STREAM_ARRAY $stdio_stream_array
11014 FILE* p = fopen("try.out", "w");
11018 # ifdef TRY_FPRINTF
11022 #ifdef TRY_FFLUSH_NULL
11025 #ifdef TRY_FFLUSH_ALL
11027 long open_max = -1;
11028 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
11029 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
11031 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
11032 open_max = sysconf(_SC_OPEN_MAX);
11035 open_max = FOPEN_MAX;
11038 open_max = OPEN_MAX;
11047 # ifdef HAS_STDIO_STREAM_ARRAY
11048 if (open_max > 0) {
11050 for (i = 0; i < open_max; i++)
11051 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
11052 STDIO_STREAM_ARRAY[i]._file < open_max &&
11053 STDIO_STREAM_ARRAY[i]._flag)
11054 fflush(&STDIO_STREAM_ARRAY[i]);
11062 : first we have to find out how _not_ to flush
11063 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
11065 set try -DTRY_FPUTC
11066 if eval $compile; then
11068 ./try$exe_ext 2>/dev/null
11069 if $test ! -s try.out -a "X$?" = X42; then
11075 set try -DTRY_FPRINTF
11077 if eval $compile; then
11079 ./try$exe_ext 2>/dev/null
11080 if $test ! -s try.out -a "X$?" = X42; then
11081 output=-DTRY_FPRINTF
11087 : check for fflush NULL behaviour
11088 case "$fflushNULL" in
11089 '') set try -DTRY_FFLUSH_NULL $output
11090 if eval $compile; then
11092 ./try$exe_ext 2>/dev/null
11094 if $test -s try.out -a "X$code" = X42; then
11095 fflushNULL="`$cat try.out`"
11097 if $test "X$code" != X42; then
11099 (If this test failed, don't worry, we'll try another method shortly.)
11104 $rm -f core try.core core.try.*
11105 case "$fflushNULL" in
11107 Your fflush(NULL) works okay.
11109 fflushNULL="$define"
11112 Your fflush(NULL) isn't working (contrary to ANSI C).
11114 fflushNULL="$undef"
11117 Cannot figure out whether your fflush(NULL) works or not.
11118 I'm assuming it doesn't (contrary to ANSI C).
11120 fflushNULL="$undef"
11124 $define|true|[yY]*)
11125 fflushNULL="$define"
11128 fflushNULL="$undef"
11131 : check explicit looping only if NULL did not work
11132 case "$fflushNULL" in
11134 : check for fflush all behaviour
11135 case "$fflushall" in
11136 '') set try -DTRY_FFLUSH_ALL $output
11137 if eval $compile; then
11139 (Now testing the other method--but note that also this may fail.)
11142 ./try$exe_ext 2>/dev/null
11143 if $test -s try.out -a "X$?" = X42; then
11144 fflushall="`$cat try.out`"
11147 $rm -f core try.core core.try.*
11148 case "$fflushall" in
11150 Whew. Flushing explicitly all the stdio streams works.
11152 fflushall="$define"
11155 Sigh. Flushing explicitly all the stdio streams doesn't work.
11160 Cannot figure out whether flushing stdio streams explicitly works or not.
11161 I'm assuming it doesn't.
11167 "$define"|true|[yY]*)
11168 fflushall="$define"
11175 *) fflushall="$undef"
11178 case "$fflushNULL$fflushall" in
11181 I cannot figure out how to flush pending stdio output.
11185 $rm -f try.* try$exe_ext
11187 : see what type file positions are declared as in the library
11188 rp="What is the type for file position used by fsetpos()?"
11189 set fpos_t fpostype long stdio.h sys/types.h
11192 : Store the full pathname to the ar program for use in the C program
11193 : Respect a hint or command line value for full_ar.
11198 : Store the full pathname to the sed program for use in the C program
11201 : see what type gids are declared as in the kernel
11203 echo "Looking for the type for group ids returned by getgid()."
11204 set gid_t gidtype xxx stdio.h sys/types.h
11208 xxx=`./findhdr sys/user.h`
11209 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
11211 unsigned) dflt="$1 $2" ;;
11215 *) dflt="$gidtype";;
11218 gid_t) echo "gid_t found." ;;
11219 *) rp="What is the type for group ids returned by getgid()?"
11225 : see if getgroups exists
11226 set getgroups d_getgrps
11229 : see if setgroups exists
11230 set setgroups d_setgrps
11234 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
11236 case "$d_getgrps$d_setgrps" in
11238 case "$groupstype" in
11239 '') dflt="$gidtype" ;;
11240 *) dflt="$groupstype" ;;
11243 What type of pointer is the second argument to getgroups() and setgroups()?
11244 Usually this is the same as group ids, $gidtype, but not always.
11247 rp='What type pointer is the second argument to getgroups() and setgroups()?'
11251 *) groupstype="$gidtype";;
11254 : see what type lseek is declared as in the kernel
11255 rp="What is the type used for lseek's offset on this system?"
11256 set off_t lseektype long stdio.h sys/types.h
11260 $echo $n "Checking to see how big your file offsets are...$c" >&4
11262 #include <sys/types.h>
11266 printf("%d\n", sizeof($lseektype));
11270 if eval $compile_ok; then
11272 $echo " $lseeksize bytes." >&4
11276 echo "(I can't seem to compile the test program. Guessing...)"
11277 rp="What is the size of your file offsets (in bytes)?"
11284 echo "Checking if your $make program sets \$(MAKE)..." >&4
11285 case "$make_set_make" in
11287 $sed 's/^X //' > testmake.mak << 'EOF'
11289 X @echo 'maketemp="$(MAKE)"'
11291 case "`$make -f testmake.mak 2>/dev/null`" in
11292 *maketemp=*) make_set_make='#' ;;
11293 *) make_set_make="MAKE=$make" ;;
11295 $rm -f testmake.mak
11298 case "$make_set_make" in
11299 '#') echo "Yup, it does.";;
11300 *) echo "Nope, it doesn't.";;
11303 : see what type is used for mode_t
11304 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
11305 set mode_t modetype int stdio.h sys/types.h
11308 : define a fucntion to check prototypes
11309 $cat > protochk <<EOSH
11312 optimize="$optimize"
11314 prototype="$prototype"
11319 $cat >> protochk <<'EOSH'
11324 while test $# -ge 2; do
11326 $define) echo "#include <$2>" >> try.c ;;
11327 literal) echo "$2" >> try.c ;;
11331 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
11332 cat >> try.c <<'EOCP'
11333 #ifdef CAN_PROTOTYPE
11334 #define _(args) args
11339 echo "$foo" >> try.c
11340 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
11341 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
11347 $eunicefix protochk
11349 : see what type is used for size_t
11350 rp="What is the type used for the length parameter for string functions?"
11351 set size_t sizetype 'unsigned int' stdio.h sys/types.h
11354 : check for type of arguments to gethostbyaddr.
11355 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
11356 case "$d_gethbyaddr" in
11360 Checking to see what type of arguments are accepted by gethostbyaddr().
11362 hdrs="$define sys/types.h
11363 $d_socket sys/socket.h
11364 $i_niin netinet/in.h
11366 $i_unistd unistd.h"
11367 : The first arg can 'char *' or 'void *'
11368 : The second arg is some of integral type
11369 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
11370 for yyy in size_t long int; do
11371 case "$netdb_host_type" in
11372 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
11373 if ./protochk "$try" $hdrs; then
11374 echo "Your system accepts $xxx for the first arg."
11375 echo "...and $yyy for the second arg."
11376 netdb_host_type="$xxx"
11377 netdb_hlen_type="$yyy"
11383 : In case none of those worked, prompt the user.
11384 case "$netdb_host_type" in
11385 '') rp='What is the type for the 1st argument to gethostbyaddr?'
11388 netdb_host_type=$ans
11389 rp='What is the type for the 2nd argument to gethostbyaddr?'
11392 netdb_hlen_type=$ans
11396 *) : no gethostbyaddr, so pick harmless defaults
11397 netdb_host_type='char *'
11398 netdb_hlen_type="$sizetype"
11401 # Remove the "const" if needed. -- but then we'll have a
11403 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
11406 : check for type of argument to gethostbyname.
11407 if test "X$netdb_name_type" = X ; then
11408 case "$d_gethbyname" in
11412 Checking to see what type of argument is accepted by gethostbyname().
11414 hdrs="$define sys/types.h
11415 $d_socket sys/socket.h
11416 $i_niin netinet/in.h
11418 $i_unistd unistd.h"
11419 for xxx in "const char *" "char *"; do
11420 case "$netdb_name_type" in
11421 '') try="extern struct hostent *gethostbyname($xxx);"
11422 if ./protochk "$try" $hdrs; then
11423 echo "Your system accepts $xxx."
11424 netdb_name_type="$xxx"
11429 : In case none of those worked, prompt the user.
11430 case "$netdb_name_type" in
11431 '') rp='What is the type for the 1st argument to gethostbyname?'
11434 netdb_name_type=$ans
11438 *) : no gethostbyname, so pick harmless default
11439 netdb_name_type='char *'
11444 : check for type of 1st argument to getnetbyaddr.
11445 if test "X$netdb_net_type" = X ; then
11446 case "$d_getnbyaddr" in
11450 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11452 hdrs="$define sys/types.h
11453 $d_socket sys/socket.h
11454 $i_niin netinet/in.h
11456 $i_unistd unistd.h"
11457 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11458 case "$netdb_net_type" in
11459 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11460 if ./protochk "$try" $hdrs; then
11461 echo "Your system accepts $xxx."
11462 netdb_net_type="$xxx"
11467 : In case none of those worked, prompt the user.
11468 case "$netdb_net_type" in
11469 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11472 netdb_net_type=$ans
11476 *) : no getnetbyaddr, so pick harmless default
11477 netdb_net_type='long'
11481 : locate the preferred pager for this system
11495 '') dflt=/usr/ucb/more;;
11502 rp='What pager is used on your system?'
11506 : see what type pids are declared as in the kernel
11507 rp="What is the type of process ids on this system?"
11508 set pid_t pidtype int stdio.h sys/types.h
11511 : check for length of pointer
11515 $echo $n "Checking to see how big your pointers are...$c" >&4
11516 if test "$voidflags" -gt 7; then
11517 echo '#define VOID_PTR char *' > try.c
11519 echo '#define VOID_PTR void *' > try.c
11521 $cat >>try.c <<'EOCP'
11525 printf("%d\n", sizeof(VOID_PTR));
11530 if eval $compile_ok; then
11532 $echo " $ptrsize bytes." >&4
11535 echo "(I can't seem to compile the test program. Guessing...)" >&4
11536 rp="What is the size of a pointer (in bytes)?"
11544 : see if ar generates random libraries by itself
11546 echo "Checking how to generate random libraries on your machine..." >&4
11547 echo 'int bar1() { return bar2(); }' > bar1.c
11548 echo 'int bar2() { return 2; }' > bar2.c
11549 $cat > foo.c <<'EOP'
11550 int main() { printf("%d\n", bar1()); exit(0); }
11552 $cc $ccflags -c bar1.c >/dev/null 2>&1
11553 $cc $ccflags -c bar2.c >/dev/null 2>&1
11554 $cc $ccflags -c foo.c >/dev/null 2>&1
11555 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11556 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11557 ./foobar >/dev/null 2>&1; then
11558 echo "$ar appears to generate random libraries itself."
11561 elif $ar ts bar$_a >/dev/null 2>&1 &&
11562 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11563 ./foobar >/dev/null 2>&1; then
11564 echo "a table of contents needs to be added with '$ar ts'."
11571 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11572 $test -f $ranlib || ranlib=''
11575 if $test -n "$ranlib"; then
11576 echo "your system has '$ranlib'; we'll use that."
11579 echo "your system doesn't seem to support random libraries"
11580 echo "so we'll use lorder and tsort to order the libraries."
11587 : check for type of arguments to select.
11588 case "$selecttype" in
11589 '') case "$d_select" in
11592 Checking to see what type of arguments are accepted by select().
11594 hdrs="$define sys/types.h
11595 $i_systime sys/time.h
11596 $i_sysselct sys/select.h
11597 $d_socket sys/socket.h"
11598 : The first arg can be int, unsigned, or size_t
11599 : The last arg may or may not be 'const'
11601 : void pointer has been seen but using that
11602 : breaks the selectminbits test
11603 for xxx in 'fd_set *' 'int *'; do
11604 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11605 for tmo in 'struct timeval *' 'const struct timeval *'; do
11607 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11608 if ./protochk "$try" $hdrs; then
11609 echo "Your system accepts $xxx."
11618 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11619 case "$d_fd_set" in
11620 $define) dflt="fd_set *" ;;
11629 *) : no select, so pick a harmless default
11636 : check for the select 'width'
11637 case "$selectminbits" in
11638 '') case "$d_select" in
11642 Checking to see on how many bits at a time your select() operates...
11645 #include <sys/types.h>
11647 #$i_systime I_SYS_TIME
11648 #$i_systimek I_SYS_TIME_KERNEL
11653 # ifdef I_SYS_TIME_KERNEL
11656 # include <sys/time.h>
11657 # ifdef I_SYS_TIME_KERNEL
11661 #$i_sysselct I_SYS_SELECT
11662 #ifdef I_SYS_SELECT
11663 #include <sys/select.h>
11665 #$d_socket HAS_SOCKET
11667 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11671 #define S sizeof(*(b))
11673 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11674 #define NBITS (NBYTES * 8)
11683 fp = fopen("try.c", "r");
11689 b = ($selecttype)s;
11690 for (i = 0; i < NBITS; i++)
11694 select(fd + 1, b, 0, 0, &t);
11695 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11696 printf("%d\n", i + 1);
11701 if eval $compile_ok; then
11702 selectminbits=`./try`
11703 case "$selectminbits" in
11705 Cannot figure out on how many bits at a time your select() operates.
11706 I'll play safe and guess it is 32 bits.
11712 *) bits="$selectminbits bits" ;;
11714 echo "Your select() operates on $bits at a time." >&4
11716 rp='What is the minimum number of bits your select() operates on?'
11717 case "$byteorder" in
11718 1234|12345678) dflt=32 ;;
11723 selectminbits="$val"
11727 *) : no select, so pick a harmless default
11734 : Trace out the files included by signal.h, then look for SIGxxx names.
11735 : Remove SIGARRAYSIZE used by HPUX.
11736 : Remove SIGSTKSIZE used by Linux.
11737 : Remove SIGSTKSZ used by Posix.
11738 : Remove SIGTYP void lines used by OS2.
11739 xxx=`echo '#include <signal.h>' |
11740 $cppstdin $cppminus $cppflags 2>/dev/null |
11741 $grep '^[ ]*#.*include' |
11742 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11743 : Check this list of files to be sure we have parsed the cpp output ok.
11744 : This will also avoid potentially non-existent files, such
11747 for xx in $xxx /dev/null ; do
11748 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11750 : If we have found no files, at least try signal.h
11751 case "$xxxfiles" in
11752 '') xxxfiles=`./findhdr signal.h` ;;
11755 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
11756 print substr($2, 4, 20)
11758 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11759 print substr($3, 4, 20)
11761 : Append some common names just in case the awk scan failed.
11762 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11763 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11764 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11765 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11766 : generate a few handy files for later
11767 $cat > signal.c <<'EOCP'
11768 #include <sys/types.h>
11769 #include <signal.h>
11773 /* Strange style to avoid deeply-nested #if/#else/#endif */
11776 # define NSIG (_NSIG)
11782 # define NSIG (SIGMAX+1)
11788 # define NSIG (SIG_MAX+1)
11794 # define NSIG (MAXSIG+1)
11800 # define NSIG (MAX_SIG+1)
11805 # ifdef SIGARRAYSIZE
11806 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11812 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11816 /* Default to some arbitrary number that's big enough to get most
11817 of the common signals.
11823 printf("NSIG %d\n", NSIG);
11829 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11831 printf "#ifdef SIG"; printf $1; printf "\n"
11832 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11833 printf $1; printf ");\n"
11837 printf "#endif /* JUST_NSIG */\n";
11841 $cat >signal.awk <<'EOP'
11842 BEGIN { ndups = 0 }
11843 $1 ~ /^NSIG$/ { nsig = $2 }
11844 ($1 !~ /^NSIG$/) && (NF == 2) {
11845 if ($2 > maxsig) { maxsig = $2 }
11846 if (sig_name[$2]) {
11847 dup_name[ndups] = $1
11848 dup_num[ndups] = $2
11860 printf("NSIG %d\n", nsig);
11861 for (n = 1; n < nsig; n++) {
11863 printf("%s %d\n", sig_name[n], sig_num[n])
11866 printf("NUM%d %d\n", n, n)
11869 for (n = 0; n < ndups; n++) {
11870 printf("%s %d\n", dup_name[n], dup_num[n])
11874 $cat >signal_cmd <<EOS
11876 if $test -s signal.lst; then
11877 echo "Using your existing signal.lst file"
11882 $cat >>signal_cmd <<'EOS'
11885 if eval $compile_ok; then
11886 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11888 echo "(I can't seem be able to compile the whole test program)" >&4
11889 echo "(I'll try it in little pieces.)" >&4
11890 set signal -DJUST_NSIG
11891 if eval $compile_ok; then
11892 ./signal$_exe > signal.nsg
11895 echo "I can't seem to figure out how many signals you have." >&4
11896 echo "Guessing 50." >&4
11897 echo 'NSIG 50' > signal.nsg
11899 : Now look at all the signal names, one at a time.
11900 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11901 $cat > signal.c <<EOCP
11902 #include <sys/types.h>
11903 #include <signal.h>
11906 printf("$xx %d\n", SIG${xx});
11911 if eval $compile; then
11912 echo "SIG${xx} found."
11913 ./signal$_exe >> signal.ls1
11915 echo "SIG${xx} NOT found."
11918 if $test -s signal.ls1; then
11919 $cat signal.nsg signal.ls1 |
11920 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11924 if $test -s signal.lst; then
11927 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11928 echo 'kill -l' >signal
11929 set X `csh -f <signal`
11933 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11935 echo $@ | $tr ' ' $trnl | \
11936 $awk '{ printf "%s %d\n", $1, ++s; }
11937 END { printf "NSIG %d\n", ++s }' >signal.lst
11939 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11941 chmod a+x signal_cmd
11942 $eunicefix signal_cmd
11944 : generate list of signal names
11946 case "$sig_name_init" in
11948 *) case "$sig_num_init" in
11949 ''|*,*) doinit=yes ;;
11954 echo "Generating a list of signal names and numbers..." >&4
11956 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
11957 sig_name=`$awk 'BEGIN { printf "ZERO " }
11958 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
11959 sig_num=`$awk 'BEGIN { printf "0 " }
11960 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
11961 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11962 !/^NSIG/ { printf "\"%s\", ", $1 }
11963 END { printf "0\n" }' signal.lst`
11964 sig_num_init=`$awk 'BEGIN { printf "0, " }
11965 !/^NSIG/ { printf "%d, ", $2}
11966 END { printf "0\n"}' signal.lst`
11969 echo "The following $sig_count signals are available:"
11971 echo $sig_name | $awk \
11972 'BEGIN { linelen = 0 }
11974 for (i = 1; i <= NF; i++) {
11975 name = "SIG" $i " "
11976 linelen = linelen + length(name)
11977 if (linelen > 70) {
11979 linelen = length(name)
11985 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11987 : see what type is used for signed size_t
11988 set ssize_t ssizetype int stdio.h sys/types.h
11991 $cat > ssize.c <<EOM
11993 #include <sys/types.h>
11994 #define Size_t $sizetype
11995 #define SSize_t $dflt
11998 if (sizeof(Size_t) == sizeof(SSize_t))
12000 else if (sizeof(Size_t) == sizeof(int))
12009 if eval $compile_ok && ./ssize > /dev/null; then
12010 ssizetype=`./ssize`
12011 echo "I'll be using $ssizetype for functions returning a byte count." >&4
12014 Help! I can't compile and run the ssize_t test program: please enlighten me!
12015 (This is probably a misconfiguration in your system or libraries, and
12016 you really ought to fix it. Still, I'll try anyway.)
12018 I need a type that is the same size as $sizetype, but is guaranteed to
12019 be signed. Common values are ssize_t, int and long.
12022 rp="What signed type is the same size as $sizetype?"
12026 $rm -f ssize ssize.*
12028 : see what type of char stdio uses.
12030 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12031 echo "Your stdio uses unsigned chars." >&4
12032 stdchar="unsigned char"
12034 echo "Your stdio uses signed chars." >&4
12038 : see if time exists
12040 if test "X$d_time" = X -o X"$timetype" = X; then
12041 if set time val -f d_time; eval $csym; $val; then
12042 echo 'time() found.' >&4
12044 rp="What is the type returned by time() on this system?"
12045 set time_t timetype long stdio.h sys/types.h
12048 echo 'time() not found, hope that will do.' >&4
12056 : see what type uids are declared as in the kernel
12058 echo "Looking for the type for user ids returned by getuid()."
12059 set uid_t uidtype xxx stdio.h sys/types.h
12063 xxx=`./findhdr sys/user.h`
12064 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
12066 unsigned) dflt="$1 $2" ;;
12070 *) dflt="$uidtype";;
12073 uid_t) echo "uid_t found." ;;
12074 *) rp="What is the type for user ids returned by getuid()?"
12080 : see if dbm.h is available
12081 : see if dbmclose exists
12082 set dbmclose d_dbmclose
12085 case "$d_dbmclose" in
12095 *) set rpcsvc/dbm.h i_rpcsvcdbm
12100 *) echo "We won't be including <dbm.h>"
12110 : see if this is a sys/file.h system
12115 : do we need to include sys/file.h ?
12119 if $h_sysfile; then
12121 echo "We'll be including <sys/file.h>." >&4
12124 echo "We won't be including <sys/file.h>." >&4
12134 : see if fcntl.h is there
12139 : see if we can include fcntl.h
12145 echo "We'll be including <fcntl.h>." >&4
12148 if $h_sysfile; then
12149 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12151 echo "We won't be including <fcntl.h>." >&4
12163 : see if locale.h is available
12164 set locale.h i_locale
12167 : see if mach cthreads are available
12168 if test "X$usethreads" = "X$define"; then
12169 set mach/cthreads.h i_machcthr
12172 i_machcthr="$undef"
12177 : see if this is a math.h system
12181 : see if this is a mntent.h system
12182 set mntent.h i_mntent
12185 : see if ndbm.h is available
12190 : see if dbm_open exists
12191 set dbm_open d_dbm_open
12193 case "$d_dbm_open" in
12196 echo "We won't be including <ndbm.h>"
12205 : see if net/errno.h is available
12207 set net/errno.h val
12210 : Unfortunately, it causes problems on some systems. Arrgh.
12213 cat > try.c <<'EOM'
12216 #include <net/errno.h>
12222 if $cc $ccflags -c try.c >/dev/null 2>&1; then
12223 echo "We'll be including <net/errno.h>." >&4
12225 echo "We won't be including <net/errno.h>." >&4
12234 : see if netinet/tcp.h is available
12235 set netinet/tcp.h i_netinettcp
12238 : see if this is a poll.h system
12242 : get C preprocessor symbols handy
12244 $echo $n "Hmm... $c"
12245 echo $al | $tr ' ' $trnl >Cppsym.know
12246 $cat <<EOSS >Cppsym
12254 case "\$list\$#" in
12257 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
12259 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
12262 unknown="\$unknown \$sym"
12272 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
12274 exit 0; _ _ _ _\1\\ \1\\
12277 echo "exit 1; _ _ _" >>Cppsym\$\$
12278 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
12280 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
12286 $rm -f Cppsym\$\$ Cppsym2\$\$
12291 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
12293 : now check the C compiler for additional symbols
12294 postprocess_cc_v=''
12296 aix) postprocess_cc_v="|$tr , ' '" ;;
12303 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
12306 -D*) echo "\$i" | $sed 's/^-D//';;
12307 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
12312 postprocess_cc_v=''
12315 ./ccsym > ccsym1.raw
12316 if $test -s ccsym1.raw; then
12317 $sort ccsym1.raw | $uniq >ccsym.raw
12319 mv ccsym1.raw ccsym.raw
12322 $awk '/\=/ { print $0; next }
12323 { print $0"=1" }' ccsym.raw >ccsym.list
12324 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
12325 $comm -13 ccsym.true ccsym.list >ccsym.own
12326 $comm -12 ccsym.true ccsym.list >ccsym.com
12327 $comm -23 ccsym.true ccsym.list >ccsym.cpp
12329 if $test -z ccsym.raw; then
12330 echo "Your C compiler doesn't seem to define any symbols!" >&4
12332 echo "However, your C preprocessor defines the following symbols:"
12335 cppsymbols=`$cat Cppsym.true`
12336 cppsymbols=`echo $cppsymbols`
12337 cppccsymbols="$cppsymbols"
12339 if $test -s ccsym.com; then
12340 echo "Your C compiler and pre-processor define these symbols:"
12341 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
12344 cppccsymbols=`$cat ccsym.com`
12345 cppccsymbols=`echo $cppccsymbols`
12346 $test "$silent" || sleep 1
12348 if $test -s ccsym.cpp; then
12349 $test "$also" && echo " "
12350 echo "Your C pre-processor ${also}defines the following symbols:"
12351 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
12353 cppsymbols=`$cat ccsym.cpp`
12354 cppsymbols=`echo $cppsymbols`
12355 $test "$silent" || sleep 1
12357 if $test -s ccsym.own; then
12358 $test "$also" && echo " "
12359 echo "Your C compiler ${also}defines the following cpp symbols:"
12360 $sed -e 's/\(.*\)=1/\1/' ccsym.own
12361 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
12362 ccsymbols=`$cat ccsym.own`
12363 ccsymbols=`echo $ccsymbols`
12364 $test "$silent" || sleep 1
12369 : see if this is a termio system
12373 if $test `./findhdr termios.h`; then
12374 set tcsetattr i_termios
12380 "$define") echo "You have POSIX termios.h... good!" >&4;;
12381 *) if ./Cppsym pyr; then
12382 case "`/bin/universe`" in
12383 ucb) if $test `./findhdr sgtty.h`; then
12385 echo "<sgtty.h> found." >&4
12387 echo "System is pyramid with BSD universe."
12388 echo "<sgtty.h> not found--you could have problems." >&4
12390 *) if $test `./findhdr termio.h`; then
12392 echo "<termio.h> found." >&4
12394 echo "System is pyramid with USG universe."
12395 echo "<termio.h> not found--you could have problems." >&4
12399 if $test `./findhdr termio.h`; then
12400 echo "<termio.h> found." >&4
12402 elif $test `./findhdr sgtty.h`; then
12403 echo "<sgtty.h> found." >&4
12406 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
12409 if $test `./findhdr sgtty.h`; then
12410 echo "<sgtty.h> found." >&4
12412 elif $test `./findhdr termio.h`; then
12413 echo "<termio.h> found." >&4
12416 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
12420 set i_termio; eval $setvar
12421 val=$val2; set i_sgtty; eval $setvar
12422 val=$val3; set i_termios; eval $setvar
12424 : see if this is a shadow.h system
12425 set shadow.h i_shadow
12428 : see if stdarg is available
12430 if $test `./findhdr stdarg.h`; then
12431 echo "<stdarg.h> found." >&4
12434 echo "<stdarg.h> NOT found." >&4
12438 : see if varags is available
12440 if $test `./findhdr varargs.h`; then
12441 echo "<varargs.h> found." >&4
12443 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
12446 : set up the varargs testing programs
12447 $cat > varargs.c <<EOP
12449 #include <stdarg.h>
12452 #include <varargs.h>
12456 int f(char *p, ...)
12470 p = va_arg(ap, char *);
12475 $cat > varargs <<EOP
12477 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12486 : now check which varargs header should be included
12491 if `./varargs I_STDARG`; then
12493 elif `./varargs I_VARARGS`; then
12498 if `./varargs I_VARARGS`; then
12505 echo "I could not find the definition for va_dcl... You have problems..." >&4
12506 val="$undef"; set i_stdarg; eval $setvar
12507 val="$undef"; set i_varargs; eval $setvar
12512 case "$i_varhdr" in
12514 val="$define"; set i_stdarg; eval $setvar
12515 val="$undef"; set i_varargs; eval $setvar
12518 val="$undef"; set i_stdarg; eval $setvar
12519 val="$define"; set i_varargs; eval $setvar
12522 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12526 : see if stddef is available
12527 set stddef.h i_stddef
12530 : see if sys/access.h is available
12531 set sys/access.h i_sysaccess
12534 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12535 set sys/filio.h i_sysfilio
12538 if $test `./findhdr sys/ioctl.h`; then
12540 echo '<sys/ioctl.h> found.' >&4
12543 if $test $i_sysfilio = "$define"; then
12544 echo '<sys/ioctl.h> NOT found.' >&4
12546 $test $i_sgtty = "$define" && xxx="sgtty.h"
12547 $test $i_termio = "$define" && xxx="termio.h"
12548 $test $i_termios = "$define" && xxx="termios.h"
12549 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12555 : see if sys/resource.h has to be included
12556 set sys/resource.h i_sysresrc
12559 : see if sys/security.h is available
12560 set sys/security.h i_syssecrt
12563 : see if this is a sys/statvfs.h system
12564 set sys/statvfs.h i_sysstatvfs
12567 : see if this is a sys/un.h system
12568 set sys/un.h i_sysun
12571 : see if this is a syswait system
12572 set sys/wait.h i_syswait
12575 : see if this is an utime system
12576 set utime.h i_utime
12579 : see if this is a values.h system
12580 set values.h i_values
12583 : see if this is a vfork system
12586 set vfork.h i_vfork
12594 : see if gdbm.h is available
12599 : see if gdbm_open exists
12600 set gdbm_open d_gdbm_open
12602 case "$d_gdbm_open" in
12605 echo "We won't be including <gdbm.h>"
12615 echo "Looking for extensions..." >&4
12618 : If we are using the old config.sh, known_extensions may contain
12619 : old or inaccurate or duplicate values.
12620 known_extensions=''
12621 nonxs_extensions=''
12622 : We do not use find because it might not be available.
12623 : We do not just use MANIFEST because the user may have dropped
12624 : some additional extensions into the source tree and expect them
12628 DynaLoader|dynaload) ;;
12629 *) if $test -f $xxx/$xxx.xs; then
12630 known_extensions="$known_extensions $xxx"
12631 elif $test -f $xxx/Makefile.PL; then
12632 nonxs_extensions="$nonxs_extensions $xxx"
12634 if $test -d $xxx; then
12635 # Look for nested extensions, eg. Devel/Dprof.
12638 if $test -f $yyy/$yyy.xs; then
12639 known_extensions="$known_extensions $xxx/$yyy"
12640 elif $test -f $yyy/Makefile.PL; then
12641 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12650 set X $nonxs_extensions
12652 nonxs_extensions="$*"
12653 set X $known_extensions
12655 known_extensions="$*"
12658 : Now see which are supported on this system.
12660 for xxx in $known_extensions ; do
12664 $define) avail_ext="$avail_ext $xxx" ;;
12667 GDBM_File|gdbm_fil)
12669 $define) avail_ext="$avail_ext $xxx" ;;
12672 NDBM_File|ndbm_fil)
12674 $define) avail_ext="$avail_ext $xxx" ;;
12677 ODBM_File|odbm_fil)
12678 case "${i_dbm}${i_rpcsvcdbm}" in
12679 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12683 case "$useposix" in
12684 true|define|y) avail_ext="$avail_ext $xxx" ;;
12688 case "$useopcode" in
12689 true|define|y) avail_ext="$avail_ext $xxx" ;;
12693 case "$d_socket" in
12694 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12698 case "$usethreads" in
12699 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12703 : XXX Do we need a useipcsysv variable here
12704 case "${d_msg}${d_sem}${d_shm}" in
12705 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12708 *) avail_ext="$avail_ext $xxx"
12717 : Now see which nonxs extensions are supported on this system.
12718 : For now assume all are.
12720 for xxx in $nonxs_extensions ; do
12722 *) nonxs_ext="$nonxs_ext $xxx"
12734 A number of extensions are supplied with $package. You may choose to
12735 compile these extensions for dynamic loading (the default), compile
12736 them into the $package executable (static loading), or not include
12737 them at all. Answer "none" to include no extensions.
12738 Note that DynaLoader is always built and need not be mentioned here.
12741 case "$dynamic_ext" in
12742 '') dflt="$avail_ext" ;;
12743 *) dflt="$dynamic_ext"
12744 # Perhaps we are reusing an old out-of-date config.sh.
12747 if test X"$dynamic_ext" != X"$avail_ext"; then
12749 NOTICE: Your previous config.sh list may be incorrect.
12750 The extensions now available to you are
12752 but the default list from your previous config.sh is
12764 rp="What extensions do you wish to load dynamically?"
12767 none) dynamic_ext=' ' ;;
12768 *) dynamic_ext="$ans" ;;
12771 case "$static_ext" in
12773 : Exclude those already listed in dynamic linking
12775 for xxx in $avail_ext; do
12776 case " $dynamic_ext " in
12778 *) dflt="$dflt $xxx" ;;
12785 *) dflt="$static_ext"
12792 rp="What extensions do you wish to load statically?"
12795 none) static_ext=' ' ;;
12796 *) static_ext="$ans" ;;
12801 A number of extensions are supplied with $package. Answer "none"
12802 to include no extensions.
12803 Note that DynaLoader is always built and need not be mentioned here.
12806 case "$static_ext" in
12807 '') dflt="$avail_ext" ;;
12808 *) dflt="$static_ext"
12809 # Perhaps we are reusing an old out-of-date config.sh.
12812 if test X"$static_ext" != X"$avail_ext"; then
12814 NOTICE: Your previous config.sh list may be incorrect.
12815 The extensions now available to you are
12817 but the default list from your previous config.sh is
12826 : Exclude those that are not xs extensions
12830 rp="What extensions do you wish to include?"
12833 none) static_ext=' ' ;;
12834 *) static_ext="$ans" ;;
12839 set X $dynamic_ext $static_ext $nonxs_ext
12843 : Remove build directory name from cppstdin so it can be used from
12844 : either the present location or the final installed location.
12846 : Get out of the UU directory to get correct path name.
12848 case "$cppstdin" in
12850 echo "Stripping down cppstdin path name"
12856 : end of configuration questions
12858 echo "End of configuration questions."
12861 : back to where it started
12862 if test -d ../UU; then
12866 : configuration may be patched via a 'config.over' file
12867 if $test -f config.over; then
12870 rp='I see a config.over file. Do you wish to load it?'
12873 n*) echo "OK, I'll ignore it.";;
12875 echo "Configuration override changes have been loaded."
12880 : in case they want portability, strip down executable paths
12881 case "$d_portable" in
12884 echo "Stripping down executable paths..." >&4
12885 for file in $loclist $trylist; do
12886 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12887 eval $file="\$file"
12893 : create config.sh file
12895 echo "Creating config.sh..." >&4
12896 $spitshell <<EOT >config.sh
12899 # This file was produced by running the Configure script. It holds all the
12900 # definitions figured out by Configure. Should you modify one of these values,
12901 # do not forget to propagate your changes by running "Configure -der". You may
12902 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12905 # Package name : $package
12906 # Source directory : $src
12907 # Configuration time: $cf_time
12908 # Configured by : $cf_by
12909 # Target system : $myuname
12919 Revision='$Revision'
12926 alignbytes='$alignbytes'
12927 ansi2knr='$ansi2knr'
12928 aphostname='$aphostname'
12929 apiversion='$apiversion'
12932 archlibexp='$archlibexp'
12933 archname64='$archname64'
12934 archname='$archname'
12935 archobjs='$archobjs'
12943 byteorder='$byteorder'
12945 castflags='$castflags'
12948 cccdlflags='$cccdlflags'
12949 ccdlflags='$ccdlflags'
12951 ccsymbols='$ccsymbols'
12953 cf_email='$cf_email'
12958 clocktype='$clocktype'
12960 compress='$compress'
12961 contains='$contains'
12965 cpp_stuff='$cpp_stuff'
12966 cppccsymbols='$cppccsymbols'
12967 cppflags='$cppflags'
12969 cppminus='$cppminus'
12971 cppstdin='$cppstdin'
12972 cppsymbols='$cppsymbols'
12973 crosscompile='$crosscompile'
12974 cryptlib='$cryptlib'
12976 d_Gconvert='$d_Gconvert'
12977 d_access='$d_access'
12978 d_accessx='$d_accessx'
12980 d_archlib='$d_archlib'
12981 d_attribut='$d_attribut'
12985 d_bsdgetpgrp='$d_bsdgetpgrp'
12986 d_bsdsetpgrp='$d_bsdsetpgrp'
12988 d_casti32='$d_casti32'
12989 d_castneg='$d_castneg'
12990 d_charvspr='$d_charvspr'
12992 d_chroot='$d_chroot'
12993 d_chsize='$d_chsize'
12994 d_closedir='$d_closedir'
12995 d_cmsghdr_s='$d_cmsghdr_s'
12999 d_cuserid='$d_cuserid'
13000 d_dbl_dig='$d_dbl_dig'
13001 d_dbmclose64='$d_dbmclose64'
13002 d_dbminit64='$d_dbminit64'
13003 d_delete64='$d_delete64'
13004 d_difftime='$d_difftime'
13005 d_dirent64_s='$d_dirent64_s'
13006 d_dirnamlen='$d_dirnamlen'
13007 d_dlerror='$d_dlerror'
13008 d_dlopen='$d_dlopen'
13009 d_dlsymun='$d_dlsymun'
13010 d_dosuid='$d_dosuid'
13011 d_drand48proto='$d_drand48proto'
13013 d_eaccess='$d_eaccess'
13014 d_endgrent='$d_endgrent'
13015 d_endhent='$d_endhent'
13016 d_endnent='$d_endnent'
13017 d_endpent='$d_endpent'
13018 d_endpwent='$d_endpwent'
13019 d_endsent='$d_endsent'
13020 d_endspent='$d_endspent'
13021 d_eofnblk='$d_eofnblk'
13022 d_eunice='$d_eunice'
13023 d_fchmod='$d_fchmod'
13024 d_fchown='$d_fchown'
13026 d_fd_macros='$d_fd_macros'
13027 d_fd_set='$d_fd_set'
13028 d_fds_bits='$d_fds_bits'
13029 d_fetch64='$d_fetch64'
13030 d_fgetpos64='$d_fgetpos64'
13031 d_fgetpos='$d_fgetpos'
13032 d_firstkey64='$d_firstkey64'
13033 d_flexfnam='$d_flexfnam'
13034 d_flock64_s='$d_flock64_s'
13036 d_fopen64='$d_fopen64'
13038 d_fpathconf='$d_fpathconf'
13039 d_freopen64='$d_freopen64'
13040 d_fseek64='$d_fseek64'
13041 d_fseeko64='$d_fseeko64'
13042 d_fseeko='$d_fseeko'
13043 d_fsetpos64='$d_fsetpos64'
13044 d_fsetpos='$d_fsetpos'
13045 d_fstat64='$d_fstat64'
13046 d_fstatfs='$d_fstatfs'
13047 d_fstatvfs='$d_fstatvfs'
13048 d_ftell64='$d_ftell64'
13049 d_ftello64='$d_ftello64'
13050 d_ftello='$d_ftello'
13052 d_ftruncate64='$d_ftruncate64'
13053 d_getgrent='$d_getgrent'
13054 d_getgrps='$d_getgrps'
13055 d_gethbyaddr='$d_gethbyaddr'
13056 d_gethbyname='$d_gethbyname'
13057 d_gethent='$d_gethent'
13058 d_gethname='$d_gethname'
13059 d_gethostprotos='$d_gethostprotos'
13060 d_getlogin='$d_getlogin'
13061 d_getmntent='$d_getmntent'
13062 d_getnbyaddr='$d_getnbyaddr'
13063 d_getnbyname='$d_getnbyname'
13064 d_getnent='$d_getnent'
13065 d_getnetprotos='$d_getnetprotos'
13066 d_getpbyname='$d_getpbyname'
13067 d_getpbynumber='$d_getpbynumber'
13068 d_getpent='$d_getpent'
13069 d_getpgid='$d_getpgid'
13070 d_getpgrp2='$d_getpgrp2'
13071 d_getpgrp='$d_getpgrp'
13072 d_getppid='$d_getppid'
13073 d_getprior='$d_getprior'
13074 d_getprotoprotos='$d_getprotoprotos'
13075 d_getpwent='$d_getpwent'
13076 d_getsbyname='$d_getsbyname'
13077 d_getsbyport='$d_getsbyport'
13078 d_getsent='$d_getsent'
13079 d_getservprotos='$d_getservprotos'
13080 d_getspent='$d_getspent'
13081 d_getspnam='$d_getspnam'
13082 d_gettimeod='$d_gettimeod'
13083 d_gnulibc='$d_gnulibc'
13084 d_grpasswd='$d_grpasswd'
13085 d_hasmntopt='$d_hasmntopt'
13088 d_inetaton='$d_inetaton'
13089 d_ino64_t='$d_ino64_t'
13090 d_int64t='$d_int64t'
13091 d_iovec_s='$d_iovec_s'
13092 d_isascii='$d_isascii'
13093 d_killpg='$d_killpg'
13094 d_lchown='$d_lchown'
13096 d_llseek='$d_llseek'
13097 d_locconv='$d_locconv'
13098 d_lockf64='$d_lockf64'
13100 d_longdbl='$d_longdbl'
13101 d_longlong='$d_longlong'
13102 d_lseek64='$d_lseek64'
13103 d_lstat64='$d_lstat64'
13105 d_madvise='$d_madvise'
13107 d_mbstowcs='$d_mbstowcs'
13108 d_mbtowc='$d_mbtowc'
13109 d_memchr='$d_memchr'
13110 d_memcmp='$d_memcmp'
13111 d_memcpy='$d_memcpy'
13112 d_memmove='$d_memmove'
13113 d_memset='$d_memset'
13115 d_mkfifo='$d_mkfifo'
13116 d_mktime='$d_mktime'
13118 d_mprotect='$d_mprotect'
13120 d_msg_ctrunc='$d_msg_ctrunc'
13121 d_msg_dontroute='$d_msg_dontroute'
13122 d_msg_oob='$d_msg_oob'
13123 d_msg_peek='$d_msg_peek'
13124 d_msg_proxy='$d_msg_proxy'
13125 d_msgctl='$d_msgctl'
13126 d_msgget='$d_msgget'
13127 d_msghdr_s='$d_msghdr_s'
13128 d_msgrcv='$d_msgrcv'
13129 d_msgsnd='$d_msgsnd'
13131 d_munmap='$d_munmap'
13132 d_mymalloc='$d_mymalloc'
13133 d_nextkey64='$d_nextkey64'
13135 d_off64_t='$d_off64_t'
13136 d_offset_t='$d_offset_t'
13137 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
13138 d_oldpthreads='$d_oldpthreads'
13139 d_oldsock='$d_oldsock'
13141 d_open64='$d_open64'
13142 d_opendir64='$d_opendir64'
13143 d_pathconf='$d_pathconf'
13145 d_phostname='$d_phostname'
13148 d_portable='$d_portable'
13149 d_pthread_yield='$d_pthread_yield'
13151 d_pwchange='$d_pwchange'
13152 d_pwclass='$d_pwclass'
13153 d_pwcomment='$d_pwcomment'
13154 d_pwexpire='$d_pwexpire'
13155 d_pwgecos='$d_pwgecos'
13156 d_pwpasswd='$d_pwpasswd'
13157 d_pwquota='$d_pwquota'
13158 d_readdir64='$d_readdir64'
13159 d_readdir='$d_readdir'
13160 d_readlink='$d_readlink'
13162 d_recvmsg='$d_recvmsg'
13163 d_rename='$d_rename'
13164 d_rewinddir='$d_rewinddir'
13166 d_safebcpy='$d_safebcpy'
13167 d_safemcpy='$d_safemcpy'
13168 d_sanemcmp='$d_sanemcmp'
13169 d_sched_yield='$d_sched_yield'
13170 d_scm_rights='$d_scm_rights'
13171 d_seekdir64='$d_seekdir64'
13172 d_seekdir='$d_seekdir'
13173 d_select='$d_select'
13175 d_semctl='$d_semctl'
13176 d_semctl_semid_ds='$d_semctl_semid_ds'
13177 d_semctl_semun='$d_semctl_semun'
13178 d_semget='$d_semget'
13180 d_sendmsg='$d_sendmsg'
13181 d_setegid='$d_setegid'
13182 d_seteuid='$d_seteuid'
13183 d_setgrent='$d_setgrent'
13184 d_setgrps='$d_setgrps'
13185 d_sethent='$d_sethent'
13186 d_setlinebuf='$d_setlinebuf'
13187 d_setlocale='$d_setlocale'
13188 d_setnent='$d_setnent'
13189 d_setpent='$d_setpent'
13190 d_setpgid='$d_setpgid'
13191 d_setpgrp2='$d_setpgrp2'
13192 d_setpgrp='$d_setpgrp'
13193 d_setprior='$d_setprior'
13194 d_setpwent='$d_setpwent'
13195 d_setregid='$d_setregid'
13196 d_setresgid='$d_setresgid'
13197 d_setresuid='$d_setresuid'
13198 d_setreuid='$d_setreuid'
13199 d_setrgid='$d_setrgid'
13200 d_setruid='$d_setruid'
13201 d_setsent='$d_setsent'
13202 d_setsid='$d_setsid'
13203 d_setspent='$d_setspent'
13204 d_setvbuf='$d_setvbuf'
13208 d_shmatprototype='$d_shmatprototype'
13209 d_shmctl='$d_shmctl'
13211 d_shmget='$d_shmget'
13212 d_sigaction='$d_sigaction'
13213 d_sigsetjmp='$d_sigsetjmp'
13214 d_socket='$d_socket'
13215 d_sockpair='$d_sockpair'
13216 d_stat64='$d_stat64'
13217 d_statblks='$d_statblks'
13218 d_statfs='$d_statfs'
13219 d_statfsflags='$d_statfsflags'
13220 d_statvfs='$d_statvfs'
13221 d_stdio_cnt_lval='$d_stdio_cnt_lval'
13222 d_stdio_ptr_lval='$d_stdio_ptr_lval'
13223 d_stdio_stream_array='$d_stdio_stream_array'
13224 d_stdiobase='$d_stdiobase'
13225 d_stdstdio='$d_stdstdio'
13226 d_store64='$d_store64'
13227 d_strchr='$d_strchr'
13228 d_strcoll='$d_strcoll'
13229 d_strctcpy='$d_strctcpy'
13230 d_strerrm='$d_strerrm'
13231 d_strerror='$d_strerror'
13232 d_strtod='$d_strtod'
13233 d_strtol='$d_strtol'
13234 d_strtoul='$d_strtoul'
13235 d_strxfrm='$d_strxfrm'
13236 d_suidsafe='$d_suidsafe'
13237 d_symlink='$d_symlink'
13238 d_syscall='$d_syscall'
13239 d_sysconf='$d_sysconf'
13240 d_sysernlst='$d_sysernlst'
13241 d_syserrlst='$d_syserrlst'
13242 d_system='$d_system'
13243 d_tcgetpgrp='$d_tcgetpgrp'
13244 d_tcsetpgrp='$d_tcsetpgrp'
13245 d_telldir64='$d_telldir64'
13246 d_telldir='$d_telldir'
13247 d_telldirproto='$d_telldirproto'
13250 d_tmpfile64='$d_tmpfile64'
13251 d_truncate64='$d_truncate64'
13252 d_truncate='$d_truncate'
13253 d_tzname='$d_tzname'
13256 d_union_semun='$d_union_semun'
13258 d_void_closedir='$d_void_closedir'
13259 d_voidsig='$d_voidsig'
13260 d_voidtty='$d_voidtty'
13261 d_volatile='$d_volatile'
13262 d_vprintf='$d_vprintf'
13264 d_waitpid='$d_waitpid'
13265 d_wcstombs='$d_wcstombs'
13266 d_wctomb='$d_wctomb'
13267 d_writev='$d_writev'
13270 db_hashtype='$db_hashtype'
13271 db_prefixtype='$db_prefixtype'
13272 defvoidused='$defvoidused'
13273 direntrytype='$direntrytype'
13276 doublesize='$doublesize'
13278 dynamic_ext='$dynamic_ext'
13284 eunicefix='$eunicefix'
13287 extensions='$extensions'
13288 fflushNULL='$fflushNULL'
13289 fflushall='$fflushall'
13291 firstmakefile='$firstmakefile'
13293 fpostype='$fpostype'
13294 freetype='$freetype'
13296 full_csh='$full_csh'
13297 full_sed='$full_sed'
13298 gccversion='$gccversion'
13302 groupcat='$groupcat'
13303 groupstype='$groupstype'
13306 h_sysfile='$h_sysfile'
13310 i_arpainet='$i_arpainet'
13311 i_bsdioctl='$i_bsdioctl'
13314 i_dirent='$i_dirent'
13321 i_inttypes='$i_inttypes'
13322 i_limits='$i_limits'
13323 i_locale='$i_locale'
13324 i_machcthr='$i_machcthr'
13325 i_malloc='$i_malloc'
13327 i_memory='$i_memory'
13328 i_mntent='$i_mntent'
13331 i_neterrno='$i_neterrno'
13332 i_netinettcp='$i_netinettcp'
13335 i_pthread='$i_pthread'
13337 i_rpcsvcdbm='$i_rpcsvcdbm'
13340 i_shadow='$i_shadow'
13341 i_stdarg='$i_stdarg'
13342 i_stddef='$i_stddef'
13343 i_stdlib='$i_stdlib'
13344 i_string='$i_string'
13345 i_sysaccess='$i_sysaccess'
13346 i_sysdir='$i_sysdir'
13347 i_sysfile='$i_sysfile'
13348 i_sysfilio='$i_sysfilio'
13350 i_sysioctl='$i_sysioctl'
13351 i_sysmman='$i_sysmman'
13352 i_sysmount='$i_sysmount'
13353 i_sysndir='$i_sysndir'
13354 i_sysparam='$i_sysparam'
13355 i_sysresrc='$i_sysresrc'
13356 i_syssecrt='$i_syssecrt'
13357 i_sysselct='$i_sysselct'
13358 i_syssockio='$i_syssockio'
13359 i_sysstat='$i_sysstat'
13360 i_sysstatvfs='$i_sysstatvfs'
13361 i_systime='$i_systime'
13362 i_systimek='$i_systimek'
13363 i_systimes='$i_systimes'
13364 i_systypes='$i_systypes'
13365 i_sysuio='$i_sysuio'
13367 i_syswait='$i_syswait'
13368 i_termio='$i_termio'
13369 i_termios='$i_termios'
13371 i_unistd='$i_unistd'
13373 i_values='$i_values'
13374 i_varargs='$i_varargs'
13375 i_varhdr='$i_varhdr'
13377 ignore_versioned_solibs='$ignore_versioned_solibs'
13380 installarchlib='$installarchlib'
13381 installbin='$installbin'
13382 installman1dir='$installman1dir'
13383 installman3dir='$installman3dir'
13384 installprivlib='$installprivlib'
13385 installscript='$installscript'
13386 installsitearch='$installsitearch'
13387 installsitelib='$installsitelib'
13388 installusrbinperl='$installusrbinperl'
13390 known_extensions='$known_extensions'
13394 lddlflags='$lddlflags'
13402 libswanted='$libswanted'
13408 locincpth='$locincpth'
13409 loclibpth='$loclibpth'
13410 longdblsize='$longdblsize'
13411 longlongsize='$longlongsize'
13412 longsize='$longsize'
13416 lseeksize='$lseeksize'
13417 lseektype='$lseektype'
13421 make_set_make='$make_set_make'
13422 mallocobj='$mallocobj'
13423 mallocsrc='$mallocsrc'
13424 malloctype='$malloctype'
13426 man1direxp='$man1direxp'
13429 man3direxp='$man3direxp'
13433 mips_type='$mips_type'
13435 mmaptype='$mmaptype'
13437 modetype='$modetype'
13439 multiarch='$multiarch'
13441 myarchname='$myarchname'
13442 mydomain='$mydomain'
13443 myhostname='$myhostname'
13446 netdb_hlen_type='$netdb_hlen_type'
13447 netdb_host_type='$netdb_host_type'
13448 netdb_name_type='$netdb_name_type'
13449 netdb_net_type='$netdb_net_type'
13452 nm_so_opt='$nm_so_opt'
13453 nonxs_ext='$nonxs_ext'
13455 o_nonblock='$o_nonblock'
13457 old_pthread_create_joinable='$old_pthread_create_joinable'
13458 optimize='$optimize'
13459 orderlib='$orderlib'
13465 patchlevel='$patchlevel'
13466 path_sep='$path_sep'
13468 perladmin='$perladmin'
13469 perlpath='$perlpath'
13471 phostname='$phostname'
13477 prefixexp='$prefixexp'
13479 privlibexp='$privlibexp'
13480 prototype='$prototype'
13482 randbits='$randbits'
13483 randfunc='$randfunc'
13484 randseedtype='$randseedtype'
13486 rd_nodata='$rd_nodata'
13490 sched_yield='$sched_yield'
13491 scriptdir='$scriptdir'
13492 scriptdirexp='$scriptdirexp'
13494 seedfunc='$seedfunc'
13495 selectminbits='$selectminbits'
13496 selecttype='$selecttype'
13497 sendmail='$sendmail'
13500 sharpbang='$sharpbang'
13501 shmattype='$shmattype'
13502 shortsize='$shortsize'
13505 sig_count='$sig_count'
13506 sig_name='$sig_name'
13507 sig_name_init='$sig_name_init'
13509 sig_num_init='$sig_num_init'
13510 signal_t='$signal_t'
13511 sitearch='$sitearch'
13512 sitearchexp='$sitearchexp'
13514 sitelibexp='$sitelibexp'
13515 sizetype='$sizetype'
13520 sockethdr='$sockethdr'
13521 socketlib='$socketlib'
13523 spackage='$spackage'
13524 spitshell='$spitshell'
13527 ssizetype='$ssizetype'
13528 startperl='$startperl'
13530 static_ext='$static_ext'
13532 stdio_base='$stdio_base'
13533 stdio_bufsiz='$stdio_bufsiz'
13534 stdio_cnt='$stdio_cnt'
13535 stdio_filbuf='$stdio_filbuf'
13536 stdio_ptr='$stdio_ptr'
13537 stdio_stream_array='$stdio_stream_array'
13540 subversion='$subversion'
13547 timeincl='$timeincl'
13548 timetype='$timetype'
13556 use64bits='$use64bits'
13558 usemultiplicity='$usemultiplicity'
13559 usemymalloc='$usemymalloc'
13561 useopcode='$useopcode'
13562 useperlio='$useperlio'
13563 useposix='$useposix'
13565 useshrplib='$useshrplib'
13566 usethreads='$usethreads'
13567 usevfork='$usevfork'
13572 voidflags='$voidflags'
13578 : Add in command line options if available
13579 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13581 : add special variables
13582 $test -f $src/patchlevel.h && \
13583 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13584 echo "CONFIGDOTSH=true" >>config.sh
13586 : propagate old symbols
13587 if $test -f UU/config.sh; then
13588 <UU/config.sh sort | uniq >UU/oldconfig.sh
13589 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13590 sort | uniq -u >UU/oldsyms
13591 set X `cat UU/oldsyms`
13597 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13599 echo "# Variables propagated from previous config.sh file." >>config.sh
13600 for sym in `cat UU/oldsyms`; do
13601 echo " Propagating $hint variable "'$'"$sym..."
13602 eval 'tmp="$'"${sym}"'"'
13604 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13610 : Finish up by extracting the .SH files
13624 If you'd like to make any changes to the config.sh file before I begin
13625 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13628 rp="Press return or use a shell escape to edit config.sh:"
13633 *) : in case they cannot read
13634 sh 1>&4 -c "$ans";;
13639 : if this fails, just run all the .SH files by hand
13646 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13653 Now you need to generate make dependencies by running "$make depend".
13654 You might prefer to run it in background: "$make depend > makedepend.out &"
13655 It can take a while, so you might not want to run it right now.
13660 rp="Run $make depend now?"
13664 $make depend && echo "Now you must run a $make."
13667 echo "You must run '$make depend' then '$make'."
13670 elif test -f [Mm]akefile; then
13672 echo "Now you must run a $make."
13677 if $test -f Policy.sh; then
13680 If you compile $package on a different machine or from a different object
13681 directory, copy the Policy.sh file from this object directory to the
13682 new one before you run Configure -- this will help you with most of
13683 the policy defaults.
13687 if $test -f config.msg; then
13688 echo "Hmm. I also noted the following information while running:"
13690 $cat config.msg >&4
13693 $rm -f kit*isdone ark*isdone