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 Tue Feb 2 13:43:18 EET 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 case "$inksh/$needksh" in
118 case "$inksh/$avoidksh" in
124 case "$inksh/$needksh-$avoidksh-" in
127 (I see you are using the Korn shell. Some ksh's blow up on $me,
128 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
134 echo "(Feeding myself to $newsh $reason.)"
136 Configure|*/Configure) exec $newsh $0 "$@";;
137 *) exec $newsh Configure "$@";;
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
147 *bash*) CDPATH='.' ;;
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
669 ignore_versioned_solibs=''
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
797 : We must find out about Eunice early
799 if test -f /etc/unixtovms; then
800 eunicefix=/etc/unixtovms
802 if test -f /etc/unixtovms.exe; then
803 eunicefix=/etc/unixtovms.exe
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
820 : Private path used by Configure to find libraries. Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips. Usually, it should be empty.
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
830 : no include file wanted by default
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
898 : Trailing extension. Override this in a hint file, if needed.
900 : Extra object files, if any, needed on this platform.
903 : default library list
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
910 : set useposix=false in your hint file to disable the POSIX extension.
912 : set useopcode=false in your hint file to disable the Opcode extension.
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
928 : Find the basic shell for Bourne shell scripts
932 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
935 if test -f "$xxx"; then
938 : Build up a list and do a single loop so we can 'break' out.
939 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940 for xxx in sh bash ksh pdksh ash; do
942 try="$try ${p}/${xxx}"
946 if test -f "$xxx"; then
949 elif test -f "$xxx.exe"; then
960 $me: Fatal Error: I can't find a Bourne Shell anywhere.
962 Usually it's in /bin/sh. How did you even get this far?
963 Please contact me (Perl Maintainers) at perlbug@perl.com and
964 we'll try to straighten this all out.
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
975 test -f $xcat || xcat=/usr/bin/cat
980 if test -s today; then
983 echo "#! $xcat" > try
987 if test -s today; then
995 echo "Your $sh doesn't grok # comments--I will strip them later on."
998 echo "exec grep -v '^[ ]*#'" >spitshell
1000 $eunicefix spitshell
1001 spitshell=`pwd`/spitshell
1003 echo "I presume that if # doesn't work, #! won't work either!"
1008 : figure out how to guarantee sh startup
1010 '') startsh=${sharpbang}${sh} ;;
1022 : echo "Yup, it does."
1024 echo "Hmm... '$startsh' does not guarantee sh startup..."
1025 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1040 cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1043 argn=`expr $argn + 1`
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1049 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1051 len = length(optstr);
1052 for (i = 1; i <= len; i++) {
1053 c = substr(optstr, i, 1);
1054 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1065 if (substr(str, 1, 1) != "-") {
1066 printf("'%s'\n", str);
1070 for (i = 2; i <= len; i++) {
1071 c = substr(str, i, 1);
1073 printf("-%s\n", substr(str, i));
1079 printf("'%s'\n", substr(str, i + 1));
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094 sed -e s/X// | awk -f options.awk`
1099 : set up default values
1110 cat >optdef.sh <<EOS
1116 while test $# -gt 0; do
1118 -d) shift; fastread=yes;;
1119 -e) shift; alldone=cont;;
1123 if test -r "$1"; then
1126 echo "$me: cannot read config file $1." >&2
1131 -h) shift; error=true;;
1132 -r) shift; reuseval=true;;
1133 -s) shift; silent=true; realsilent=true;;
1134 -E) shift; alldone=exit;;
1135 -K) shift; knowitall=true;;
1136 -O) shift; override=true;;
1137 -S) shift; silent=true; extractsh=true;;
1142 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143 echo "$me: ignoring -D $1" >&2
1146 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147 *) echo "$1='define'" >> optdef.sh;;
1154 *=) echo "$1" >> optdef.sh;;
1156 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157 echo "$me: ignoring -U $1" >&2
1159 *) echo "$1='undef'" >> optdef.sh;;
1163 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1166 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175 [-U symbol] [-U symbol=]
1176 -d : use defaults for all answers.
1177 -e : go on without questioning past the production of config.sh.
1178 -f : specify an alternate default configuration file.
1179 -h : print this help message and exit (with an error status).
1180 -r : reuse C symbols value if possible (skips costly nm extraction).
1181 -s : silent mode, only echoes questions and essential information.
1182 -D : define symbol to have some value:
1183 -D symbol symbol gets the value 'define'
1184 -D symbol=value symbol gets the value 'value'
1185 -E : stop at the end of questions, after having produced config.sh.
1186 -K : do not use unless you know what you are doing.
1187 -O : let -D and -U override definitions from loaded configuration file.
1188 -S : perform variable substitutions on all .SH files (can mix with -f)
1189 -U : undefine symbol:
1190 -U symbol symbol gets the value 'undef'
1191 -U symbol= symbol gets completely empty
1192 -V : print version number and exit (with a zero status).
1199 case "$fastread$alldone" in
1202 if test ! -t 0; then
1203 echo "Say 'sh Configure', not 'sh <Configure'"
1211 true) exec 1>/dev/null;;
1214 : run the defines and the undefines, if any, but leave the file out there...
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1237 : the following should work in any shell
1241 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1242 cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1248 : Find the path to the source tree
1251 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1262 if test -f $rsrc/Configure && \
1263 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1265 : found it, so we are ok.
1268 for src in . .. ../.. ../../.. ../../../..; do
1269 if test -f ../$src/Configure && \
1270 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1281 Sorry, I can't seem to locate the source dir for $package. Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1290 echo "Sources for $package found in \"$src\"." >&4
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1301 echo "(Looking for .SH files under the source directory.)"
1302 set x `(cd $src; find . -name "*.SH" -print)`
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1308 if test ! -f $src/$1; then
1314 while test $name; do
1315 if test ! -d "$name"; then
1316 create="$name $create";
1317 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1323 for file in $create; do
1332 dir=`expr X$file : 'X\(.*\)/'`
1333 file=`expr X$file : 'X.*/\(.*\)'`
1334 (cd $dir && . ./$file)
1344 dir=`expr X$file : 'X\(.*\)/'`
1345 file=`expr X$file : 'X.*/\(.*\)'`
1346 (set x $dir; shift; eval $mkdir_p)
1356 if test -f $src/config_h.SH; then
1357 if test ! -f config.h; then
1358 : oops, they left it out of MANIFEST, probably, so do it anyway.
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1367 case "$realsilent" in
1371 case "$config_sh" in
1372 '') config_sh='config.sh';;
1375 echo "Fetching answers from $config_sh..."
1378 test "$override" && . ./optdef.sh
1387 : Eunice requires " " instead of "", can you believe it
1390 echo "Beginning of configuration questions for $package."
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1394 : first determine how to suppress newline on echo command
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1409 echo $n "The star should be here-->$c"
1413 : Now test for existence of everything in MANIFEST
1415 if test -f $rsrc/MANIFEST; then
1416 echo "First let's make sure your kit is complete. Checking..." >&4
1417 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1420 for filelist in x??; do
1421 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1423 if test -s missing; then
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es. If you
1431 do, don't blame me if something goes wrong. I advise you to type 'n'o
1432 and contact the author (perlbug@perl.com).
1435 echo $n "Continue? [n] $c" >&4
1439 echo "Continuing..." >&4
1443 echo "ABORTING..." >&4
1448 echo "Looks good..."
1451 echo "There is no MANIFEST file. I hope your kit is complete !"
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1460 if test X"$trnl" = X; then
1461 case "`echo foo|tr '\n' x 2>/dev/null`" in
1465 if test X"$trnl" = X; then
1466 case "`echo foo|tr '\012' x 2>/dev/null`" in
1467 foox) trnl='\012' ;;
1470 if test X"$trnl" = X; then
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1479 : compute the number of columns on the terminal for proper question formatting
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1488 '') echo $n \"[\$xxxm] $c\";;
1490 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1492 echo $n \"[\$xxxm] $c\" >&4
1494 echo $n \"\$rp [\$xxxm] $c\" >&4
1500 : now set up to do reads with possible shell escape and default assignment
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1510 case "\$silent-\$rp" in
1515 *) case "\$silent" in
1516 true) case "\$rp" in
1521 while expr "X\$ans" : "X!" >/dev/null; do
1525 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1533 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1542 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1547 echo "(OK, I'll run with -d after this question.)" >&4
1550 echo "*** Sorry, \$1 not supported yet." >&4
1560 echo "*** Substitution done -- please confirm."
1562 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1567 echo "*** Error -- try again."
1574 case "\$ans\$xxxm\$nostick" in
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1592 You may safely delete it if you wish.
1595 : general instructions
1598 user=`(logname) 2>/dev/null`
1600 '') user=`whoami 2>&1`;;
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1605 rp='Would you like to see the instructions?'
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command. Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that. Questions where this is
1625 allowed will be marked "(~name ok)".
1629 dflt='Type carriage return to continue'
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers. You may use $1, $2, etc... to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell. This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1639 Everytime there is a substitution, you will have to confirm. If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1643 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system. If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again. If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand. Whatever problems you
1657 have, let me (perlbug@perl.com) know how I blew it.
1659 This installation script affects things in two ways:
1661 1) it may do direct variable substitutions on some of the files included
1663 2) it builds a config.h file for inclusion in C programs. You may edit
1664 any of these files as the need arises after running this script.
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1668 files. Configure will offer to let you do this before it runs the SH files.
1671 dflt='Type carriage return to continue'
1673 case "$firsttime" in
1674 true) echo $user >>../.config/instruct;;
1678 : find out where common programs are
1680 echo "Locating common programs..." >&4
1693 if test -d \$dir/\$thing; then
1699 for thisthing in \$dir/\$thing; do
1700 : just loop through to pick last item
1702 if test -f \$thisthing; then
1705 elif test -f \$dir/\$thing.exe; then
1706 if test -n "$DJGPP"; then
1707 echo \$dir/\$thing.exe
1709 : on Eunice apparently
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1766 if test -f "$xxx"; then
1769 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770 xxx=`./loc $file $file $pth`
1773 '') xxx=`./loc $file $file $pth`;;
1774 *) xxx=`./loc $xxx $xxx $pth`;;
1780 echo $file is in $xxx.
1783 echo $file is in $xxx.
1786 echo "I don't know where '$file' is, and my life depends on it." >&4
1787 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1793 echo "Don't worry if any of the following aren't found..."
1795 for file in $trylist; do
1799 if test -f "$xxx"; then
1802 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803 xxx=`./loc $file $file $pth`
1806 '') xxx=`./loc $file $file $pth`;;
1807 *) xxx=`./loc $xxx $xxx $pth`;;
1813 echo $file is in $xxx.
1816 echo $file is in $xxx.
1819 echo "I don't see $file out there, $say."
1826 echo "Substituting grep for egrep."
1832 echo "Substituting cp for ln."
1838 echo "Hopefully test is built into your sh."
1841 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842 echo "Using the test built into your sh."
1850 echo "Hopefully echo is built into your sh."
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856 $echo $n "hi there$c" >foo1
1857 echo $n "hi there$c" >foo2
1858 if cmp foo1 foo2 >/dev/null 2>&1; then
1859 echo "They are compatible. In fact, they may be identical."
1866 They are not compatible! You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts. That
1869 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1872 $echo $n "The star should be here-->$c"
1879 : determine whether symbolic links are supported
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883 echo "Symbolic links are supported." >&4
1886 echo "Symbolic links are NOT supported." >&4
1891 : see whether [:lower:] and [:upper:] are supported character classes
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1895 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1899 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1900 # (0xc9 and 0xd1), therefore that is a nice testing point.
1901 if test "X$up" = X -o "X$low" = X; then
1902 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1908 if test "X$up" = X -o "X$low" = X; then
1909 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1915 if test "X$up" = X -o "X$low" = X; then
1916 case "`echo IJ | od -x 2>/dev/null`" in
1918 echo "Hey, this might be EBCDIC." >&4
1919 if test "X$up" = X -o "X$low" = X; then
1920 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921 ij) up='[A-IJ-RS-Z]'
1926 if test "X$up" = X -o "X$low" = X; then
1927 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1939 echo "Using $up and $low to convert case." >&4
1942 echo "I don't know how to translate letters from upper to lower case." >&4
1943 echo "Your tr is not acting any way I know of." >&4
1947 : set up the translation script tr, must be called with ./tr of course
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1969 case "$knowitall" in
1971 if test -f ../config.sh; then
1972 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973 eval "`grep myuname= ../config.sh`"
1975 if test "X$myuname" = "X$newmyuname"; then
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1987 if test -f config.sh; then
1989 rp="I see a config.sh file. Shall I use it to set the defaults?"
1992 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993 *) echo "Fetching default answers from your old config.sh file..." >&4
2001 : Older versions did not always set $sh. Catch re-use of such
2010 if test ! -f config.sh; then
2013 First time through, eh? I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2017 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2019 : Half the following guesses are probably wrong... If you have better
2020 : tests or hints, please send them to perlbug@perl.com
2021 : The metaconfig authors would also appreciate a copy...
2022 $test -f /irix && osname=irix
2023 $test -f /xenix && osname=sco_xenix
2024 $test -f /dynix && osname=dynix
2025 $test -f /dnix && osname=dnix
2026 $test -f /lynx.os && osname=lynxos
2027 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029 $test -f /bin/mips && /bin/mips && osname=mips
2030 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032 $test -d /usr/apollo/bin && osname=apollo
2033 $test -f /etc/saf/_sactab && osname=svr4
2034 $test -d /usr/include/minix && osname=minix
2035 if $test -d /MachTen -o -d /MachTen_Folder; then
2037 if $test -x /sbin/version; then
2038 osvers=`/sbin/version | $awk '{print $2}' |
2039 $sed -e 's/[A-Za-z]$//'`
2040 elif $test -x /usr/etc/version; then
2041 osvers=`/usr/etc/version | $awk '{print $2}' |
2042 $sed -e 's/[A-Za-z]$//'`
2047 $test -f /sys/posix.dll &&
2048 $test -f /usr/bin/what &&
2049 set X `/usr/bin/what /sys/posix.dll` &&
2050 $test "$3" = UWIN &&
2053 if $test -f $uname; then
2061 umips) osname=umips ;;
2064 [23]100) osname=mips ;;
2065 next*) osname=next ;;
2067 if $test -f /etc/kconfig; then
2069 if test "$lns" = "ln -s"; then
2071 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2073 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2079 if test -n "$DJGPP"; then
2088 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2090 'not found') osvers="$4"."$3" ;;
2091 '<3240'|'<>3240') osvers=3.2.0 ;;
2092 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093 '=3250'|'>3250') osvers=3.2.5 ;;
2097 *dc.osx) osname=dcosx
2103 domainos) osname=apollo
2109 dynixptx*) osname=dynixptx
2110 osvers=`echo "$4"|sed 's/^v//'`
2112 freebsd) osname=freebsd
2114 genix) osname=genix ;;
2116 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2132 netbsd*) osname=netbsd
2135 news-os) osvers="$3"
2137 4*) osname=newsos4 ;;
2141 bsd386) osname=bsd386
2144 POSIX-BC | posix-bc ) osname=posix-bc
2147 powerux | power_ux | powermax_os | powermaxos | \
2148 powerunix | power_unix) osname=powerux
2151 next*) osname=next ;;
2152 solaris) osname=solaris
2154 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2161 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2165 titanos) osname=titanos
2174 ultrix) osname=ultrix
2177 osf1|mls+) case "$5" in
2180 osvers=`echo "$3" | sed 's/^[xvt]//'`
2182 hp*) osname=hp_osf1 ;;
2183 mips) osname=mips_osf1 ;;
2192 $2) case "$osname" in
2196 : svr4.x or possibly later
2206 if test -f /stand/boot ; then
2207 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210 if test -n "$isesix"; then
2218 *) if test -f /etc/systemid; then
2220 set `echo $3 | $sed 's/\./ /g'` $4
2221 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2223 elif $test -f $src/hints/sco_$1_$2.sh; then
2225 elif $test -f $src/hints/sco_$1.sh; then
2230 '') : Still unknown. Probably a generic Sys V.
2239 *) case "$osname" in
2240 '') : Still unknown. Probably a generic BSD.
2248 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2253 $rm -f UU/kernel.what
2254 elif test -d c:/.; then
2261 : Now look for a hint file osname_osvers, unless one has been
2262 : specified already.
2265 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266 : Also try without trailing minor version numbers.
2267 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2273 *) case "$osvers" in
2276 *) if $test -f $src/hints/$file.sh ; then
2278 elif $test -f $src/hints/$xfile.sh ; then
2280 elif $test -f $src/hints/$xxfile.sh ; then
2282 elif $test -f $src/hints/$xxxfile.sh ; then
2284 elif $test -f $src/hints/$xxxxfile.sh ; then
2286 elif $test -f "$src/hints/${osname}.sh" ; then
2295 if $test -f Policy.sh ; then
2298 none) dflt="Policy" ;;
2299 *) dflt="Policy $dflt" ;;
2304 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2308 if $test -f Policy.sh ; then
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing. DO NOT give a wrong version.
2325 rp="Which of these apply, if any?"
2328 for file in $tans; do
2329 if $test X$file = XPolicy -a -f Policy.sh; then
2331 $cat Policy.sh >> UU/config.sh
2332 elif $test -f $src/hints/$file.sh; then
2333 . $src/hints/$file.sh
2334 $cat $src/hints/$file.sh >> UU/config.sh
2335 elif $test X$tans = X -o X$tans = Xnone ; then
2338 : Give one chance to correct a possible typo.
2339 echo "$file.sh does not exist"
2341 rp="hint to use instead?"
2343 for file in $ans; do
2344 if $test -f "$src/hints/$file.sh"; then
2345 . $src/hints/$file.sh
2346 $cat $src/hints/$file.sh >> UU/config.sh
2347 elif $test X$ans = X -o X$ans = Xnone ; then
2350 echo "$file.sh does not exist -- ignored."
2357 : Remember our hint file for later.
2358 if $test -f "$src/hints/$file.sh" ; then
2368 echo "Fetching default answers from $config_sh..." >&4
2372 cp $config_sh config.sh 2>/dev/null
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387 eval $file="\$_$file"
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2401 ''|' '|none) dflt=none ;;
2402 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2405 *) dflt="$osname" ;;
2407 rp="Operating system name?"
2411 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2417 ''|' '|none) dflt=none ;;
2418 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2421 ''|' ') dflt=none ;;
2426 *) dflt="$osvers" ;;
2428 rp="Operating system version?"
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2440 cf_by=`(whoami) 2>/dev/null`
2442 "") cf_by=unknown ;;
2446 : set up the script used to warn in case of inconsistency
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp=" Keep the $hint value?"
2458 y) td=$was; tu=$was;;
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2476 case "$usethreads" in
2477 $define|true|[yY]*) dflt='y';;
2480 rp='Build a threading Perl?'
2483 y|Y) val="$define" ;;
2489 case "$d_oldpthreads" in
2490 '') : Configure tests would be welcome here. For now, assume undef.
2492 *) val="$d_oldpthreads" ;;
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'. If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503 if $test -f usethreads.cbu; then
2507 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508 # Known thread-capable platforms.
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2515 Cannot continue, aborting.
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable. To do so, Configure must be run with
2529 Normally you do not need this and you should answer no.
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*) dflt='y';;
2536 rp='Build Perl for multiplicity?'
2539 y|Y) val="$define" ;;
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems. To do so, Configure must be run with -Duse64bits.
2550 If this doesn't make any sense to you, just accept the default 'n'.
2552 case "$use64bits" in
2553 $define|true|[yY]*) dflt='y';;
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2569 case "$archname64" in
2570 '') archname64='' ;; # not a typo
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'. If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578 if $test -f use64bits.cbu; then
2582 dec_osf|hpux|irix|solaris|unicos)
2583 # Known 64-bit capable platforms.
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2590 Cannot continue, aborting.
2598 : determine the architecture name
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601 tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603 if uname -m > tmparch 2>&1 ; then
2604 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605 -e 's/$/'"-$osname/" tmparch`
2613 case "$myarchname" in
2616 echo "(Your architecture name used to be $myarchname.)"
2623 *) dflt="$archname";;
2625 rp='What is your architecture name'
2628 case "$usethreads" in
2630 echo "Threads selected." >&4
2632 *-thread*) echo "...and architecture name already has -thread." >&4
2634 *) archname="$archname-thread"
2635 echo "...setting architecture name to $archname." >&4
2640 case "$usemultiplicity" in
2642 echo "Multiplicity selected." >&4
2644 *-multi*) echo "...and architecture name already has -multi." >&4
2646 *) archname="$archname-multi"
2647 echo "...setting architecture name to $archname." >&4
2652 case "$use64bits" in
2654 echo "Explicit 64-bitness selected." >&4
2655 case "$archname64" in
2660 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2662 *) archname="$archname-$archname64"
2663 echo "...setting architecture name to $archname." >&4
2673 $define|true) afs=true ;;
2674 $undef|false) afs=false ;;
2675 *) if test -d /afs; then
2683 echo "AFS may be running... I'll be extra cautious then..." >&4
2685 echo "AFS does not seem to be running..." >&4
2688 : decide how portable to be. Allow command line overrides.
2689 case "$d_portable" in
2691 *) d_portable="$define" ;;
2694 : set up shell script to do ~ expansion
2700 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2703 if $test -f /bin/csh; then
2704 /bin/csh -f -c "glob \$1"
2709 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711 if $test ! -d "\$dir"; then
2713 echo "\$me: can't locate home directory for: \$name" >&2
2718 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2734 : now set up to get a file name
2738 cat <<'EOSC' >>getfile
2751 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752 fn=`echo $fn | sed 's/(.*)//'`
2758 loc_file=`expr $fn : '.*:\(.*\)'`
2759 fn=`expr $fn : '\(.*\):.*'`
2767 */*) fullpath=true;;
2776 *e*) exp_file=true;;
2779 *p*) nopath_ok=true;;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2790 Locate) what='File';;
2795 case "$d_portable" in
2803 while test "$type"; do
2808 true) rp="$rp (~name ok)";;
2811 if test -f UU/getfile.ok && \
2812 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2831 value=`UU/filexp $ans`
2834 if test "$ans" != "$value"; then
2835 echo "(That expands to $value on this system.)"
2849 /*) value="$ansexp" ;;
2854 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855 echo "Use a ! shell escape if you wish to check pathnames." >&4
2858 echo "Please give a full path name, starting with slash." >&4
2861 echo "Note that using ~name is ok provided it expands well." >&4
2874 if test -f "$ansexp"; then
2876 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2878 echo "($value is not a plain file, but that's ok.)"
2883 if test -d "$ansexp"; then
2888 if test -d "$ansexp"; then
2889 echo "(Looking for $loc_file in directory $value.)"
2890 value="$value/$loc_file"
2891 ansexp="$ansexp/$loc_file"
2893 if test -f "$ansexp"; then
2896 case "$nopath_ok" in
2897 true) case "$value" in
2899 *) echo "Assuming $value will be in people's path."
2915 if test "$fastread" = yes; then
2920 rp="$what $value doesn't exist. Use that name anyway?"
2941 : determine root of directory hierarchy where package will be installed.
2944 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2963 rp='Installation prefix to use?'
2971 *) oldprefix="$prefix";;
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2981 case "$oldprefix" in
2982 "") eval "$1=\"\$$2\"";;
2989 ""|" ") eval "$1=\"\$$2\"";;
2995 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2997 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998 /*-$oldprefix/*|\~*-$oldprefix/*)
2999 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000 *) eval "$1=\"\$$2\"";;
3004 : set the base revision
3007 : get the patchlevel
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011 patchlevel=`awk '/define[ ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012 subversion=`awk '/define[ ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3017 $echo $n "(You have $package" $c
3020 *) $echo $n " $baserev" $c ;;
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3026 if test 0 -eq "$subversion"; then
3027 version=`LC_ALL=C; export LC_ALL; \
3028 LANGUAGE=C; export LANGUAGE; \
3029 echo $baserev $patchlevel | \
3030 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3032 version=`LC_ALL=C; export LC_ALL; \
3033 LANGUAGE=C; export LANGUAGE; \
3034 echo $baserev $patchlevel $subversion | \
3035 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3037 : Figure out perl API version. Perhaps this should be in patchlevel.h
3038 if test "$subversion" -lt 50; then
3039 apiversion=`LC_ALL=C; export LC_ALL; \
3040 LANGUAGE=C; export LANGUAGE; \
3041 echo $baserev $patchlevel | \
3042 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3044 apiversion="$version"
3047 : determine where private library files go
3048 : Usual default is /usr/local/lib/perl5/$version.
3049 : Also allow things like /opt/perl/lib/$version, since
3050 : /opt/perl/lib/perl5... would be redundant.
3052 *perl*) set dflt privlib lib/$version ;;
3053 *) set dflt privlib lib/$package/$version ;;
3058 There are some auxiliary files for $package that need to be put into a
3059 private library directory that is accessible by everyone.
3063 rp='Pathname where the private library files will reside?'
3065 if $test "X$privlibexp" != "X$ansexp"; then
3069 privlibexp="$ansexp"
3073 Since you are running AFS, I need to distinguish the directory in which
3074 private files reside from the directory in which they are installed (and from
3075 which they are presumably copied to the former directory by occult means).
3078 case "$installprivlib" in
3079 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3080 *) dflt="$installprivlib";;
3083 rp='Where will private files be installed?'
3085 installprivlib="$ans"
3087 installprivlib="$privlibexp"
3090 : set the prefixup variable, to restore leading tilda escape
3091 prefixup='case "$prefixexp" in
3093 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3096 : determine where public architecture dependent libraries go
3099 : privlib default is /usr/local/lib/$package/$version
3100 : archlib default is /usr/local/lib/$package/$version/$archname
3101 : privlib may have an optional trailing /share.
3102 tdflt=`echo $privlib | $sed 's,/share$,,'`
3103 tdflt=$tdflt/$archname
3112 $spackage contains architecture-dependent library files. If you are
3113 sharing libraries in a heterogeneous environment, you might store
3114 these files in a separate location. Otherwise, you can just include
3115 them with the rest of the public library files.
3119 rp='Where do you want to put the public architecture-dependent libraries?'
3122 archlibexp="$ansexp"
3127 Since you are running AFS, I need to distinguish the directory in
3128 which architecture-dependent library files reside from the directory
3129 in which they are installed (and from which they are presumably copied
3130 to the former directory by occult means).
3133 case "$installarchlib" in
3134 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3135 *) dflt="$installarchlib";;
3138 rp='Where will architecture-dependent library files be installed?'
3140 installarchlib="$ans"
3142 installarchlib="$archlibexp"
3144 if $test X"$archlib" = X"$privlib"; then
3150 : make some quick guesses about what we are up against
3152 $echo $n "Hmm... $c"
3162 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3163 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3165 echo "Looks kind of like an OSF/1 system, but we'll see..."
3167 elif test `echo abc | tr a-z A-Z` = Abc ; then
3168 xxx=`./loc addbib blurfl $pth`
3169 if $test -f $xxx; then
3170 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3174 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3175 echo "Looks kind of like an extended USG system, but we'll see..."
3177 echo "Looks kind of like a USG system, but we'll see..."
3181 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3182 echo "Looks kind of like a BSD system, but we'll see..."
3186 echo "Looks kind of like a Version 7 system, but we'll see..."
3189 case "$eunicefix" in
3192 There is, however, a strange, musty smell in the air that reminds me of
3193 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3197 : it so happens the Eunice I know will not run shell scripts in Unix format
3201 echo "Congratulations. You aren't running Eunice."
3205 : Detect OS2. The p_ variable is set above in the Head.U unit.
3210 I have the feeling something is not exactly right, however...don't tell me...
3211 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3216 if test -f /xenix; then
3217 echo "Actually, this looks more like a XENIX system..."
3222 echo "It's not Xenix..."
3227 if test -f /venix; then
3228 echo "Actually, this looks more like a VENIX system..."
3235 echo "Nor is it Venix..."
3238 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3239 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3242 : see if setuid scripts can be secure
3245 Some kernels have a bug that prevents setuid #! scripts from being
3246 secure. Some sites have disabled setuid #! scripts because of this.
3248 First let's decide if your kernel supports secure setuid #! scripts.
3249 (If setuid #! scripts would be secure but have been disabled anyway,
3250 don't say that they are secure if asked.)
3255 if $test -d /dev/fd; then
3256 echo "#!$ls" >reflect
3257 chmod +x,u+s reflect
3258 ./reflect >flect 2>&1
3259 if $contains "/dev/fd" flect >/dev/null; then
3260 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3264 If you are not sure if they are secure, I can check but I'll need a
3265 username and password different from the one you are using right now.
3266 If you don't have such a username or don't want me to test, simply
3270 rp='Other username to test security of setuid scripts with?'
3275 case "$d_suidsafe" in
3276 '') echo "I'll assume setuid scripts are *not* secure." >&4
3279 echo "Well, the $hint value is *not* secure." >&4
3281 *) echo "Well, the $hint value *is* secure." >&4
3286 $rm -f reflect flect
3287 echo "#!$ls" >reflect
3288 chmod +x,u+s reflect
3291 echo '"su" will (probably) prompt you for '"$ans's password."
3292 su $ans -c './reflect >flect'
3293 if $contains "/dev/fd" flect >/dev/null; then
3294 echo "Okay, it looks like setuid scripts are secure." >&4
3297 echo "I don't think setuid scripts are secure." >&4
3302 rp='Does your kernel have *secure* setuid scripts?'
3305 [yY]*) val="$define";;
3310 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3311 echo "(That's for file descriptors, not floppy disks.)"
3317 $rm -f reflect flect
3319 : now see if they want to do setuid emulation
3322 case "$d_suidsafe" in
3325 echo "No need to emulate SUID scripts since they are secure here." >& 4
3329 Some systems have disabled setuid scripts, especially systems where
3330 setuid scripts cannot be secure. On systems where setuid scripts have
3331 been disabled, the setuid/setgid bits on scripts are currently
3332 useless. It is possible for $package to detect those bits and emulate
3333 setuid/setgid in a secure fashion. This emulation will only work if
3334 setuid scripts have been disabled in your kernel.
3338 "$define") dflt=y ;;
3341 rp="Do you want to do setuid/setgid emulation?"
3344 [yY]*) val="$define";;
3352 : determine where manual pages are on this system
3356 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3357 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3358 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3359 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3360 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3361 sysman=`./loc . /usr/man/man1 $syspath`
3364 if $test -d "$sysman"; then
3365 echo "System manual is in $sysman." >&4
3367 echo "Could not find manual pages in source form." >&4
3370 : see what memory models we can support
3373 $cat >pdp11.c <<'EOP'
3382 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3383 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3384 dflt='unsplit split'
3386 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3389 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3394 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3397 if $test -d /lib/large || $test -d /usr/lib/large; then
3400 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3409 Some systems have different model sizes. On most systems they are called
3410 small, medium, large, and huge. On the PDP11 they are called unsplit and
3411 split. If your system doesn't support different memory models, say "none".
3412 If you wish to force everything to one memory model, say "none" here and
3413 put the appropriate flags later when it asks you for other cc and ld flags.
3414 Venix systems may wish to put "none" and let the compiler figure things out.
3415 (In the following question multiple model names should be space separated.)
3417 The default for most systems is "none".
3420 rp="Which memory models are supported?"
3435 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3436 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3443 rp="What flag indicates separate I and D space?"
3451 *large*|*small*|*medium*|*huge*)
3458 rp="What flag indicates large model?"
3468 *huge*) case "$huge" in
3472 rp="What flag indicates huge model?"
3482 *medium*) case "$medium" in
3486 rp="What flag indicates medium model?"
3493 *) medium="$large";;
3496 *small*) case "$small" in
3500 rp="What flag indicates small model?"
3511 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3514 $rm -f pdp11.* pdp11
3516 : see if we need a special compiler
3524 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3525 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3539 On some older systems the default C compiler will not resolve multiple global
3540 references that happen to have the same name. On some such systems the "Mcc"
3541 command may be used to force these to be resolved. On other systems a "cc -M"
3542 command is required. (Note that the -M flag on other systems indicates a
3543 memory model to use!) If you have the Gnu C compiler, you might wish to use
3549 rp="Use which C compiler?"
3557 rp="Use which C compiler?"
3561 : Look for a hint-file generated 'call-back-unit'. Now that the
3562 : user has specified the compiler, we may need to set or change some
3564 if $test -f cc.cbu; then
3568 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3569 $cat >gccvers.c <<EOM
3574 printf("%s\n", __VERSION__);
3576 printf("%s\n", "1");
3582 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3583 gccversion=`./gccvers`
3584 case "$gccversion" in
3585 '') echo "You are not using GNU cc." ;;
3586 *) echo "You are using GNU cc $gccversion." ;;
3590 echo "*** WHOA THERE!!! ***" >&4
3591 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3592 case "$knowitall" in
3594 echo " You'd better start hunting for one and let me know about it." >&4
3600 case "$gccversion" in
3601 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3604 : What should the include directory be ?
3606 $echo $n "Hmm... $c"
3610 if $test -f /bin/mips && /bin/mips; then
3611 echo "Looks like a MIPS system..."
3612 $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3617 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618 dflt='/bsd43/usr/include'
3622 mips_type='System V'
3624 $rm -f usr.c usr.out
3625 echo "and you're compiling with the $mips_type compiler and libraries."
3629 echo "Doesn't look like a MIPS system."
3639 case "$xxx_prompt" in
3642 rp='Where are the include files you want to use?'
3650 : see how we invoke the C preprocessor
3652 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3653 cat <<'EOT' >testcpp.c
3659 if test ! -f cppstdin; then
3660 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3662 echo "Keeping your $hint cppstdin wrapper."
3665 wrapper=`pwd`/cppstdin
3669 if $test "X$cppstdin" != "X" && \
3670 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3671 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3673 echo "You used to use $cppstdin $cppminus so we'll use that again."
3675 '') echo "But let's see if we can live without a wrapper..." ;;
3677 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3678 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3680 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3683 echo "(However, $cpprun $cpplast does not work, let's see...)"
3691 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3698 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3699 $cc -E <testcpp.c >testcpp.out 2>&1; \
3700 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3701 echo "Yup, it does."
3704 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3705 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3706 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3707 echo "Yup, it does."
3710 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3711 $cc -P <testcpp.c >testcpp.out 2>&1; \
3712 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3713 echo "Yipee, that works!"
3716 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3717 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3718 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3719 echo "At long last!"
3722 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3723 $cpp <testcpp.c >testcpp.out 2>&1; \
3724 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3728 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3729 $cpp - <testcpp.c >testcpp.out 2>&1; \
3730 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3731 echo "Hooray, it works! I was beginning to wonder."
3734 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3735 $wrapper <testcpp.c >testcpp.out 2>&1; \
3736 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742 rp="No dice. I can't find a C preprocessor. Name one:"
3746 $x_cpp <testcpp.c >testcpp.out 2>&1
3747 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748 echo "OK, that will do." >&4
3750 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3765 echo "Perhaps can we force $cc -E using a wrapper..."
3766 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3767 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3773 echo "Nope, we'll have to live without it..."
3787 "$wrapper"|'cppstdin') ;;
3788 *) $rm -f $wrapper;;
3790 $rm -f testcpp.c testcpp.out
3792 : Set private lib path
3795 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3800 '') dlist="$loclibpth $plibpth $glibpth";;
3801 *) dlist="$libpth";;
3804 : Now check and see which directories actually exist, avoiding duplicates
3808 if $test -d $xxx; then
3811 *) libpth="$libpth $xxx";;
3817 Some systems have incompatible or broken versions of libraries. Among
3818 the directories listed in the question below, please remove any you
3819 know not to be holding relevant libraries, and add any that are needed.
3820 Say "none" for none.
3831 rp="Directories to use for library searches?"
3838 : compute shared library extension
3841 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3851 On some systems, shared libraries may be available. Answer 'none' if
3852 you want to suppress searching of shared libraries for the remaining
3853 of this configuration.
3856 rp='What is the file extension used for shared libraries?'
3860 : Define several unixisms.
3861 : Hints files or command line option can be used to override them.
3862 : The convoluted testing is in case hints files set either the old
3865 '') case "$exe_ext" in
3867 *) _exe="$exe_ext" ;;
3872 '') case "$lib_ext" in
3879 '') case "$obj_ext" in
3886 '') case "$path_sep" in
3897 : Which makefile gets called first. This is used by make depend.
3898 case "$firstmakefile" in
3899 '') firstmakefile='makefile';;
3902 : Looking for optional libraries
3904 echo "Checking for optional libraries..." >&4
3909 case "$libswanted" in
3910 '') libswanted='c_s';;
3912 for thislib in $libswanted; do
3914 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3915 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3916 echo "Found -l$thislib (shared)."
3919 *) dflt="$dflt -l$thislib";;
3921 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3922 echo "Found -l$thislib (shared)."
3925 *) dflt="$dflt -l$thislib";;
3927 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3928 echo "Found -l$thislib."
3931 *) dflt="$dflt -l$thislib";;
3933 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3934 echo "Found -l$thislib."
3937 *) dflt="$dflt -l$thislib";;
3939 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3940 echo "Found -l${thislib}_s."
3943 *) dflt="$dflt -l${thislib}_s";;
3945 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3946 echo "Found -l$thislib."
3949 *) dflt="$dflt -l$thislib";;
3952 echo "No -l$thislib."
3963 ' '|'') dflt='none';;
3968 Some versions of Unix support shared libraries, which make executables smaller
3969 but make load time slightly longer.
3971 On some systems, mostly System V Release 3's, the shared library is included
3972 by putting the option "-lc_s" as the last thing on the cc command line when
3973 linking. Other systems use shared libraries by default. There may be other
3974 libraries needed to compile $package on your machine as well. If your system
3975 needs the "-lc_s" option, include it here. Include any other special libraries
3976 here as well. Say "none" for none.
3980 rp="Any additional libraries?"
3987 : determine optimize, if desired, or use for debug flag also
3989 ' '|$undef) dflt='none';;
3991 *) dflt="$optimize";;
3995 Some C compilers have problems with their optimizers. By default, $package
3996 compiles with the -O flag to use the optimizer. Alternately, you might want
3997 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3998 systems). Either flag can be specified here. To use neither flag, specify
4002 rp="What optimizer/debugger flag should be used?"
4006 'none') optimize=" ";;
4010 : We will not override a previous value, but we might want to
4011 : augment a hint file
4014 case "$gccversion" in
4015 1*) dflt='-fpcc-struct-return' ;;
4018 *-g*) dflt="$dflt -DDEBUGGING";;
4020 case "$gccversion" in
4021 2*) if test -d /etc/conf/kconfig.d &&
4022 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4031 case "$mips_type" in
4032 *BSD*|'') inclwanted="$locincpth $usrinc";;
4033 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4035 for thisincl in $inclwanted; do
4036 if $test -d $thisincl; then
4037 if $test x$thisincl != x$usrinc; then
4040 *) dflt="$dflt -I$thisincl";;
4046 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4048 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4056 *) dflt="$dflt -D$2";;
4061 set signal.h __LANGUAGE_C__; eval $inctest
4063 set signal.h LANGUAGE_C; eval $inctest
4067 none|recommended) dflt="$ccflags $dflt" ;;
4068 *) dflt="$ccflags";;
4076 Your C compiler may want other flags. For this question you should include
4077 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4078 but you should NOT include libraries or ld flags like -lwhatever. If you
4079 want $package to honor its debug switch, you should include -DDEBUGGING here.
4080 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4082 To use no flags, specify the word "none".
4088 rp="Any additional cc flags?"
4095 : the following weeds options from ccflags that are of no interest to cpp
4097 case "$gccversion" in
4098 1*) cppflags="$cppflags -D__GNUC__"
4100 case "$mips_type" in
4102 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4108 echo "Let me guess what the preprocessor flags are..." >&4
4122 *) ftry="$previous $flag";;
4124 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4125 >cpp1.out 2>/dev/null && \
4126 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4127 >cpp2.out 2>/dev/null && \
4128 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4129 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4131 cppflags="$cppflags $ftry"
4141 *-*) echo "They appear to be: $cppflags";;
4143 $rm -f cpp.c cpp?.out
4147 : flags used in final linking phase
4149 '') if ./venix; then
4155 *-posix*) dflt="$dflt -posix" ;;
4158 *) dflt="$ldflags";;
4161 : Try to guess additional flags to pick up local libraries.
4162 for thislibdir in $libpth; do
4163 case " $loclibpth " in
4166 *"-L$thislibdir "*) ;;
4167 *) dflt="$dflt -L$thislibdir" ;;
4179 Your C linker may need flags. For this question you should
4180 include -L/whatever and any other flags used by the C linker, but you
4181 should NOT include libraries like -lwhatever.
4183 Make sure you include the appropriate -L/path flags if your C linker
4184 does not normally search all of the directories you specified above,
4187 To use no flags, specify the word "none".
4191 rp="Any additional ld flags (NOT including libraries)?"
4197 rmlist="$rmlist pdp11"
4201 echo "Checking your choice of C compiler and flags for coherency..." >&4
4202 $cat > try.c <<'EOF'
4204 main() { printf("Ok\n"); exit(0); }
4206 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4208 $cat >try.msg <<'EOM'
4209 I've tried to compile and run the following simple program:
4212 $cat try.c >> try.msg
4214 $cat >> try.msg <<EOM
4221 and I got the following output:
4225 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4226 if sh -c './try' >>try.msg 2>&1; then
4230 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4233 cat >> try.msg <<'EOQS'
4234 If $libs contains -lsfio, and sfio is mis-configured, then it
4235 sometimes (apparently) runs and exits with a 0 status, but with no
4236 output! It may have to do with sfio's use of _exit vs. exit.
4239 rp="You have a big problem. Shall I abort Configure"
4246 echo "The program compiled OK, but exited with status $?." >>try.msg
4247 rp="You have a problem. Shall I abort Configure"
4251 echo "I can't compile the test program." >>try.msg
4252 rp="You have a BIG problem. Shall I abort Configure"
4258 case "$knowitall" in
4260 echo "(The supplied flags or libraries might be incorrect.)"
4268 *) echo "Ok. Stopping Configure." >&4
4273 n) echo "OK, that should do.";;
4275 $rm -f try try.* core
4277 : determine filename position in cpp output
4279 echo "Computing filename position in cpp output for #include directives..." >&4
4280 echo '#include <stdio.h>' > foo.c
4283 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4284 $grep '^[ ]*#.*stdio\.h' | \
4285 while read cline; do
4288 while $test \$# -gt 0; do
4289 if $test -r \`echo \$1 | $tr -d '"'\`; then
4294 pos=\`expr \$pos + 1\`
4306 *) pos="${fieldn}th";;
4308 echo "Your cpp writes the filename in the $pos field of the line."
4310 : locate header file
4315 if test -f $usrinc/\$wanted; then
4316 echo "$usrinc/\$wanted"
4319 awkprg='{ print \$$fieldn }'
4320 echo "#include <\$wanted>" > foo\$\$.c
4321 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4322 $grep "^[ ]*#.*\$wanted" | \
4323 while read cline; do
4324 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4326 */\$wanted) echo "\$name"; exit 0;;
4337 : define an alternate in-header-list? function
4338 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4339 cont=true; xxf="echo \"<\$1> found.\" >&4";
4340 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4341 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4343 case $# in 4) instead=instead;; *) instead="at last";; esac;
4344 while $test "$cont"; do
4346 var=$2; eval "was=\$$2";
4347 if $test "$xxx" && $test -r "$xxx";
4349 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4352 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4353 set $yyy; shift; shift; yyy=$@;
4354 case $# in 0) cont="";;
4355 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4356 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4357 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4358 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4362 do set $yyy; var=$2; eval "was=\$$2";
4363 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4364 set $yyy; shift; shift; yyy=$@;
4367 : see if this is a malloc.h system
4368 set malloc.h i_malloc
4371 : see if stdlib is available
4372 set stdlib.h i_stdlib
4375 : determine which malloc to compile in
4377 case "$usemymalloc" in
4378 ''|[yY]*|true|$define) dflt='y' ;;
4381 rp="Do you wish to attempt to use the malloc that comes with $package?"
4387 mallocsrc='malloc.c'
4388 mallocobj="malloc$_o"
4389 d_mymalloc="$define"
4392 : Remove malloc from list of libraries to use
4393 echo "Removing unneeded -lmalloc from library list" >&4
4394 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4397 echo "libs = $libs" >&4
4409 : compute the return types of malloc and free
4411 $cat >malloc.c <<END
4415 #include <sys/types.h>
4429 case "$malloctype" in
4431 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4438 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4442 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4449 echo "Your system uses $freetype free(), it would seem." >&4
4451 : Cruising for prototypes
4453 echo "Checking out function prototypes..." >&4
4454 $cat >prototype.c <<'EOCP'
4455 int main(int argc, char *argv[]) {
4458 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4459 echo "Your C compiler appears to support function prototypes."
4462 echo "Your C compiler doesn't seem to understand function prototypes."
4469 case "$prototype" in
4471 *) ansi2knr='ansi2knr'
4476 This version of $package can only be compiled by a compiler that
4477 understands function prototypes. Unfortunately, your C compiler
4479 doesn't seem to understand them. Sorry about that.
4481 If GNU cc is available for your system, perhaps you could try that instead.
4483 Eventually, we hope to support building Perl with pre-ANSI compilers.
4484 If you would like to help in that effort, please contact <perlbug@perl.org>.
4486 Aborting Configure now.
4492 : determine where public executables go
4497 rp='Pathname where the public executables will reside?'
4499 if $test "X$ansexp" != "X$binexp"; then
4507 Since you are running AFS, I need to distinguish the directory in which
4508 executables reside from the directory in which they are installed (and from
4509 which they are presumably copied to the former directory by occult means).
4512 case "$installbin" in
4513 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4514 *) dflt="$installbin";;
4517 rp='Where will public executables be installed?'
4521 installbin="$binexp"
4524 : determine whether to install perl also as /usr/bin/perl
4527 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4529 Many scripts expect to perl to be installed as /usr/bin/perl.
4530 I can install the perl you are about to compile also as /usr/bin/perl
4531 (in addition to $installbin/perl).
4533 case "$installusrbinperl" in
4534 "$undef"|[nN]*) dflt='n';;
4537 rp="Do you want to install perl as /usr/bin/perl?"
4540 [yY]*) val="$define";;
4546 set installusrbinperl
4549 : define a shorthand compile call
4553 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4554 : define a shorthand compile call for compilations that should be ok.
4558 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4561 echo "Checking for GNU C Library..." >&4
4562 cat >gnulibc.c <<EOM
4574 if eval $compile_ok && ./gnulibc; then
4576 echo "You are using the GNU C Library"
4579 echo "You are not using the GNU C Library"
4585 : see if nm is to be used to determine whether a symbol is defined or not
4589 case "$d_gnulibc" in
4592 echo "nm probably won't work on the GNU C Library." >&4
4598 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4600 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4601 echo "'nm' won't be sufficient on this sytem." >&4
4607 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4608 if $test $dflt -gt 20; then
4618 true|$define) dflt=y;;
4625 I can use $nm to extract the symbols from your C libraries. This
4626 is a time consuming task which may generate huge output on the disk (up
4627 to 3 megabytes) but that should make the symbols extraction faster. The
4628 alternative is to skip the 'nm' extraction part and to compile a small
4629 test program instead to determine whether each symbol is present. If
4630 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4631 this may be the best solution.
4633 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4636 rp="Shall I use $nm to extract C symbols from the libraries?"
4639 [Nn]*) usenm=false;;
4648 : nm options which may be necessary
4650 '') if $test -f /mach_boot; then
4652 elif $test -d /usr/ccs/lib; then
4653 nm_opt='-p' # Solaris (and SunOS?)
4654 elif $test -f /dgux; then
4656 elif $test -f /lib64/rld; then
4657 nm_opt='-p' # 64-bit Irix
4663 : nm options which may be necessary for shared libraries but illegal
4664 : for archive libraries. Thank you, Linux.
4665 case "$nm_so_opt" in
4666 '') case "$myuname" in
4668 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4669 nm_so_opt='--dynamic'
4678 : get list of predefined functions in a handy place
4683 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4690 *) for thislib in $libs; do
4693 : Handle C library specially below.
4696 thislib=`echo $thislib | $sed -e 's/^-l//'`
4697 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4699 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4701 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4703 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4705 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4707 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4709 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4714 libnames="$libnames $try"
4716 *) libnames="$libnames $thislib" ;;
4725 for xxx in $libpth; do
4726 $test -r $1 || set $xxx/libc.$so
4727 : The messy sed command sorts on library version numbers.
4729 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4730 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4732 s/[0-9][0-9]*/0000&/g
4733 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4736 sort | $sed -e 's/^.* //'`
4739 $test -r $1 || set /usr/ccs/lib/libc.$so
4740 $test -r $1 || set /lib/libsys_s$_a
4746 if $test -r "$1"; then
4747 echo "Your (shared) C library seems to be in $1."
4749 elif $test -r /lib/libc && $test -r /lib/clib; then
4750 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4752 libc='/lib/clib /lib/libc'
4753 if $test -r /lib/syslib; then
4754 echo "(Your math library is in /lib/syslib.)"
4755 libc="$libc /lib/syslib"
4757 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4758 echo "Your C library seems to be in $libc, as you said before."
4759 elif $test -r $incpath/usr/lib/libc$_a; then
4760 libc=$incpath/usr/lib/libc$_a;
4761 echo "Your C library seems to be in $libc. That's fine."
4762 elif $test -r /lib/libc$_a; then
4764 echo "Your C library seems to be in $libc. You're normal."
4766 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4768 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4769 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4770 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4772 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4774 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4777 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4779 if $test -r "$tans"; then
4780 echo "Your C library seems to be in $tans, of all places."
4786 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4790 If the guess above is wrong (which it might be if you're using a strange
4791 compiler, or your machine supports multiple models), you can override it here.
4796 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4798 I can't seem to find your C library. I've looked in the following places:
4801 $sed 's/^/ /' libpath
4804 None of these seems to contain your C library. I need to get its name...
4809 rp='Where is your C library?'
4814 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4815 set X `cat libnames`
4818 case $# in 1) xxx=file; esac
4819 echo "Extracting names from the following $xxx for later perusal:" >&4
4821 $sed 's/^/ /' libnames >&4
4823 $echo $n "This may take a while...$c" >&4
4827 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4828 *) $nm $nm_opt $file 2>/dev/null;;
4833 $grep fprintf libc.tmp > libc.ptf
4834 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4835 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4837 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4839 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4841 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4843 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4845 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4847 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4849 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4851 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4853 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4855 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4857 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4861 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4862 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4864 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4866 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4868 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4872 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4876 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4886 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4890 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4895 $nm -p $* 2>/dev/null >libc.tmp
4896 $grep fprintf libc.tmp > libc.ptf
4897 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4898 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4904 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4906 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4907 for thisname in $libnames $libc; do
4908 $ar t $thisname >>libc.tmp
4910 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4912 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4913 # Repeat libc to extract forwarders to DLL entries too
4914 for thisname in $libnames $libc; do
4915 $ar tv $thisname >>libc.tmp
4916 # Revision 50 of EMX has bug in $ar.
4917 # it will not extract forwarders to DLL entries
4918 # Use emximp which will extract exactly them.
4919 emximp -o tmp.imp $thisname \
4921 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4922 < tmp.imp >>libc.tmp
4925 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4928 echo "$ar didn't seem to work right." >&4
4929 echo "Maybe this is a Cray...trying bld instead..." >&4
4930 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4932 for thisname in $libnames; do
4934 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4935 $ar t $thisname >>libc.tmp
4939 echo "That didn't work either. Giving up." >&4
4946 if $test -f /lib/syscalls.exp; then
4948 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4949 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4953 $rm -f libnames libpath
4955 : see if dld is available
4959 : is a C symbol defined?
4962 -v) tf=libc.tmp; tc=""; tdc="";;
4963 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4964 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4967 case "$reuseval-$4" in
4969 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4975 if $contains $tlook $tf >/dev/null 2>&1;
4980 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4981 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4989 $define) tval=true;;
4995 : define an is-in-libc? function
4996 inlibc='echo " "; td=$define; tu=$undef;
4997 sym=$1; var=$2; eval "was=\$$2";
4999 case "$reuseval$was" in
5009 echo "$sym() found." >&4;
5010 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5012 echo "$sym() NOT found." >&4;
5013 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5017 $define) echo "$sym() found." >&4;;
5018 *) echo "$sym() NOT found." >&4;;
5022 : see if dlopen exists
5029 : determine which dynamic loading, if any, to compile in
5031 dldir="ext/DynaLoader"
5044 $define) dflt='y' ;;
5047 $define) dflt='y' ;;
5049 : Does a dl_xxx.xs file exist for this operating system
5050 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5053 rp="Do you wish to use dynamic loading?"
5060 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5061 dflt="$dldir/dl_${osname}.xs"
5062 elif $test "$d_dlopen" = "$define" ; then
5063 dflt="$dldir/dl_dlopen.xs"
5064 elif $test "$i_dld" = "$define" ; then
5065 dflt="$dldir/dl_dld.xs"
5070 *) dflt="$dldir/$dlsrc"
5073 echo "The following dynamic loading files are available:"
5074 : Can not go over to $dldir because getfile has path hard-coded in.
5075 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5076 rp="Source file to use for dynamic loading"
5078 # XXX This getfile call will fail the existence check if you try
5079 # building away from $src (this is not supported yet).
5083 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5087 Some systems may require passing special flags to $cc -c to
5088 compile modules that will be used to create a shared library.
5089 To use no flags, say "none".
5092 case "$cccdlflags" in
5093 '') case "$gccversion" in
5094 '') case "$osname" in
5096 next) dflt='none' ;;
5097 irix*) dflt='-KPIC' ;;
5098 svr4*|esix*|solaris) dflt='-KPIC' ;;
5099 sunos) dflt='-pic' ;;
5103 *) case "$osname" in
5104 svr4*|esix*|solaris) dflt='-fPIC' ;;
5109 *) dflt="$cccdlflags" ;;
5111 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5114 none) cccdlflags=' ' ;;
5115 *) cccdlflags="$ans" ;;
5120 Some systems use ld to create libraries that can be dynamically loaded,
5121 while other systems (such as those using ELF) use $cc.
5125 '') $cat >try.c <<'EOM'
5126 /* Test for whether ELF binaries are produced */
5131 int i = open("a.out",O_RDONLY);
5134 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5135 exit(0); /* succeed (yes, it's ELF) */
5140 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5142 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5146 echo "I'll use ld to build dynamic libraries."
5155 rp="What command should be used to create dynamic libraries?"
5161 Some systems may require passing special flags to $ld to create a
5162 library that can be dynamically loaded. If your ld flags include
5163 -L/other/path options to locate libraries outside your loader's normal
5164 search path, you may need to specify those -L options here as well. To
5165 use no flags, say "none".
5168 case "$lddlflags" in
5169 '') case "$osname" in
5170 beos) dflt='-nostart' ;;
5172 linux|irix*) dflt='-shared' ;;
5173 next) dflt='none' ;;
5174 solaris) dflt='-G' ;;
5175 sunos) dflt='-assert nodefinitions' ;;
5176 svr4*|esix*) dflt="-G $ldflags" ;;
5180 *) dflt="$lddlflags" ;;
5183 : Try to guess additional flags to pick up local libraries.
5184 : Be careful not to append to a plain 'none'
5188 for thisflag in $ldflags; do
5193 *) dflt="$dflt $thisflag" ;;
5200 ''|' ') dflt='none' ;;
5203 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5206 none) lddlflags=' ' ;;
5207 *) lddlflags="$ans" ;;
5212 Some systems may require passing special flags to $cc to indicate that
5213 the resulting executable will use dynamic linking. To use no flags,
5217 case "$ccdlflags" in
5218 '') case "$osname" in
5219 hpux) dflt='-Wl,-E' ;;
5220 linux) dflt='-rdynamic' ;;
5221 next) dflt='none' ;;
5222 sunos) dflt='none' ;;
5226 *) dflt="$ccdlflags" ;;
5228 rp="Any special flags to pass to $cc to use dynamic loading?"
5231 none) ccdlflags=' ' ;;
5232 *) ccdlflags="$ans" ;;
5246 # No dynamic loading being used, so don't bother even to prompt.
5249 *) case "$useshrplib" in
5250 '') case "$osname" in
5251 svr4*|dgux|dynixptx|esix|powerux|beos)
5253 also='Building a shared libperl is required for dynamic loading to work on your system.'
5258 also='Building a shared libperl is needed for MAB support.'
5276 The perl executable is normally obtained by linking perlmain.c with
5277 libperl${_a}, any static extensions (usually just DynaLoader), and
5278 any other libraries needed on this system (such as -lm, etc.). Since
5279 your system supports dynamic loading, it is probably possible to build
5280 a shared libperl.$so. If you will have more than one executable linked
5281 to libperl.$so, this will significantly reduce the size of each
5282 executable, but it may have a noticeable affect on performance. The
5283 default is probably sensible for your system.
5287 rp="Build a shared libperl.$so (y/n)"
5292 # Why does next4 have to be so different?
5293 case "${osname}${osvers}" in
5294 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5295 os2*) xxx='' ;; # Nothing special needed.
5297 *) xxx='LD_LIBRARY_PATH' ;;
5299 if test X"$xxx" != "X"; then
5300 $cat <<EOM | $tee -a ../config.msg >&4
5302 To build perl, you must add the current working directory to your
5303 $xxx environment variable before running make. You can do
5305 $xxx=\`pwd\`:\$$xxx; export $xxx
5306 for Bourne-style shells, or
5308 for Csh-style shells. You *MUST* do this before running make.
5313 *) useshrplib='false' ;;
5318 case "$useshrplib" in
5322 # Figure out a good name for libperl.so. Since it gets stored in
5323 # a version-specific architecture-dependent library, the version
5324 # number isn't really that important, except for making cc/ld happy.
5326 # A name such as libperl.so.3.1
5327 majmin="libperl.$so.$patchlevel.$subversion"
5328 # A name such as libperl.so.301
5329 majonly=`echo $patchlevel $subversion |
5330 $awk '{printf "%d%02d", $1, $2}'`
5331 majonly=libperl.$so.$majonly
5332 # I'd prefer to keep the os-specific stuff here to a minimum, and
5333 # rely on figuring it out from the naming of libc.
5334 case "${osname}${osvers}" in
5337 # XXX How handle the --version stuff for MAB?
5339 linux*) # ld won't link with a bare -lperl otherwise.
5342 *) # Try to guess based on whether libc has major.minor.
5344 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5345 *libc.$so.[0-9]*) dflt=$majonly ;;
5346 *) dflt=libperl.$so ;;
5356 I need to select a good name for the shared libperl. If your system uses
5357 library names with major and minor numbers, then you might want something
5358 like $majmin. Alternatively, if your system uses a single version
5359 number for shared libraries, then you might want to use $majonly.
5360 Or, your system might be quite happy with a simple libperl.$so.
5362 Since the shared libperl will get installed into a version-specific
5363 architecture-dependent directory, the version number of the shared perl
5364 library probably isn't important, so the default should be o.k.
5367 rp='What name do you want to give to the shared libperl?'
5370 echo "Ok, I'll use $libperl"
5373 libperl="libperl${_a}"
5377 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5381 WARNING: Use of the shrpdir variable for the installation location of
5382 the shared $libperl is not supported. It was never documented and
5383 will not work in this version. Let me (perlbug@perl.com)
5384 know of any problems this may cause.
5390 But your current setting of $shrpdir is
5391 the default anyway, so it's harmless.
5396 Further, your current attempted setting of $shrpdir
5397 conflicts with the value of $archlibexp/CORE
5398 that installperl will use.
5405 # How will the perl executable find the installed shared $libperl?
5406 # Add $xxx to ccdlflags.
5407 # If we can't figure out a command-line option, use $shrpenv to
5408 # set env LD_RUN_PATH. The main perl makefile uses this.
5409 shrpdir=$archlibexp/CORE
5412 if "$useshrplib"; then
5415 # We'll set it in Makefile.SH...
5421 xxx="-Wl,-R$shrpdir"
5423 linux|irix*|dec_osf)
5424 xxx="-Wl,-rpath,$shrpdir"
5427 # next doesn't like the default...
5430 # beos doesn't like the default, either.
5433 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5439 # Only add $xxx if it isn't already in ccdlflags.
5440 case " $ccdlflags " in
5442 *) ccdlflags="$ccdlflags $xxx"
5445 Adding $xxx to the flags
5446 passed to $ld so that the perl executable will find the
5447 installed shared $libperl.
5455 # Respect a hint or command-line value.
5457 '') shrpenv="$tmp_shrpenv" ;;
5460 : determine where manual pages go
5461 set man1dir man1dir none
5465 $spackage has manual pages available in source form.
5469 echo "However, you don't have nroff, so they're probably useless to you."
5471 '') man1dir="none";;
5474 echo "If you don't want the manual sources installed, answer 'none'."
5479 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5480 lookpath="$lookpath $prefixexp/man/p_man/man1"
5481 lookpath="$lookpath $prefixexp/man/u_man/man1"
5482 lookpath="$lookpath $prefixexp/man/man.1"
5484 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5485 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5495 rp="Where do the main $spackage manual pages (source) go?"
5497 if $test "X$man1direxp" != "X$ansexp"; then
5501 man1direxp="$ansexp"
5509 Since you are running AFS, I need to distinguish the directory in which
5510 manual pages reside from the directory in which they are installed (and from
5511 which they are presumably copied to the former directory by occult means).
5514 case "$installman1dir" in
5515 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5516 *) dflt="$installman1dir";;
5519 rp='Where will man pages be installed?'
5521 installman1dir="$ans"
5523 installman1dir="$man1direxp"
5526 : What suffix to use on installed man pages
5533 rp="What suffix should be used for the main $spackage man pages?"
5535 '') case "$man1dir" in
5549 *) dflt="$man1ext";;
5556 : see if we can have long filenames
5558 rmlist="$rmlist /tmp/cf$$"
5559 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5560 first=123456789abcdef
5561 second=/tmp/cf$$/$first
5562 $rm -f $first $second
5563 if (echo hi >$first) 2>/dev/null; then
5564 if $test -f 123456789abcde; then
5565 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5568 if (echo hi >$second) 2>/dev/null; then
5569 if $test -f /tmp/cf$$/123456789abcde; then
5571 That's peculiar... You can have filenames longer than 14 characters, but only
5572 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5573 I shall consider your system cannot support long filenames at all.
5577 echo 'You can have filenames longer than 14 characters.' >&4
5582 How confusing! Some of your filesystems are sane enough to allow filenames
5583 longer than 14 characters but some others like /tmp can't even think about them.
5584 So, for now on, I shall assume your kernel does not allow them at all.
5591 You can't have filenames longer than 14 chars. You can't even think about them!
5597 $rm -rf /tmp/cf$$ 123456789abcde*
5599 : determine where library module manual pages go
5600 set man3dir man3dir none
5604 $spackage has manual pages for many of the library modules.
5610 However, you don't have nroff, so they're probably useless to you.
5613 '') man3dir="none";;
5617 case "$d_flexfnam" in
5620 However, your system can't handle the long file names like File::Basename.3.
5623 '') man3dir="none";;
5627 echo "If you don't want the manual sources installed, answer 'none'."
5628 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5630 '') case "$prefix" in
5631 *$prog*) dflt=`echo $man1dir |
5632 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5633 *) dflt="$privlib/man/man3" ;;
5637 *) dflt="$man3dir" ;;
5642 rp="Where do the $package library man pages (source) go?"
5644 if test "X$man3direxp" != "X$ansexp"; then
5649 man3direxp="$ansexp"
5657 Since you are running AFS, I need to distinguish the directory in which
5658 manual pages reside from the directory in which they are installed (and from
5659 which they are presumably copied to the former directory by occult means).
5662 case "$installman3dir" in
5663 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5664 *) dflt="$installman3dir";;
5667 rp='Where will man pages be installed?'
5669 installman3dir="$ans"
5671 installman3dir="$man3direxp"
5674 : What suffix to use on installed man pages
5681 rp="What suffix should be used for the $package library man pages?"
5683 '') case "$man3dir" in
5697 *) dflt="$man3ext";;
5704 : see if we have to deal with yellow pages, now NIS.
5705 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5706 if $test -f /usr/etc/nibindd; then
5708 echo "I'm fairly confident you're on a NeXT."
5710 rp='Do you get the hosts file via NetInfo?'
5719 y*) hostcat='nidump hosts .';;
5720 *) case "$hostcat" in
5721 nidump*) hostcat='';;
5731 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5739 rp='Are you getting the hosts file via yellow pages?'
5742 y*) hostcat='ypcat hosts';;
5743 *) hostcat='cat /etc/hosts';;
5749 '') hostcat='cat /etc/hosts';;
5752 '') groupcat='cat /etc/group';;
5755 '') passcat='cat /etc/passwd';;
5758 : now get the host name
5760 echo "Figuring out host name..." >&4
5761 case "$myhostname" in
5763 echo 'Maybe "hostname" will work...'
5764 if tans=`sh -c hostname 2>&1` ; then
5772 if $test "$cont"; then
5774 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5775 if tans=`cat /etc/systemid 2>&1` ; then
5777 phostname='cat /etc/systemid'
5778 echo "Whadyaknow. Xenix always was a bit strange..."
5781 elif $test -r /etc/systemid; then
5782 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5785 if $test "$cont"; then
5786 echo 'No, maybe "uuname -l" will work...'
5787 if tans=`sh -c 'uuname -l' 2>&1` ; then
5789 phostname='uuname -l'
5791 echo 'Strange. Maybe "uname -n" will work...'
5792 if tans=`sh -c 'uname -n' 2>&1` ; then
5794 phostname='uname -n'
5796 echo 'Oh well, maybe I can mine it out of whoami.h...'
5797 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5798 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5799 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5801 case "$myhostname" in
5802 '') echo "Does this machine have an identity crisis or something?"
5805 echo "Well, you said $myhostname before..."
5806 phostname='echo $myhostname';;
5812 : you do not want to know about this
5817 if $test "$myhostname" ; then
5819 rp='Your host name appears to be "'$myhostname'".'" Right?"
5827 : bad guess or no guess
5828 while $test "X$myhostname" = X ; do
5830 rp="Please type the (one word) name of your host:"
5835 : translate upper to lower if necessary
5836 case "$myhostname" in
5838 echo "(Normalizing case in your host name)"
5839 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5843 case "$myhostname" in
5845 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5846 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5847 echo "(Trimming domain name from host name--host name is now $myhostname)"
5849 *) case "$mydomain" in
5852 test "X$hostcat" = "Xypcat hosts" &&
5853 ypmatch "$myhostname" hosts 2>/dev/null |\
5854 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5857 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5858 /[ ]$myhostname[ . ]/p" > hosts
5861 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5862 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5863 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5864 hosts | $sort | $uniq | \
5865 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5866 case `$echo X$dflt` in
5867 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5870 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5875 tans=`./loc resolv.conf X /etc /usr/etc`
5876 if $test -f "$tans"; then
5877 echo "(Attempting domain name extraction from $tans)"
5878 dflt=.`$sed -n -e 's/ / /g' \
5879 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5880 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5882 .) dflt=.`$sed -n -e 's/ / /g' \
5883 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5884 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5891 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5892 dflt=.`sh -c domainname 2>/dev/null`
5895 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5900 .) echo "(Lost all hope -- silly guess then)"
5906 *) dflt="$mydomain";;
5910 rp="What is your domain name?"
5920 : translate upper to lower if necessary
5923 echo "(Normalizing case in your domain name)"
5924 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5928 : a little sanity check here
5929 case "$phostname" in
5932 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5933 $myhostname$mydomain|$myhostname) ;;
5935 case "$phostname" in
5937 echo "(That doesn't agree with your whoami.h file, by the way.)"
5940 echo "(That doesn't agree with your $phostname command, by the way.)"
5950 I need to get your e-mail address in Internet format if possible, i.e.
5951 something like user@host.domain. Please answer accurately since I have
5952 no easy means to double check it. The default value provided below
5953 is most probably close to the reality but may not be valid from outside
5954 your organization...
5958 while test "$cont"; do
5960 '') dflt="$cf_by@$myhostname$mydomain";;
5961 *) dflt="$cf_email";;
5963 rp='What is your e-mail address?'
5969 rp='Address does not look like an Internet one. Use it anyway?'
5985 If you or somebody else will be maintaining perl at your site, please
5986 fill in the correct e-mail address here so that they may be contacted
5987 if necessary. Currently, the "perlbug" program included with perl
5988 will send mail to this address in addition to perlbug@perl.com. You may
5989 enter "none" for no administrator.
5992 case "$perladmin" in
5993 '') dflt="$cf_email";;
5994 *) dflt="$perladmin";;
5996 rp='Perl administrator e-mail address'
6000 : figure out how to guarantee perl startup
6001 case "$startperl" in
6003 case "$sharpbang" in
6007 I can use the #! construct to start perl on your system. This will
6008 make startup of perl scripts faster, but may cause problems if you
6009 want to share those scripts and perl is not in a standard place
6010 ($binexp/perl) on all your platforms. The alternative is to force
6011 a shell by starting the script with a single ':' character.
6015 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6018 none) startperl=": # use perl";;
6019 *) startperl="#!$ans"
6020 if $test 30 -lt `echo "$ans" | wc -c`; then
6023 WARNING: Some systems limit the #! command to 32 characters.
6024 If you experience difficulty running Perl scripts with #!, try
6025 installing Perl in a directory with a shorter pathname.
6031 *) startperl=": # use perl"
6036 echo "I'll use $startperl to start perl scripts."
6038 : figure best path for perl in scripts
6041 perlpath="$binexp/perl"
6042 case "$startperl" in
6047 I will use the "eval 'exec'" idiom to start Perl on your system.
6048 I can use the full path of your Perl binary for this purpose, but
6049 doing so may cause problems if you want to share those scripts and
6050 Perl is not always in a standard place ($binexp/perl).
6054 rp="What path shall I use in \"eval 'exec'\"?"
6061 case "$startperl" in
6063 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6066 : determine where public executable scripts go
6067 set scriptdir scriptdir
6069 case "$scriptdir" in
6072 : guess some guesses
6073 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6074 $test -d /usr/share/bin && dflt=/usr/share/bin
6075 $test -d /usr/local/script && dflt=/usr/local/script
6076 $test -d $prefixexp/script && dflt=$prefixexp/script
6080 *) dflt="$scriptdir"
6085 Some installations have a separate directory just for executable scripts so
6086 that they can mount it across multiple architectures but keep the scripts in
6087 one spot. You might, for example, have a subdirectory of /usr/share for this.
6088 Or you might just lump your scripts in with all your other executables.
6092 rp='Where do you keep publicly executable scripts?'
6094 if $test "X$ansexp" != "X$scriptdirexp"; then
6098 scriptdirexp="$ansexp"
6102 Since you are running AFS, I need to distinguish the directory in which
6103 scripts reside from the directory in which they are installed (and from
6104 which they are presumably copied to the former directory by occult means).
6107 case "$installscript" in
6108 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6109 *) dflt="$installscript";;
6112 rp='Where will public scripts be installed?'
6114 installscript="$ans"
6116 installscript="$scriptdirexp"
6119 : determine where site specific libraries go.
6120 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6121 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6123 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6124 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6129 The installation process will also create a directory for
6130 site-specific extensions and modules. Some users find it convenient
6131 to place all local files in this directory rather than in the main
6132 distribution directory.
6136 rp='Pathname for the site-specific library files?'
6138 if $test "X$sitelibexp" != "X$ansexp"; then
6142 sitelibexp="$ansexp"
6146 Since you are running AFS, I need to distinguish the directory in
6147 which site-specific files reside from the directory in which they are
6148 installed (and from which they are presumably copied to the former
6149 directory by occult means).
6152 case "$installsitelib" in
6153 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6154 *) dflt="$installsitelib";;
6157 rp='Where will site-specific files be installed?'
6159 installsitelib="$ans"
6161 installsitelib="$sitelibexp"
6164 : determine where site specific architecture-dependent libraries go.
6165 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6166 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6167 : sitelib may have an optional trailing /share.
6168 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6169 tdflt="$tdflt/$archname"
6170 set sitearch sitearch none
6173 '') dflt="$tdflt" ;;
6174 *) dflt="$sitearch" ;;
6178 The installation process will also create a directory for
6179 architecture-dependent site-specific extensions and modules.
6183 rp='Pathname for the site-specific architecture-dependent library files?'
6185 if $test "X$sitearchexp" != "X$ansexp"; then
6189 sitearchexp="$ansexp"
6193 Since you are running AFS, I need to distinguish the directory in
6194 which site-specific architecture-dependent library files reside from
6195 the directory in which they are installed (and from which they are
6196 presumably copied to the former directory by occult means).
6199 case "$installsitearch" in
6200 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6201 *) dflt="$installsitearch";;
6204 rp='Where will site-specific architecture-dependent files be installed?'
6206 installsitearch="$ans"
6208 installsitearch="$sitearchexp"
6213 Previous version of $package used the standard IO mechanisms as defined
6214 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6215 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6216 the default. This abstraction layer can use AT&T's sfio (if you already
6217 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6218 problems with some extension modules. Using PerlIO with stdio is safe,
6219 but it is slower than plain stdio and therefore is not the default.
6221 If this doesn't make any sense to you, just accept the default 'n'.
6223 case "$useperlio" in
6224 $define|true|[yY]*) dflt='y';;
6227 rp='Use the experimental PerlIO abstraction layer?'
6234 echo "Ok, doing things the stdio way"
6241 : Check how to convert floats to strings.
6242 if test "X$d_Gconvert" = X; then
6244 echo "Checking for an efficient way to convert floats to strings."
6247 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6248 char *myname = "gconvert";
6251 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6252 char *myname = "gcvt";
6255 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6256 char *myname = "sprintf";
6262 checkit(expect, got)
6266 if (strcmp(expect, got)) {
6267 printf("%s oddity: Expected %s, got %s\n",
6268 myname, expect, got);
6278 /* This must be 1st test on (which?) platform */
6279 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6280 Gconvert(0.1, 8, 0, buf);
6281 checkit("0.1", buf);
6283 Gconvert(1.0, 8, 0, buf);
6286 Gconvert(0.0, 8, 0, buf);
6289 Gconvert(-1.0, 8, 0, buf);
6292 /* Some Linux gcvt's give 1.e+5 here. */
6293 Gconvert(100000.0, 8, 0, buf);
6294 checkit("100000", buf);
6296 /* Some Linux gcvt's give -1.e+5 here. */
6297 Gconvert(-100000.0, 8, 0, buf);
6298 checkit("-100000", buf);
6303 case "$d_Gconvert" in
6304 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6305 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6306 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6307 *) xxx_list='gconvert gcvt sprintf' ;;
6310 for xxx_convert in $xxx_list; do
6311 echo "Trying $xxx_convert"
6313 set try -DTRY_$xxx_convert
6314 if eval $compile; then
6315 echo "$xxx_convert" found. >&4
6317 echo "I'll use $xxx_convert to convert floats into a string." >&4
6320 echo "...But $xxx_convert didn't work as I expected."
6323 echo "$xxx_convert NOT found." >&4
6327 case "$xxx_convert" in
6328 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6329 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6330 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6334 : Initialize h_fcntl
6337 : Initialize h_sysfile
6340 : access call always available on UNIX
6344 : locate the flags for 'access()'
6348 $cat >access.c <<'EOCP'
6349 #include <sys/types.h>
6354 #include <sys/file.h>
6363 : check sys/file.h first, no particular reason here
6364 if $test `./findhdr sys/file.h` && \
6365 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6367 echo "<sys/file.h> defines the *_OK access constants." >&4
6368 elif $test `./findhdr fcntl.h` && \
6369 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6371 echo "<fcntl.h> defines the *_OK access constants." >&4
6372 elif $test `./findhdr unistd.h` && \
6373 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6374 echo "<unistd.h> defines the *_OK access constants." >&4
6376 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6382 : see if accessx exists
6383 set accessx d_accessx
6386 : see if alarm exists
6390 : Look for GNU-cc style attribute checking
6392 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6393 $cat >attrib.c <<'EOCP'
6395 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6397 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6398 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6399 echo "Your C compiler doesn't fully support __attribute__."
6402 echo "Your C compiler supports __attribute__."
6406 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6413 : see if bcmp exists
6417 : see if bcopy exists
6421 : see if this is a unistd.h system
6422 set unistd.h i_unistd
6425 : see if getpgrp exists
6426 set getpgrp d_getpgrp
6429 case "$d_getpgrp" in
6432 echo "Checking to see which flavor of getpgrp is in use..."
6435 #include <sys/types.h>
6437 # include <unistd.h>
6441 if (getuid() == 0) {
6442 printf("(I see you are running Configure as super-user...)\n");
6446 if (getpgrp(1) == 0)
6455 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6456 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6458 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6459 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6462 echo "I can't seem to compile and run the test program."
6464 xxx="a USG one, i.e. you use getpgrp()."
6466 # SVR4 systems can appear rather BSD-ish.
6469 xxx="a BSD one, i.e. you use getpgrp(pid)."
6473 xxx="probably a USG one, i.e. you use getpgrp()."
6478 echo "Assuming your getpgrp is $xxx" >&4
6487 : see if setpgrp exists
6488 set setpgrp d_setpgrp
6491 case "$d_setpgrp" in
6494 echo "Checking to see which flavor of setpgrp is in use..."
6497 #include <sys/types.h>
6499 # include <unistd.h>
6503 if (getuid() == 0) {
6504 printf("(I see you are running Configure as super-user...)\n");
6508 if (-1 == setpgrp(1, 1))
6511 if (setpgrp() != -1)
6517 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6518 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6520 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6521 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6524 echo "(I can't seem to compile and run the test program.)"
6526 xxx="a USG one, i.e. you use setpgrp()."
6528 # SVR4 systems can appear rather BSD-ish.
6531 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6535 xxx="probably a USG one, i.e. you use setpgrp()."
6540 echo "Assuming your setpgrp is $xxx" >&4
6548 : see if bzero exists
6552 : check for lengths of integral types
6556 echo "Checking to see how big your integers are..." >&4
6557 $cat >intsize.c <<'EOCP'
6561 printf("intsize=%d;\n", sizeof(int));
6562 printf("longsize=%d;\n", sizeof(long));
6563 printf("shortsize=%d;\n", sizeof(short));
6568 if eval $compile_ok && ./intsize > /dev/null; then
6570 echo "Your integers are $intsize bytes long."
6571 echo "Your long integers are $longsize bytes long."
6572 echo "Your short integers are $shortsize bytes long."
6576 Help! I can't compile and run the intsize test program: please enlighten me!
6577 (This is probably a misconfiguration in your system or libraries, and
6578 you really ought to fix it. Still, I'll try anyway.)
6582 rp="What is the size of an integer (in bytes)?"
6586 rp="What is the size of a long integer (in bytes)?"
6590 rp="What is the size of a short integer (in bytes)?"
6596 $rm -f intsize intsize.*
6598 : see if signal is declared as pointer to function returning int or void
6600 xxx=`./findhdr signal.h`
6601 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6602 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6603 echo "You have int (*signal())() instead of void." >&4
6605 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6606 echo "You have void (*signal())()." >&4
6608 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6609 echo "You have int (*signal())() instead of void." >&4
6611 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6612 echo "You have void (*signal())()." >&4
6615 case "$d_voidsig" in
6617 echo "I can't determine whether signal handler returns void or int..." >&4
6619 rp="What type does your signal handler return?"
6626 echo "As you already told me, signal handler returns void." >&4
6629 *) echo "As you already told me, signal handler returns int." >&4
6636 case "$d_voidsig" in
6637 "$define") signal_t="void";;
6642 : check for ability to cast large floats to 32-bit ints.
6644 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6645 if $test "$intsize" -ge 4; then
6652 #include <sys/types.h>
6654 $signal_t blech(s) int s; { exit(3); }
6661 signal(SIGFPE, blech);
6663 /* Don't let compiler optimize the test away. Store the number
6664 in a writable string for gcc to pass to sscanf under HP/UX.
6666 sprintf(str, "2147483647");
6667 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6671 /* x86 processors will probably give 0x8000 0000, which is a
6672 sign change. We don't want that. We want to mimic SPARC
6673 behavior here, which is to preserve the sign and give
6676 if (i32 != ($xxx) f)
6682 if eval $compile_ok; then
6686 echo "(I can't seem to compile the test program--assuming it can't)"
6694 echo "Nope, it can't."
6701 : check for ability to cast negative floats to unsigned
6703 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6706 #include <sys/types.h>
6708 $signal_t blech(s) int s; { exit(7); }
6709 $signal_t blech_in_list(s) int s; { exit(4); }
6710 unsigned long dummy_long(p) unsigned long p; { return p; }
6711 unsigned int dummy_int(p) unsigned int p; { return p; }
6712 unsigned short dummy_short(p) unsigned short p; { return p; }
6716 unsigned long along;
6718 unsigned short ashort;
6722 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6723 a direct f = -123. assignment. gcc-2.8.0 reportedly
6724 optimized the whole file away
6726 /* Store the number in a writable string for gcc to pass to
6729 sprintf(str, "-123");
6730 sscanf(str, "%lf", &f); /* f = -123.; */
6732 signal(SIGFPE, blech);
6733 along = (unsigned long)f;
6734 aint = (unsigned int)f;
6735 ashort = (unsigned short)f;
6736 if (along != (unsigned long)-123)
6738 if (aint != (unsigned int)-123)
6740 if (ashort != (unsigned short)-123)
6742 sprintf(str, "1073741824.");
6743 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6746 along = (unsigned long)f;
6747 if (along != 0x80000000)
6751 along = (unsigned long)f;
6752 if (along != 0x7fffffff)
6756 along = (unsigned long)f;
6757 if (along != 0x80000001)
6761 signal(SIGFPE, blech_in_list);
6762 sprintf(str, "123.");
6763 sscanf(str, "%lf", &f); /* f = 123.; */
6764 along = dummy_long((unsigned long)f);
6765 aint = dummy_int((unsigned int)f);
6766 ashort = dummy_short((unsigned short)f);
6767 if (along != (unsigned long)123)
6769 if (aint != (unsigned int)123)
6771 if (ashort != (unsigned short)123)
6778 if eval $compile_ok; then
6782 echo "(I can't seem to compile the test program--assuming it can't)"
6785 case "$castflags" in
6790 echo "Nope, it can't."
6797 : see if vprintf exists
6799 if set vprintf val -f d_vprintf; eval $csym; $val; then
6800 echo 'vprintf() found.' >&4
6802 $cat >vprintf.c <<'EOF'
6803 #include <varargs.h>
6805 main() { xxx("foo"); }
6814 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6818 if eval $compile && ./vprintf; then
6819 echo "Your vsprintf() returns (int)." >&4
6822 echo "Your vsprintf() returns (char*)." >&4
6826 echo 'vprintf() NOT found.' >&4
6836 : see if chown exists
6840 : see if chroot exists
6844 : see if chsize exists
6848 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6849 while $test $# -ge 2; do
6851 $define) echo "#include <$2>";;
6855 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6856 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6865 : see if this is a sys/uio.h system
6866 set sys/uio.h i_sysuio
6869 echo "Checking to see if your system supports struct iovec..." >&4
6870 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6872 case "$d_iovec_s" in
6873 "$define") echo "Yup, it does." >&4
6875 *) echo "Nope, it doesn't." >&4
6881 : see whether socket exists
6883 $echo $n "Hmm... $c" >&4
6884 if set socket val -f d_socket; eval $csym; $val; then
6885 echo "Looks like you have Berkeley networking support." >&4
6887 if set setsockopt val -f; eval $csym; $val; then
6890 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6894 if $contains socklib libc.list >/dev/null 2>&1; then
6895 echo "Looks like you have Berkeley networking support." >&4
6897 : we will have to assume that it supports the 4.2 BSD interface
6900 echo "You don't have Berkeley networking in libc$_a..." >&4
6901 if test "X$d_socket" = "X$define"; then
6902 echo "...but you seem to believe that you have sockets." >&4
6904 for net in net socket
6906 if test -f /usr/lib/lib$net$_a; then
6907 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6908 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6909 if $contains socket libc.list >/dev/null 2>&1; then
6914 echo "...but the Wollongong group seems to have hacked it in." >&4
6915 sockethdr="-I/usr/netinclude"
6918 echo "Found Berkeley sockets interface in lib$net." >& 4
6919 if $contains setsockopt libc.list >/dev/null 2>&1; then
6922 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6929 if test "X$d_socket" != "X$define"; then
6930 echo "or anywhere else I see." >&4
6938 : see if socketpair exists
6939 set socketpair d_sockpair
6944 echo "Checking the availability of certain socket constants..." >& 4
6945 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6946 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6948 #include <sys/types.h>
6949 #include <sys/socket.h>
6955 set try; if eval $compile; then
6958 set d_${enum}; eval $setvar
6962 set sendmsg d_sendmsg
6965 set recvmsg d_recvmsg
6969 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6970 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6972 case "$d_msghdr_s" in
6973 "$define") echo "Yup, it does." >&4
6975 *) echo "Nope, it doesn't." >&4
6979 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6980 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6982 case "$d_cmsghdr_s" in
6983 "$define") echo "Yup, it does." >&4
6985 *) echo "Nope, it doesn't." >&4
6989 : check for const keyword
6991 echo 'Checking to see if your C compiler knows about "const"...' >&4
6992 $cat >const.c <<'EOCP'
6993 typedef struct spug { int drokk; } spug;
7000 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7002 echo "Yup, it does."
7005 echo "Nope, it doesn't."
7010 : see if crypt exists
7012 if set crypt val -f d_crypt; eval $csym; $val; then
7013 echo 'crypt() found.' >&4
7017 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7018 if $test -z "$cryptlib"; then
7019 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7023 if $test -z "$cryptlib"; then
7024 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7028 if $test -z "$cryptlib"; then
7029 cryptlib=`./loc libcrypt$_a "" $libpth`
7033 if $test -z "$cryptlib"; then
7034 echo 'crypt() NOT found.' >&4
7043 : get csh whereabouts
7045 'csh') val="$undef" ;;
7050 : Respect a hint or command line value for full_csh.
7052 '') full_csh=$csh ;;
7055 : see if cuserid exists
7056 set cuserid d_cuserid
7059 : see if this is a limits.h system
7060 set limits.h i_limits
7063 : see if this is a float.h system
7067 : See if number of significant digits in a double precision number is known
7069 $cat >dbl_dig.c <<EOM
7079 printf("Contains DBL_DIG");
7082 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7083 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7084 echo "DBL_DIG found." >&4
7087 echo "DBL_DIG NOT found." >&4
7095 if $test X"$use64bits" = X"$define"; then
7096 : see if dbminit64 exists
7097 set dbminit64 d_dbminit64
7100 : see if dbmclose64 exists
7101 set dbmclose64 d_dbmclose64
7104 : see if fetch64 exists
7105 set fetch64 d_fetch64
7108 : see if store64 exists
7109 set store64 d_store64
7112 : see if delete64 exists
7113 set delete64 d_delete64
7116 : see if firstkey64 exists
7117 set firstkey64 d_firstkey64
7120 : see if nextkey64 exists
7121 set nextkey64 d_nextkey64
7125 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7132 : see if difftime exists
7133 set difftime d_difftime
7136 : see if sys/stat.h is available
7137 set sys/stat.h i_sysstat
7140 : see if this is a dirent system
7142 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7144 echo "<dirent.h> found." >&4
7147 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7148 echo "<sys/dir.h> found." >&4
7151 xinc=`./findhdr sys/ndir.h`
7153 echo "<dirent.h> NOT found." >&4
7158 : Look for type of directory structure.
7160 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7162 case "$direntrytype" in
7165 $define) guess1='struct dirent' ;;
7166 *) guess1='struct direct' ;;
7169 *) guess1="$direntrytype"
7174 'struct dirent') guess2='struct direct' ;;
7175 *) guess2='struct dirent' ;;
7178 if $contains "$guess1" try.c >/dev/null 2>&1; then
7179 direntrytype="$guess1"
7180 echo "Your directory entries are $direntrytype." >&4
7181 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7182 direntrytype="$guess2"
7183 echo "Your directory entries seem to be $direntrytype." >&4
7185 echo "I don't recognize your system's directory entries." >&4
7186 rp="What type is used for directory entries on this system?"
7194 : see if the directory entry stores field length
7196 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7197 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7198 echo "Good, your directory entry keeps length information in d_namlen." >&4
7201 echo "Your directory entry does not know about the d_namlen field." >&4
7209 if $test X"$use64bits" = X"$define"; then
7210 : see if fstat64 exists
7211 set fstat64 d_fstat64
7214 : see if ftruncate64 exists
7215 set ftruncate64 d_ftruncate64
7218 : see if lockf64 exists
7219 set lockf64 d_lockf64
7222 : see if lseek64 exists
7223 set lseek64 d_lseek64
7226 : see if lstat64 exists
7227 set lstat64 d_lstat64
7230 : see if open64 exists
7234 : see if opendir64 exists
7235 set opendir64 d_opendir64
7238 : see if readdir64 exists
7239 set readdir64 d_readdir64
7242 : see if seekdir64 exists
7243 set seekdir64 d_seekdir64
7246 : see if stat64 exists
7250 : see if telldir64 exists
7251 set telldir64 d_telldir64
7254 : see if truncate64 exists
7255 set truncate64 d_truncate64
7260 echo $n "Checking to see if your system supports off64_t...$c" >&4
7262 #include <sys/types.h>
7263 off64_t foo() { off64_t x; x = 7; return x; }'
7265 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7267 echo " Yup, it does." >&4
7270 echo " Nope, it doesn't." >&4
7278 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7280 case "$i_sysstat" in
7283 #include <sys/types.h>
7284 #include <sys/stat.h>
7285 ino64_t foo() { ino64_t x; x = 7; return x; }'
7287 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7293 if $test "X$val" = X"$define"; then
7294 echo " Yup, it does." >&4
7296 echo " Nope, it doesn't." >&4
7301 : check for struct flock64
7303 echo "Checking to see if your system supports struct flock64..." >&4
7305 set d_flock64_s flock64 l_len define fcntl.h
7312 case "$d_flock64_s" in
7313 "$define") echo "Yup, it does." >&4
7315 *) echo "Nope, it doesn't." >&4
7319 : check for struct dirent64
7321 echo "Checking to see if your system supports struct dirent64..." >&4
7322 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7324 case "$d_dirent64_s" in
7325 "$define") echo "Yup, it does." >&4
7327 *) echo "Nope, it doesn't." >&4
7333 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_off64t d_ino64t d_flock64_s d_dirent64_s
7340 : see if dlerror exists
7343 set dlerror d_dlerror
7347 : see if dlfcn is available
7355 On a few systems, the dynamically loaded modules that perl generates and uses
7356 will need a different extension than shared libs. The default will probably
7364 rp='What is the extension of dynamically loaded modules'
7373 : Check if dlsym need a leading underscore
7379 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7380 $cat >dyna.c <<'EOM'
7389 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7391 #include <sys/types.h>
7405 int mode = RTLD_LAZY ;
7407 handle = dlopen("./dyna.$dlext", mode) ;
7408 if (handle == NULL) {
7413 symbol = dlsym(handle, "fred") ;
7414 if (symbol == NULL) {
7415 /* try putting a leading underscore */
7416 symbol = dlsym(handle, "_fred") ;
7417 if (symbol == NULL) {
7430 : Call the object file tmp-dyna.o in case dlext=o.
7431 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7432 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7433 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7434 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7437 1) echo "Test program failed using dlopen." >&4
7438 echo "Perhaps you should not use dynamic loading." >&4;;
7439 2) echo "Test program failed using dlsym." >&4
7440 echo "Perhaps you should not use dynamic loading." >&4;;
7441 3) echo "dlsym needs a leading underscore" >&4
7443 4) echo "dlsym doesn't need a leading underscore." >&4;;
7446 echo "I can't compile and run the test program." >&4
7451 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7456 hasproto='varname=$1; func=$2; shift; shift;
7457 while $test $# -ge 2; do
7459 $define) echo "#include <$2>";;
7463 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7464 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7465 echo "$func() prototype found.";
7468 echo "$func() prototype NOT found.";
7473 $rm -f try.c tryout.c'
7475 : see if prototype for drand48 is available
7477 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7480 : see if dup2 exists
7484 : see if eaccess exists
7485 set eaccess d_eaccess
7488 : see if endgrent exists
7489 set endgrent d_endgrent
7492 : see if endhostent exists
7493 set endhostent d_endhent
7496 : see if endnetent exists
7497 set endnetent d_endnent
7500 : see if endprotoent exists
7501 set endprotoent d_endpent
7504 : see if endpwent exists
7505 set endpwent d_endpwent
7508 : see if endservent exists
7509 set endservent d_endsent
7512 : Locate the flags for 'open()'
7514 $cat >open3.c <<'EOCP'
7515 #include <sys/types.h>
7520 #include <sys/file.h>
7531 : check sys/file.h first to get FREAD on Sun
7532 if $test `./findhdr sys/file.h` && \
7533 set open3 -DI_SYS_FILE && eval $compile; then
7535 echo "<sys/file.h> defines the O_* constants..." >&4
7537 echo "and you have the 3 argument form of open()." >&4
7540 echo "but not the 3 argument form of open(). Oh, well." >&4
7543 elif $test `./findhdr fcntl.h` && \
7544 set open3 -DI_FCNTL && eval $compile; then
7546 echo "<fcntl.h> defines the O_* constants..." >&4
7548 echo "and you have the 3 argument form of open()." >&4
7551 echo "but not the 3 argument form of open(). Oh, well." >&4
7556 echo "I can't find the O_* constant definitions! You got problems." >&4
7562 : check for non-blocking I/O stuff
7563 case "$h_sysfile" in
7564 true) echo "#include <sys/file.h>" > head.c;;
7567 true) echo "#include <fcntl.h>" > head.c;;
7568 *) echo "#include <sys/fcntl.h>" > head.c;;
7573 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7574 case "$o_nonblock" in
7577 $cat >>try.c <<'EOCP'
7580 printf("O_NONBLOCK\n");
7584 printf("O_NDELAY\n");
7588 printf("FNDELAY\n");
7595 if eval $compile_ok; then
7597 case "$o_nonblock" in
7598 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7599 *) echo "Seems like we can use $o_nonblock.";;
7602 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7605 *) echo "Using $hint value $o_nonblock.";;
7607 $rm -f try try.* .out core
7610 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7616 #include <sys/types.h>
7618 #define MY_O_NONBLOCK $o_nonblock
7619 #ifndef errno /* XXX need better Configure test */
7622 $signal_t blech(x) int x; { exit(3); }
7624 $cat >> try.c <<'EOCP'
7632 pipe(pd); /* Down: child -> parent */
7633 pipe(pu); /* Up: parent -> child */
7636 close(pd[1]); /* Parent reads from pd[0] */
7637 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7638 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7640 signal(SIGALRM, blech);
7642 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7644 sprintf(string, "%d\n", ret);
7645 write(2, string, strlen(string));
7648 if (errno == EAGAIN) {
7654 if (errno == EWOULDBLOCK)
7655 printf("EWOULDBLOCK\n");
7658 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7659 sleep(2); /* Give it time to close our pipe */
7661 ret = read(pd[0], buf, 1); /* Should read EOF */
7663 sprintf(string, "%d\n", ret);
7664 write(3, string, strlen(string));
7668 close(pd[0]); /* We write to pd[1] */
7669 close(pu[1]); /* We read from pu[0] */
7670 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7671 close(pd[1]); /* Pipe pd is now fully closed! */
7672 exit(0); /* Bye bye, thank you for playing! */
7676 if eval $compile_ok; then
7677 echo "$startsh" >mtry
7678 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7680 ./mtry >/dev/null 2>&1
7682 0) eagain=`$cat try.out`;;
7683 1) echo "Could not perform non-blocking setting!";;
7684 2) echo "I did a successful read() for something that was not there!";;
7685 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7686 *) echo "Something terribly wrong happened during testing.";;
7688 rd_nodata=`$cat try.ret`
7689 echo "A read() system call with no data present returns $rd_nodata."
7690 case "$rd_nodata" in
7693 echo "(That's peculiar, fixing that to be -1.)"
7699 echo "Forcing errno EAGAIN on read() with no data available."
7703 echo "Your read() sets errno to $eagain when no data is available."
7706 status=`$cat try.err`
7708 0) echo "And it correctly returns 0 to signal EOF.";;
7709 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7710 *) echo "However, your read() returns '$status' on EOF??";;
7713 if test "$status" = "$rd_nodata"; then
7714 echo "WARNING: you can't distinguish between EOF and no data!"
7718 echo "I can't compile the test program--assuming errno EAGAIN will do."
7725 echo "Using $hint value $eagain."
7726 echo "Your read() returns $rd_nodata when no data is present."
7727 case "$d_eofnblk" in
7728 "$define") echo "And you can see EOF because read() returns 0.";;
7729 "$undef") echo "But you can't see EOF status from read() returned value.";;
7731 echo "(Assuming you can't see EOF status from read anyway.)"
7737 $rm -f try try.* .out core head.c mtry
7739 : see if fchmod exists
7743 : see if fchown exists
7747 : see if this is an fcntl system
7751 : see if sys/select.h has to be included
7752 set sys/select.h i_sysselct
7755 : see if we should include time.h, sys/time.h, or both
7757 if test "X$timeincl" = X; then
7758 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7759 $echo $n "I'm now running the test program...$c"
7760 $cat >try.c <<'EOCP'
7761 #include <sys/types.h>
7766 #ifdef SYSTIMEKERNEL
7769 #include <sys/time.h>
7772 #include <sys/select.h>
7781 struct timezone tzp;
7783 if (foo.tm_sec == foo.tm_sec)
7786 if (bar.tv_sec == bar.tv_sec)
7793 for s_timezone in '-DS_TIMEZONE' ''; do
7795 for s_timeval in '-DS_TIMEVAL' ''; do
7796 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7797 for i_time in '' '-DI_TIME'; do
7798 for i_systime in '-DI_SYSTIME' ''; do
7801 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7802 if eval $compile; then
7803 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7807 $echo $n "Succeeded with $flags$c"
7819 *SYSTIMEKERNEL*) i_systimek="$define"
7820 timeincl=`./findhdr sys/time.h`
7821 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7822 *) i_systimek="$undef";;
7825 *I_TIME*) i_time="$define"
7826 timeincl=`./findhdr time.h`" $timeincl"
7827 echo "We'll include <time.h>." >&4;;
7828 *) i_time="$undef";;
7831 *I_SYSTIME*) i_systime="$define"
7832 timeincl=`./findhdr sys/time.h`" $timeincl"
7833 echo "We'll include <sys/time.h>." >&4;;
7834 *) i_systime="$undef";;
7839 : check for fd_set items
7842 Checking to see how well your C compiler handles fd_set and friends ...
7844 $cat >fd_set.c <<EOCP
7845 #$i_systime I_SYS_TIME
7846 #$i_sysselct I_SYS_SELECT
7847 #$d_socket HAS_SOCKET
7848 #include <sys/types.h>
7850 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7853 #include <sys/time.h>
7856 #include <sys/select.h>
7865 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7872 set fd_set -DTRYBITS
7873 if eval $compile; then
7874 d_fds_bits="$define"
7876 echo "Well, your system knows about the normal fd_set typedef..." >&4
7878 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7879 d_fd_macros="$define"
7882 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7884 d_fd_macros="$undef"
7888 Hmm, your compiler has some difficulty with fd_set. Checking further...
7891 if eval $compile; then
7894 echo "Well, your system has some sort of fd_set available..." >&4
7896 echo "and you have the normal fd_set macros." >&4
7897 d_fd_macros="$define"
7900 but not the normal fd_set macros! Gross! More work for me...
7902 d_fd_macros="$undef"
7905 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7908 d_fd_macros="$undef"
7913 : see if fgetpos exists
7914 set fgetpos d_fgetpos
7918 if $test X"$use64bits" = X"$define"; then
7919 : see if fgetpos64 exists
7920 set fgetpos64 d_fgetpos64
7923 : see if fopen64 exists
7924 set freopen64 d_fopen64
7927 : see if freopen64 exists
7928 set freopen64 d_freopen64
7931 : see if fseek64 exists
7932 set fseek64 d_fseek64
7935 : see if fseeko64 exists
7936 set fseeko64 d_fseeko64
7939 : see if fsetpos64 exists
7940 set fsetpos64 d_fsetpos64
7943 : see if ftell64 exists
7944 set ftell64 d_ftell64
7947 : see if ftello64 exists
7948 set ftello64 d_ftello64
7951 : see if tmpfile64 exists
7952 set tmpfile64 d_tmpfile64
7956 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7963 : see if flock exists
7967 : see if fork exists
7971 : see if pathconf exists
7972 set pathconf d_pathconf
7975 : see if fpathconf exists
7976 set fpathconf d_fpathconf
7979 : see if fseeko exists
7983 : see if fsetpos exists
7984 set fsetpos d_fsetpos
7987 : see if this is a sys/param system
7988 set sys/param.h i_sysparam
7991 : see if this is a sys/mount.h system
7992 set sys/mount.h i_sysmount
7996 : see if statfs exists
8000 : see if fstatfs exists
8001 set fstatfs d_fstatfs
8004 : see if statfs knows about mount flags
8005 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8009 : see if statvfs exists
8010 set statvfs d_statvfs
8013 : see if fstatvfs exists
8014 set fstatvfs d_fstatvfs
8018 : see if ftello exists
8022 : see if getgrent exists
8023 set getgrent d_getgrent
8026 : see if gethostbyaddr exists
8027 set gethostbyaddr d_gethbyaddr
8030 : see if gethostbyname exists
8031 set gethostbyname d_gethbyname
8034 : see if gethostent exists
8035 set gethostent d_gethent
8038 : see how we will look up host name
8041 : dummy stub to allow use of elif
8042 elif set gethostname val -f d_gethname; eval $csym; $val; then
8043 echo 'gethostname() found.' >&4
8044 d_gethname="$define"
8046 elif set uname val -f d_uname; eval $csym; $val; then
8049 uname() was found, but you're running xenix, and older versions of xenix
8050 have a broken uname(). If you don't really know whether your xenix is old
8051 enough to have a broken system call, use the default answer.
8058 rp='Is your uname() broken?'
8061 n*) d_uname="$define"; call=uname;;
8064 echo 'uname() found.' >&4
8069 case "$d_gethname" in
8070 '') d_gethname="$undef";;
8073 '') d_uname="$undef";;
8075 case "$d_uname$d_gethname" in
8080 Every now and then someone has a $call() that lies about the hostname
8081 but can't be fixed for political or economic reasons. If you wish, I can
8082 pretend $call() isn't there and maybe compute hostname at run-time
8083 thanks to the '$phostname' command.
8086 rp="Shall I ignore $call() from now on?"
8089 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8092 case "$phostname" in
8094 *) case "$aphostname" in
8100 file=`./loc $file $file $pth`
8101 aphostname=`echo $file $*`
8106 case "$d_uname$d_gethname" in
8109 case "$phostname" in
8111 echo "There will be no way for $package to get your hostname." >&4;;
8113 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8117 case "$d_phostname" in
8118 '') d_phostname="$undef";;
8121 : see if this is a netdb.h system
8125 : see if prototypes for various gethostxxx netdb.h functions are available
8127 set d_gethostprotos gethostent $i_netdb netdb.h
8130 : see if getlogin exists
8131 set getlogin d_getlogin
8134 : see if getnetbyaddr exists
8135 set getnetbyaddr d_getnbyaddr
8138 : see if getnetbyname exists
8139 set getnetbyname d_getnbyname
8142 : see if getnetent exists
8143 set getnetent d_getnent
8146 : see if prototypes for various getnetxxx netdb.h functions are available
8148 set d_getnetprotos getnetent $i_netdb netdb.h
8152 : see if getprotobyname exists
8153 set getprotobyname d_getpbyname
8156 : see if getprotobynumber exists
8157 set getprotobynumber d_getpbynumber
8160 : see if getprotoent exists
8161 set getprotoent d_getpent
8164 : see if getpgid exists
8165 set getpgid d_getpgid
8168 : see if getpgrp2 exists
8169 set getpgrp2 d_getpgrp2
8172 : see if getppid exists
8173 set getppid d_getppid
8176 : see if getpriority exists
8177 set getpriority d_getprior
8180 : see if prototypes for various getprotoxxx netdb.h functions are available
8182 set d_getprotoprotos getprotoent $i_netdb netdb.h
8185 : see if getpwent exists
8186 set getpwent d_getpwent
8190 : see if getservbyname exists
8191 set getservbyname d_getsbyname
8194 : see if getservbyport exists
8195 set getservbyport d_getsbyport
8198 : see if getservent exists
8199 set getservent d_getsent
8202 : see if prototypes for various getservxxx netdb.h functions are available
8204 set d_getservprotos getservent $i_netdb netdb.h
8207 : see if gettimeofday or ftime exists
8208 set gettimeofday d_gettimeod
8210 case "$d_gettimeod" in
8216 val="$undef"; set d_ftime; eval $setvar
8219 case "$d_gettimeod$d_ftime" in
8222 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8226 : see if this is an grp system
8232 xxx=`./findhdr grp.h`
8233 $cppstdin $cppflags $cppminus < $xxx >$$.h
8235 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8247 set d_grpasswd; eval $setvar
8251 : see if this is a netinet/in.h or sys/in.h system
8252 set netinet/in.h i_niin sys/in.h i_sysin
8255 : see if arpa/inet.h has to be included
8256 set arpa/inet.h i_arpainet
8259 : see if htonl --and friends-- exists
8264 : Maybe they are macros.
8269 #include <sys/types.h>
8270 #$i_niin I_NETINET_IN
8272 #$i_arpainet I_ARPA_INET
8274 #include <netinet/in.h>
8280 #include <arpa/inet.h>
8283 printf("Defined as a macro.");
8286 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8287 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8289 echo "But it seems to be defined as a macro." >&4
8297 : see which of string.h or strings.h is needed
8299 strings=`./findhdr string.h`
8300 if $test "$strings" && $test -r "$strings"; then
8301 echo "Using <string.h> instead of <strings.h>." >&4
8305 strings=`./findhdr strings.h`
8306 if $test "$strings" && $test -r "$strings"; then
8307 echo "Using <strings.h> instead of <string.h>." >&4
8309 echo "No string header found -- You'll surely have problems." >&4
8315 "$undef") strings=`./findhdr strings.h`;;
8316 *) strings=`./findhdr string.h`;;
8321 if set index val -f; eval $csym; $val; then
8322 if set strchr val -f d_strchr; eval $csym; $val; then
8323 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8326 echo "strchr() found." >&4
8330 echo "index() found." >&4
8335 echo "index() found." >&4
8338 if set strchr val -f d_strchr; eval $csym; $val; then
8341 echo "strchr() found." >&4
8343 echo "No index() or strchr() found!" >&4
8348 set d_strchr; eval $setvar
8350 set d_index; eval $setvar
8352 : check whether inet_aton exists
8353 set inet_aton d_inetaton
8356 : see if inttypes.h is available
8357 : we want a real compile instead of Inhdr because some systems
8358 : have an inttypes.h which includes non-existent headers
8361 #include <inttypes.h>
8363 static int32_t foo32 = 0x12345678;
8367 if eval $compile; then
8368 echo "<inttypes.h> found." >&4
8371 echo "<inttypes.h> NOT found." >&4
8379 case "$use64bits" in
8382 echo $n "Checking to see if your system supports int64_t...$c" >&4
8384 #include <sys/types.h>
8385 #$i_inttypes I_INTTYPES
8387 #include <inttypes.h>
8389 int64_t foo() { int64_t x; x = 7; return x; }
8391 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8393 echo " Yup, it does." >&4
8396 echo " Nope, it doesn't." >&4
8409 $cat >isascii.c <<'EOCP'
8421 if eval $compile; then
8422 echo "isascii() found." >&4
8425 echo "isascii() NOT found." >&4
8432 : see if killpg exists
8436 : see if lchown exists
8438 $cat > try.c <<'EOCP'
8439 /* System header to define __stub macros and hopefully few prototypes,
8440 which can conflict with char lchown(); below. */
8442 /* Override any gcc2 internal prototype to avoid an error. */
8443 /* We use char because int might match the return type of a gcc2
8444 builtin and then its argument prototype would still apply. */
8447 /* The GNU C library defines this for functions which it implements
8448 to always fail with ENOSYS. Some functions are actually named
8449 something starting with __ and the normal name is an alias. */
8450 #if defined (__stub_lchown) || defined (__stub___lchown)
8458 if eval $compile; then
8459 $echo "lchown() found." >&4
8462 $echo "lchown() NOT found." >&4
8468 : see if link exists
8472 : see if localeconv exists
8473 set localeconv d_locconv
8476 : see if lockf exists
8480 : check for length of double
8482 case "$doublesize" in
8484 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8485 $cat >try.c <<'EOCP'
8489 printf("%d\n", sizeof(double));
8493 if eval $compile_ok; then
8495 $echo " $doublesize bytes." >&4
8498 echo "(I can't seem to compile the test program. Guessing...)"
8499 rp="What is the size of a double precision number (in bytes)?"
8507 : check for long doubles
8509 echo $n "Checking to see if your system supports long doubles...$c" >&4
8510 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8511 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8513 echo " Yup, it does." >&4
8516 echo " Nope, it doesn't." >&4
8522 : check for length of long double
8523 case "${d_longdbl}${longdblsize}" in
8526 $echo $n "Checking to see how big your long doubles are...$c" >&4
8527 $cat >try.c <<'EOCP'
8531 printf("%d\n", sizeof(long double));
8535 if eval $compile; then
8537 $echo " $longdblsize bytes." >&4
8541 echo "(I can't seem to compile the test program. Guessing...)" >&4
8542 rp="What is the size of a long double (in bytes)?"
8546 if $test "X$doublesize" = "X$longdblsize"; then
8547 echo "(That isn't any different from an ordinary double.)"
8553 : check for long long
8555 echo $n "Checking to see if your system supports long long...$c" >&4
8556 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8557 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8559 echo " Yup, it does." >&4
8562 echo " Nope, it doesn't." >&4
8568 : check for length of long long
8569 case "${d_longlong}${longlongsize}" in
8572 $echo $n "Checking to see how big your long longs are...$c" >&4
8573 $cat >try.c <<'EOCP'
8577 printf("%d\n", sizeof(long long));
8581 if eval $compile_ok; then
8582 longlongsize=`./try`
8583 $echo " $longlongsize bytes." >&4
8587 echo "(I can't seem to compile the test program. Guessing...)"
8588 rp="What is the size of a long long (in bytes)?"
8592 if $test "X$longsize" = "X$longlongsize"; then
8593 echo "(That isn't any different from an ordinary long.)"
8599 : see if lstat exists
8603 : see if mblen exists
8607 : see if mbstowcs exists
8608 set mbstowcs d_mbstowcs
8611 : see if mbtowc exists
8615 : see if memcmp exists
8619 : see if memcpy exists
8623 : see if memmove exists
8624 set memmove d_memmove
8627 : see if memset exists
8631 : see if mkdir exists
8635 : see if mkfifo exists
8639 : see if mktime exists
8643 : see if msgctl exists
8647 : see if msgget exists
8651 : see if msgsnd exists
8655 : see if msgrcv exists
8659 : see how much of the 'msg*(2)' library is present.
8662 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8663 *"$undef"*) h_msg=false;;
8667 case "`ipcs 2>&1`" in
8668 "SVID messages"*"not configured"*)
8669 echo "Your $osname does not have the msg*(2) configured." >&4
8684 : we could also check for sys/ipc.h ...
8685 if $h_msg && $test `./findhdr sys/msg.h`; then
8686 echo "You have the full msg*(2) library." >&4
8689 echo "You don't have the full msg*(2) library." >&4
8695 : see if nice exists
8699 : how to create joinable pthreads
8700 if test "X$usethreads" = "X$define"; then
8702 echo "Checking what constant to use for creating joinable pthreads..." >&4
8703 $cat >try.c <<'EOCP'
8704 #include <pthread.h>
8706 int detachstate = JOINABLE;
8709 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8710 if eval $compile; then
8711 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8712 val="$undef" # Yes, undef.
8713 set d_old_pthread_create_joinable
8716 set old_pthread_create_joinable
8719 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8720 if eval $compile; then
8721 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8723 set d_old_pthread_create_joinable
8725 val=PTHREAD_CREATE_UNDETACHED
8726 set old_pthread_create_joinable
8729 set try -DJOINABLE=__UNDETACHED
8730 if eval $compile; then
8731 echo "You seem to use __UNDETACHED." >&2
8733 set d_old_pthread_create_joinable
8736 set old_pthread_create_joinable
8739 echo "Egads, nothing obvious found. Guessing that you use 0." >&2
8741 set d_old_pthread_create_joinable
8744 set old_pthread_create_joinable
8751 d_old_pthread_create_joinable="$undef"
8752 old_pthread_create_joinable=""
8755 : see if pause exists
8759 : see if pipe exists
8763 : see if poll exists
8768 : see whether the various POSIXish _yields exist
8770 #include <pthread.h>
8776 #ifdef PTHREAD_YIELD
8779 #ifdef PTHREAD_YIELD_NULL
8780 pthread_yield(NULL);
8786 : see if sched_yield exists
8787 set try -DSCHED_YIELD
8788 if eval $compile; then
8790 sched_yield='sched_yield()'
8794 case "$usethreads" in
8797 $define) echo 'sched_yield() found.' >&4 ;;
8798 *) echo 'sched_yield() NOT found.' >&4 ;;
8804 : see if pthread_yield exists
8805 set try -DPTHREAD_YIELD
8806 if eval $compile; then
8808 case "$sched_yield" in
8809 '') sched_yield='pthread_yield()' ;;
8812 set try -DPTHREAD_YIELD_NULL
8813 if eval $compile; then
8815 case "$sched_yield" in
8816 '') sched_yield='pthread_yield(NULL)' ;;
8822 case "$usethreads" in
8825 $define) echo 'pthread_yield() found.' >&4 ;;
8826 *) echo 'pthread_yield() NOT found.' >&4 ;;
8833 case "$sched_yield" in
8834 '') sched_yield=undef ;;
8839 : see if this is a pwd.h system
8845 xxx=`./findhdr pwd.h`
8846 $cppstdin $cppflags $cppminus < $xxx >$$.h
8848 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8856 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8864 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8872 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8880 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8888 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8896 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8904 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8916 set d_pwquota; eval $setvar
8917 set d_pwage; eval $setvar
8918 set d_pwchange; eval $setvar
8919 set d_pwclass; eval $setvar
8920 set d_pwexpire; eval $setvar
8921 set d_pwcomment; eval $setvar
8922 set d_pwgecos; eval $setvar
8923 set d_pwpasswd; eval $setvar
8927 : see if readdir and friends exist
8928 set readdir d_readdir
8930 set seekdir d_seekdir
8932 set telldir d_telldir
8934 set rewinddir d_rewinddir
8937 : see if readlink exists
8938 set readlink d_readlink
8941 : see if readv exists
8945 : see if rename exists
8949 : see if rmdir exists
8953 : see if memory.h is available.
8958 : See if it conflicts with string.h
8964 $cppstdin $cppflags $cppminus < $strings > mem.h
8965 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8967 echo "We won't be including <memory.h>."
8977 : can bcopy handle overlapping blocks?
8982 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8989 $cat >>try.c <<'EOCP'
8992 # include <memory.h>
8995 # include <stdlib.h>
8998 # include <string.h>
9000 # include <strings.h>
9003 # include <unistd.h> /* Needed for NetBSD */
9007 char buf[128], abc[128];
9013 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9015 for (align = 7; align >= 0; align--) {
9016 for (len = 36; len; len--) {
9019 for (off = 1; off <= len; off++) {
9020 bcopy(b, b+off, len);
9021 bcopy(b+off, b, len);
9022 if (bcmp(b, abc, len))
9031 if eval $compile_ok; then
9032 if ./try 2>/dev/null; then
9036 echo "It can't, sorry."
9037 case "$d_memmove" in
9038 "$define") echo "But that's Ok since you have memmove()." ;;
9042 echo "(I can't compile the test program, so we'll assume not...)"
9043 case "$d_memmove" in
9044 "$define") echo "But that's Ok since you have memmove()." ;;
9049 $rm -f try.* try core
9053 : can memcpy handle overlapping blocks?
9058 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9065 $cat >>try.c <<'EOCP'
9068 # include <memory.h>
9071 # include <stdlib.h>
9074 # include <string.h>
9076 # include <strings.h>
9079 # include <unistd.h> /* Needed for NetBSD */
9083 char buf[128], abc[128];
9089 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9090 try to store the string in read-only memory. */
9091 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9093 for (align = 7; align >= 0; align--) {
9094 for (len = 36; len; len--) {
9096 memcpy(b, abc, len);
9097 for (off = 1; off <= len; off++) {
9098 memcpy(b+off, b, len);
9099 memcpy(b, b+off, len);
9100 if (memcmp(b, abc, len))
9109 if eval $compile_ok; then
9110 if ./try 2>/dev/null; then
9114 echo "It can't, sorry."
9115 case "$d_memmove" in
9116 "$define") echo "But that's Ok since you have memmove()." ;;
9120 echo "(I can't compile the test program, so we'll assume not...)"
9121 case "$d_memmove" in
9122 "$define") echo "But that's Ok since you have memmove()." ;;
9127 $rm -f try.* try core
9131 : can memcmp be trusted to compare relative magnitude?
9136 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9143 $cat >>try.c <<'EOCP'
9146 # include <memory.h>
9149 # include <stdlib.h>
9152 # include <string.h>
9154 # include <strings.h>
9157 # include <unistd.h> /* Needed for NetBSD */
9163 if ((a < b) && memcmp(&a, &b, 1) < 0)
9169 if eval $compile_ok; then
9170 if ./try 2>/dev/null; then
9174 echo "No, it can't (it uses signed chars)."
9177 echo "(I can't compile the test program, so we'll assume not...)"
9181 $rm -f try.* try core
9185 : see if select exists
9189 : see if semctl exists
9193 : see if semget exists
9197 : see if semop exists
9201 : see how much of the 'sem*(2)' library is present.
9204 case "$d_semctl$d_semget$d_semop" in
9205 *"$undef"*) h_sem=false;;
9209 case "`ipcs 2>&1`" in
9210 "SVID messages"*"not configured"*)
9211 echo "Your $osname does not have the sem*(2) configured." >&4
9224 : we could also check for sys/ipc.h ...
9225 if $h_sem && $test `./findhdr sys/sem.h`; then
9226 echo "You have the full sem*(2) library." >&4
9229 echo "You don't have the full sem*(2) library." >&4
9235 : see whether sys/sem.h defines union semun
9237 $cat > try.c <<'END'
9238 #include <sys/types.h>
9239 #include <sys/ipc.h>
9240 #include <sys/sem.h>
9241 int main () { union semun semun; semun.buf = 0; }
9244 if eval $compile; then
9245 echo "You have union semun in <sys/sem.h>." >&4
9248 echo "You do not have union semun in <sys/sem.h>." >&4
9251 $rm -f try try.c try.h
9255 : see how to do semctl IPC_STAT
9258 : see whether semctl IPC_STAT can use union semun
9263 # define S_IRUSR S_IREAD
9264 # define S_IWUSR S_IWRITE
9265 # define S_IXUSR S_IEXEC
9267 # define S_IRUSR 0400
9268 # define S_IWUSR 0200
9269 # define S_IXUSR 0100
9271 # define S_IRGRP (S_IRUSR>>3)
9272 # define S_IWGRP (S_IWUSR>>3)
9273 # define S_IXGRP (S_IXUSR>>3)
9274 # define S_IROTH (S_IRUSR>>6)
9275 # define S_IWOTH (S_IWUSR>>6)
9276 # define S_IXOTH (S_IXUSR>>6)
9279 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9280 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9281 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9286 #include <sys/types.h>
9287 #include <sys/ipc.h>
9288 #include <sys/sem.h>
9289 #include <sys/stat.h>
9296 #$d_union_semun HAS_UNION_SEMUN
9299 #ifndef HAS_UNION_SEMUN
9302 struct semid_ds *buf;
9303 unsigned short *array;
9309 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9310 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9312 struct semid_ds argbuf;
9315 st = semctl(sem, 0, IPC_STAT, arg);
9319 # endif /* IPC_STAT */
9320 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9322 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9323 # endif /* IPC_RMID */
9324 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9326 #endif /* IPC_PRIVATE && ... */
9327 printf("semget failed: errno = %d\n", errno);
9333 if eval $compile; then
9336 semun) val="$define" ;;
9342 case "$d_semctl_semun" in
9344 echo "You can use union semun for semctl IPC_STAT." >&4
9347 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9352 : see whether semctl IPC_STAT can use struct semid_ds pointer
9353 $cat > try.c <<'END'
9354 #include <sys/types.h>
9355 #include <sys/ipc.h>
9356 #include <sys/sem.h>
9357 #include <sys/stat.h>
9365 struct semid_ds arg;
9368 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9369 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9372 st = semctl(sem, 0, IPC_STAT, &arg);
9374 printf("semid_ds\n");
9376 # endif /* IPC_STAT */
9377 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9379 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9380 # endif /* IPC_RMID */
9381 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9383 #endif /* IPC_PRIVATE && ... */
9384 printf("semget failed: errno = %d\n", errno);
9391 if eval $compile; then
9394 semid_ds) val="$define" ;;
9398 set d_semctl_semid_ds
9400 case "$d_semctl_semid_ds" in
9402 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9404 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9411 # We do not have the full sem*(2) library, so assume we can not
9417 set d_semctl_semid_ds
9422 : see if setegid exists
9423 set setegid d_setegid
9426 : see if seteuid exists
9427 set seteuid d_seteuid
9430 : see if setgrent exists
9431 set setgrent d_setgrent
9434 : see if sethostent exists
9435 set sethostent d_sethent
9438 : see if setlinebuf exists
9439 set setlinebuf d_setlinebuf
9442 : see if setlocale exists
9443 set setlocale d_setlocale
9446 : see if setnetent exists
9447 set setnetent d_setnent
9450 : see if setprotoent exists
9451 set setprotoent d_setpent
9454 : see if setpgid exists
9455 set setpgid d_setpgid
9458 : see if setpgrp2 exists
9459 set setpgrp2 d_setpgrp2
9462 : see if setpriority exists
9463 set setpriority d_setprior
9466 : see if setpwent exists
9467 set setpwent d_setpwent
9470 : see if setregid exists
9471 set setregid d_setregid
9473 set setresgid d_setresgid
9476 : see if setreuid exists
9477 set setreuid d_setreuid
9479 set setresuid d_setresuid
9482 : see if setrgid exists
9483 set setrgid d_setrgid
9486 : see if setruid exists
9487 set setruid d_setruid
9490 : see if setservent exists
9491 set setservent d_setsent
9494 : see if setsid exists
9498 : see if setvbuf exists
9499 set setvbuf d_setvbuf
9502 : see if sfio.h is available
9507 : see if sfio library is available
9518 : Ok, but do we want to use it.
9522 true|$define|[yY]*) dflt='y';;
9525 echo "$package can use the sfio library, but it is experimental."
9526 rp="You seem to have sfio available, do you want to try using it?"
9530 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9532 : Remove sfio from list of libraries to use
9533 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9536 echo "libs = $libs" >&4
9540 *) case "$usesfio" in
9542 echo "Sorry, cannot find sfio on this machine" >&4
9543 echo "Ignoring your setting of usesfio=$usesfio" >&4
9551 $define) usesfio='true';;
9552 *) usesfio='false';;
9555 : see if shmctl exists
9559 : see if shmget exists
9563 : see if shmat exists
9566 : see what shmat returns
9569 $cat >shmat.c <<'END'
9570 #include <sys/shm.h>
9573 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9578 echo "and it returns ($shmattype)." >&4
9579 : see if a prototype for shmat is available
9580 xxx=`./findhdr sys/shm.h`
9581 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9582 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9593 set d_shmatprototype
9596 : see if shmdt exists
9600 : see how much of the 'shm*(2)' library is present.
9603 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9604 *"$undef"*) h_shm=false;;
9608 case "`ipcs 2>&1`" in
9609 "SVID shared memory"*"not configured"*)
9610 echo "Your $osname does not have the shm*(2) configured." >&4
9625 : we could also check for sys/ipc.h ...
9626 if $h_shm && $test `./findhdr sys/shm.h`; then
9627 echo "You have the full shm*(2) library." >&4
9630 echo "You don't have the full shm*(2) library." >&4
9637 : see if we have sigaction
9638 if set sigaction val -f d_sigaction; eval $csym; $val; then
9639 echo 'sigaction() found.' >&4
9640 $cat > try.c <<'EOP'
9642 #include <sys/types.h>
9646 struct sigaction act, oact;
9650 if eval $compile_ok; then
9653 echo "But you don't seem to have a useable struct sigaction." >&4
9657 echo 'sigaction NOT found.' >&4
9660 set d_sigaction; eval $setvar
9661 $rm -f try try$_o try.c
9663 : see if sigsetjmp exists
9665 case "$d_sigsetjmp" in
9673 if (sigsetjmp(env,1))
9681 if eval $compile; then
9682 if ./try >/dev/null 2>&1; then
9683 echo "POSIX sigsetjmp found." >&4
9687 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9693 echo "sigsetjmp not found." >&4
9697 *) val="$d_sigsetjmp"
9698 case "$d_sigsetjmp" in
9699 $define) echo "POSIX sigsetjmp found." >&4;;
9700 $undef) echo "sigsetjmp not found." >&4;;
9708 : see if stat knows about block sizes
9710 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9713 : see if _ptr and _cnt from stdio act std
9715 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9716 echo "(Looks like you have stdio.h from Linux.)"
9717 case "$stdio_ptr" in
9718 '') stdio_ptr='((fp)->_IO_read_ptr)'
9721 *) ptr_lval=$d_stdio_ptr_lval;;
9723 case "$stdio_cnt" in
9724 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9727 *) cnt_lval=$d_stdio_cnt_lval;;
9729 case "$stdio_base" in
9730 '') stdio_base='((fp)->_IO_read_base)';;
9732 case "$stdio_bufsiz" in
9733 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9736 case "$stdio_ptr" in
9737 '') stdio_ptr='((fp)->_ptr)'
9740 *) ptr_lval=$d_stdio_ptr_lval;;
9742 case "$stdio_cnt" in
9743 '') stdio_cnt='((fp)->_cnt)'
9746 *) cnt_lval=$d_stdio_cnt_lval;;
9748 case "$stdio_base" in
9749 '') stdio_base='((fp)->_base)';;
9751 case "$stdio_bufsiz" in
9752 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9755 : test whether _ptr and _cnt really work
9756 echo "Checking how std your stdio is..." >&4
9759 #define FILE_ptr(fp) $stdio_ptr
9760 #define FILE_cnt(fp) $stdio_cnt
9762 FILE *fp = fopen("try.c", "r");
9765 18 <= FILE_cnt(fp) &&
9766 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9774 if eval $compile; then
9776 echo "Your stdio acts pretty std."
9779 echo "Your stdio isn't very std."
9782 echo "Your stdio doesn't appear very std."
9788 : Can _ptr be used as an lvalue?
9789 case "$d_stdstdio$ptr_lval" in
9790 $define$define) val=$define ;;
9793 set d_stdio_ptr_lval
9796 : Can _cnt be used as an lvalue?
9797 case "$d_stdstdio$cnt_lval" in
9798 $define$define) val=$define ;;
9801 set d_stdio_cnt_lval
9804 : see if _base is also standard
9806 case "$d_stdstdio" in
9810 #define FILE_base(fp) $stdio_base
9811 #define FILE_bufsiz(fp) $stdio_bufsiz
9813 FILE *fp = fopen("try.c", "r");
9816 19 <= FILE_bufsiz(fp) &&
9817 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9824 if eval $compile; then
9826 echo "And its _base field acts std."
9829 echo "But its _base field isn't std."
9832 echo "However, it seems to be lacking the _base field."
9840 : see if strcoll exists
9841 set strcoll d_strcoll
9844 : check for structure copying
9846 echo "Checking to see if your C compiler can copy structs..." >&4
9847 $cat >try.c <<'EOCP'
9857 if $cc -c try.c >/dev/null 2>&1 ; then
9862 echo "Nope, it can't."
9868 : see if strerror and/or sys_errlist[] exist
9870 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9871 if set strerror val -f d_strerror; eval $csym; $val; then
9872 echo 'strerror() found.' >&4
9873 d_strerror="$define"
9874 d_strerrm='strerror(e)'
9875 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9876 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9877 d_syserrlst="$define"
9879 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9880 d_syserrlst="$undef"
9882 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9883 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9884 echo 'strerror() found in string header.' >&4
9885 d_strerror="$define"
9886 d_strerrm='strerror(e)'
9887 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9888 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9889 d_syserrlst="$define"
9891 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9892 d_syserrlst="$undef"
9894 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9895 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9897 d_syserrlst="$define"
9898 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9900 echo 'strerror() and sys_errlist[] NOT found.' >&4
9902 d_syserrlst="$undef"
9903 d_strerrm='"unknown"'
9907 : see if strtod exists
9911 : see if strtol exists
9915 : see if strtoul exists
9916 set strtoul d_strtoul
9919 : see if strxfrm exists
9920 set strxfrm d_strxfrm
9923 : see if symlink exists
9924 set symlink d_symlink
9927 : see if syscall exists
9928 set syscall d_syscall
9931 : see if sysconf exists
9932 set sysconf d_sysconf
9935 : see if system exists
9939 : see if tcgetpgrp exists
9940 set tcgetpgrp d_tcgetpgrp
9943 : see if tcsetpgrp exists
9944 set tcsetpgrp d_tcsetpgrp
9947 : define an is-a-typedef? function
9948 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9950 "") inclist="sys/types.h";;
9952 eval "varval=\$$var";
9956 for inc in $inclist; do
9957 echo "#include <$inc>" >>temp.c;
9959 echo "#ifdef $type" >> temp.c;
9960 echo "printf(\"We have $type\");" >> temp.c;
9961 echo "#endif" >> temp.c;
9962 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9963 if $contains $type temp.E >/dev/null 2>&1; then
9969 *) eval "$var=\$varval";;
9972 : define an is-a-typedef? function that prompts if the type is not available.
9973 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9975 "") inclist="sys/types.h";;
9977 eval "varval=\$$var";
9981 for inc in $inclist; do
9982 echo "#include <$inc>" >>temp.c;
9984 echo "#ifdef $type" >> temp.c;
9985 echo "printf(\"We have $type\");" >> temp.c;
9986 echo "#endif" >> temp.c;
9987 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9989 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9990 if $contains $type temp.E >/dev/null 2>&1; then
9991 echo "$type found." >&4;
9994 echo "$type NOT found." >&4;
10000 *) eval "$var=\$varval";;
10003 : see if this is a sys/times.h system
10004 set sys/times.h i_systimes
10007 : see if times exists
10009 if set times val -f d_times; eval $csym; $val; then
10010 echo 'times() found.' >&4
10013 case "$i_systimes" in
10014 "$define") inc='sys/times.h';;
10016 rp="What is the type returned by times() on this system?"
10017 set clock_t clocktype long stdio.h sys/types.h $inc
10020 echo 'times() NOT found, hope that will do.' >&4
10025 : see if truncate exists
10026 set truncate d_truncate
10029 : see if tzname[] exists
10031 if set tzname val -a d_tzname; eval $csym; $val; then
10033 echo 'tzname[] found.' >&4
10036 echo 'tzname[] NOT found.' >&4
10041 : see if umask exists
10045 : backward compatibility for d_hvfork
10046 if test X$d_hvfork != X; then
10047 d_vfork="$d_hvfork"
10050 : see if there is a vfork
10055 : Ok, but do we want to use it. vfork is reportedly unreliable in
10056 : perl on Solaris 2.x, and probably elsewhere.
10060 case "$usevfork" in
10064 rp="Some systems have problems with vfork(). Do you want to use it?"
10069 echo "Ok, we won't use vfork()."
10078 $define) usevfork='true';;
10079 *) usevfork='false';;
10082 : see if this is an sysdir system
10083 set sys/dir.h i_sysdir
10086 : see if this is an sysndir system
10087 set sys/ndir.h i_sysndir
10090 : see if sys/types.h has to be included
10091 set sys/types.h i_systypes
10094 : see if closedir exists
10095 set closedir d_closedir
10098 case "$d_closedir" in
10101 echo "Checking whether closedir() returns a status..." >&4
10102 cat > closedir.c <<EOM
10103 #$i_dirent I_DIRENT /**/
10104 #$i_sysdir I_SYS_DIR /**/
10105 #$i_sysndir I_SYS_NDIR /**/
10106 #$i_systypes I_SYS_TYPES /**/
10108 #if defined(I_SYS_TYPES)
10109 #include <sys/types.h>
10111 #if defined(I_DIRENT)
10112 #include <dirent.h>
10113 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10114 #include <sys/dir.h>
10118 #include <sys/ndir.h>
10122 #include <ndir.h> /* may be wrong in the future */
10124 #include <sys/dir.h>
10129 int main() { return closedir(opendir(".")); }
10132 if eval $compile_ok; then
10133 if ./closedir > /dev/null 2>&1 ; then
10134 echo "Yes, it does."
10137 echo "No, it doesn't."
10141 echo "(I can't seem to compile the test program--assuming it doesn't)"
10149 set d_void_closedir
10152 : check for volatile keyword
10154 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10155 $cat >try.c <<'EOCP'
10158 typedef struct _goo_struct goo_struct;
10159 goo_struct * volatile goo = ((goo_struct *)0);
10160 struct _goo_struct {
10165 typedef unsigned short foo_t;
10166 char *volatile foo;
10168 volatile foo_t blech;
10172 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10174 echo "Yup, it does."
10177 echo "Nope, it doesn't."
10183 : see if there is a wait4
10187 : see if waitpid exists
10188 set waitpid d_waitpid
10191 : see if wcstombs exists
10192 set wcstombs d_wcstombs
10195 : see if wctomb exists
10196 set wctomb d_wctomb
10199 : see if writev exists
10200 set writev d_writev
10203 : preserve RCS keywords in files with variable substitution, grrr
10208 Revision='$Revision'
10210 : check for alignment requirements
10212 case "$alignbytes" in
10213 '') echo "Checking alignment constraints..." >&4
10214 $cat >try.c <<'EOCP'
10221 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10225 if eval $compile_ok; then
10229 echo "(I can't seem to compile the test program...)"
10232 *) dflt="$alignbytes"
10235 rp="Doubles must be aligned on a how-many-byte boundary?"
10240 : check for ordering of bytes in a long
10241 case "$byteorder" in
10245 In the following, larger digits indicate more significance. A big-endian
10246 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10247 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10248 machines may have weird orders like 3412. A Cray will report 87654321. If
10249 the test program works the default is probably right.
10250 I'm now running the test program...
10252 $cat >try.c <<'EOCP'
10259 char c[sizeof(long)];
10262 if (sizeof(long) > 4)
10263 u.l = (0x08070605L << 32) | 0x04030201L;
10266 for (i = 0; i < sizeof(long); i++)
10267 printf("%c", u.c[i]+'0');
10274 if eval $compile && ./try > /dev/null; then
10277 [1-4][1-4][1-4][1-4]|12345678|87654321)
10278 echo "(The test program ran ok.)"
10279 echo "byteorder=$dflt"
10282 ????|????????) echo "(The test program ran ok.)" ;;
10283 *) echo "(The test program didn't run right for some reason.)" ;;
10288 (I can't seem to compile the test program. Guessing big-endian...)
10291 case "$xxx_prompt" in
10293 rp="What is the order of bytes in a long?"
10304 : how do we catenate cpp tokens here?
10306 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10307 $cat >cpp_stuff.c <<'EOCP'
10308 #define RCAT(a,b)a/**/b
10309 #define ACAT(a,b)a ## b
10313 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10314 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10315 echo "Oh! Smells like ANSI's been here." >&4
10316 echo "We can catify or stringify, separately or together!"
10318 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10319 echo "Ah, yes! The good old days!" >&4
10320 echo "However, in the good old days we don't know how to stringify and"
10321 echo "catify at the same time."
10325 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10326 to have to edit the values of CAT[2-5] in config.h...
10328 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10332 : see if this is a db.h system
10338 : Check db version.
10340 echo "Checking Berkeley DB version ..." >&4
10346 #include <sys/types.h>
10351 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10352 int Major, Minor, Patch ;
10353 unsigned long Version ;
10354 (void)db_version(&Major, &Minor, &Patch) ;
10355 printf("You have Berkeley DB Version 2 or greater\n");
10357 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10358 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10359 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10360 Major, Minor, Patch) ;
10362 /* check that db.h & libdb are compatible */
10363 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10364 printf("db.h and libdb are incompatible\n") ;
10368 printf("db.h and libdb are compatible\n") ;
10370 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10371 + DB_VERSION_PATCH ;
10373 /* needs to be >= 2.3.4 */
10374 if (Version < 2003004) {
10375 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10376 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10382 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10383 printf("You have Berkeley DB Version 1\n");
10384 exit(0); /* DB version < 2: the coast is clear. */
10386 exit(1); /* <db.h> not Berkeley DB? */
10392 if eval $compile && ./try; then
10393 echo 'Looks OK.' >&4
10395 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10399 : Remove db from list of libraries to use
10400 echo "Removing unusable -ldb from library list" >&4
10401 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10404 echo "libs = $libs" >&4
10414 : Check the return type needed for hash
10416 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10422 #include <sys/types.h>
10425 #ifndef DB_VERSION_MAJOR
10426 u_int32_t hash_cb (ptr, size)
10434 info.hash = hash_cb;
10438 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10439 if $contains warning try.out >>/dev/null 2>&1 ; then
10442 db_hashtype='u_int32_t'
10445 : XXX Maybe we should just give up here.
10446 db_hashtype=u_int32_t
10448 echo "Help: I can't seem to compile the db test program." >&4
10449 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10452 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10454 *) db_hashtype=u_int32_t
10459 : Check the return type needed for prefix
10461 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10467 #include <sys/types.h>
10470 #ifndef DB_VERSION_MAJOR
10471 size_t prefix_cb (key1, key2)
10479 info.prefix = prefix_cb;
10483 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10484 if $contains warning try.out >>/dev/null 2>&1 ; then
10485 db_prefixtype='int'
10487 db_prefixtype='size_t'
10490 db_prefixtype='size_t'
10491 : XXX Maybe we should just give up here.
10493 echo "Help: I can't seem to compile the db test program." >&4
10494 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10497 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10499 *) db_prefixtype='size_t'
10503 : check for void type
10505 echo "Checking to see how well your C compiler groks the void type..." >&4
10506 case "$voidflags" in
10508 $cat >try.c <<'EOCP'
10514 extern void moo(); /* function returning void */
10515 void (*goo)(); /* ptr to func returning void */
10517 void *hue; /* generic ptr */
10532 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10533 voidflags=$defvoidused
10534 echo "Good. It appears to support void to the level $package wants.">&4
10535 if $contains warning .out >/dev/null 2>&1; then
10536 echo "However, you might get some warnings that look like this:"
10540 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10541 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10542 echo "It supports 1..."
10543 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10544 echo "It also supports 2..."
10545 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10547 echo "And it supports 4 but not 8 definitely."
10549 echo "It doesn't support 4..."
10550 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10552 echo "But it supports 8."
10555 echo "Neither does it support 8."
10559 echo "It does not support 2..."
10560 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10562 echo "But it supports 4 and 8."
10564 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10566 echo "And it supports 4 but has not heard about 8."
10568 echo "However it supports 8 but not 4."
10573 echo "There is no support at all for void."
10578 case "$voidflags" in
10580 *) $cat >&4 <<'EOM'
10581 Support flag bits are:
10582 1: basic void declarations.
10583 2: arrays of pointers to functions returning void.
10584 4: operations between pointers to and addresses of void functions.
10585 8: generic void pointers.
10588 rp="Your void support flags add up to what?"
10596 : How can we generate normalized random numbers ?
10598 echo "Looking for a random number function..." >&4
10599 case "$randfunc" in
10601 if set drand48 val -f; eval $csym; $val; then
10603 echo "Good, found drand48()." >&4
10604 elif set random val -f; eval $csym; $val; then
10606 echo "OK, found random()." >&4
10609 echo "Yick, looks like I have to use rand()." >&4
10620 *-Dmy_rand=*|*-Dmy_srand=*)
10621 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10622 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10623 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10624 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10628 while $test "$cont"; do
10629 rp="Use which function to generate random numbers?"
10631 if $test "$ans" = "$dflt"; then
10637 if set $ans val -f; eval $csym; $val; then
10641 rp="I cannot find function $ans. Use that name anyway?"
10650 case "$randfunc" in
10652 drand01="drand48()"
10658 case "$randbits" in
10660 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10662 #$i_unistd I_UNISTD
10663 #$i_stdlib I_STDLIB
10666 # include <unistd.h>
10669 # include <stdlib.h>
10674 register unsigned long tmp;
10675 register unsigned long max = 0L;
10677 for (i = 1000; i; i--) {
10678 tmp = (unsigned long) $randfunc();
10679 if (tmp > max) max = tmp;
10681 for (i = 0; max; i++)
10687 if eval $compile_ok; then
10691 echo "(I can't seem to compile the test program...)"
10698 rp="How many bits does your $randfunc() function produce?"
10702 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10703 seedfunc="s$randfunc"
10704 randseedtype=unsigned
10708 rp="How many bits does your $randfunc() function produce?"
10711 seedfunc="s$randfunc"
10712 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10713 if set $seedfunc val -f; eval $csym; $val; then
10714 echo "(Using $seedfunc() to seed random generator)"
10716 echo "(Warning: no $seedfunc() to seed random generator)"
10719 randseedtype=unsigned
10727 echo "Determining whether or not we are on an EBCDIC system..." >&4
10728 $cat >tebcdic.c <<'EOM'
10731 if ('M'==0xd4) return 0;
10738 if eval $compile_ok; then
10740 echo "You have EBCDIC." >&4
10743 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10746 echo "I'm unable to compile the test program." >&4
10747 echo "I'll assume ASCII or some ISO Latin." >&4
10749 $rm -f tebcdic.c tebcdic
10753 : see what type file positions are declared as in the library
10754 rp="What is the type for file position used by fsetpos()?"
10755 set fpos_t fpostype long stdio.h sys/types.h
10758 : Store the full pathname to the sed program for use in the C program
10761 : see what type gids are declared as in the kernel
10763 echo "Looking for the type for group ids returned by getgid()."
10764 set gid_t gidtype xxx stdio.h sys/types.h
10768 xxx=`./findhdr sys/user.h`
10769 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10771 unsigned) dflt="$1 $2" ;;
10775 *) dflt="$gidtype";;
10778 gid_t) echo "gid_t found." ;;
10779 *) rp="What is the type for group ids returned by getgid()?"
10785 : see if getgroups exists
10786 set getgroups d_getgrps
10789 : see if setgroups exists
10790 set setgroups d_setgrps
10794 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10796 case "$d_getgrps$d_setgrps" in
10798 case "$groupstype" in
10799 '') dflt="$gidtype" ;;
10800 *) dflt="$groupstype" ;;
10803 What type of pointer is the second argument to getgroups() and setgroups()?
10804 Usually this is the same as group ids, $gidtype, but not always.
10807 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10811 *) groupstype="$gidtype";;
10814 : see what type lseek is declared as in the kernel
10815 rp="What is the type used for lseek's offset on this system?"
10816 set off_t lseektype long stdio.h sys/types.h
10820 $echo $n "Checking to see how big your file offsets are...$c" >&4
10822 #include <sys/types.h>
10826 printf("%d\n", sizeof($lseektype));
10830 if eval $compile_ok; then
10832 $echo " $lseeksize bytes." >&4
10836 echo "(I can't seem to compile the test program. Guessing...)"
10837 rp="What is the size of your file offsets (in bytes)?"
10844 echo "Checking if your $make program sets \$(MAKE)..." >&4
10845 case "$make_set_make" in
10847 $sed 's/^X //' > testmake.mak << 'EOF'
10849 X @echo 'maketemp="$(MAKE)"'
10851 case "`$make -f testmake.mak 2>/dev/null`" in
10852 *maketemp=*) make_set_make='#' ;;
10853 *) make_set_make="MAKE=$make" ;;
10855 $rm -f testmake.mak
10858 case "$make_set_make" in
10859 '#') echo "Yup, it does.";;
10860 *) echo "Nope, it doesn't.";;
10863 : see what type is used for mode_t
10864 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10865 set mode_t modetype int stdio.h sys/types.h
10868 : define a fucntion to check prototypes
10869 $cat > protochk <<EOSH
10872 optimize="$optimize"
10874 prototype="$prototype"
10879 $cat >> protochk <<'EOSH'
10884 while test $# -ge 2; do
10886 $define) echo "#include <$2>" >> try.c ;;
10887 literal) echo "$2" >> try.c ;;
10891 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
10892 cat >> try.c <<'EOCP'
10893 #ifdef CAN_PROTOTYPE
10894 #define _(args) args
10899 echo "$foo" >> try.c
10900 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10901 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10907 $eunicefix protochk
10909 : see what type is used for size_t
10910 rp="What is the type used for the length parameter for string functions?"
10911 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10914 : check for type of arguments to gethostbyaddr.
10915 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10916 case "$d_gethbyaddr" in
10920 Checking to see what type of arguments are accepted by gethostbyaddr().
10922 hdrs="$define sys/types.h
10923 $d_socket sys/socket.h
10924 $i_niin netinet/in.h
10926 $i_unistd unistd.h"
10927 : The first arg can 'char *' or 'void *'
10928 : The second arg is some of integral type
10929 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10930 for yyy in size_t long int; do
10931 case "$netdb_host_type" in
10932 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10933 if ./protochk "$try" $hdrs; then
10934 echo "Your system accepts $xxx for the first arg."
10935 echo "...and $yyy for the second arg."
10936 netdb_host_type="$xxx"
10937 netdb_hlen_type="$yyy"
10943 : In case none of those worked, prompt the user.
10944 case "$netdb_host_type" in
10945 '') rp='What is the type for the 1st argument to gethostbyaddr?'
10948 netdb_host_type=$ans
10949 rp='What is the type for the 2nd argument to gethostbyaddr?'
10952 netdb_hlen_type=$ans
10956 *) : no gethostbyaddr, so pick harmless defaults
10957 netdb_host_type='char *'
10958 netdb_hlen_type="$sizetype"
10961 # Remove the "const" if needed. -- but then we'll have a
10963 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10966 : check for type of argument to gethostbyname.
10967 if test "X$netdb_name_type" = X ; then
10968 case "$d_gethbyname" in
10972 Checking to see what type of argument is accepted by gethostbyname().
10974 hdrs="$define sys/types.h
10975 $d_socket sys/socket.h
10976 $i_niin netinet/in.h
10978 $i_unistd unistd.h"
10979 for xxx in "const char *" "char *"; do
10980 case "$netdb_name_type" in
10981 '') try="extern struct hostent *gethostbyname($xxx);"
10982 if ./protochk "$try" $hdrs; then
10983 echo "Your system accepts $xxx."
10984 netdb_name_type="$xxx"
10989 : In case none of those worked, prompt the user.
10990 case "$netdb_name_type" in
10991 '') rp='What is the type for the 1st argument to gethostbyname?'
10994 netdb_name_type=$ans
10998 *) : no gethostbyname, so pick harmless default
10999 netdb_name_type='char *'
11004 : check for type of 1st argument to getnetbyaddr.
11005 if test "X$netdb_net_type" = X ; then
11006 case "$d_getnbyaddr" in
11010 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11012 hdrs="$define sys/types.h
11013 $d_socket sys/socket.h
11014 $i_niin netinet/in.h
11016 $i_unistd unistd.h"
11017 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11018 case "$netdb_net_type" in
11019 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11020 if ./protochk "$try" $hdrs; then
11021 echo "Your system accepts $xxx."
11022 netdb_net_type="$xxx"
11027 : In case none of those worked, prompt the user.
11028 case "$netdb_net_type" in
11029 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11032 netdb_net_type=$ans
11036 *) : no getnetbyaddr, so pick harmless default
11037 netdb_net_type='long'
11041 : locate the preferred pager for this system
11055 '') dflt=/usr/ucb/more;;
11062 rp='What pager is used on your system?'
11066 : see what type pids are declared as in the kernel
11067 rp="What is the type of process ids on this system?"
11068 set pid_t pidtype int stdio.h sys/types.h
11071 : check for length of pointer
11075 $echo $n "Checking to see how big your pointers are...$c" >&4
11076 if test "$voidflags" -gt 7; then
11077 echo '#define VOID_PTR char *' > try.c
11079 echo '#define VOID_PTR void *' > try.c
11081 $cat >>try.c <<'EOCP'
11085 printf("%d\n", sizeof(VOID_PTR));
11090 if eval $compile_ok; then
11092 $echo " $ptrsize bytes." >&4
11095 echo "(I can't seem to compile the test program. Guessing...)" >&4
11096 rp="What is the size of a pointer (in bytes)?"
11104 : see if ar generates random libraries by itself
11106 echo "Checking how to generate random libraries on your machine..." >&4
11107 echo 'int bar1() { return bar2(); }' > bar1.c
11108 echo 'int bar2() { return 2; }' > bar2.c
11109 $cat > foo.c <<'EOP'
11110 main() { printf("%d\n", bar1()); exit(0); }
11112 $cc $ccflags -c bar1.c >/dev/null 2>&1
11113 $cc $ccflags -c bar2.c >/dev/null 2>&1
11114 $cc $ccflags -c foo.c >/dev/null 2>&1
11115 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11116 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11117 ./foobar >/dev/null 2>&1; then
11118 echo "$ar appears to generate random libraries itself."
11121 elif $ar ts bar$_a >/dev/null 2>&1 &&
11122 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11123 ./foobar >/dev/null 2>&1; then
11124 echo "a table of contents needs to be added with '$ar ts'."
11131 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11132 $test -f $ranlib || ranlib=''
11135 if $test -n "$ranlib"; then
11136 echo "your system has '$ranlib'; we'll use that."
11139 echo "your system doesn't seem to support random libraries"
11140 echo "so we'll use lorder and tsort to order the libraries."
11147 : check for type of arguments to select.
11148 case "$selecttype" in
11149 '') case "$d_select" in
11152 Checking to see what type of arguments are accepted by select().
11154 hdrs="$define sys/types.h
11155 $i_systime sys/time.h
11156 $i_sysselct sys/select.h
11157 $d_socket sys/socket.h"
11158 : The first arg can be int, unsigned, or size_t
11159 : The last arg may or may not be 'const'
11161 : void pointer has been seen but using that
11162 : breaks the selectminbits test
11163 for xxx in 'fd_set *' 'int *'; do
11164 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11165 for tmo in 'struct timeval *' 'const struct timeval *'; do
11167 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11168 if ./protochk "$try" $hdrs; then
11169 echo "Your system accepts $xxx."
11178 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11179 case "$d_fd_set" in
11180 $define) dflt="fd_set *" ;;
11189 *) : no select, so pick a harmless default
11196 : check for the select 'width'
11197 case "$selectminbits" in
11198 '') case "$d_select" in
11202 Checking to see on how many bits at a time your select() operates...
11205 #include <sys/types.h>
11207 #$i_systime I_SYS_TIME
11208 #$i_systimek I_SYS_TIME_KERNEL
11213 # ifdef I_SYS_TIME_KERNEL
11216 # include <sys/time.h>
11217 # ifdef I_SYS_TIME_KERNEL
11221 #$i_sysselct I_SYS_SELECT
11222 #ifdef I_SYS_SELECT
11223 #include <sys/select.h>
11227 #define S sizeof(*(b))
11229 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11230 #define NBITS (NBYTES * 8)
11239 fp = fopen("try.c", "r");
11245 b = ($selecttype)s;
11246 for (i = 0; i < NBITS; i++)
11250 select(fd + 1, b, 0, 0, &t);
11251 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11252 printf("%d\n", i + 1);
11257 if eval $compile_ok; then
11258 selectminbits=`./try`
11259 case "$selectminbits" in
11261 Cannot figure out on how many bits at a time your select() operates.
11262 I'll play safe and guess it is 32 bits.
11268 *) bits="$selectminbits bits" ;;
11270 echo "Your select() operates on $bits at a time." >&4
11272 rp='What is the minimum number of bits your select() operates on?'
11273 case "$byteorder" in
11274 1234|12345678) dflt=32 ;;
11279 selectminbits="$val"
11283 *) : no select, so pick a harmless default
11290 : Trace out the files included by signal.h, then look for SIGxxx names.
11291 : Remove SIGARRAYSIZE used by HPUX.
11292 : Remove SIGTYP void lines used by OS2.
11293 xxx=`echo '#include <signal.h>' |
11294 $cppstdin $cppminus $cppflags 2>/dev/null |
11295 $grep '^[ ]*#.*include' |
11296 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11297 : Check this list of files to be sure we have parsed the cpp output ok.
11298 : This will also avoid potentially non-existent files, such
11301 for xx in $xxx /dev/null ; do
11302 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11304 : If we have found no files, at least try signal.h
11305 case "$xxxfiles" in
11306 '') xxxfiles=`./findhdr signal.h` ;;
11309 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11310 print substr($2, 4, 20)
11312 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11313 print substr($3, 4, 20)
11315 : Append some common names just in case the awk scan failed.
11316 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11317 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11318 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11319 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11320 : generate a few handy files for later
11321 $cat > signal.c <<'EOCP'
11322 #include <sys/types.h>
11323 #include <signal.h>
11327 /* Strange style to avoid deeply-nested #if/#else/#endif */
11330 # define NSIG (_NSIG)
11336 # define NSIG (SIGMAX+1)
11342 # define NSIG (SIG_MAX+1)
11348 # define NSIG (MAXSIG+1)
11354 # define NSIG (MAX_SIG+1)
11359 # ifdef SIGARRAYSIZE
11360 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11366 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11370 /* Default to some arbitrary number that's big enough to get most
11371 of the common signals.
11377 printf("NSIG %d\n", NSIG);
11383 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11385 printf "#ifdef SIG"; printf $1; printf "\n"
11386 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11387 printf $1; printf ");\n"
11391 printf "#endif /* JUST_NSIG */\n";
11395 $cat >signal.awk <<'EOP'
11396 BEGIN { ndups = 0 }
11397 $1 ~ /^NSIG$/ { nsig = $2 }
11398 ($1 !~ /^NSIG$/) && (NF == 2) {
11399 if ($2 > maxsig) { maxsig = $2 }
11400 if (sig_name[$2]) {
11401 dup_name[ndups] = $1
11402 dup_num[ndups] = $2
11412 if (nsig == 0) { nsig = maxsig + 1 }
11413 for (n = 1; n < nsig; n++) {
11415 printf("%s %d\n", sig_name[n], sig_num[n])
11418 printf("NUM%d %d\n", n, n)
11421 for (n = 0; n < ndups; n++) {
11422 printf("%s %d\n", dup_name[n], dup_num[n])
11426 $cat >signal_cmd <<EOS
11428 if $test -s signal.lst; then
11429 echo "Using your existing signal.lst file"
11434 $cat >>signal_cmd <<'EOS'
11437 if eval $compile_ok; then
11438 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11440 echo "(I can't seem be able to compile the whole test program)" >&4
11441 echo "(I'll try it in little pieces.)" >&4
11442 set signal -DJUST_NSIG
11443 if eval $compile_ok; then
11444 ./signal$_exe > signal.nsg
11447 echo "I can't seem to figure out how many signals you have." >&4
11448 echo "Guessing 50." >&4
11449 echo 'NSIG 50' > signal.nsg
11451 : Now look at all the signal names, one at a time.
11452 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11453 $cat > signal.c <<EOCP
11454 #include <sys/types.h>
11455 #include <signal.h>
11458 printf("$xx %d\n", SIG${xx});
11463 if eval $compile; then
11464 echo "SIG${xx} found."
11465 ./signal$_exe >> signal.ls1
11467 echo "SIG${xx} NOT found."
11470 if $test -s signal.ls1; then
11471 $cat signal.nsg signal.ls1 |
11472 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11476 if $test -s signal.lst; then
11479 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11480 echo 'kill -l' >signal
11481 set X `csh -f <signal`
11485 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11487 echo $@ | $tr ' ' $trnl | \
11488 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11490 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11492 chmod a+x signal_cmd
11493 $eunicefix signal_cmd
11495 : generate list of signal names
11497 case "$sig_name_init" in
11499 *) case "$sig_num_init" in
11500 ''|*,*) doinit=yes ;;
11505 echo "Generating a list of signal names and numbers..." >&4
11507 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11508 sig_name="ZERO $sig_name"
11509 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11510 { printf "\"%s\", ", $1 }
11511 END { printf "0\n" }' signal.lst`
11512 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11513 sig_num="0 $sig_num"
11514 sig_num_init=`$awk 'BEGIN { printf "0, " }
11515 { printf "%d, ", $2}
11516 END { printf "0\n"}' signal.lst`
11519 echo "The following signals are available:"
11521 echo $sig_name | $awk \
11522 'BEGIN { linelen = 0 }
11524 for (i = 1; i <= NF; i++) {
11525 name = "SIG" $i " "
11526 linelen = linelen + length(name)
11527 if (linelen > 70) {
11529 linelen = length(name)
11535 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11537 : see what type is used for signed size_t
11538 set ssize_t ssizetype int stdio.h sys/types.h
11541 $cat > ssize.c <<EOM
11543 #include <sys/types.h>
11544 #define Size_t $sizetype
11545 #define SSize_t $dflt
11548 if (sizeof(Size_t) == sizeof(SSize_t))
11550 else if (sizeof(Size_t) == sizeof(int))
11559 if eval $compile_ok && ./ssize > /dev/null; then
11560 ssizetype=`./ssize`
11561 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11564 Help! I can't compile and run the ssize_t test program: please enlighten me!
11565 (This is probably a misconfiguration in your system or libraries, and
11566 you really ought to fix it. Still, I'll try anyway.)
11568 I need a type that is the same size as $sizetype, but is guaranteed to
11569 be signed. Common values are ssize_t, int and long.
11572 rp="What signed type is the same size as $sizetype?"
11576 $rm -f ssize ssize.*
11578 : see what type of char stdio uses.
11580 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11581 echo "Your stdio uses unsigned chars." >&4
11582 stdchar="unsigned char"
11584 echo "Your stdio uses signed chars." >&4
11588 : see if time exists
11590 if test "X$d_time" = X -o X"$timetype" = X; then
11591 if set time val -f d_time; eval $csym; $val; then
11592 echo 'time() found.' >&4
11594 rp="What is the type returned by time() on this system?"
11595 set time_t timetype long stdio.h sys/types.h
11598 echo 'time() not found, hope that will do.' >&4
11606 : see what type uids are declared as in the kernel
11608 echo "Looking for the type for user ids returned by getuid()."
11609 set uid_t uidtype xxx stdio.h sys/types.h
11613 xxx=`./findhdr sys/user.h`
11614 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11616 unsigned) dflt="$1 $2" ;;
11620 *) dflt="$uidtype";;
11623 uid_t) echo "uid_t found." ;;
11624 *) rp="What is the type for user ids returned by getuid()?"
11630 : see if dbm.h is available
11631 : see if dbmclose exists
11632 set dbmclose d_dbmclose
11635 case "$d_dbmclose" in
11645 *) set rpcsvc/dbm.h i_rpcsvcdbm
11650 *) echo "We won't be including <dbm.h>"
11660 : see if this is a sys/file.h system
11665 : do we need to include sys/file.h ?
11669 if $h_sysfile; then
11671 echo "We'll be including <sys/file.h>." >&4
11674 echo "We won't be including <sys/file.h>." >&4
11684 : see if fcntl.h is there
11689 : see if we can include fcntl.h
11695 echo "We'll be including <fcntl.h>." >&4
11698 if $h_sysfile; then
11699 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11701 echo "We won't be including <fcntl.h>." >&4
11713 : see if locale.h is available
11714 set locale.h i_locale
11717 : see if mach cthreads are available
11718 if test "X$usethreads" = "X$define"; then
11719 set mach/cthreads.h i_machcthr
11722 i_machcthr="$undef"
11727 : see if this is a math.h system
11731 : see if this is a mntent.h system
11732 set mntent.h i_mntent
11735 : see if ndbm.h is available
11740 : see if dbm_open exists
11741 set dbm_open d_dbm_open
11743 case "$d_dbm_open" in
11746 echo "We won't be including <ndbm.h>"
11755 : see if net/errno.h is available
11757 set net/errno.h val
11760 : Unfortunately, it causes problems on some systems. Arrgh.
11763 cat > try.c <<'EOM'
11766 #include <net/errno.h>
11772 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11773 echo "We'll be including <net/errno.h>." >&4
11775 echo "We won't be including <net/errno.h>." >&4
11784 : see if this is a poll.h system
11788 : get C preprocessor symbols handy
11790 $echo $n "Hmm... $c"
11791 echo $al | $tr ' ' $trnl >Cppsym.know
11792 $cat <<EOSS >Cppsym
11800 case "\$list\$#" in
11803 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11805 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11808 unknown="\$unknown \$sym"
11818 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11820 exit 0; _ _ _ _\1\\ \1\\
11823 echo "exit 1; _ _ _" >>Cppsym\$\$
11824 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11826 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11832 $rm -f Cppsym\$\$ Cppsym2\$\$
11837 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11839 : now check the C compiler for additional symbols
11845 for i in \`$cc -v -c tmp.c 2>&1\`
11848 -D*) echo "\$i" | $sed 's/^-D//';;
11849 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11856 ./ccsym > ccsym1.raw
11857 if $test -s ccsym1.raw; then
11858 $sort ccsym1.raw | $uniq >ccsym.raw
11860 mv ccsym1.raw ccsym.raw
11863 $awk '/\=/ { print $0; next }
11864 { print $0"=1" }' ccsym.raw >ccsym.list
11865 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11866 $comm -13 ccsym.true ccsym.list >ccsym.own
11867 $comm -12 ccsym.true ccsym.list >ccsym.com
11868 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11871 if $test -z ccsym.raw; then
11872 echo "Your C compiler doesn't seem to define any symbol!" >&4
11874 echo "However, your C preprocessor defines the following ones:"
11877 if $test -s ccsym.com; then
11878 echo "Your C compiler and pre-processor define these symbols:"
11879 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11882 $test "$silent" || sleep 1
11884 if $test -s ccsym.cpp; then
11885 $test "$also" && echo " "
11886 echo "Your C pre-processor ${also}defines the following $symbols:"
11887 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11889 $test "$silent" || sleep 1
11891 if $test -s ccsym.own; then
11892 $test "$also" && echo " "
11893 echo "Your C compiler ${also}defines the following cpp variables:"
11894 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11895 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11896 $test "$silent" || sleep 1
11901 : see if this is a termio system
11905 if $test `./findhdr termios.h`; then
11906 set tcsetattr i_termios
11912 "$define") echo "You have POSIX termios.h... good!" >&4;;
11913 *) if ./Cppsym pyr; then
11914 case "`/bin/universe`" in
11915 ucb) if $test `./findhdr sgtty.h`; then
11917 echo "<sgtty.h> found." >&4
11919 echo "System is pyramid with BSD universe."
11920 echo "<sgtty.h> not found--you could have problems." >&4
11922 *) if $test `./findhdr termio.h`; then
11924 echo "<termio.h> found." >&4
11926 echo "System is pyramid with USG universe."
11927 echo "<termio.h> not found--you could have problems." >&4
11931 if $test `./findhdr termio.h`; then
11932 echo "<termio.h> found." >&4
11934 elif $test `./findhdr sgtty.h`; then
11935 echo "<sgtty.h> found." >&4
11938 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11941 if $test `./findhdr sgtty.h`; then
11942 echo "<sgtty.h> found." >&4
11944 elif $test `./findhdr termio.h`; then
11945 echo "<termio.h> found." >&4
11948 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11952 set i_termio; eval $setvar
11953 val=$val2; set i_sgtty; eval $setvar
11954 val=$val3; set i_termios; eval $setvar
11956 : see if stdarg is available
11958 if $test `./findhdr stdarg.h`; then
11959 echo "<stdarg.h> found." >&4
11962 echo "<stdarg.h> NOT found." >&4
11966 : see if varags is available
11968 if $test `./findhdr varargs.h`; then
11969 echo "<varargs.h> found." >&4
11971 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11974 : set up the varargs testing programs
11975 $cat > varargs.c <<EOP
11977 #include <stdarg.h>
11980 #include <varargs.h>
11984 int f(char *p, ...)
11998 p = va_arg(ap, char *);
12003 $cat > varargs <<EOP
12005 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12014 : now check which varargs header should be included
12019 if `./varargs I_STDARG`; then
12021 elif `./varargs I_VARARGS`; then
12026 if `./varargs I_VARARGS`; then
12033 echo "I could not find the definition for va_dcl... You have problems..." >&4
12034 val="$undef"; set i_stdarg; eval $setvar
12035 val="$undef"; set i_varargs; eval $setvar
12040 case "$i_varhdr" in
12042 val="$define"; set i_stdarg; eval $setvar
12043 val="$undef"; set i_varargs; eval $setvar
12046 val="$undef"; set i_stdarg; eval $setvar
12047 val="$define"; set i_varargs; eval $setvar
12050 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12054 : see if stddef is available
12055 set stddef.h i_stddef
12058 : see if sys/access.h is available
12059 set sys/access.h i_sysaccess
12062 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12063 set sys/filio.h i_sysfilio
12066 if $test `./findhdr sys/ioctl.h`; then
12068 echo '<sys/ioctl.h> found.' >&4
12071 if $test $i_sysfilio = "$define"; then
12072 echo '<sys/ioctl.h> NOT found.' >&4
12074 $test $i_sgtty = "$define" && xxx="sgtty.h"
12075 $test $i_termio = "$define" && xxx="termio.h"
12076 $test $i_termios = "$define" && xxx="termios.h"
12077 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12083 : see if sys/resource.h has to be included
12084 set sys/resource.h i_sysresrc
12087 : see if sys/security.h is available
12088 set sys/security.h i_syssecrt
12091 : see if this is a sys/statvfs.h system
12092 set sys/statvfs.h i_sysstatvfs
12095 : see if this is a sys/un.h system
12096 set sys/un.h i_sysun
12099 : see if this is a syswait system
12100 set sys/wait.h i_syswait
12103 : see if this is an utime system
12104 set utime.h i_utime
12107 : see if this is a values.h system
12108 set values.h i_values
12111 : see if this is a vfork system
12114 set vfork.h i_vfork
12122 : see if gdbm.h is available
12127 : see if gdbm_open exists
12128 set gdbm_open d_gdbm_open
12130 case "$d_gdbm_open" in
12133 echo "We won't be including <gdbm.h>"
12143 echo "Looking for extensions..." >&4
12146 : If we are using the old config.sh, known_extensions may contain
12147 : old or inaccurate or duplicate values.
12148 known_extensions=''
12149 nonxs_extensions=''
12150 : We do not use find because it might not be available.
12151 : We do not just use MANIFEST because the user may have dropped
12152 : some additional extensions into the source tree and expect them
12156 DynaLoader|dynaload) ;;
12157 *) if $test -f $xxx/$xxx.xs; then
12158 known_extensions="$known_extensions $xxx"
12159 elif $test -f $xxx/Makefile.PL; then
12160 nonxs_extensions="$nonxs_extensions $xxx"
12162 if $test -d $xxx; then
12163 # Look for nested extensions, eg. Devel/Dprof.
12166 if $test -f $yyy/$yyy.xs; then
12167 known_extensions="$known_extensions $xxx/$yyy"
12168 elif $test -f $yyy/Makefile.PL; then
12169 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12178 set X $nonxs_extensions
12180 nonxs_extensions="$*"
12181 set X $known_extensions
12183 known_extensions="$*"
12186 : Now see which are supported on this system.
12188 for xxx in $known_extensions ; do
12192 $define) avail_ext="$avail_ext $xxx" ;;
12195 GDBM_File|gdbm_fil)
12197 $define) avail_ext="$avail_ext $xxx" ;;
12200 NDBM_File|ndbm_fil)
12202 $define) avail_ext="$avail_ext $xxx" ;;
12205 ODBM_File|odbm_fil)
12206 case "${i_dbm}${i_rpcsvcdbm}" in
12207 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12211 case "$useposix" in
12212 true|define|y) avail_ext="$avail_ext $xxx" ;;
12216 case "$useopcode" in
12217 true|define|y) avail_ext="$avail_ext $xxx" ;;
12221 case "$d_socket" in
12222 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12226 case "$usethreads" in
12227 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12231 : XXX Do we need a useipcsysv variable here
12232 case "${d_msg}${d_sem}${d_shm}" in
12233 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12236 *) avail_ext="$avail_ext $xxx"
12245 : Now see which nonxs extensions are supported on this system.
12246 : For now assume all are.
12248 for xxx in $nonxs_extensions ; do
12250 *) nonxs_ext="$nonxs_ext $xxx"
12262 A number of extensions are supplied with $package. You may choose to
12263 compile these extensions for dynamic loading (the default), compile
12264 them into the $package executable (static loading), or not include
12265 them at all. Answer "none" to include no extensions.
12266 Note that DynaLoader is always built and need not be mentioned here.
12269 case "$dynamic_ext" in
12270 '') dflt="$avail_ext" ;;
12271 *) dflt="$dynamic_ext"
12272 # Perhaps we are reusing an old out-of-date config.sh.
12275 if test X"$dynamic_ext" != X"$avail_ext"; then
12277 NOTICE: Your previous config.sh list may be incorrect.
12278 The extensions now available to you are
12280 but the default list from your previous config.sh is
12292 rp="What extensions do you wish to load dynamically?"
12295 none) dynamic_ext=' ' ;;
12296 *) dynamic_ext="$ans" ;;
12299 case "$static_ext" in
12301 : Exclude those already listed in dynamic linking
12303 for xxx in $avail_ext; do
12304 case " $dynamic_ext " in
12306 *) dflt="$dflt $xxx" ;;
12313 *) dflt="$static_ext"
12320 rp="What extensions do you wish to load statically?"
12323 none) static_ext=' ' ;;
12324 *) static_ext="$ans" ;;
12329 A number of extensions are supplied with $package. Answer "none"
12330 to include no extensions.
12331 Note that DynaLoader is always built and need not be mentioned here.
12334 case "$static_ext" in
12335 '') dflt="$avail_ext" ;;
12336 *) dflt="$static_ext"
12337 # Perhaps we are reusing an old out-of-date config.sh.
12340 if test X"$static_ext" != X"$avail_ext"; then
12342 NOTICE: Your previous config.sh list may be incorrect.
12343 The extensions now available to you are
12345 but the default list from your previous config.sh is
12354 : Exclude those that are not xs extensions
12358 rp="What extensions do you wish to include?"
12361 none) static_ext=' ' ;;
12362 *) static_ext="$ans" ;;
12367 set X $dynamic_ext $static_ext $nonxs_ext
12371 : Remove build directory name from cppstdin so it can be used from
12372 : either the present location or the final installed location.
12374 : Get out of the UU directory to get correct path name.
12376 case "$cppstdin" in
12378 echo "Stripping down cppstdin path name"
12384 : end of configuration questions
12386 echo "End of configuration questions."
12389 : back to where it started
12390 if test -d ../UU; then
12394 : configuration may be patched via a 'config.over' file
12395 if $test -f config.over; then
12398 rp='I see a config.over file. Do you wish to load it?'
12401 n*) echo "OK, I'll ignore it.";;
12403 echo "Configuration override changes have been loaded."
12408 : in case they want portability, strip down executable paths
12409 case "$d_portable" in
12412 echo "Stripping down executable paths..." >&4
12413 for file in $loclist $trylist; do
12414 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12415 eval $file="\$file"
12421 : create config.sh file
12423 echo "Creating config.sh..." >&4
12424 $spitshell <<EOT >config.sh
12427 # This file was produced by running the Configure script. It holds all the
12428 # definitions figured out by Configure. Should you modify one of these values,
12429 # do not forget to propagate your changes by running "Configure -der". You may
12430 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12433 # Package name : $package
12434 # Source directory : $src
12435 # Configuration time: $cf_time
12436 # Configured by : $cf_by
12437 # Target system : $myuname
12447 Revision='$Revision'
12454 alignbytes='$alignbytes'
12455 ansi2knr='$ansi2knr'
12456 aphostname='$aphostname'
12457 apiversion='$apiversion'
12460 archlibexp='$archlibexp'
12461 archname64='$archname64'
12462 archname='$archname'
12463 archobjs='$archobjs'
12471 byteorder='$byteorder'
12473 castflags='$castflags'
12476 cccdlflags='$cccdlflags'
12477 ccdlflags='$ccdlflags'
12480 cf_email='$cf_email'
12485 clocktype='$clocktype'
12487 compress='$compress'
12488 contains='$contains'
12492 cpp_stuff='$cpp_stuff'
12493 cppflags='$cppflags'
12495 cppminus='$cppminus'
12497 cppstdin='$cppstdin'
12498 cryptlib='$cryptlib'
12500 d_Gconvert='$d_Gconvert'
12501 d_access='$d_access'
12502 d_accessx='$d_accessx'
12504 d_archlib='$d_archlib'
12505 d_attribut='$d_attribut'
12509 d_bsdgetpgrp='$d_bsdgetpgrp'
12510 d_bsdsetpgrp='$d_bsdsetpgrp'
12512 d_casti32='$d_casti32'
12513 d_castneg='$d_castneg'
12514 d_charvspr='$d_charvspr'
12516 d_chroot='$d_chroot'
12517 d_chsize='$d_chsize'
12518 d_closedir='$d_closedir'
12519 d_cmsghdr_s='$d_cmsghdr_s'
12523 d_cuserid='$d_cuserid'
12524 d_dbl_dig='$d_dbl_dig'
12525 d_dbmclose64='$d_dbmclose64'
12526 d_dbminit64='$d_dbminit64'
12527 d_delete64='$d_delete64'
12528 d_difftime='$d_difftime'
12529 d_dirent64_s='$d_dirent64_s'
12530 d_dirnamlen='$d_dirnamlen'
12531 d_dlerror='$d_dlerror'
12532 d_dlopen='$d_dlopen'
12533 d_dlsymun='$d_dlsymun'
12534 d_dosuid='$d_dosuid'
12535 d_drand48proto='$d_drand48proto'
12537 d_eaccess='$d_eaccess'
12538 d_endgrent='$d_endgrent'
12539 d_endhent='$d_endhent'
12540 d_endnent='$d_endnent'
12541 d_endpent='$d_endpent'
12542 d_endpwent='$d_endpwent'
12543 d_endsent='$d_endsent'
12544 d_eofnblk='$d_eofnblk'
12545 d_eunice='$d_eunice'
12546 d_fchmod='$d_fchmod'
12547 d_fchown='$d_fchown'
12549 d_fd_macros='$d_fd_macros'
12550 d_fd_set='$d_fd_set'
12551 d_fds_bits='$d_fds_bits'
12552 d_fetch64='$d_fetch64'
12553 d_fgetpos64='$d_fgetpos64'
12554 d_fgetpos='$d_fgetpos'
12555 d_firstkey64='$d_firstkey64'
12556 d_flexfnam='$d_flexfnam'
12557 d_flock64_s='$d_flock64_s'
12559 d_fopen64='$d_fopen64'
12561 d_fpathconf='$d_fpathconf'
12562 d_freopen64='$d_freopen64'
12563 d_fseek64='$d_fseek64'
12564 d_fseeko64='$d_fseeko64'
12565 d_fseeko='$d_fseeko'
12566 d_fsetpos64='$d_fsetpos64'
12567 d_fsetpos='$d_fsetpos'
12568 d_fstat64='$d_fstat64'
12569 d_fstatfs='$d_fstatfs'
12570 d_fstatvfs='$d_fstatvfs'
12571 d_ftell64='$d_ftell64'
12572 d_ftello64='$d_ftello64'
12573 d_ftello='$d_ftello'
12575 d_ftruncate64='$d_ftruncate64'
12576 d_getgrent='$d_getgrent'
12577 d_getgrps='$d_getgrps'
12578 d_gethbyaddr='$d_gethbyaddr'
12579 d_gethbyname='$d_gethbyname'
12580 d_gethent='$d_gethent'
12581 d_gethname='$d_gethname'
12582 d_gethostprotos='$d_gethostprotos'
12583 d_getlogin='$d_getlogin'
12584 d_getnbyaddr='$d_getnbyaddr'
12585 d_getnbyname='$d_getnbyname'
12586 d_getnent='$d_getnent'
12587 d_getnetprotos='$d_getnetprotos'
12588 d_getpbyname='$d_getpbyname'
12589 d_getpbynumber='$d_getpbynumber'
12590 d_getpent='$d_getpent'
12591 d_getpgid='$d_getpgid'
12592 d_getpgrp2='$d_getpgrp2'
12593 d_getpgrp='$d_getpgrp'
12594 d_getppid='$d_getppid'
12595 d_getprior='$d_getprior'
12596 d_getprotoprotos='$d_getprotoprotos'
12597 d_getpwent='$d_getpwent'
12598 d_getsbyname='$d_getsbyname'
12599 d_getsbyport='$d_getsbyport'
12600 d_getsent='$d_getsent'
12601 d_getservprotos='$d_getservprotos'
12602 d_gettimeod='$d_gettimeod'
12603 d_gnulibc='$d_gnulibc'
12604 d_grpasswd='$d_grpasswd'
12607 d_inetaton='$d_inetaton'
12608 d_ino64t='$d_ino64t'
12609 d_int64t='$d_int64t'
12610 d_iovec_s='$d_iovec_s'
12611 d_isascii='$d_isascii'
12612 d_killpg='$d_killpg'
12613 d_lchown='$d_lchown'
12615 d_locconv='$d_locconv'
12616 d_lockf64='$d_lockf64'
12618 d_longdbl='$d_longdbl'
12619 d_longlong='$d_longlong'
12620 d_lseek64='$d_lseek64'
12621 d_lstat64='$d_lstat64'
12624 d_mbstowcs='$d_mbstowcs'
12625 d_mbtowc='$d_mbtowc'
12626 d_memcmp='$d_memcmp'
12627 d_memcpy='$d_memcpy'
12628 d_memmove='$d_memmove'
12629 d_memset='$d_memset'
12631 d_mkfifo='$d_mkfifo'
12632 d_mktime='$d_mktime'
12634 d_msg_ctrunc='$d_msg_ctrunc'
12635 d_msg_dontroute='$d_msg_dontroute'
12636 d_msg_oob='$d_msg_oob'
12637 d_msg_peek='$d_msg_peek'
12638 d_msg_proxy='$d_msg_proxy'
12639 d_msgctl='$d_msgctl'
12640 d_msgget='$d_msgget'
12641 d_msghdr_s='$d_msghdr_s'
12642 d_msgrcv='$d_msgrcv'
12643 d_msgsnd='$d_msgsnd'
12644 d_mymalloc='$d_mymalloc'
12645 d_nextkey64='$d_nextkey64'
12647 d_off64t='$d_off64t'
12648 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12649 d_oldpthreads='$d_oldpthreads'
12650 d_oldsock='$d_oldsock'
12652 d_open64='$d_open64'
12653 d_opendir64='$d_opendir64'
12654 d_pathconf='$d_pathconf'
12656 d_phostname='$d_phostname'
12659 d_portable='$d_portable'
12660 d_pthread_yield='$d_pthread_yield'
12662 d_pwchange='$d_pwchange'
12663 d_pwclass='$d_pwclass'
12664 d_pwcomment='$d_pwcomment'
12665 d_pwexpire='$d_pwexpire'
12666 d_pwgecos='$d_pwgecos'
12667 d_pwpasswd='$d_pwpasswd'
12668 d_pwquota='$d_pwquota'
12669 d_readdir64='$d_readdir64'
12670 d_readdir='$d_readdir'
12671 d_readlink='$d_readlink'
12673 d_recvmsg='$d_recvmsg'
12674 d_rename='$d_rename'
12675 d_rewinddir='$d_rewinddir'
12677 d_safebcpy='$d_safebcpy'
12678 d_safemcpy='$d_safemcpy'
12679 d_sanemcmp='$d_sanemcmp'
12680 d_sched_yield='$d_sched_yield'
12681 d_scm_rights='$d_scm_rights'
12682 d_seekdir64='$d_seekdir64'
12683 d_seekdir='$d_seekdir'
12684 d_select='$d_select'
12686 d_semctl='$d_semctl'
12687 d_semctl_semid_ds='$d_semctl_semid_ds'
12688 d_semctl_semun='$d_semctl_semun'
12689 d_semget='$d_semget'
12691 d_sendmsg='$d_sendmsg'
12692 d_setegid='$d_setegid'
12693 d_seteuid='$d_seteuid'
12694 d_setgrent='$d_setgrent'
12695 d_setgrps='$d_setgrps'
12696 d_sethent='$d_sethent'
12697 d_setlinebuf='$d_setlinebuf'
12698 d_setlocale='$d_setlocale'
12699 d_setnent='$d_setnent'
12700 d_setpent='$d_setpent'
12701 d_setpgid='$d_setpgid'
12702 d_setpgrp2='$d_setpgrp2'
12703 d_setpgrp='$d_setpgrp'
12704 d_setprior='$d_setprior'
12705 d_setpwent='$d_setpwent'
12706 d_setregid='$d_setregid'
12707 d_setresgid='$d_setresgid'
12708 d_setresuid='$d_setresuid'
12709 d_setreuid='$d_setreuid'
12710 d_setrgid='$d_setrgid'
12711 d_setruid='$d_setruid'
12712 d_setsent='$d_setsent'
12713 d_setsid='$d_setsid'
12714 d_setvbuf='$d_setvbuf'
12718 d_shmatprototype='$d_shmatprototype'
12719 d_shmctl='$d_shmctl'
12721 d_shmget='$d_shmget'
12722 d_sigaction='$d_sigaction'
12723 d_sigsetjmp='$d_sigsetjmp'
12724 d_socket='$d_socket'
12725 d_sockpair='$d_sockpair'
12726 d_stat64='$d_stat64'
12727 d_statblks='$d_statblks'
12728 d_statfs='$d_statfs'
12729 d_statfsflags='$d_statfsflags'
12730 d_statvfs='$d_statvfs'
12731 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12732 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12733 d_stdiobase='$d_stdiobase'
12734 d_stdstdio='$d_stdstdio'
12735 d_store64='$d_store64'
12736 d_strchr='$d_strchr'
12737 d_strcoll='$d_strcoll'
12738 d_strctcpy='$d_strctcpy'
12739 d_strerrm='$d_strerrm'
12740 d_strerror='$d_strerror'
12741 d_strtod='$d_strtod'
12742 d_strtol='$d_strtol'
12743 d_strtoul='$d_strtoul'
12744 d_strxfrm='$d_strxfrm'
12745 d_suidsafe='$d_suidsafe'
12746 d_symlink='$d_symlink'
12747 d_syscall='$d_syscall'
12748 d_sysconf='$d_sysconf'
12749 d_sysernlst='$d_sysernlst'
12750 d_syserrlst='$d_syserrlst'
12751 d_system='$d_system'
12752 d_tcgetpgrp='$d_tcgetpgrp'
12753 d_tcsetpgrp='$d_tcsetpgrp'
12754 d_telldir64='$d_telldir64'
12755 d_telldir='$d_telldir'
12758 d_tmpfile64='$d_tmpfile64'
12759 d_truncate64='$d_truncate64'
12760 d_truncate='$d_truncate'
12761 d_tzname='$d_tzname'
12764 d_union_semun='$d_union_semun'
12766 d_void_closedir='$d_void_closedir'
12767 d_voidsig='$d_voidsig'
12768 d_voidtty='$d_voidtty'
12769 d_volatile='$d_volatile'
12770 d_vprintf='$d_vprintf'
12772 d_waitpid='$d_waitpid'
12773 d_wcstombs='$d_wcstombs'
12774 d_wctomb='$d_wctomb'
12775 d_writev='$d_writev'
12778 db_hashtype='$db_hashtype'
12779 db_prefixtype='$db_prefixtype'
12780 defvoidused='$defvoidused'
12781 direntrytype='$direntrytype'
12784 doublesize='$doublesize'
12786 dynamic_ext='$dynamic_ext'
12792 eunicefix='$eunicefix'
12795 extensions='$extensions'
12797 firstmakefile='$firstmakefile'
12799 fpostype='$fpostype'
12800 freetype='$freetype'
12801 full_csh='$full_csh'
12802 full_sed='$full_sed'
12803 gccversion='$gccversion'
12807 groupcat='$groupcat'
12808 groupstype='$groupstype'
12811 h_sysfile='$h_sysfile'
12815 i_arpainet='$i_arpainet'
12816 i_bsdioctl='$i_bsdioctl'
12819 i_dirent='$i_dirent'
12826 i_inttypes='$i_inttypes'
12827 i_limits='$i_limits'
12828 i_locale='$i_locale'
12829 i_machcthr='$i_machcthr'
12830 i_malloc='$i_malloc'
12832 i_memory='$i_memory'
12833 i_mntent='$i_mntent'
12836 i_neterrno='$i_neterrno'
12840 i_rpcsvcdbm='$i_rpcsvcdbm'
12843 i_stdarg='$i_stdarg'
12844 i_stddef='$i_stddef'
12845 i_stdlib='$i_stdlib'
12846 i_string='$i_string'
12847 i_sysaccess='$i_sysaccess'
12848 i_sysdir='$i_sysdir'
12849 i_sysfile='$i_sysfile'
12850 i_sysfilio='$i_sysfilio'
12852 i_sysioctl='$i_sysioctl'
12853 i_sysmount='$i_sysmount'
12854 i_sysndir='$i_sysndir'
12855 i_sysparam='$i_sysparam'
12856 i_sysresrc='$i_sysresrc'
12857 i_syssecrt='$i_syssecrt'
12858 i_sysselct='$i_sysselct'
12859 i_syssockio='$i_syssockio'
12860 i_sysstat='$i_sysstat'
12861 i_sysstatvfs='$i_sysstatvfs'
12862 i_systime='$i_systime'
12863 i_systimek='$i_systimek'
12864 i_systimes='$i_systimes'
12865 i_systypes='$i_systypes'
12866 i_sysuio='$i_sysuio'
12868 i_syswait='$i_syswait'
12869 i_termio='$i_termio'
12870 i_termios='$i_termios'
12872 i_unistd='$i_unistd'
12874 i_values='$i_values'
12875 i_varargs='$i_varargs'
12876 i_varhdr='$i_varhdr'
12878 ignore_versioned_solibs='$ignore_versioned_solibs'
12881 installarchlib='$installarchlib'
12882 installbin='$installbin'
12883 installman1dir='$installman1dir'
12884 installman3dir='$installman3dir'
12885 installprivlib='$installprivlib'
12886 installscript='$installscript'
12887 installsitearch='$installsitearch'
12888 installsitelib='$installsitelib'
12889 installusrbinperl='$installusrbinperl'
12891 known_extensions='$known_extensions'
12895 lddlflags='$lddlflags'
12903 libswanted='$libswanted'
12909 locincpth='$locincpth'
12910 loclibpth='$loclibpth'
12911 longdblsize='$longdblsize'
12912 longlongsize='$longlongsize'
12913 longsize='$longsize'
12917 lseeksize='$lseeksize'
12918 lseektype='$lseektype'
12922 make_set_make='$make_set_make'
12923 mallocobj='$mallocobj'
12924 mallocsrc='$mallocsrc'
12925 malloctype='$malloctype'
12927 man1direxp='$man1direxp'
12930 man3direxp='$man3direxp'
12934 mips_type='$mips_type'
12937 modetype='$modetype'
12940 myarchname='$myarchname'
12941 mydomain='$mydomain'
12942 myhostname='$myhostname'
12945 netdb_hlen_type='$netdb_hlen_type'
12946 netdb_host_type='$netdb_host_type'
12947 netdb_name_type='$netdb_name_type'
12948 netdb_net_type='$netdb_net_type'
12951 nm_so_opt='$nm_so_opt'
12952 nonxs_ext='$nonxs_ext'
12954 o_nonblock='$o_nonblock'
12956 old_pthread_create_joinable='$old_pthread_create_joinable'
12957 optimize='$optimize'
12958 orderlib='$orderlib'
12964 patchlevel='$patchlevel'
12965 path_sep='$path_sep'
12967 perladmin='$perladmin'
12968 perlpath='$perlpath'
12970 phostname='$phostname'
12976 prefixexp='$prefixexp'
12978 privlibexp='$privlibexp'
12979 prototype='$prototype'
12981 randbits='$randbits'
12982 randfunc='$randfunc'
12983 randseedtype='$randseedtype'
12985 rd_nodata='$rd_nodata'
12989 sched_yield='$sched_yield'
12990 scriptdir='$scriptdir'
12991 scriptdirexp='$scriptdirexp'
12993 seedfunc='$seedfunc'
12994 selectminbits='$selectminbits'
12995 selecttype='$selecttype'
12996 sendmail='$sendmail'
12999 sharpbang='$sharpbang'
13000 shmattype='$shmattype'
13001 shortsize='$shortsize'
13004 sig_name='$sig_name'
13005 sig_name_init='$sig_name_init'
13007 sig_num_init='$sig_num_init'
13008 signal_t='$signal_t'
13009 sitearch='$sitearch'
13010 sitearchexp='$sitearchexp'
13012 sitelibexp='$sitelibexp'
13013 sizetype='$sizetype'
13018 sockethdr='$sockethdr'
13019 socketlib='$socketlib'
13021 spackage='$spackage'
13022 spitshell='$spitshell'
13025 ssizetype='$ssizetype'
13026 startperl='$startperl'
13028 static_ext='$static_ext'
13030 stdio_base='$stdio_base'
13031 stdio_bufsiz='$stdio_bufsiz'
13032 stdio_cnt='$stdio_cnt'
13033 stdio_filbuf='$stdio_filbuf'
13034 stdio_ptr='$stdio_ptr'
13037 subversion='$subversion'
13044 timeincl='$timeincl'
13045 timetype='$timetype'
13053 use64bits='$use64bits'
13055 usemultiplicity='$usemultiplicity'
13056 usemymalloc='$usemymalloc'
13058 useopcode='$useopcode'
13059 useperlio='$useperlio'
13060 useposix='$useposix'
13062 useshrplib='$useshrplib'
13063 usethreads='$usethreads'
13064 usevfork='$usevfork'
13069 voidflags='$voidflags'
13075 : Add in command line options if available
13076 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13078 : add special variables
13079 $test -f $src/patchlevel.h && \
13080 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13081 echo "CONFIG=true" >>config.sh
13083 : propagate old symbols
13084 if $test -f UU/config.sh; then
13085 <UU/config.sh sort | uniq >UU/oldconfig.sh
13086 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13087 sort | uniq -u >UU/oldsyms
13088 set X `cat UU/oldsyms`
13094 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13096 echo "# Variables propagated from previous config.sh file." >>config.sh
13097 for sym in `cat UU/oldsyms`; do
13098 echo " Propagating $hint variable "'$'"$sym..."
13099 eval 'tmp="$'"${sym}"'"'
13101 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13107 : Finish up by extracting the .SH files
13121 If you'd like to make any changes to the config.sh file before I begin
13122 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13125 rp="Press return or use a shell escape to edit config.sh:"
13130 *) : in case they cannot read
13131 sh 1>&4 -c "$ans";;
13136 : if this fails, just run all the .SH files by hand
13143 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13150 Now you need to generate make dependencies by running "$make depend".
13151 You might prefer to run it in background: "$make depend > makedepend.out &"
13152 It can take a while, so you might not want to run it right now.
13157 rp="Run $make depend now?"
13161 $make depend && echo "Now you must run a $make."
13164 echo "You must run '$make depend' then '$make'."
13167 elif test -f [Mm]akefile; then
13169 echo "Now you must run a $make."
13174 if $test -f Policy.sh; then
13177 If you compile $package on a different machine or from a different object
13178 directory, copy the Policy.sh file from this object directory to the
13179 new one before you run Configure -- this will help you with most of
13180 the policy defaults.
13184 if $test -f config.msg; then
13185 echo "Hmm. I also noted the following information while running:"
13187 $cat config.msg >&4
13190 $rm -f kit*isdone ark*isdone