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 14:48: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 perlbug@perl.com 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 perlbug@perl.com 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 echo $baserev $patchlevel | \
3029 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3031 version=`LC_ALL=C; export LC_ALL; \
3032 echo $baserev $patchlevel $subversion | \
3033 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3035 : Figure out perl API version. Perhaps this should be in patchlevel.h
3036 if test "$subversion" -lt 50; then
3037 apiversion=`LC_ALL=C; export LC_ALL; \
3038 LANGUAGE=C; export LANGUAGE; \
3039 echo $baserev $patchlevel | \
3040 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3042 apiversion="$version"
3045 : determine where private library files go
3046 : Usual default is /usr/local/lib/perl5/$version.
3047 : Also allow things like /opt/perl/lib/$version, since
3048 : /opt/perl/lib/perl5... would be redundant.
3050 *perl*) set dflt privlib lib/$version ;;
3051 *) set dflt privlib lib/$package/$version ;;
3056 There are some auxiliary files for $package that need to be put into a
3057 private library directory that is accessible by everyone.
3061 rp='Pathname where the private library files will reside?'
3063 if $test "X$privlibexp" != "X$ansexp"; then
3067 privlibexp="$ansexp"
3071 Since you are running AFS, I need to distinguish the directory in which
3072 private files reside from the directory in which they are installed (and from
3073 which they are presumably copied to the former directory by occult means).
3076 case "$installprivlib" in
3077 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3078 *) dflt="$installprivlib";;
3081 rp='Where will private files be installed?'
3083 installprivlib="$ans"
3085 installprivlib="$privlibexp"
3088 : set the prefixup variable, to restore leading tilda escape
3089 prefixup='case "$prefixexp" in
3091 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3094 : determine where public architecture dependent libraries go
3097 : privlib default is /usr/local/lib/$package/$version
3098 : archlib default is /usr/local/lib/$package/$version/$archname
3099 : privlib may have an optional trailing /share.
3100 tdflt=`echo $privlib | $sed 's,/share$,,'`
3101 tdflt=$tdflt/$archname
3110 $spackage contains architecture-dependent library files. If you are
3111 sharing libraries in a heterogeneous environment, you might store
3112 these files in a separate location. Otherwise, you can just include
3113 them with the rest of the public library files.
3117 rp='Where do you want to put the public architecture-dependent libraries?'
3120 archlibexp="$ansexp"
3125 Since you are running AFS, I need to distinguish the directory in
3126 which architecture-dependent library files reside from the directory
3127 in which they are installed (and from which they are presumably copied
3128 to the former directory by occult means).
3131 case "$installarchlib" in
3132 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3133 *) dflt="$installarchlib";;
3136 rp='Where will architecture-dependent library files be installed?'
3138 installarchlib="$ans"
3140 installarchlib="$archlibexp"
3142 if $test X"$archlib" = X"$privlib"; then
3148 : make some quick guesses about what we are up against
3150 $echo $n "Hmm... $c"
3160 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3161 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3163 echo "Looks kind of like an OSF/1 system, but we'll see..."
3165 elif test `echo abc | tr a-z A-Z` = Abc ; then
3166 xxx=`./loc addbib blurfl $pth`
3167 if $test -f $xxx; then
3168 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3172 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3173 echo "Looks kind of like an extended USG system, but we'll see..."
3175 echo "Looks kind of like a USG system, but we'll see..."
3179 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3180 echo "Looks kind of like a BSD system, but we'll see..."
3184 echo "Looks kind of like a Version 7 system, but we'll see..."
3187 case "$eunicefix" in
3190 There is, however, a strange, musty smell in the air that reminds me of
3191 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3195 : it so happens the Eunice I know will not run shell scripts in Unix format
3199 echo "Congratulations. You aren't running Eunice."
3203 : Detect OS2. The p_ variable is set above in the Head.U unit.
3208 I have the feeling something is not exactly right, however...don't tell me...
3209 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3214 if test -f /xenix; then
3215 echo "Actually, this looks more like a XENIX system..."
3220 echo "It's not Xenix..."
3225 if test -f /venix; then
3226 echo "Actually, this looks more like a VENIX system..."
3233 echo "Nor is it Venix..."
3236 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3237 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3240 : see if setuid scripts can be secure
3243 Some kernels have a bug that prevents setuid #! scripts from being
3244 secure. Some sites have disabled setuid #! scripts because of this.
3246 First let's decide if your kernel supports secure setuid #! scripts.
3247 (If setuid #! scripts would be secure but have been disabled anyway,
3248 don't say that they are secure if asked.)
3253 if $test -d /dev/fd; then
3254 echo "#!$ls" >reflect
3255 chmod +x,u+s reflect
3256 ./reflect >flect 2>&1
3257 if $contains "/dev/fd" flect >/dev/null; then
3258 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3262 If you are not sure if they are secure, I can check but I'll need a
3263 username and password different from the one you are using right now.
3264 If you don't have such a username or don't want me to test, simply
3268 rp='Other username to test security of setuid scripts with?'
3273 case "$d_suidsafe" in
3274 '') echo "I'll assume setuid scripts are *not* secure." >&4
3277 echo "Well, the $hint value is *not* secure." >&4
3279 *) echo "Well, the $hint value *is* secure." >&4
3284 $rm -f reflect flect
3285 echo "#!$ls" >reflect
3286 chmod +x,u+s reflect
3289 echo '"su" will (probably) prompt you for '"$ans's password."
3290 su $ans -c './reflect >flect'
3291 if $contains "/dev/fd" flect >/dev/null; then
3292 echo "Okay, it looks like setuid scripts are secure." >&4
3295 echo "I don't think setuid scripts are secure." >&4
3300 rp='Does your kernel have *secure* setuid scripts?'
3303 [yY]*) val="$define";;
3308 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3309 echo "(That's for file descriptors, not floppy disks.)"
3315 $rm -f reflect flect
3317 : now see if they want to do setuid emulation
3320 case "$d_suidsafe" in
3323 echo "No need to emulate SUID scripts since they are secure here." >& 4
3327 Some systems have disabled setuid scripts, especially systems where
3328 setuid scripts cannot be secure. On systems where setuid scripts have
3329 been disabled, the setuid/setgid bits on scripts are currently
3330 useless. It is possible for $package to detect those bits and emulate
3331 setuid/setgid in a secure fashion. This emulation will only work if
3332 setuid scripts have been disabled in your kernel.
3336 "$define") dflt=y ;;
3339 rp="Do you want to do setuid/setgid emulation?"
3342 [yY]*) val="$define";;
3350 : determine where manual pages are on this system
3354 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3355 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3356 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3357 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3358 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3359 sysman=`./loc . /usr/man/man1 $syspath`
3362 if $test -d "$sysman"; then
3363 echo "System manual is in $sysman." >&4
3365 echo "Could not find manual pages in source form." >&4
3368 : see what memory models we can support
3371 $cat >pdp11.c <<'EOP'
3380 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3381 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3382 dflt='unsplit split'
3384 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3387 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3392 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3395 if $test -d /lib/large || $test -d /usr/lib/large; then
3398 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3407 Some systems have different model sizes. On most systems they are called
3408 small, medium, large, and huge. On the PDP11 they are called unsplit and
3409 split. If your system doesn't support different memory models, say "none".
3410 If you wish to force everything to one memory model, say "none" here and
3411 put the appropriate flags later when it asks you for other cc and ld flags.
3412 Venix systems may wish to put "none" and let the compiler figure things out.
3413 (In the following question multiple model names should be space separated.)
3415 The default for most systems is "none".
3418 rp="Which memory models are supported?"
3433 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3434 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3441 rp="What flag indicates separate I and D space?"
3449 *large*|*small*|*medium*|*huge*)
3456 rp="What flag indicates large model?"
3466 *huge*) case "$huge" in
3470 rp="What flag indicates huge model?"
3480 *medium*) case "$medium" in
3484 rp="What flag indicates medium model?"
3491 *) medium="$large";;
3494 *small*) case "$small" in
3498 rp="What flag indicates small model?"
3509 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3512 $rm -f pdp11.* pdp11
3514 : see if we need a special compiler
3522 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3523 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3537 On some older systems the default C compiler will not resolve multiple global
3538 references that happen to have the same name. On some such systems the "Mcc"
3539 command may be used to force these to be resolved. On other systems a "cc -M"
3540 command is required. (Note that the -M flag on other systems indicates a
3541 memory model to use!) If you have the Gnu C compiler, you might wish to use
3547 rp="Use which C compiler?"
3555 rp="Use which C compiler?"
3559 : Look for a hint-file generated 'call-back-unit'. Now that the
3560 : user has specified the compiler, we may need to set or change some
3562 if $test -f cc.cbu; then
3566 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3567 $cat >gccvers.c <<EOM
3572 printf("%s\n", __VERSION__);
3574 printf("%s\n", "1");
3580 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3581 gccversion=`./gccvers`
3582 case "$gccversion" in
3583 '') echo "You are not using GNU cc." ;;
3584 *) echo "You are using GNU cc $gccversion." ;;
3588 echo "*** WHOA THERE!!! ***" >&4
3589 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3590 case "$knowitall" in
3592 echo " You'd better start hunting for one and let me know about it." >&4
3598 case "$gccversion" in
3599 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3602 : What should the include directory be ?
3604 $echo $n "Hmm... $c"
3608 if $test -f /bin/mips && /bin/mips; then
3609 echo "Looks like a MIPS system..."
3610 $cat >usr.c <<'EOCP'
3611 #ifdef SYSTYPE_BSD43
3615 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3616 dflt='/bsd43/usr/include'
3620 mips_type='System V'
3622 $rm -f usr.c usr.out
3623 echo "and you're compiling with the $mips_type compiler and libraries."
3627 echo "Doesn't look like a MIPS system."
3637 case "$xxx_prompt" in
3640 rp='Where are the include files you want to use?'
3648 : see how we invoke the C preprocessor
3650 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3651 cat <<'EOT' >testcpp.c
3657 if test ! -f cppstdin; then
3658 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3660 echo "Keeping your $hint cppstdin wrapper."
3663 wrapper=`pwd`/cppstdin
3667 if $test "X$cppstdin" != "X" && \
3668 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3669 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3671 echo "You used to use $cppstdin $cppminus so we'll use that again."
3673 '') echo "But let's see if we can live without a wrapper..." ;;
3675 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3676 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3678 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3681 echo "(However, $cpprun $cpplast does not work, let's see...)"
3689 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3696 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3697 $cc -E <testcpp.c >testcpp.out 2>&1; \
3698 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3699 echo "Yup, it does."
3702 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3703 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3704 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3705 echo "Yup, it does."
3708 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3709 $cc -P <testcpp.c >testcpp.out 2>&1; \
3710 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3711 echo "Yipee, that works!"
3714 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3715 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3716 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3717 echo "At long last!"
3720 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3721 $cpp <testcpp.c >testcpp.out 2>&1; \
3722 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3726 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3727 $cpp - <testcpp.c >testcpp.out 2>&1; \
3728 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3729 echo "Hooray, it works! I was beginning to wonder."
3732 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3733 $wrapper <testcpp.c >testcpp.out 2>&1; \
3734 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3740 rp="No dice. I can't find a C preprocessor. Name one:"
3744 $x_cpp <testcpp.c >testcpp.out 2>&1
3745 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3746 echo "OK, that will do." >&4
3748 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3763 echo "Perhaps can we force $cc -E using a wrapper..."
3764 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3765 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3771 echo "Nope, we'll have to live without it..."
3785 "$wrapper"|'cppstdin') ;;
3786 *) $rm -f $wrapper;;
3788 $rm -f testcpp.c testcpp.out
3790 : Set private lib path
3793 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3798 '') dlist="$loclibpth $plibpth $glibpth";;
3799 *) dlist="$libpth";;
3802 : Now check and see which directories actually exist, avoiding duplicates
3806 if $test -d $xxx; then
3809 *) libpth="$libpth $xxx";;
3815 Some systems have incompatible or broken versions of libraries. Among
3816 the directories listed in the question below, please remove any you
3817 know not to be holding relevant libraries, and add any that are needed.
3818 Say "none" for none.
3829 rp="Directories to use for library searches?"
3836 : compute shared library extension
3839 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3849 On some systems, shared libraries may be available. Answer 'none' if
3850 you want to suppress searching of shared libraries for the remaining
3851 of this configuration.
3854 rp='What is the file extension used for shared libraries?'
3858 : Define several unixisms.
3859 : Hints files or command line option can be used to override them.
3860 : The convoluted testing is in case hints files set either the old
3863 '') case "$exe_ext" in
3865 *) _exe="$exe_ext" ;;
3870 '') case "$lib_ext" in
3877 '') case "$obj_ext" in
3884 '') case "$path_sep" in
3895 : Which makefile gets called first. This is used by make depend.
3896 case "$firstmakefile" in
3897 '') firstmakefile='makefile';;
3900 : Looking for optional libraries
3902 echo "Checking for optional libraries..." >&4
3907 case "$libswanted" in
3908 '') libswanted='c_s';;
3910 for thislib in $libswanted; do
3912 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3913 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3914 echo "Found -l$thislib (shared)."
3917 *) dflt="$dflt -l$thislib";;
3919 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3920 echo "Found -l$thislib (shared)."
3923 *) dflt="$dflt -l$thislib";;
3925 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3926 echo "Found -l$thislib."
3929 *) dflt="$dflt -l$thislib";;
3931 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3932 echo "Found -l$thislib."
3935 *) dflt="$dflt -l$thislib";;
3937 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3938 echo "Found -l${thislib}_s."
3941 *) dflt="$dflt -l${thislib}_s";;
3943 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3944 echo "Found -l$thislib."
3947 *) dflt="$dflt -l$thislib";;
3950 echo "No -l$thislib."
3961 ' '|'') dflt='none';;
3966 Some versions of Unix support shared libraries, which make executables smaller
3967 but make load time slightly longer.
3969 On some systems, mostly System V Release 3's, the shared library is included
3970 by putting the option "-lc_s" as the last thing on the cc command line when
3971 linking. Other systems use shared libraries by default. There may be other
3972 libraries needed to compile $package on your machine as well. If your system
3973 needs the "-lc_s" option, include it here. Include any other special libraries
3974 here as well. Say "none" for none.
3978 rp="Any additional libraries?"
3985 : determine optimize, if desired, or use for debug flag also
3987 ' '|$undef) dflt='none';;
3989 *) dflt="$optimize";;
3993 Some C compilers have problems with their optimizers. By default, $package
3994 compiles with the -O flag to use the optimizer. Alternately, you might want
3995 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3996 systems). Either flag can be specified here. To use neither flag, specify
4000 rp="What optimizer/debugger flag should be used?"
4004 'none') optimize=" ";;
4008 : We will not override a previous value, but we might want to
4009 : augment a hint file
4012 case "$gccversion" in
4013 1*) dflt='-fpcc-struct-return' ;;
4016 *-g*) dflt="$dflt -DDEBUGGING";;
4018 case "$gccversion" in
4019 2*) if test -d /etc/conf/kconfig.d &&
4020 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4029 case "$mips_type" in
4030 *BSD*|'') inclwanted="$locincpth $usrinc";;
4031 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4033 for thisincl in $inclwanted; do
4034 if $test -d $thisincl; then
4035 if $test x$thisincl != x$usrinc; then
4038 *) dflt="$dflt -I$thisincl";;
4044 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4046 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4054 *) dflt="$dflt -D$2";;
4059 set signal.h __LANGUAGE_C__; eval $inctest
4061 set signal.h LANGUAGE_C; eval $inctest
4065 none|recommended) dflt="$ccflags $dflt" ;;
4066 *) dflt="$ccflags";;
4074 Your C compiler may want other flags. For this question you should include
4075 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4076 but you should NOT include libraries or ld flags like -lwhatever. If you
4077 want $package to honor its debug switch, you should include -DDEBUGGING here.
4078 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4080 To use no flags, specify the word "none".
4086 rp="Any additional cc flags?"
4093 : the following weeds options from ccflags that are of no interest to cpp
4095 case "$gccversion" in
4096 1*) cppflags="$cppflags -D__GNUC__"
4098 case "$mips_type" in
4100 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4106 echo "Let me guess what the preprocessor flags are..." >&4
4120 *) ftry="$previous $flag";;
4122 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4123 >cpp1.out 2>/dev/null && \
4124 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4125 >cpp2.out 2>/dev/null && \
4126 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4127 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4129 cppflags="$cppflags $ftry"
4139 *-*) echo "They appear to be: $cppflags";;
4141 $rm -f cpp.c cpp?.out
4145 : flags used in final linking phase
4147 '') if ./venix; then
4153 *-posix*) dflt="$dflt -posix" ;;
4156 *) dflt="$ldflags";;
4159 : Try to guess additional flags to pick up local libraries.
4160 for thislibdir in $libpth; do
4161 case " $loclibpth " in
4164 *"-L$thislibdir "*) ;;
4165 *) dflt="$dflt -L$thislibdir" ;;
4177 Your C linker may need flags. For this question you should
4178 include -L/whatever and any other flags used by the C linker, but you
4179 should NOT include libraries like -lwhatever.
4181 Make sure you include the appropriate -L/path flags if your C linker
4182 does not normally search all of the directories you specified above,
4185 To use no flags, specify the word "none".
4189 rp="Any additional ld flags (NOT including libraries)?"
4195 rmlist="$rmlist pdp11"
4199 echo "Checking your choice of C compiler and flags for coherency..." >&4
4200 $cat > try.c <<'EOF'
4202 int main() { printf("Ok\n"); exit(0); }
4204 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4206 $cat >try.msg <<'EOM'
4207 I've tried to compile and run the following simple program:
4210 $cat try.c >> try.msg
4212 $cat >> try.msg <<EOM
4219 and I got the following output:
4223 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4224 if sh -c './try' >>try.msg 2>&1; then
4228 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4231 cat >> try.msg <<'EOQS'
4232 If $libs contains -lsfio, and sfio is mis-configured, then it
4233 sometimes (apparently) runs and exits with a 0 status, but with no
4234 output! It may have to do with sfio's use of _exit vs. exit.
4237 rp="You have a big problem. Shall I abort Configure"
4244 echo "The program compiled OK, but exited with status $?." >>try.msg
4245 rp="You have a problem. Shall I abort Configure"
4249 echo "I can't compile the test program." >>try.msg
4250 rp="You have a BIG problem. Shall I abort Configure"
4256 case "$knowitall" in
4258 echo "(The supplied flags or libraries might be incorrect.)"
4266 *) echo "Ok. Stopping Configure." >&4
4271 n) echo "OK, that should do.";;
4273 $rm -f try try.* core
4275 : determine filename position in cpp output
4277 echo "Computing filename position in cpp output for #include directives..." >&4
4278 echo '#include <stdio.h>' > foo.c
4281 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4282 $grep '^[ ]*#.*stdio\.h' | \
4283 while read cline; do
4286 while $test \$# -gt 0; do
4287 if $test -r \`echo \$1 | $tr -d '"'\`; then
4292 pos=\`expr \$pos + 1\`
4304 *) pos="${fieldn}th";;
4306 echo "Your cpp writes the filename in the $pos field of the line."
4308 : locate header file
4313 if test -f $usrinc/\$wanted; then
4314 echo "$usrinc/\$wanted"
4317 awkprg='{ print \$$fieldn }'
4318 echo "#include <\$wanted>" > foo\$\$.c
4319 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4320 $grep "^[ ]*#.*\$wanted" | \
4321 while read cline; do
4322 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4324 */\$wanted) echo "\$name"; exit 0;;
4335 : define an alternate in-header-list? function
4336 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4337 cont=true; xxf="echo \"<\$1> found.\" >&4";
4338 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4339 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4341 case $# in 4) instead=instead;; *) instead="at last";; esac;
4342 while $test "$cont"; do
4344 var=$2; eval "was=\$$2";
4345 if $test "$xxx" && $test -r "$xxx";
4347 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4350 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4351 set $yyy; shift; shift; yyy=$@;
4352 case $# in 0) cont="";;
4353 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4354 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4355 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4356 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4360 do set $yyy; var=$2; eval "was=\$$2";
4361 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4362 set $yyy; shift; shift; yyy=$@;
4365 : see if this is a malloc.h system
4366 set malloc.h i_malloc
4369 : see if stdlib is available
4370 set stdlib.h i_stdlib
4373 : determine which malloc to compile in
4375 case "$usemymalloc" in
4376 ''|[yY]*|true|$define) dflt='y' ;;
4379 rp="Do you wish to attempt to use the malloc that comes with $package?"
4385 mallocsrc='malloc.c'
4386 mallocobj="malloc$_o"
4387 d_mymalloc="$define"
4390 : Remove malloc from list of libraries to use
4391 echo "Removing unneeded -lmalloc from library list" >&4
4392 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4395 echo "libs = $libs" >&4
4407 : compute the return types of malloc and free
4409 $cat >malloc.c <<END
4413 #include <sys/types.h>
4427 case "$malloctype" in
4429 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4436 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4440 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4447 echo "Your system uses $freetype free(), it would seem." >&4
4449 : Cruising for prototypes
4451 echo "Checking out function prototypes..." >&4
4452 $cat >prototype.c <<'EOCP'
4453 int main(int argc, char *argv[]) {
4456 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4457 echo "Your C compiler appears to support function prototypes."
4460 echo "Your C compiler doesn't seem to understand function prototypes."
4467 case "$prototype" in
4469 *) ansi2knr='ansi2knr'
4474 This version of $package can only be compiled by a compiler that
4475 understands function prototypes. Unfortunately, your C compiler
4477 doesn't seem to understand them. Sorry about that.
4479 If GNU cc is available for your system, perhaps you could try that instead.
4481 Eventually, we hope to support building Perl with pre-ANSI compilers.
4482 If you would like to help in that effort, please contact <perlbug@perl.org>.
4484 Aborting Configure now.
4490 : determine where public executables go
4495 rp='Pathname where the public executables will reside?'
4497 if $test "X$ansexp" != "X$binexp"; then
4505 Since you are running AFS, I need to distinguish the directory in which
4506 executables reside from the directory in which they are installed (and from
4507 which they are presumably copied to the former directory by occult means).
4510 case "$installbin" in
4511 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4512 *) dflt="$installbin";;
4515 rp='Where will public executables be installed?'
4519 installbin="$binexp"
4522 : determine whether to install perl also as /usr/bin/perl
4525 if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4527 Many scripts expect to perl to be installed as /usr/bin/perl.
4528 I can install the perl you are about to compile also as /usr/bin/perl
4529 (in addition to $installbin/perl).
4531 case "$installusrbinperl" in
4532 "$undef"|[nN]*) dflt='n';;
4535 rp="Do you want to install perl as /usr/bin/perl?"
4538 [yY]*) val="$define";;
4544 set installusrbinperl
4547 : define a shorthand compile call
4551 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4552 : define a shorthand compile call for compilations that should be ok.
4556 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4559 echo "Checking for GNU C Library..." >&4
4560 cat >gnulibc.c <<EOM
4572 if eval $compile_ok && ./gnulibc; then
4574 echo "You are using the GNU C Library"
4577 echo "You are not using the GNU C Library"
4583 : see if nm is to be used to determine whether a symbol is defined or not
4587 case "$d_gnulibc" in
4590 echo "nm probably won't work on the GNU C Library." >&4
4596 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4598 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4599 echo "'nm' won't be sufficient on this sytem." >&4
4605 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4606 if $test $dflt -gt 20; then
4616 true|$define) dflt=y;;
4623 I can use $nm to extract the symbols from your C libraries. This
4624 is a time consuming task which may generate huge output on the disk (up
4625 to 3 megabytes) but that should make the symbols extraction faster. The
4626 alternative is to skip the 'nm' extraction part and to compile a small
4627 test program instead to determine whether each symbol is present. If
4628 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4629 this may be the best solution.
4631 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4634 rp="Shall I use $nm to extract C symbols from the libraries?"
4637 [Nn]*) usenm=false;;
4646 : nm options which may be necessary
4648 '') if $test -f /mach_boot; then
4650 elif $test -d /usr/ccs/lib; then
4651 nm_opt='-p' # Solaris (and SunOS?)
4652 elif $test -f /dgux; then
4654 elif $test -f /lib64/rld; then
4655 nm_opt='-p' # 64-bit Irix
4661 : nm options which may be necessary for shared libraries but illegal
4662 : for archive libraries. Thank you, Linux.
4663 case "$nm_so_opt" in
4664 '') case "$myuname" in
4666 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4667 nm_so_opt='--dynamic'
4676 : get list of predefined functions in a handy place
4681 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4688 *) for thislib in $libs; do
4691 : Handle C library specially below.
4694 thislib=`echo $thislib | $sed -e 's/^-l//'`
4695 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4697 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4699 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4701 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4703 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4705 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4707 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4712 libnames="$libnames $try"
4714 *) libnames="$libnames $thislib" ;;
4723 for xxx in $libpth; do
4724 $test -r $1 || set $xxx/libc.$so
4725 : The messy sed command sorts on library version numbers.
4727 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4728 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4730 s/[0-9][0-9]*/0000&/g
4731 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4734 sort | $sed -e 's/^.* //'`
4737 $test -r $1 || set /usr/ccs/lib/libc.$so
4738 $test -r $1 || set /lib/libsys_s$_a
4744 if $test -r "$1"; then
4745 echo "Your (shared) C library seems to be in $1."
4747 elif $test -r /lib/libc && $test -r /lib/clib; then
4748 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4750 libc='/lib/clib /lib/libc'
4751 if $test -r /lib/syslib; then
4752 echo "(Your math library is in /lib/syslib.)"
4753 libc="$libc /lib/syslib"
4755 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4756 echo "Your C library seems to be in $libc, as you said before."
4757 elif $test -r $incpath/usr/lib/libc$_a; then
4758 libc=$incpath/usr/lib/libc$_a;
4759 echo "Your C library seems to be in $libc. That's fine."
4760 elif $test -r /lib/libc$_a; then
4762 echo "Your C library seems to be in $libc. You're normal."
4764 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4766 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4767 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4768 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4770 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4772 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4777 if $test -r "$tans"; then
4778 echo "Your C library seems to be in $tans, of all places."
4784 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4788 If the guess above is wrong (which it might be if you're using a strange
4789 compiler, or your machine supports multiple models), you can override it here.
4794 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4796 I can't seem to find your C library. I've looked in the following places:
4799 $sed 's/^/ /' libpath
4802 None of these seems to contain your C library. I need to get its name...
4807 rp='Where is your C library?'
4812 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4813 set X `cat libnames`
4816 case $# in 1) xxx=file; esac
4817 echo "Extracting names from the following $xxx for later perusal:" >&4
4819 $sed 's/^/ /' libnames >&4
4821 $echo $n "This may take a while...$c" >&4
4825 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4826 *) $nm $nm_opt $file 2>/dev/null;;
4831 $grep fprintf libc.tmp > libc.ptf
4832 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4833 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4835 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4837 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4839 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4841 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4843 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4845 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4847 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4849 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4851 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4853 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4855 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4857 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4859 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4860 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4862 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4866 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4870 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4872 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4874 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4876 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4878 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4880 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4882 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4884 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4886 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4888 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4890 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893 $nm -p $* 2>/dev/null >libc.tmp
4894 $grep fprintf libc.tmp > libc.ptf
4895 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4896 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4902 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4904 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4905 for thisname in $libnames $libc; do
4906 $ar t $thisname >>libc.tmp
4908 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4910 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4911 # Repeat libc to extract forwarders to DLL entries too
4912 for thisname in $libnames $libc; do
4913 $ar tv $thisname >>libc.tmp
4914 # Revision 50 of EMX has bug in $ar.
4915 # it will not extract forwarders to DLL entries
4916 # Use emximp which will extract exactly them.
4917 emximp -o tmp.imp $thisname \
4919 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4920 < tmp.imp >>libc.tmp
4923 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4926 echo "$ar didn't seem to work right." >&4
4927 echo "Maybe this is a Cray...trying bld instead..." >&4
4928 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4930 for thisname in $libnames; do
4932 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4933 $ar t $thisname >>libc.tmp
4937 echo "That didn't work either. Giving up." >&4
4944 if $test -f /lib/syscalls.exp; then
4946 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4947 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4951 $rm -f libnames libpath
4953 : see if dld is available
4957 : is a C symbol defined?
4960 -v) tf=libc.tmp; tc=""; tdc="";;
4961 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4962 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4965 case "$reuseval-$4" in
4967 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4973 if $contains $tlook $tf >/dev/null 2>&1;
4978 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4979 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4987 $define) tval=true;;
4993 : define an is-in-libc? function
4994 inlibc='echo " "; td=$define; tu=$undef;
4995 sym=$1; var=$2; eval "was=\$$2";
4997 case "$reuseval$was" in
5007 echo "$sym() found." >&4;
5008 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5010 echo "$sym() NOT found." >&4;
5011 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5015 $define) echo "$sym() found." >&4;;
5016 *) echo "$sym() NOT found." >&4;;
5020 : see if dlopen exists
5027 : determine which dynamic loading, if any, to compile in
5029 dldir="ext/DynaLoader"
5042 $define) dflt='y' ;;
5045 $define) dflt='y' ;;
5047 : Does a dl_xxx.xs file exist for this operating system
5048 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5051 rp="Do you wish to use dynamic loading?"
5058 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5059 dflt="$dldir/dl_${osname}.xs"
5060 elif $test "$d_dlopen" = "$define" ; then
5061 dflt="$dldir/dl_dlopen.xs"
5062 elif $test "$i_dld" = "$define" ; then
5063 dflt="$dldir/dl_dld.xs"
5068 *) dflt="$dldir/$dlsrc"
5071 echo "The following dynamic loading files are available:"
5072 : Can not go over to $dldir because getfile has path hard-coded in.
5073 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5074 rp="Source file to use for dynamic loading"
5076 # XXX This getfile call will fail the existence check if you try
5077 # building away from $src (this is not supported yet).
5081 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5085 Some systems may require passing special flags to $cc -c to
5086 compile modules that will be used to create a shared library.
5087 To use no flags, say "none".
5090 case "$cccdlflags" in
5091 '') case "$gccversion" in
5092 '') case "$osname" in
5094 next) dflt='none' ;;
5095 irix*) dflt='-KPIC' ;;
5096 svr4*|esix*|solaris) dflt='-KPIC' ;;
5097 sunos) dflt='-pic' ;;
5101 *) case "$osname" in
5102 svr4*|esix*|solaris) dflt='-fPIC' ;;
5107 *) dflt="$cccdlflags" ;;
5109 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5112 none) cccdlflags=' ' ;;
5113 *) cccdlflags="$ans" ;;
5118 Some systems use ld to create libraries that can be dynamically loaded,
5119 while other systems (such as those using ELF) use $cc.
5123 '') $cat >try.c <<'EOM'
5124 /* Test for whether ELF binaries are produced */
5129 int i = open("a.out",O_RDONLY);
5132 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5133 exit(0); /* succeed (yes, it's ELF) */
5138 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5140 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5144 echo "I'll use ld to build dynamic libraries."
5153 rp="What command should be used to create dynamic libraries?"
5159 Some systems may require passing special flags to $ld to create a
5160 library that can be dynamically loaded. If your ld flags include
5161 -L/other/path options to locate libraries outside your loader's normal
5162 search path, you may need to specify those -L options here as well. To
5163 use no flags, say "none".
5166 case "$lddlflags" in
5167 '') case "$osname" in
5168 beos) dflt='-nostart' ;;
5170 linux|irix*) dflt='-shared' ;;
5171 next) dflt='none' ;;
5172 solaris) dflt='-G' ;;
5173 sunos) dflt='-assert nodefinitions' ;;
5174 svr4*|esix*) dflt="-G $ldflags" ;;
5178 *) dflt="$lddlflags" ;;
5181 : Try to guess additional flags to pick up local libraries.
5182 : Be careful not to append to a plain 'none'
5186 for thisflag in $ldflags; do
5191 *) dflt="$dflt $thisflag" ;;
5198 ''|' ') dflt='none' ;;
5201 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5204 none) lddlflags=' ' ;;
5205 *) lddlflags="$ans" ;;
5210 Some systems may require passing special flags to $cc to indicate that
5211 the resulting executable will use dynamic linking. To use no flags,
5215 case "$ccdlflags" in
5216 '') case "$osname" in
5217 hpux) dflt='-Wl,-E' ;;
5218 linux) dflt='-rdynamic' ;;
5219 next) dflt='none' ;;
5220 sunos) dflt='none' ;;
5224 *) dflt="$ccdlflags" ;;
5226 rp="Any special flags to pass to $cc to use dynamic loading?"
5229 none) ccdlflags=' ' ;;
5230 *) ccdlflags="$ans" ;;
5244 # No dynamic loading being used, so don't bother even to prompt.
5247 *) case "$useshrplib" in
5248 '') case "$osname" in
5249 svr4*|dgux|dynixptx|esix|powerux|beos)
5251 also='Building a shared libperl is required for dynamic loading to work on your system.'
5256 also='Building a shared libperl is needed for MAB support.'
5274 The perl executable is normally obtained by linking perlmain.c with
5275 libperl${_a}, any static extensions (usually just DynaLoader), and
5276 any other libraries needed on this system (such as -lm, etc.). Since
5277 your system supports dynamic loading, it is probably possible to build
5278 a shared libperl.$so. If you will have more than one executable linked
5279 to libperl.$so, this will significantly reduce the size of each
5280 executable, but it may have a noticeable affect on performance. The
5281 default is probably sensible for your system.
5285 rp="Build a shared libperl.$so (y/n)"
5290 # Why does next4 have to be so different?
5291 case "${osname}${osvers}" in
5292 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5293 os2*) xxx='' ;; # Nothing special needed.
5295 *) xxx='LD_LIBRARY_PATH' ;;
5297 if test X"$xxx" != "X"; then
5298 $cat <<EOM | $tee -a ../config.msg >&4
5300 To build perl, you must add the current working directory to your
5301 $xxx environment variable before running make. You can do
5303 $xxx=\`pwd\`:\$$xxx; export $xxx
5304 for Bourne-style shells, or
5306 for Csh-style shells. You *MUST* do this before running make.
5311 *) useshrplib='false' ;;
5316 case "$useshrplib" in
5320 # Figure out a good name for libperl.so. Since it gets stored in
5321 # a version-specific architecture-dependent library, the version
5322 # number isn't really that important, except for making cc/ld happy.
5324 # A name such as libperl.so.3.1
5325 majmin="libperl.$so.$patchlevel.$subversion"
5326 # A name such as libperl.so.301
5327 majonly=`echo $patchlevel $subversion |
5328 $awk '{printf "%d%02d", $1, $2}'`
5329 majonly=libperl.$so.$majonly
5330 # I'd prefer to keep the os-specific stuff here to a minimum, and
5331 # rely on figuring it out from the naming of libc.
5332 case "${osname}${osvers}" in
5335 # XXX How handle the --version stuff for MAB?
5337 linux*) # ld won't link with a bare -lperl otherwise.
5340 *) # Try to guess based on whether libc has major.minor.
5342 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5343 *libc.$so.[0-9]*) dflt=$majonly ;;
5344 *) dflt=libperl.$so ;;
5354 I need to select a good name for the shared libperl. If your system uses
5355 library names with major and minor numbers, then you might want something
5356 like $majmin. Alternatively, if your system uses a single version
5357 number for shared libraries, then you might want to use $majonly.
5358 Or, your system might be quite happy with a simple libperl.$so.
5360 Since the shared libperl will get installed into a version-specific
5361 architecture-dependent directory, the version number of the shared perl
5362 library probably isn't important, so the default should be o.k.
5365 rp='What name do you want to give to the shared libperl?'
5368 echo "Ok, I'll use $libperl"
5371 libperl="libperl${_a}"
5375 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5379 WARNING: Use of the shrpdir variable for the installation location of
5380 the shared $libperl is not supported. It was never documented and
5381 will not work in this version. Let me (perlbug@perl.com)
5382 know of any problems this may cause.
5388 But your current setting of $shrpdir is
5389 the default anyway, so it's harmless.
5394 Further, your current attempted setting of $shrpdir
5395 conflicts with the value of $archlibexp/CORE
5396 that installperl will use.
5403 # How will the perl executable find the installed shared $libperl?
5404 # Add $xxx to ccdlflags.
5405 # If we can't figure out a command-line option, use $shrpenv to
5406 # set env LD_RUN_PATH. The main perl makefile uses this.
5407 shrpdir=$archlibexp/CORE
5410 if "$useshrplib"; then
5413 # We'll set it in Makefile.SH...
5419 xxx="-Wl,-R$shrpdir"
5421 linux|irix*|dec_osf)
5422 xxx="-Wl,-rpath,$shrpdir"
5425 # next doesn't like the default...
5428 # beos doesn't like the default, either.
5431 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5437 # Only add $xxx if it isn't already in ccdlflags.
5438 case " $ccdlflags " in
5440 *) ccdlflags="$ccdlflags $xxx"
5443 Adding $xxx to the flags
5444 passed to $ld so that the perl executable will find the
5445 installed shared $libperl.
5453 # Respect a hint or command-line value.
5455 '') shrpenv="$tmp_shrpenv" ;;
5458 : determine where manual pages go
5459 set man1dir man1dir none
5463 $spackage has manual pages available in source form.
5467 echo "However, you don't have nroff, so they're probably useless to you."
5469 '') man1dir="none";;
5472 echo "If you don't want the manual sources installed, answer 'none'."
5477 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5478 lookpath="$lookpath $prefixexp/man/p_man/man1"
5479 lookpath="$lookpath $prefixexp/man/u_man/man1"
5480 lookpath="$lookpath $prefixexp/man/man.1"
5482 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5483 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5493 rp="Where do the main $spackage manual pages (source) go?"
5495 if $test "X$man1direxp" != "X$ansexp"; then
5499 man1direxp="$ansexp"
5507 Since you are running AFS, I need to distinguish the directory in which
5508 manual pages reside from the directory in which they are installed (and from
5509 which they are presumably copied to the former directory by occult means).
5512 case "$installman1dir" in
5513 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5514 *) dflt="$installman1dir";;
5517 rp='Where will man pages be installed?'
5519 installman1dir="$ans"
5521 installman1dir="$man1direxp"
5524 : What suffix to use on installed man pages
5531 rp="What suffix should be used for the main $spackage man pages?"
5533 '') case "$man1dir" in
5547 *) dflt="$man1ext";;
5554 : see if we can have long filenames
5556 rmlist="$rmlist /tmp/cf$$"
5557 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5558 first=123456789abcdef
5559 second=/tmp/cf$$/$first
5560 $rm -f $first $second
5561 if (echo hi >$first) 2>/dev/null; then
5562 if $test -f 123456789abcde; then
5563 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5566 if (echo hi >$second) 2>/dev/null; then
5567 if $test -f /tmp/cf$$/123456789abcde; then
5569 That's peculiar... You can have filenames longer than 14 characters, but only
5570 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5571 I shall consider your system cannot support long filenames at all.
5575 echo 'You can have filenames longer than 14 characters.' >&4
5580 How confusing! Some of your filesystems are sane enough to allow filenames
5581 longer than 14 characters but some others like /tmp can't even think about them.
5582 So, for now on, I shall assume your kernel does not allow them at all.
5589 You can't have filenames longer than 14 chars. You can't even think about them!
5595 $rm -rf /tmp/cf$$ 123456789abcde*
5597 : determine where library module manual pages go
5598 set man3dir man3dir none
5602 $spackage has manual pages for many of the library modules.
5608 However, you don't have nroff, so they're probably useless to you.
5611 '') man3dir="none";;
5615 case "$d_flexfnam" in
5618 However, your system can't handle the long file names like File::Basename.3.
5621 '') man3dir="none";;
5625 echo "If you don't want the manual sources installed, answer 'none'."
5626 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5628 '') case "$prefix" in
5629 *$prog*) dflt=`echo $man1dir |
5630 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5631 *) dflt="$privlib/man/man3" ;;
5635 *) dflt="$man3dir" ;;
5640 rp="Where do the $package library man pages (source) go?"
5642 if test "X$man3direxp" != "X$ansexp"; then
5647 man3direxp="$ansexp"
5655 Since you are running AFS, I need to distinguish the directory in which
5656 manual pages reside from the directory in which they are installed (and from
5657 which they are presumably copied to the former directory by occult means).
5660 case "$installman3dir" in
5661 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5662 *) dflt="$installman3dir";;
5665 rp='Where will man pages be installed?'
5667 installman3dir="$ans"
5669 installman3dir="$man3direxp"
5672 : What suffix to use on installed man pages
5679 rp="What suffix should be used for the $package library man pages?"
5681 '') case "$man3dir" in
5695 *) dflt="$man3ext";;
5702 : see if we have to deal with yellow pages, now NIS.
5703 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5704 if $test -f /usr/etc/nibindd; then
5706 echo "I'm fairly confident you're on a NeXT."
5708 rp='Do you get the hosts file via NetInfo?'
5717 y*) hostcat='nidump hosts .';;
5718 *) case "$hostcat" in
5719 nidump*) hostcat='';;
5729 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5737 rp='Are you getting the hosts file via yellow pages?'
5740 y*) hostcat='ypcat hosts';;
5741 *) hostcat='cat /etc/hosts';;
5747 '') hostcat='cat /etc/hosts';;
5750 '') groupcat='cat /etc/group';;
5753 '') passcat='cat /etc/passwd';;
5756 : now get the host name
5758 echo "Figuring out host name..." >&4
5759 case "$myhostname" in
5761 echo 'Maybe "hostname" will work...'
5762 if tans=`sh -c hostname 2>&1` ; then
5770 if $test "$cont"; then
5772 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5773 if tans=`cat /etc/systemid 2>&1` ; then
5775 phostname='cat /etc/systemid'
5776 echo "Whadyaknow. Xenix always was a bit strange..."
5779 elif $test -r /etc/systemid; then
5780 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5783 if $test "$cont"; then
5784 echo 'No, maybe "uuname -l" will work...'
5785 if tans=`sh -c 'uuname -l' 2>&1` ; then
5787 phostname='uuname -l'
5789 echo 'Strange. Maybe "uname -n" will work...'
5790 if tans=`sh -c 'uname -n' 2>&1` ; then
5792 phostname='uname -n'
5794 echo 'Oh well, maybe I can mine it out of whoami.h...'
5795 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5796 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5797 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5799 case "$myhostname" in
5800 '') echo "Does this machine have an identity crisis or something?"
5803 echo "Well, you said $myhostname before..."
5804 phostname='echo $myhostname';;
5810 : you do not want to know about this
5815 if $test "$myhostname" ; then
5817 rp='Your host name appears to be "'$myhostname'".'" Right?"
5825 : bad guess or no guess
5826 while $test "X$myhostname" = X ; do
5828 rp="Please type the (one word) name of your host:"
5833 : translate upper to lower if necessary
5834 case "$myhostname" in
5836 echo "(Normalizing case in your host name)"
5837 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5841 case "$myhostname" in
5843 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5844 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5845 echo "(Trimming domain name from host name--host name is now $myhostname)"
5847 *) case "$mydomain" in
5850 test "X$hostcat" = "Xypcat hosts" &&
5851 ypmatch "$myhostname" hosts 2>/dev/null |\
5852 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5855 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5856 /[ ]$myhostname[ . ]/p" > hosts
5859 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5860 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5861 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5862 hosts | $sort | $uniq | \
5863 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5864 case `$echo X$dflt` in
5865 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5868 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5873 tans=`./loc resolv.conf X /etc /usr/etc`
5874 if $test -f "$tans"; then
5875 echo "(Attempting domain name extraction from $tans)"
5876 dflt=.`$sed -n -e 's/ / /g' \
5877 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5878 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5880 .) dflt=.`$sed -n -e 's/ / /g' \
5881 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5882 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5889 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5890 dflt=.`sh -c domainname 2>/dev/null`
5893 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5898 .) echo "(Lost all hope -- silly guess then)"
5904 *) dflt="$mydomain";;
5908 rp="What is your domain name?"
5918 : translate upper to lower if necessary
5921 echo "(Normalizing case in your domain name)"
5922 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5926 : a little sanity check here
5927 case "$phostname" in
5930 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5931 $myhostname$mydomain|$myhostname) ;;
5933 case "$phostname" in
5935 echo "(That doesn't agree with your whoami.h file, by the way.)"
5938 echo "(That doesn't agree with your $phostname command, by the way.)"
5948 I need to get your e-mail address in Internet format if possible, i.e.
5949 something like user@host.domain. Please answer accurately since I have
5950 no easy means to double check it. The default value provided below
5951 is most probably close to the reality but may not be valid from outside
5952 your organization...
5956 while test "$cont"; do
5958 '') dflt="$cf_by@$myhostname$mydomain";;
5959 *) dflt="$cf_email";;
5961 rp='What is your e-mail address?'
5967 rp='Address does not look like an Internet one. Use it anyway?'
5983 If you or somebody else will be maintaining perl at your site, please
5984 fill in the correct e-mail address here so that they may be contacted
5985 if necessary. Currently, the "perlbug" program included with perl
5986 will send mail to this address in addition to perlbug@perl.com. You may
5987 enter "none" for no administrator.
5990 case "$perladmin" in
5991 '') dflt="$cf_email";;
5992 *) dflt="$perladmin";;
5994 rp='Perl administrator e-mail address'
5998 : figure out how to guarantee perl startup
5999 case "$startperl" in
6001 case "$sharpbang" in
6005 I can use the #! construct to start perl on your system. This will
6006 make startup of perl scripts faster, but may cause problems if you
6007 want to share those scripts and perl is not in a standard place
6008 ($binexp/perl) on all your platforms. The alternative is to force
6009 a shell by starting the script with a single ':' character.
6013 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6016 none) startperl=": # use perl";;
6017 *) startperl="#!$ans"
6018 if $test 30 -lt `echo "$ans" | wc -c`; then
6021 WARNING: Some systems limit the #! command to 32 characters.
6022 If you experience difficulty running Perl scripts with #!, try
6023 installing Perl in a directory with a shorter pathname.
6029 *) startperl=": # use perl"
6034 echo "I'll use $startperl to start perl scripts."
6036 : figure best path for perl in scripts
6039 perlpath="$binexp/perl"
6040 case "$startperl" in
6045 I will use the "eval 'exec'" idiom to start Perl on your system.
6046 I can use the full path of your Perl binary for this purpose, but
6047 doing so may cause problems if you want to share those scripts and
6048 Perl is not always in a standard place ($binexp/perl).
6052 rp="What path shall I use in \"eval 'exec'\"?"
6059 case "$startperl" in
6061 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6064 : determine where public executable scripts go
6065 set scriptdir scriptdir
6067 case "$scriptdir" in
6070 : guess some guesses
6071 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6072 $test -d /usr/share/bin && dflt=/usr/share/bin
6073 $test -d /usr/local/script && dflt=/usr/local/script
6074 $test -d $prefixexp/script && dflt=$prefixexp/script
6078 *) dflt="$scriptdir"
6083 Some installations have a separate directory just for executable scripts so
6084 that they can mount it across multiple architectures but keep the scripts in
6085 one spot. You might, for example, have a subdirectory of /usr/share for this.
6086 Or you might just lump your scripts in with all your other executables.
6090 rp='Where do you keep publicly executable scripts?'
6092 if $test "X$ansexp" != "X$scriptdirexp"; then
6096 scriptdirexp="$ansexp"
6100 Since you are running AFS, I need to distinguish the directory in which
6101 scripts reside from the directory in which they are installed (and from
6102 which they are presumably copied to the former directory by occult means).
6105 case "$installscript" in
6106 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6107 *) dflt="$installscript";;
6110 rp='Where will public scripts be installed?'
6112 installscript="$ans"
6114 installscript="$scriptdirexp"
6117 : determine where site specific libraries go.
6118 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6119 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6121 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6122 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6127 The installation process will also create a directory for
6128 site-specific extensions and modules. Some users find it convenient
6129 to place all local files in this directory rather than in the main
6130 distribution directory.
6134 rp='Pathname for the site-specific library files?'
6136 if $test "X$sitelibexp" != "X$ansexp"; then
6140 sitelibexp="$ansexp"
6144 Since you are running AFS, I need to distinguish the directory in
6145 which site-specific files reside from the directory in which they are
6146 installed (and from which they are presumably copied to the former
6147 directory by occult means).
6150 case "$installsitelib" in
6151 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6152 *) dflt="$installsitelib";;
6155 rp='Where will site-specific files be installed?'
6157 installsitelib="$ans"
6159 installsitelib="$sitelibexp"
6162 : determine where site specific architecture-dependent libraries go.
6163 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6164 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6165 : sitelib may have an optional trailing /share.
6166 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6167 tdflt="$tdflt/$archname"
6168 set sitearch sitearch none
6171 '') dflt="$tdflt" ;;
6172 *) dflt="$sitearch" ;;
6176 The installation process will also create a directory for
6177 architecture-dependent site-specific extensions and modules.
6181 rp='Pathname for the site-specific architecture-dependent library files?'
6183 if $test "X$sitearchexp" != "X$ansexp"; then
6187 sitearchexp="$ansexp"
6191 Since you are running AFS, I need to distinguish the directory in
6192 which site-specific architecture-dependent library files reside from
6193 the directory in which they are installed (and from which they are
6194 presumably copied to the former directory by occult means).
6197 case "$installsitearch" in
6198 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6199 *) dflt="$installsitearch";;
6202 rp='Where will site-specific architecture-dependent files be installed?'
6204 installsitearch="$ans"
6206 installsitearch="$sitearchexp"
6211 Previous version of $package used the standard IO mechanisms as defined
6212 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6213 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6214 the default. This abstraction layer can use AT&T's sfio (if you already
6215 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6216 problems with some extension modules. Using PerlIO with stdio is safe,
6217 but it is slower than plain stdio and therefore is not the default.
6219 If this doesn't make any sense to you, just accept the default 'n'.
6221 case "$useperlio" in
6222 $define|true|[yY]*) dflt='y';;
6225 rp='Use the experimental PerlIO abstraction layer?'
6232 echo "Ok, doing things the stdio way"
6239 : Check how to convert floats to strings.
6240 if test "X$d_Gconvert" = X; then
6242 echo "Checking for an efficient way to convert floats to strings."
6245 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6246 char *myname = "gconvert";
6249 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6250 char *myname = "gcvt";
6253 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6254 char *myname = "sprintf";
6260 checkit(expect, got)
6264 if (strcmp(expect, got)) {
6265 printf("%s oddity: Expected %s, got %s\n",
6266 myname, expect, got);
6276 /* This must be 1st test on (which?) platform */
6277 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6278 Gconvert(0.1, 8, 0, buf);
6279 checkit("0.1", buf);
6281 Gconvert(1.0, 8, 0, buf);
6284 Gconvert(0.0, 8, 0, buf);
6287 Gconvert(-1.0, 8, 0, buf);
6290 /* Some Linux gcvt's give 1.e+5 here. */
6291 Gconvert(100000.0, 8, 0, buf);
6292 checkit("100000", buf);
6294 /* Some Linux gcvt's give -1.e+5 here. */
6295 Gconvert(-100000.0, 8, 0, buf);
6296 checkit("-100000", buf);
6301 case "$d_Gconvert" in
6302 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6303 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6304 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6305 *) xxx_list='gconvert gcvt sprintf' ;;
6308 for xxx_convert in $xxx_list; do
6309 echo "Trying $xxx_convert"
6311 set try -DTRY_$xxx_convert
6312 if eval $compile; then
6313 echo "$xxx_convert" found. >&4
6315 echo "I'll use $xxx_convert to convert floats into a string." >&4
6318 echo "...But $xxx_convert didn't work as I expected."
6321 echo "$xxx_convert NOT found." >&4
6325 case "$xxx_convert" in
6326 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6327 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6328 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6332 : Initialize h_fcntl
6335 : Initialize h_sysfile
6338 : access call always available on UNIX
6342 : locate the flags for 'access()'
6346 $cat >access.c <<'EOCP'
6347 #include <sys/types.h>
6352 #include <sys/file.h>
6361 : check sys/file.h first, no particular reason here
6362 if $test `./findhdr sys/file.h` && \
6363 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6365 echo "<sys/file.h> defines the *_OK access constants." >&4
6366 elif $test `./findhdr fcntl.h` && \
6367 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6369 echo "<fcntl.h> defines the *_OK access constants." >&4
6370 elif $test `./findhdr unistd.h` && \
6371 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6372 echo "<unistd.h> defines the *_OK access constants." >&4
6374 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6380 : see if accessx exists
6381 set accessx d_accessx
6384 : see if alarm exists
6388 : Look for GNU-cc style attribute checking
6390 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6391 $cat >attrib.c <<'EOCP'
6393 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6395 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6396 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6397 echo "Your C compiler doesn't fully support __attribute__."
6400 echo "Your C compiler supports __attribute__."
6404 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6411 : see if bcmp exists
6415 : see if bcopy exists
6419 : see if this is a unistd.h system
6420 set unistd.h i_unistd
6423 : see if getpgrp exists
6424 set getpgrp d_getpgrp
6427 case "$d_getpgrp" in
6430 echo "Checking to see which flavor of getpgrp is in use..."
6433 #include <sys/types.h>
6435 # include <unistd.h>
6439 if (getuid() == 0) {
6440 printf("(I see you are running Configure as super-user...)\n");
6444 if (getpgrp(1) == 0)
6453 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6454 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6456 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6457 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6460 echo "I can't seem to compile and run the test program."
6462 xxx="a USG one, i.e. you use getpgrp()."
6464 # SVR4 systems can appear rather BSD-ish.
6467 xxx="a BSD one, i.e. you use getpgrp(pid)."
6471 xxx="probably a USG one, i.e. you use getpgrp()."
6476 echo "Assuming your getpgrp is $xxx" >&4
6485 : see if setpgrp exists
6486 set setpgrp d_setpgrp
6489 case "$d_setpgrp" in
6492 echo "Checking to see which flavor of setpgrp is in use..."
6495 #include <sys/types.h>
6497 # include <unistd.h>
6501 if (getuid() == 0) {
6502 printf("(I see you are running Configure as super-user...)\n");
6506 if (-1 == setpgrp(1, 1))
6509 if (setpgrp() != -1)
6515 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6516 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6518 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6519 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6522 echo "(I can't seem to compile and run the test program.)"
6524 xxx="a USG one, i.e. you use setpgrp()."
6526 # SVR4 systems can appear rather BSD-ish.
6529 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6533 xxx="probably a USG one, i.e. you use setpgrp()."
6538 echo "Assuming your setpgrp is $xxx" >&4
6546 : see if bzero exists
6550 : check for lengths of integral types
6554 echo "Checking to see how big your integers are..." >&4
6555 $cat >intsize.c <<'EOCP'
6559 printf("intsize=%d;\n", sizeof(int));
6560 printf("longsize=%d;\n", sizeof(long));
6561 printf("shortsize=%d;\n", sizeof(short));
6566 if eval $compile_ok && ./intsize > /dev/null; then
6568 echo "Your integers are $intsize bytes long."
6569 echo "Your long integers are $longsize bytes long."
6570 echo "Your short integers are $shortsize bytes long."
6574 Help! I can't compile and run the intsize test program: please enlighten me!
6575 (This is probably a misconfiguration in your system or libraries, and
6576 you really ought to fix it. Still, I'll try anyway.)
6580 rp="What is the size of an integer (in bytes)?"
6584 rp="What is the size of a long integer (in bytes)?"
6588 rp="What is the size of a short integer (in bytes)?"
6594 $rm -f intsize intsize.*
6596 : see if signal is declared as pointer to function returning int or void
6598 xxx=`./findhdr signal.h`
6599 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6600 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6601 echo "You have int (*signal())() instead of void." >&4
6603 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6604 echo "You have void (*signal())()." >&4
6606 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6607 echo "You have int (*signal())() instead of void." >&4
6609 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6610 echo "You have void (*signal())()." >&4
6613 case "$d_voidsig" in
6615 echo "I can't determine whether signal handler returns void or int..." >&4
6617 rp="What type does your signal handler return?"
6624 echo "As you already told me, signal handler returns void." >&4
6627 *) echo "As you already told me, signal handler returns int." >&4
6634 case "$d_voidsig" in
6635 "$define") signal_t="void";;
6640 : check for ability to cast large floats to 32-bit ints.
6642 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6643 if $test "$intsize" -ge 4; then
6650 #include <sys/types.h>
6652 $signal_t blech(s) int s; { exit(3); }
6659 signal(SIGFPE, blech);
6661 /* Don't let compiler optimize the test away. Store the number
6662 in a writable string for gcc to pass to sscanf under HP/UX.
6664 sprintf(str, "2147483647");
6665 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6669 /* x86 processors will probably give 0x8000 0000, which is a
6670 sign change. We don't want that. We want to mimic SPARC
6671 behavior here, which is to preserve the sign and give
6674 if (i32 != ($xxx) f)
6680 if eval $compile_ok; then
6684 echo "(I can't seem to compile the test program--assuming it can't)"
6692 echo "Nope, it can't."
6699 : check for ability to cast negative floats to unsigned
6701 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6704 #include <sys/types.h>
6706 $signal_t blech(s) int s; { exit(7); }
6707 $signal_t blech_in_list(s) int s; { exit(4); }
6708 unsigned long dummy_long(p) unsigned long p; { return p; }
6709 unsigned int dummy_int(p) unsigned int p; { return p; }
6710 unsigned short dummy_short(p) unsigned short p; { return p; }
6714 unsigned long along;
6716 unsigned short ashort;
6720 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6721 a direct f = -123. assignment. gcc-2.8.0 reportedly
6722 optimized the whole file away
6724 /* Store the number in a writable string for gcc to pass to
6727 sprintf(str, "-123");
6728 sscanf(str, "%lf", &f); /* f = -123.; */
6730 signal(SIGFPE, blech);
6731 along = (unsigned long)f;
6732 aint = (unsigned int)f;
6733 ashort = (unsigned short)f;
6734 if (along != (unsigned long)-123)
6736 if (aint != (unsigned int)-123)
6738 if (ashort != (unsigned short)-123)
6740 sprintf(str, "1073741824.");
6741 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6744 along = (unsigned long)f;
6745 if (along != 0x80000000)
6749 along = (unsigned long)f;
6750 if (along != 0x7fffffff)
6754 along = (unsigned long)f;
6755 if (along != 0x80000001)
6759 signal(SIGFPE, blech_in_list);
6760 sprintf(str, "123.");
6761 sscanf(str, "%lf", &f); /* f = 123.; */
6762 along = dummy_long((unsigned long)f);
6763 aint = dummy_int((unsigned int)f);
6764 ashort = dummy_short((unsigned short)f);
6765 if (along != (unsigned long)123)
6767 if (aint != (unsigned int)123)
6769 if (ashort != (unsigned short)123)
6776 if eval $compile_ok; then
6780 echo "(I can't seem to compile the test program--assuming it can't)"
6783 case "$castflags" in
6788 echo "Nope, it can't."
6795 : see if vprintf exists
6797 if set vprintf val -f d_vprintf; eval $csym; $val; then
6798 echo 'vprintf() found.' >&4
6800 $cat >vprintf.c <<'EOF'
6801 #include <varargs.h>
6803 int main() { xxx("foo"); }
6812 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6816 if eval $compile && ./vprintf; then
6817 echo "Your vsprintf() returns (int)." >&4
6820 echo "Your vsprintf() returns (char*)." >&4
6824 echo 'vprintf() NOT found.' >&4
6834 : see if chown exists
6838 : see if chroot exists
6842 : see if chsize exists
6846 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6847 while $test $# -ge 2; do
6849 $define) echo "#include <$2>";;
6853 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6854 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6863 : see if this is a sys/uio.h system
6864 set sys/uio.h i_sysuio
6867 echo "Checking to see if your system supports struct iovec..." >&4
6868 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6870 case "$d_iovec_s" in
6871 "$define") echo "Yup, it does." >&4
6873 *) echo "Nope, it doesn't." >&4
6879 : see whether socket exists
6881 $echo $n "Hmm... $c" >&4
6882 if set socket val -f d_socket; eval $csym; $val; then
6883 echo "Looks like you have Berkeley networking support." >&4
6885 if set setsockopt val -f; eval $csym; $val; then
6888 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6892 if $contains socklib libc.list >/dev/null 2>&1; then
6893 echo "Looks like you have Berkeley networking support." >&4
6895 : we will have to assume that it supports the 4.2 BSD interface
6898 echo "You don't have Berkeley networking in libc$_a..." >&4
6899 if test "X$d_socket" = "X$define"; then
6900 echo "...but you seem to believe that you have sockets." >&4
6902 for net in net socket
6904 if test -f /usr/lib/lib$net$_a; then
6905 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6906 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6907 if $contains socket libc.list >/dev/null 2>&1; then
6912 echo "...but the Wollongong group seems to have hacked it in." >&4
6913 sockethdr="-I/usr/netinclude"
6916 echo "Found Berkeley sockets interface in lib$net." >& 4
6917 if $contains setsockopt libc.list >/dev/null 2>&1; then
6920 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6927 if test "X$d_socket" != "X$define"; then
6928 echo "or anywhere else I see." >&4
6936 : see if socketpair exists
6937 set socketpair d_sockpair
6942 echo "Checking the availability of certain socket constants..." >& 4
6943 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6944 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6946 #include <sys/types.h>
6947 #include <sys/socket.h>
6953 set try; if eval $compile; then
6956 set d_${enum}; eval $setvar
6960 set sendmsg d_sendmsg
6963 set recvmsg d_recvmsg
6967 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6968 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6970 case "$d_msghdr_s" in
6971 "$define") echo "Yup, it does." >&4
6973 *) echo "Nope, it doesn't." >&4
6977 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6978 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6980 case "$d_cmsghdr_s" in
6981 "$define") echo "Yup, it does." >&4
6983 *) echo "Nope, it doesn't." >&4
6987 : check for const keyword
6989 echo 'Checking to see if your C compiler knows about "const"...' >&4
6990 $cat >const.c <<'EOCP'
6991 typedef struct spug { int drokk; } spug;
6998 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7000 echo "Yup, it does."
7003 echo "Nope, it doesn't."
7008 : see if crypt exists
7010 if set crypt val -f d_crypt; eval $csym; $val; then
7011 echo 'crypt() found.' >&4
7015 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7016 if $test -z "$cryptlib"; then
7017 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7021 if $test -z "$cryptlib"; then
7022 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7026 if $test -z "$cryptlib"; then
7027 cryptlib=`./loc libcrypt$_a "" $libpth`
7031 if $test -z "$cryptlib"; then
7032 echo 'crypt() NOT found.' >&4
7041 : get csh whereabouts
7043 'csh') val="$undef" ;;
7048 : Respect a hint or command line value for full_csh.
7050 '') full_csh=$csh ;;
7053 : see if cuserid exists
7054 set cuserid d_cuserid
7057 : see if this is a limits.h system
7058 set limits.h i_limits
7061 : see if this is a float.h system
7065 : See if number of significant digits in a double precision number is known
7067 $cat >dbl_dig.c <<EOM
7077 printf("Contains DBL_DIG");
7080 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7081 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7082 echo "DBL_DIG found." >&4
7085 echo "DBL_DIG NOT found." >&4
7093 if $test X"$use64bits" = X"$define"; then
7094 : see if dbminit64 exists
7095 set dbminit64 d_dbminit64
7098 : see if dbmclose64 exists
7099 set dbmclose64 d_dbmclose64
7102 : see if fetch64 exists
7103 set fetch64 d_fetch64
7106 : see if store64 exists
7107 set store64 d_store64
7110 : see if delete64 exists
7111 set delete64 d_delete64
7114 : see if firstkey64 exists
7115 set firstkey64 d_firstkey64
7118 : see if nextkey64 exists
7119 set nextkey64 d_nextkey64
7123 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7130 : see if difftime exists
7131 set difftime d_difftime
7134 : see if sys/stat.h is available
7135 set sys/stat.h i_sysstat
7138 : see if this is a dirent system
7140 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7142 echo "<dirent.h> found." >&4
7145 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7146 echo "<sys/dir.h> found." >&4
7149 xinc=`./findhdr sys/ndir.h`
7151 echo "<dirent.h> NOT found." >&4
7156 : Look for type of directory structure.
7158 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7160 case "$direntrytype" in
7163 $define) guess1='struct dirent' ;;
7164 *) guess1='struct direct' ;;
7167 *) guess1="$direntrytype"
7172 'struct dirent') guess2='struct direct' ;;
7173 *) guess2='struct dirent' ;;
7176 if $contains "$guess1" try.c >/dev/null 2>&1; then
7177 direntrytype="$guess1"
7178 echo "Your directory entries are $direntrytype." >&4
7179 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7180 direntrytype="$guess2"
7181 echo "Your directory entries seem to be $direntrytype." >&4
7183 echo "I don't recognize your system's directory entries." >&4
7184 rp="What type is used for directory entries on this system?"
7192 : see if the directory entry stores field length
7194 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7195 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7196 echo "Good, your directory entry keeps length information in d_namlen." >&4
7199 echo "Your directory entry does not know about the d_namlen field." >&4
7207 if $test X"$use64bits" = X"$define"; then
7208 : see if fstat64 exists
7209 set fstat64 d_fstat64
7212 : see if ftruncate64 exists
7213 set ftruncate64 d_ftruncate64
7216 : see if lockf64 exists
7217 set lockf64 d_lockf64
7220 : see if lseek64 exists
7221 set lseek64 d_lseek64
7224 : see if lstat64 exists
7225 set lstat64 d_lstat64
7228 : see if open64 exists
7232 : see if opendir64 exists
7233 set opendir64 d_opendir64
7236 : see if readdir64 exists
7237 set readdir64 d_readdir64
7240 : see if seekdir64 exists
7241 set seekdir64 d_seekdir64
7244 : see if stat64 exists
7248 : see if telldir64 exists
7249 set telldir64 d_telldir64
7252 : see if truncate64 exists
7253 set truncate64 d_truncate64
7258 echo $n "Checking to see if your system supports off64_t...$c" >&4
7260 #include <sys/types.h>
7261 off64_t foo() { off64_t x; x = 7; return x; }'
7263 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7265 echo " Yup, it does." >&4
7268 echo " Nope, it doesn't." >&4
7276 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7278 case "$i_sysstat" in
7281 #include <sys/types.h>
7282 #include <sys/stat.h>
7283 ino64_t foo() { ino64_t x; x = 7; return x; }'
7285 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7291 if $test "X$val" = X"$define"; then
7292 echo " Yup, it does." >&4
7294 echo " Nope, it doesn't." >&4
7299 : check for struct flock64
7301 echo "Checking to see if your system supports struct flock64..." >&4
7303 set d_flock64_s flock64 l_len define fcntl.h
7310 case "$d_flock64_s" in
7311 "$define") echo "Yup, it does." >&4
7313 *) echo "Nope, it doesn't." >&4
7317 : check for struct dirent64
7319 echo "Checking to see if your system supports struct dirent64..." >&4
7320 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7322 case "$d_dirent64_s" in
7323 "$define") echo "Yup, it does." >&4
7325 *) echo "Nope, it doesn't." >&4
7331 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
7338 : see if dlerror exists
7341 set dlerror d_dlerror
7345 : see if dlfcn is available
7353 On a few systems, the dynamically loaded modules that perl generates and uses
7354 will need a different extension than shared libs. The default will probably
7362 rp='What is the extension of dynamically loaded modules'
7371 : Check if dlsym need a leading underscore
7377 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7378 $cat >dyna.c <<'EOM'
7387 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7389 #include <sys/types.h>
7403 int mode = RTLD_LAZY ;
7405 handle = dlopen("./dyna.$dlext", mode) ;
7406 if (handle == NULL) {
7411 symbol = dlsym(handle, "fred") ;
7412 if (symbol == NULL) {
7413 /* try putting a leading underscore */
7414 symbol = dlsym(handle, "_fred") ;
7415 if (symbol == NULL) {
7428 : Call the object file tmp-dyna.o in case dlext=o.
7429 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7430 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7431 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7432 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7435 1) echo "Test program failed using dlopen." >&4
7436 echo "Perhaps you should not use dynamic loading." >&4;;
7437 2) echo "Test program failed using dlsym." >&4
7438 echo "Perhaps you should not use dynamic loading." >&4;;
7439 3) echo "dlsym needs a leading underscore" >&4
7441 4) echo "dlsym doesn't need a leading underscore." >&4;;
7444 echo "I can't compile and run the test program." >&4
7449 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7454 hasproto='varname=$1; func=$2; shift; shift;
7455 while $test $# -ge 2; do
7457 $define) echo "#include <$2>";;
7461 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7462 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7463 echo "$func() prototype found.";
7466 echo "$func() prototype NOT found.";
7471 $rm -f try.c tryout.c'
7473 : see if prototype for drand48 is available
7475 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7478 : see if dup2 exists
7482 : see if eaccess exists
7483 set eaccess d_eaccess
7486 : see if endgrent exists
7487 set endgrent d_endgrent
7490 : see if endhostent exists
7491 set endhostent d_endhent
7494 : see if endnetent exists
7495 set endnetent d_endnent
7498 : see if endprotoent exists
7499 set endprotoent d_endpent
7502 : see if endpwent exists
7503 set endpwent d_endpwent
7506 : see if endservent exists
7507 set endservent d_endsent
7510 : Locate the flags for 'open()'
7512 $cat >open3.c <<'EOCP'
7513 #include <sys/types.h>
7518 #include <sys/file.h>
7529 : check sys/file.h first to get FREAD on Sun
7530 if $test `./findhdr sys/file.h` && \
7531 set open3 -DI_SYS_FILE && eval $compile; then
7533 echo "<sys/file.h> defines the O_* constants..." >&4
7535 echo "and you have the 3 argument form of open()." >&4
7538 echo "but not the 3 argument form of open(). Oh, well." >&4
7541 elif $test `./findhdr fcntl.h` && \
7542 set open3 -DI_FCNTL && eval $compile; then
7544 echo "<fcntl.h> defines the O_* constants..." >&4
7546 echo "and you have the 3 argument form of open()." >&4
7549 echo "but not the 3 argument form of open(). Oh, well." >&4
7554 echo "I can't find the O_* constant definitions! You got problems." >&4
7560 : check for non-blocking I/O stuff
7561 case "$h_sysfile" in
7562 true) echo "#include <sys/file.h>" > head.c;;
7565 true) echo "#include <fcntl.h>" > head.c;;
7566 *) echo "#include <sys/fcntl.h>" > head.c;;
7571 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7572 case "$o_nonblock" in
7575 $cat >>try.c <<'EOCP'
7578 printf("O_NONBLOCK\n");
7582 printf("O_NDELAY\n");
7586 printf("FNDELAY\n");
7593 if eval $compile_ok; then
7595 case "$o_nonblock" in
7596 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7597 *) echo "Seems like we can use $o_nonblock.";;
7600 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7603 *) echo "Using $hint value $o_nonblock.";;
7605 $rm -f try try.* .out core
7608 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7614 #include <sys/types.h>
7616 #define MY_O_NONBLOCK $o_nonblock
7617 #ifndef errno /* XXX need better Configure test */
7620 $signal_t blech(x) int x; { exit(3); }
7622 $cat >> try.c <<'EOCP'
7630 pipe(pd); /* Down: child -> parent */
7631 pipe(pu); /* Up: parent -> child */
7634 close(pd[1]); /* Parent reads from pd[0] */
7635 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7636 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7638 signal(SIGALRM, blech);
7640 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7642 sprintf(string, "%d\n", ret);
7643 write(2, string, strlen(string));
7646 if (errno == EAGAIN) {
7652 if (errno == EWOULDBLOCK)
7653 printf("EWOULDBLOCK\n");
7656 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7657 sleep(2); /* Give it time to close our pipe */
7659 ret = read(pd[0], buf, 1); /* Should read EOF */
7661 sprintf(string, "%d\n", ret);
7662 write(3, string, strlen(string));
7666 close(pd[0]); /* We write to pd[1] */
7667 close(pu[1]); /* We read from pu[0] */
7668 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7669 close(pd[1]); /* Pipe pd is now fully closed! */
7670 exit(0); /* Bye bye, thank you for playing! */
7674 if eval $compile_ok; then
7675 echo "$startsh" >mtry
7676 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7678 ./mtry >/dev/null 2>&1
7680 0) eagain=`$cat try.out`;;
7681 1) echo "Could not perform non-blocking setting!";;
7682 2) echo "I did a successful read() for something that was not there!";;
7683 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7684 *) echo "Something terribly wrong happened during testing.";;
7686 rd_nodata=`$cat try.ret`
7687 echo "A read() system call with no data present returns $rd_nodata."
7688 case "$rd_nodata" in
7691 echo "(That's peculiar, fixing that to be -1.)"
7697 echo "Forcing errno EAGAIN on read() with no data available."
7701 echo "Your read() sets errno to $eagain when no data is available."
7704 status=`$cat try.err`
7706 0) echo "And it correctly returns 0 to signal EOF.";;
7707 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7708 *) echo "However, your read() returns '$status' on EOF??";;
7711 if test "$status" = "$rd_nodata"; then
7712 echo "WARNING: you can't distinguish between EOF and no data!"
7716 echo "I can't compile the test program--assuming errno EAGAIN will do."
7723 echo "Using $hint value $eagain."
7724 echo "Your read() returns $rd_nodata when no data is present."
7725 case "$d_eofnblk" in
7726 "$define") echo "And you can see EOF because read() returns 0.";;
7727 "$undef") echo "But you can't see EOF status from read() returned value.";;
7729 echo "(Assuming you can't see EOF status from read anyway.)"
7735 $rm -f try try.* .out core head.c mtry
7737 : see if fchmod exists
7741 : see if fchown exists
7745 : see if this is an fcntl system
7749 : see if sys/select.h has to be included
7750 set sys/select.h i_sysselct
7753 : see if we should include time.h, sys/time.h, or both
7755 if test "X$timeincl" = X; then
7756 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7757 $echo $n "I'm now running the test program...$c"
7758 $cat >try.c <<'EOCP'
7759 #include <sys/types.h>
7764 #ifdef SYSTIMEKERNEL
7767 #include <sys/time.h>
7770 #include <sys/select.h>
7779 struct timezone tzp;
7781 if (foo.tm_sec == foo.tm_sec)
7784 if (bar.tv_sec == bar.tv_sec)
7791 for s_timezone in '-DS_TIMEZONE' ''; do
7793 for s_timeval in '-DS_TIMEVAL' ''; do
7794 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7795 for i_time in '' '-DI_TIME'; do
7796 for i_systime in '-DI_SYSTIME' ''; do
7799 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7800 if eval $compile; then
7801 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7805 $echo $n "Succeeded with $flags$c"
7817 *SYSTIMEKERNEL*) i_systimek="$define"
7818 timeincl=`./findhdr sys/time.h`
7819 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7820 *) i_systimek="$undef";;
7823 *I_TIME*) i_time="$define"
7824 timeincl=`./findhdr time.h`" $timeincl"
7825 echo "We'll include <time.h>." >&4;;
7826 *) i_time="$undef";;
7829 *I_SYSTIME*) i_systime="$define"
7830 timeincl=`./findhdr sys/time.h`" $timeincl"
7831 echo "We'll include <sys/time.h>." >&4;;
7832 *) i_systime="$undef";;
7837 : check for fd_set items
7840 Checking to see how well your C compiler handles fd_set and friends ...
7842 $cat >fd_set.c <<EOCP
7843 #$i_systime I_SYS_TIME
7844 #$i_sysselct I_SYS_SELECT
7845 #$d_socket HAS_SOCKET
7846 #include <sys/types.h>
7848 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7851 #include <sys/time.h>
7854 #include <sys/select.h>
7863 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7870 set fd_set -DTRYBITS
7871 if eval $compile; then
7872 d_fds_bits="$define"
7874 echo "Well, your system knows about the normal fd_set typedef..." >&4
7876 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7877 d_fd_macros="$define"
7880 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7882 d_fd_macros="$undef"
7886 Hmm, your compiler has some difficulty with fd_set. Checking further...
7889 if eval $compile; then
7892 echo "Well, your system has some sort of fd_set available..." >&4
7894 echo "and you have the normal fd_set macros." >&4
7895 d_fd_macros="$define"
7898 but not the normal fd_set macros! Gross! More work for me...
7900 d_fd_macros="$undef"
7903 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7906 d_fd_macros="$undef"
7911 : see if fgetpos exists
7912 set fgetpos d_fgetpos
7916 if $test X"$use64bits" = X"$define"; then
7917 : see if fgetpos64 exists
7918 set fgetpos64 d_fgetpos64
7921 : see if fopen64 exists
7922 set freopen64 d_fopen64
7925 : see if freopen64 exists
7926 set freopen64 d_freopen64
7929 : see if fseek64 exists
7930 set fseek64 d_fseek64
7933 : see if fseeko64 exists
7934 set fseeko64 d_fseeko64
7937 : see if fsetpos64 exists
7938 set fsetpos64 d_fsetpos64
7941 : see if ftell64 exists
7942 set ftell64 d_ftell64
7945 : see if ftello64 exists
7946 set ftello64 d_ftello64
7949 : see if tmpfile64 exists
7950 set tmpfile64 d_tmpfile64
7954 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7961 : see if flock exists
7965 : see if fork exists
7969 : see if pathconf exists
7970 set pathconf d_pathconf
7973 : see if fpathconf exists
7974 set fpathconf d_fpathconf
7977 : see if fseeko exists
7981 : see if fsetpos exists
7982 set fsetpos d_fsetpos
7985 : see if this is a sys/param system
7986 set sys/param.h i_sysparam
7989 : see if this is a sys/mount.h system
7990 set sys/mount.h i_sysmount
7994 : see if statfs exists
7998 : see if fstatfs exists
7999 set fstatfs d_fstatfs
8002 : see if statfs knows about mount flags
8003 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8007 : see if statvfs exists
8008 set statvfs d_statvfs
8011 : see if fstatvfs exists
8012 set fstatvfs d_fstatvfs
8016 : see if ftello exists
8020 : see if getgrent exists
8021 set getgrent d_getgrent
8024 : see if gethostbyaddr exists
8025 set gethostbyaddr d_gethbyaddr
8028 : see if gethostbyname exists
8029 set gethostbyname d_gethbyname
8032 : see if gethostent exists
8033 set gethostent d_gethent
8036 : see how we will look up host name
8039 : dummy stub to allow use of elif
8040 elif set gethostname val -f d_gethname; eval $csym; $val; then
8041 echo 'gethostname() found.' >&4
8042 d_gethname="$define"
8044 elif set uname val -f d_uname; eval $csym; $val; then
8047 uname() was found, but you're running xenix, and older versions of xenix
8048 have a broken uname(). If you don't really know whether your xenix is old
8049 enough to have a broken system call, use the default answer.
8056 rp='Is your uname() broken?'
8059 n*) d_uname="$define"; call=uname;;
8062 echo 'uname() found.' >&4
8067 case "$d_gethname" in
8068 '') d_gethname="$undef";;
8071 '') d_uname="$undef";;
8073 case "$d_uname$d_gethname" in
8078 Every now and then someone has a $call() that lies about the hostname
8079 but can't be fixed for political or economic reasons. If you wish, I can
8080 pretend $call() isn't there and maybe compute hostname at run-time
8081 thanks to the '$phostname' command.
8084 rp="Shall I ignore $call() from now on?"
8087 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8090 case "$phostname" in
8092 *) case "$aphostname" in
8098 file=`./loc $file $file $pth`
8099 aphostname=`echo $file $*`
8104 case "$d_uname$d_gethname" in
8107 case "$phostname" in
8109 echo "There will be no way for $package to get your hostname." >&4;;
8111 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8115 case "$d_phostname" in
8116 '') d_phostname="$undef";;
8119 : see if this is a netdb.h system
8123 : see if prototypes for various gethostxxx netdb.h functions are available
8125 set d_gethostprotos gethostent $i_netdb netdb.h
8128 : see if getlogin exists
8129 set getlogin d_getlogin
8132 : see if getnetbyaddr exists
8133 set getnetbyaddr d_getnbyaddr
8136 : see if getnetbyname exists
8137 set getnetbyname d_getnbyname
8140 : see if getnetent exists
8141 set getnetent d_getnent
8144 : see if prototypes for various getnetxxx netdb.h functions are available
8146 set d_getnetprotos getnetent $i_netdb netdb.h
8150 : see if getprotobyname exists
8151 set getprotobyname d_getpbyname
8154 : see if getprotobynumber exists
8155 set getprotobynumber d_getpbynumber
8158 : see if getprotoent exists
8159 set getprotoent d_getpent
8162 : see if getpgid exists
8163 set getpgid d_getpgid
8166 : see if getpgrp2 exists
8167 set getpgrp2 d_getpgrp2
8170 : see if getppid exists
8171 set getppid d_getppid
8174 : see if getpriority exists
8175 set getpriority d_getprior
8178 : see if prototypes for various getprotoxxx netdb.h functions are available
8180 set d_getprotoprotos getprotoent $i_netdb netdb.h
8183 : see if getpwent exists
8184 set getpwent d_getpwent
8188 : see if getservbyname exists
8189 set getservbyname d_getsbyname
8192 : see if getservbyport exists
8193 set getservbyport d_getsbyport
8196 : see if getservent exists
8197 set getservent d_getsent
8200 : see if prototypes for various getservxxx netdb.h functions are available
8202 set d_getservprotos getservent $i_netdb netdb.h
8205 : see if gettimeofday or ftime exists
8206 set gettimeofday d_gettimeod
8208 case "$d_gettimeod" in
8214 val="$undef"; set d_ftime; eval $setvar
8217 case "$d_gettimeod$d_ftime" in
8220 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8224 : see if this is an grp system
8230 xxx=`./findhdr grp.h`
8231 $cppstdin $cppflags $cppminus < $xxx >$$.h
8233 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8245 set d_grpasswd; eval $setvar
8249 : see if this is a netinet/in.h or sys/in.h system
8250 set netinet/in.h i_niin sys/in.h i_sysin
8253 : see if arpa/inet.h has to be included
8254 set arpa/inet.h i_arpainet
8257 : see if htonl --and friends-- exists
8262 : Maybe they are macros.
8267 #include <sys/types.h>
8268 #$i_niin I_NETINET_IN
8270 #$i_arpainet I_ARPA_INET
8272 #include <netinet/in.h>
8278 #include <arpa/inet.h>
8281 printf("Defined as a macro.");
8284 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8285 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8287 echo "But it seems to be defined as a macro." >&4
8295 : see which of string.h or strings.h is needed
8297 strings=`./findhdr string.h`
8298 if $test "$strings" && $test -r "$strings"; then
8299 echo "Using <string.h> instead of <strings.h>." >&4
8303 strings=`./findhdr strings.h`
8304 if $test "$strings" && $test -r "$strings"; then
8305 echo "Using <strings.h> instead of <string.h>." >&4
8307 echo "No string header found -- You'll surely have problems." >&4
8313 "$undef") strings=`./findhdr strings.h`;;
8314 *) strings=`./findhdr string.h`;;
8319 if set index val -f; eval $csym; $val; then
8320 if set strchr val -f d_strchr; eval $csym; $val; then
8321 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8324 echo "strchr() found." >&4
8328 echo "index() found." >&4
8333 echo "index() found." >&4
8336 if set strchr val -f d_strchr; eval $csym; $val; then
8339 echo "strchr() found." >&4
8341 echo "No index() or strchr() found!" >&4
8346 set d_strchr; eval $setvar
8348 set d_index; eval $setvar
8350 : check whether inet_aton exists
8351 set inet_aton d_inetaton
8354 : see if inttypes.h is available
8355 : we want a real compile instead of Inhdr because some systems
8356 : have an inttypes.h which includes non-existent headers
8359 #include <inttypes.h>
8361 static int32_t foo32 = 0x12345678;
8365 if eval $compile; then
8366 echo "<inttypes.h> found." >&4
8369 echo "<inttypes.h> NOT found." >&4
8377 case "$use64bits" in
8380 echo $n "Checking to see if your system supports int64_t...$c" >&4
8382 #include <sys/types.h>
8383 #$i_inttypes I_INTTYPES
8385 #include <inttypes.h>
8387 int64_t foo() { int64_t x; x = 7; return x; }
8389 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8391 echo " Yup, it does." >&4
8394 echo " Nope, it doesn't." >&4
8407 $cat >isascii.c <<'EOCP'
8419 if eval $compile; then
8420 echo "isascii() found." >&4
8423 echo "isascii() NOT found." >&4
8430 : see if killpg exists
8434 : see if lchown exists
8436 $cat > try.c <<'EOCP'
8437 /* System header to define __stub macros and hopefully few prototypes,
8438 which can conflict with char lchown(); below. */
8440 /* Override any gcc2 internal prototype to avoid an error. */
8441 /* We use char because int might match the return type of a gcc2
8442 builtin and then its argument prototype would still apply. */
8445 /* The GNU C library defines this for functions which it implements
8446 to always fail with ENOSYS. Some functions are actually named
8447 something starting with __ and the normal name is an alias. */
8448 #if defined (__stub_lchown) || defined (__stub___lchown)
8456 if eval $compile; then
8457 $echo "lchown() found." >&4
8460 $echo "lchown() NOT found." >&4
8466 : see if link exists
8470 : see if localeconv exists
8471 set localeconv d_locconv
8474 : see if lockf exists
8478 : check for length of double
8480 case "$doublesize" in
8482 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8483 $cat >try.c <<'EOCP'
8487 printf("%d\n", sizeof(double));
8491 if eval $compile_ok; then
8493 $echo " $doublesize bytes." >&4
8496 echo "(I can't seem to compile the test program. Guessing...)"
8497 rp="What is the size of a double precision number (in bytes)?"
8505 : check for long doubles
8507 echo $n "Checking to see if your system supports long doubles...$c" >&4
8508 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8509 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8511 echo " Yup, it does." >&4
8514 echo " Nope, it doesn't." >&4
8520 : check for length of long double
8521 case "${d_longdbl}${longdblsize}" in
8524 $echo $n "Checking to see how big your long doubles are...$c" >&4
8525 $cat >try.c <<'EOCP'
8529 printf("%d\n", sizeof(long double));
8533 if eval $compile; then
8535 $echo " $longdblsize bytes." >&4
8539 echo "(I can't seem to compile the test program. Guessing...)" >&4
8540 rp="What is the size of a long double (in bytes)?"
8544 if $test "X$doublesize" = "X$longdblsize"; then
8545 echo "(That isn't any different from an ordinary double.)"
8551 : check for long long
8553 echo $n "Checking to see if your system supports long long...$c" >&4
8554 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8555 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8557 echo " Yup, it does." >&4
8560 echo " Nope, it doesn't." >&4
8566 : check for length of long long
8567 case "${d_longlong}${longlongsize}" in
8570 $echo $n "Checking to see how big your long longs are...$c" >&4
8571 $cat >try.c <<'EOCP'
8575 printf("%d\n", sizeof(long long));
8579 if eval $compile_ok; then
8580 longlongsize=`./try`
8581 $echo " $longlongsize bytes." >&4
8585 echo "(I can't seem to compile the test program. Guessing...)"
8586 rp="What is the size of a long long (in bytes)?"
8590 if $test "X$longsize" = "X$longlongsize"; then
8591 echo "(That isn't any different from an ordinary long.)"
8597 : see if lstat exists
8601 : see if mblen exists
8605 : see if mbstowcs exists
8606 set mbstowcs d_mbstowcs
8609 : see if mbtowc exists
8613 : see if memcmp exists
8617 : see if memcpy exists
8621 : see if memmove exists
8622 set memmove d_memmove
8625 : see if memset exists
8629 : see if mkdir exists
8633 : see if mkfifo exists
8637 : see if mktime exists
8641 : see if msgctl exists
8645 : see if msgget exists
8649 : see if msgsnd exists
8653 : see if msgrcv exists
8657 : see how much of the 'msg*(2)' library is present.
8660 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8661 *"$undef"*) h_msg=false;;
8665 case "`ipcs 2>&1`" in
8666 "SVID messages"*"not configured"*)
8667 echo "Your $osname does not have the msg*(2) configured." >&4
8682 : we could also check for sys/ipc.h ...
8683 if $h_msg && $test `./findhdr sys/msg.h`; then
8684 echo "You have the full msg*(2) library." >&4
8687 echo "You don't have the full msg*(2) library." >&4
8693 : see if nice exists
8697 : how to create joinable pthreads
8698 if test "X$usethreads" = "X$define"; then
8700 echo "Checking what constant to use for creating joinable pthreads..." >&4
8701 $cat >try.c <<'EOCP'
8702 #include <pthread.h>
8704 int detachstate = JOINABLE;
8707 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8708 if eval $compile; then
8709 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8710 val="$undef" # Yes, undef.
8711 set d_old_pthread_create_joinable
8714 set old_pthread_create_joinable
8717 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8718 if eval $compile; then
8719 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8721 set d_old_pthread_create_joinable
8723 val=PTHREAD_CREATE_UNDETACHED
8724 set old_pthread_create_joinable
8727 set try -DJOINABLE=__UNDETACHED
8728 if eval $compile; then
8729 echo "You seem to use __UNDETACHED." >&2
8731 set d_old_pthread_create_joinable
8734 set old_pthread_create_joinable
8737 echo "Egads, nothing obvious found. Guessing that you use 0." >&2
8739 set d_old_pthread_create_joinable
8742 set old_pthread_create_joinable
8749 d_old_pthread_create_joinable="$undef"
8750 old_pthread_create_joinable=""
8753 : see if pause exists
8757 : see if pipe exists
8761 : see if poll exists
8766 : see whether the various POSIXish _yields exist
8768 #include <pthread.h>
8774 #ifdef PTHREAD_YIELD
8777 #ifdef PTHREAD_YIELD_NULL
8778 pthread_yield(NULL);
8784 : see if sched_yield exists
8785 set try -DSCHED_YIELD
8786 if eval $compile; then
8788 sched_yield='sched_yield()'
8792 case "$usethreads" in
8795 $define) echo 'sched_yield() found.' >&4 ;;
8796 *) echo 'sched_yield() NOT found.' >&4 ;;
8802 : see if pthread_yield exists
8803 set try -DPTHREAD_YIELD
8804 if eval $compile; then
8806 case "$sched_yield" in
8807 '') sched_yield='pthread_yield()' ;;
8810 set try -DPTHREAD_YIELD_NULL
8811 if eval $compile; then
8813 case "$sched_yield" in
8814 '') sched_yield='pthread_yield(NULL)' ;;
8820 case "$usethreads" in
8823 $define) echo 'pthread_yield() found.' >&4 ;;
8824 *) echo 'pthread_yield() NOT found.' >&4 ;;
8831 case "$sched_yield" in
8832 '') sched_yield=undef ;;
8837 : see if this is a pwd.h system
8843 xxx=`./findhdr pwd.h`
8844 $cppstdin $cppflags $cppminus < $xxx >$$.h
8846 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8854 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8862 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8870 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8878 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8886 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8894 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8902 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8914 set d_pwquota; eval $setvar
8915 set d_pwage; eval $setvar
8916 set d_pwchange; eval $setvar
8917 set d_pwclass; eval $setvar
8918 set d_pwexpire; eval $setvar
8919 set d_pwcomment; eval $setvar
8920 set d_pwgecos; eval $setvar
8921 set d_pwpasswd; eval $setvar
8925 : see if readdir and friends exist
8926 set readdir d_readdir
8928 set seekdir d_seekdir
8930 set telldir d_telldir
8932 set rewinddir d_rewinddir
8935 : see if readlink exists
8936 set readlink d_readlink
8939 : see if readv exists
8943 : see if rename exists
8947 : see if rmdir exists
8951 : see if memory.h is available.
8956 : See if it conflicts with string.h
8962 $cppstdin $cppflags $cppminus < $strings > mem.h
8963 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8965 echo "We won't be including <memory.h>."
8975 : can bcopy handle overlapping blocks?
8980 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8987 $cat >>try.c <<'EOCP'
8990 # include <memory.h>
8993 # include <stdlib.h>
8996 # include <string.h>
8998 # include <strings.h>
9001 # include <unistd.h> /* Needed for NetBSD */
9005 char buf[128], abc[128];
9011 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9013 for (align = 7; align >= 0; align--) {
9014 for (len = 36; len; len--) {
9017 for (off = 1; off <= len; off++) {
9018 bcopy(b, b+off, len);
9019 bcopy(b+off, b, len);
9020 if (bcmp(b, abc, len))
9029 if eval $compile_ok; then
9030 if ./try 2>/dev/null; then
9034 echo "It can't, sorry."
9035 case "$d_memmove" in
9036 "$define") echo "But that's Ok since you have memmove()." ;;
9040 echo "(I can't compile the test program, so we'll assume not...)"
9041 case "$d_memmove" in
9042 "$define") echo "But that's Ok since you have memmove()." ;;
9047 $rm -f try.* try core
9051 : can memcpy handle overlapping blocks?
9056 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9063 $cat >>try.c <<'EOCP'
9066 # include <memory.h>
9069 # include <stdlib.h>
9072 # include <string.h>
9074 # include <strings.h>
9077 # include <unistd.h> /* Needed for NetBSD */
9081 char buf[128], abc[128];
9087 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9088 try to store the string in read-only memory. */
9089 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9091 for (align = 7; align >= 0; align--) {
9092 for (len = 36; len; len--) {
9094 memcpy(b, abc, len);
9095 for (off = 1; off <= len; off++) {
9096 memcpy(b+off, b, len);
9097 memcpy(b, b+off, len);
9098 if (memcmp(b, abc, len))
9107 if eval $compile_ok; then
9108 if ./try 2>/dev/null; then
9112 echo "It can't, sorry."
9113 case "$d_memmove" in
9114 "$define") echo "But that's Ok since you have memmove()." ;;
9118 echo "(I can't compile the test program, so we'll assume not...)"
9119 case "$d_memmove" in
9120 "$define") echo "But that's Ok since you have memmove()." ;;
9125 $rm -f try.* try core
9129 : can memcmp be trusted to compare relative magnitude?
9134 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9141 $cat >>try.c <<'EOCP'
9144 # include <memory.h>
9147 # include <stdlib.h>
9150 # include <string.h>
9152 # include <strings.h>
9155 # include <unistd.h> /* Needed for NetBSD */
9161 if ((a < b) && memcmp(&a, &b, 1) < 0)
9167 if eval $compile_ok; then
9168 if ./try 2>/dev/null; then
9172 echo "No, it can't (it uses signed chars)."
9175 echo "(I can't compile the test program, so we'll assume not...)"
9179 $rm -f try.* try core
9183 : see if select exists
9187 : see if semctl exists
9191 : see if semget exists
9195 : see if semop exists
9199 : see how much of the 'sem*(2)' library is present.
9202 case "$d_semctl$d_semget$d_semop" in
9203 *"$undef"*) h_sem=false;;
9207 case "`ipcs 2>&1`" in
9208 "SVID messages"*"not configured"*)
9209 echo "Your $osname does not have the sem*(2) configured." >&4
9222 : we could also check for sys/ipc.h ...
9223 if $h_sem && $test `./findhdr sys/sem.h`; then
9224 echo "You have the full sem*(2) library." >&4
9227 echo "You don't have the full sem*(2) library." >&4
9233 : see whether sys/sem.h defines union semun
9235 $cat > try.c <<'END'
9236 #include <sys/types.h>
9237 #include <sys/ipc.h>
9238 #include <sys/sem.h>
9239 int main () { union semun semun; semun.buf = 0; }
9242 if eval $compile; then
9243 echo "You have union semun in <sys/sem.h>." >&4
9246 echo "You do not have union semun in <sys/sem.h>." >&4
9249 $rm -f try try.c try.h
9253 : see how to do semctl IPC_STAT
9256 : see whether semctl IPC_STAT can use union semun
9261 # define S_IRUSR S_IREAD
9262 # define S_IWUSR S_IWRITE
9263 # define S_IXUSR S_IEXEC
9265 # define S_IRUSR 0400
9266 # define S_IWUSR 0200
9267 # define S_IXUSR 0100
9269 # define S_IRGRP (S_IRUSR>>3)
9270 # define S_IWGRP (S_IWUSR>>3)
9271 # define S_IXGRP (S_IXUSR>>3)
9272 # define S_IROTH (S_IRUSR>>6)
9273 # define S_IWOTH (S_IWUSR>>6)
9274 # define S_IXOTH (S_IXUSR>>6)
9277 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9278 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9279 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9284 #include <sys/types.h>
9285 #include <sys/ipc.h>
9286 #include <sys/sem.h>
9287 #include <sys/stat.h>
9294 #$d_union_semun HAS_UNION_SEMUN
9297 #ifndef HAS_UNION_SEMUN
9300 struct semid_ds *buf;
9301 unsigned short *array;
9307 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9308 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9310 struct semid_ds argbuf;
9313 st = semctl(sem, 0, IPC_STAT, arg);
9317 # endif /* IPC_STAT */
9318 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9320 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9321 # endif /* IPC_RMID */
9322 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9324 #endif /* IPC_PRIVATE && ... */
9325 printf("semget failed: errno = %d\n", errno);
9331 if eval $compile; then
9334 semun) val="$define" ;;
9340 case "$d_semctl_semun" in
9342 echo "You can use union semun for semctl IPC_STAT." >&4
9345 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9350 : see whether semctl IPC_STAT can use struct semid_ds pointer
9351 $cat > try.c <<'END'
9352 #include <sys/types.h>
9353 #include <sys/ipc.h>
9354 #include <sys/sem.h>
9355 #include <sys/stat.h>
9363 struct semid_ds arg;
9366 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9367 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9370 st = semctl(sem, 0, IPC_STAT, &arg);
9372 printf("semid_ds\n");
9374 # endif /* IPC_STAT */
9375 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9377 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9378 # endif /* IPC_RMID */
9379 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9381 #endif /* IPC_PRIVATE && ... */
9382 printf("semget failed: errno = %d\n", errno);
9389 if eval $compile; then
9392 semid_ds) val="$define" ;;
9396 set d_semctl_semid_ds
9398 case "$d_semctl_semid_ds" in
9400 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9402 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9409 # We do not have the full sem*(2) library, so assume we can not
9415 set d_semctl_semid_ds
9420 : see if setegid exists
9421 set setegid d_setegid
9424 : see if seteuid exists
9425 set seteuid d_seteuid
9428 : see if setgrent exists
9429 set setgrent d_setgrent
9432 : see if sethostent exists
9433 set sethostent d_sethent
9436 : see if setlinebuf exists
9437 set setlinebuf d_setlinebuf
9440 : see if setlocale exists
9441 set setlocale d_setlocale
9444 : see if setnetent exists
9445 set setnetent d_setnent
9448 : see if setprotoent exists
9449 set setprotoent d_setpent
9452 : see if setpgid exists
9453 set setpgid d_setpgid
9456 : see if setpgrp2 exists
9457 set setpgrp2 d_setpgrp2
9460 : see if setpriority exists
9461 set setpriority d_setprior
9464 : see if setpwent exists
9465 set setpwent d_setpwent
9468 : see if setregid exists
9469 set setregid d_setregid
9471 set setresgid d_setresgid
9474 : see if setreuid exists
9475 set setreuid d_setreuid
9477 set setresuid d_setresuid
9480 : see if setrgid exists
9481 set setrgid d_setrgid
9484 : see if setruid exists
9485 set setruid d_setruid
9488 : see if setservent exists
9489 set setservent d_setsent
9492 : see if setsid exists
9496 : see if setvbuf exists
9497 set setvbuf d_setvbuf
9500 : see if sfio.h is available
9505 : see if sfio library is available
9516 : Ok, but do we want to use it.
9520 true|$define|[yY]*) dflt='y';;
9523 echo "$package can use the sfio library, but it is experimental."
9524 rp="You seem to have sfio available, do you want to try using it?"
9528 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9530 : Remove sfio from list of libraries to use
9531 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9534 echo "libs = $libs" >&4
9538 *) case "$usesfio" in
9540 echo "Sorry, cannot find sfio on this machine" >&4
9541 echo "Ignoring your setting of usesfio=$usesfio" >&4
9549 $define) usesfio='true';;
9550 *) usesfio='false';;
9553 : see if shmctl exists
9557 : see if shmget exists
9561 : see if shmat exists
9564 : see what shmat returns
9567 $cat >shmat.c <<'END'
9568 #include <sys/shm.h>
9571 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9576 echo "and it returns ($shmattype)." >&4
9577 : see if a prototype for shmat is available
9578 xxx=`./findhdr sys/shm.h`
9579 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9580 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9591 set d_shmatprototype
9594 : see if shmdt exists
9598 : see how much of the 'shm*(2)' library is present.
9601 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9602 *"$undef"*) h_shm=false;;
9606 case "`ipcs 2>&1`" in
9607 "SVID shared memory"*"not configured"*)
9608 echo "Your $osname does not have the shm*(2) configured." >&4
9623 : we could also check for sys/ipc.h ...
9624 if $h_shm && $test `./findhdr sys/shm.h`; then
9625 echo "You have the full shm*(2) library." >&4
9628 echo "You don't have the full shm*(2) library." >&4
9635 : see if we have sigaction
9636 if set sigaction val -f d_sigaction; eval $csym; $val; then
9637 echo 'sigaction() found.' >&4
9638 $cat > try.c <<'EOP'
9640 #include <sys/types.h>
9644 struct sigaction act, oact;
9648 if eval $compile_ok; then
9651 echo "But you don't seem to have a useable struct sigaction." >&4
9655 echo 'sigaction NOT found.' >&4
9658 set d_sigaction; eval $setvar
9659 $rm -f try try$_o try.c
9661 : see if sigsetjmp exists
9663 case "$d_sigsetjmp" in
9671 if (sigsetjmp(env,1))
9679 if eval $compile; then
9680 if ./try >/dev/null 2>&1; then
9681 echo "POSIX sigsetjmp found." >&4
9685 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9691 echo "sigsetjmp not found." >&4
9695 *) val="$d_sigsetjmp"
9696 case "$d_sigsetjmp" in
9697 $define) echo "POSIX sigsetjmp found." >&4;;
9698 $undef) echo "sigsetjmp not found." >&4;;
9706 : see if stat knows about block sizes
9708 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9711 : see if _ptr and _cnt from stdio act std
9713 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9714 echo "(Looks like you have stdio.h from Linux.)"
9715 case "$stdio_ptr" in
9716 '') stdio_ptr='((fp)->_IO_read_ptr)'
9719 *) ptr_lval=$d_stdio_ptr_lval;;
9721 case "$stdio_cnt" in
9722 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9725 *) cnt_lval=$d_stdio_cnt_lval;;
9727 case "$stdio_base" in
9728 '') stdio_base='((fp)->_IO_read_base)';;
9730 case "$stdio_bufsiz" in
9731 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9734 case "$stdio_ptr" in
9735 '') stdio_ptr='((fp)->_ptr)'
9738 *) ptr_lval=$d_stdio_ptr_lval;;
9740 case "$stdio_cnt" in
9741 '') stdio_cnt='((fp)->_cnt)'
9744 *) cnt_lval=$d_stdio_cnt_lval;;
9746 case "$stdio_base" in
9747 '') stdio_base='((fp)->_base)';;
9749 case "$stdio_bufsiz" in
9750 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9753 : test whether _ptr and _cnt really work
9754 echo "Checking how std your stdio is..." >&4
9757 #define FILE_ptr(fp) $stdio_ptr
9758 #define FILE_cnt(fp) $stdio_cnt
9760 FILE *fp = fopen("try.c", "r");
9763 18 <= FILE_cnt(fp) &&
9764 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9772 if eval $compile; then
9774 echo "Your stdio acts pretty std."
9777 echo "Your stdio isn't very std."
9780 echo "Your stdio doesn't appear very std."
9786 : Can _ptr be used as an lvalue?
9787 case "$d_stdstdio$ptr_lval" in
9788 $define$define) val=$define ;;
9791 set d_stdio_ptr_lval
9794 : Can _cnt be used as an lvalue?
9795 case "$d_stdstdio$cnt_lval" in
9796 $define$define) val=$define ;;
9799 set d_stdio_cnt_lval
9802 : see if _base is also standard
9804 case "$d_stdstdio" in
9808 #define FILE_base(fp) $stdio_base
9809 #define FILE_bufsiz(fp) $stdio_bufsiz
9811 FILE *fp = fopen("try.c", "r");
9814 19 <= FILE_bufsiz(fp) &&
9815 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9822 if eval $compile; then
9824 echo "And its _base field acts std."
9827 echo "But its _base field isn't std."
9830 echo "However, it seems to be lacking the _base field."
9838 : see if strcoll exists
9839 set strcoll d_strcoll
9842 : check for structure copying
9844 echo "Checking to see if your C compiler can copy structs..." >&4
9845 $cat >try.c <<'EOCP'
9855 if $cc -c try.c >/dev/null 2>&1 ; then
9860 echo "Nope, it can't."
9866 : see if strerror and/or sys_errlist[] exist
9868 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9869 if set strerror val -f d_strerror; eval $csym; $val; then
9870 echo 'strerror() found.' >&4
9871 d_strerror="$define"
9872 d_strerrm='strerror(e)'
9873 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9874 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9875 d_syserrlst="$define"
9877 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9878 d_syserrlst="$undef"
9880 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9881 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9882 echo 'strerror() found in string header.' >&4
9883 d_strerror="$define"
9884 d_strerrm='strerror(e)'
9885 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9886 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9887 d_syserrlst="$define"
9889 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9890 d_syserrlst="$undef"
9892 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9893 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9895 d_syserrlst="$define"
9896 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9898 echo 'strerror() and sys_errlist[] NOT found.' >&4
9900 d_syserrlst="$undef"
9901 d_strerrm='"unknown"'
9905 : see if strtod exists
9909 : see if strtol exists
9913 : see if strtoul exists
9914 set strtoul d_strtoul
9917 : see if strxfrm exists
9918 set strxfrm d_strxfrm
9921 : see if symlink exists
9922 set symlink d_symlink
9925 : see if syscall exists
9926 set syscall d_syscall
9929 : see if sysconf exists
9930 set sysconf d_sysconf
9933 : see if system exists
9937 : see if tcgetpgrp exists
9938 set tcgetpgrp d_tcgetpgrp
9941 : see if tcsetpgrp exists
9942 set tcsetpgrp d_tcsetpgrp
9945 : define an is-a-typedef? function
9946 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9948 "") inclist="sys/types.h";;
9950 eval "varval=\$$var";
9954 for inc in $inclist; do
9955 echo "#include <$inc>" >>temp.c;
9957 echo "#ifdef $type" >> temp.c;
9958 echo "printf(\"We have $type\");" >> temp.c;
9959 echo "#endif" >> temp.c;
9960 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9961 if $contains $type temp.E >/dev/null 2>&1; then
9967 *) eval "$var=\$varval";;
9970 : define an is-a-typedef? function that prompts if the type is not available.
9971 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9973 "") inclist="sys/types.h";;
9975 eval "varval=\$$var";
9979 for inc in $inclist; do
9980 echo "#include <$inc>" >>temp.c;
9982 echo "#ifdef $type" >> temp.c;
9983 echo "printf(\"We have $type\");" >> temp.c;
9984 echo "#endif" >> temp.c;
9985 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9987 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9988 if $contains $type temp.E >/dev/null 2>&1; then
9989 echo "$type found." >&4;
9992 echo "$type NOT found." >&4;
9998 *) eval "$var=\$varval";;
10001 : see if this is a sys/times.h system
10002 set sys/times.h i_systimes
10005 : see if times exists
10007 if set times val -f d_times; eval $csym; $val; then
10008 echo 'times() found.' >&4
10011 case "$i_systimes" in
10012 "$define") inc='sys/times.h';;
10014 rp="What is the type returned by times() on this system?"
10015 set clock_t clocktype long stdio.h sys/types.h $inc
10018 echo 'times() NOT found, hope that will do.' >&4
10023 : see if truncate exists
10024 set truncate d_truncate
10027 : see if tzname[] exists
10029 if set tzname val -a d_tzname; eval $csym; $val; then
10031 echo 'tzname[] found.' >&4
10034 echo 'tzname[] NOT found.' >&4
10039 : see if umask exists
10043 : backward compatibility for d_hvfork
10044 if test X$d_hvfork != X; then
10045 d_vfork="$d_hvfork"
10048 : see if there is a vfork
10053 : Ok, but do we want to use it. vfork is reportedly unreliable in
10054 : perl on Solaris 2.x, and probably elsewhere.
10058 case "$usevfork" in
10062 rp="Some systems have problems with vfork(). Do you want to use it?"
10067 echo "Ok, we won't use vfork()."
10076 $define) usevfork='true';;
10077 *) usevfork='false';;
10080 : see if this is an sysdir system
10081 set sys/dir.h i_sysdir
10084 : see if this is an sysndir system
10085 set sys/ndir.h i_sysndir
10088 : see if sys/types.h has to be included
10089 set sys/types.h i_systypes
10092 : see if closedir exists
10093 set closedir d_closedir
10096 case "$d_closedir" in
10099 echo "Checking whether closedir() returns a status..." >&4
10100 cat > closedir.c <<EOM
10101 #$i_dirent I_DIRENT /**/
10102 #$i_sysdir I_SYS_DIR /**/
10103 #$i_sysndir I_SYS_NDIR /**/
10104 #$i_systypes I_SYS_TYPES /**/
10106 #if defined(I_SYS_TYPES)
10107 #include <sys/types.h>
10109 #if defined(I_DIRENT)
10110 #include <dirent.h>
10111 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10112 #include <sys/dir.h>
10116 #include <sys/ndir.h>
10120 #include <ndir.h> /* may be wrong in the future */
10122 #include <sys/dir.h>
10127 int main() { return closedir(opendir(".")); }
10130 if eval $compile_ok; then
10131 if ./closedir > /dev/null 2>&1 ; then
10132 echo "Yes, it does."
10135 echo "No, it doesn't."
10139 echo "(I can't seem to compile the test program--assuming it doesn't)"
10147 set d_void_closedir
10150 : check for volatile keyword
10152 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10153 $cat >try.c <<'EOCP'
10156 typedef struct _goo_struct goo_struct;
10157 goo_struct * volatile goo = ((goo_struct *)0);
10158 struct _goo_struct {
10163 typedef unsigned short foo_t;
10164 char *volatile foo;
10166 volatile foo_t blech;
10170 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10172 echo "Yup, it does."
10175 echo "Nope, it doesn't."
10181 : see if there is a wait4
10185 : see if waitpid exists
10186 set waitpid d_waitpid
10189 : see if wcstombs exists
10190 set wcstombs d_wcstombs
10193 : see if wctomb exists
10194 set wctomb d_wctomb
10197 : see if writev exists
10198 set writev d_writev
10201 : preserve RCS keywords in files with variable substitution, grrr
10206 Revision='$Revision'
10208 : check for alignment requirements
10210 case "$alignbytes" in
10211 '') echo "Checking alignment constraints..." >&4
10212 $cat >try.c <<'EOCP'
10219 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10223 if eval $compile_ok; then
10227 echo "(I can't seem to compile the test program...)"
10230 *) dflt="$alignbytes"
10233 rp="Doubles must be aligned on a how-many-byte boundary?"
10238 : check for ordering of bytes in a long
10239 case "$byteorder" in
10243 In the following, larger digits indicate more significance. A big-endian
10244 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10245 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10246 machines may have weird orders like 3412. A Cray will report 87654321. If
10247 the test program works the default is probably right.
10248 I'm now running the test program...
10250 $cat >try.c <<'EOCP'
10257 char c[sizeof(long)];
10260 if (sizeof(long) > 4)
10261 u.l = (0x08070605L << 32) | 0x04030201L;
10264 for (i = 0; i < sizeof(long); i++)
10265 printf("%c", u.c[i]+'0');
10272 if eval $compile && ./try > /dev/null; then
10275 [1-4][1-4][1-4][1-4]|12345678|87654321)
10276 echo "(The test program ran ok.)"
10277 echo "byteorder=$dflt"
10280 ????|????????) echo "(The test program ran ok.)" ;;
10281 *) echo "(The test program didn't run right for some reason.)" ;;
10286 (I can't seem to compile the test program. Guessing big-endian...)
10289 case "$xxx_prompt" in
10291 rp="What is the order of bytes in a long?"
10302 : how do we catenate cpp tokens here?
10304 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10305 $cat >cpp_stuff.c <<'EOCP'
10306 #define RCAT(a,b)a/**/b
10307 #define ACAT(a,b)a ## b
10311 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10312 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10313 echo "Oh! Smells like ANSI's been here." >&4
10314 echo "We can catify or stringify, separately or together!"
10316 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10317 echo "Ah, yes! The good old days!" >&4
10318 echo "However, in the good old days we don't know how to stringify and"
10319 echo "catify at the same time."
10323 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10324 to have to edit the values of CAT[2-5] in config.h...
10326 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10330 : see if this is a db.h system
10336 : Check db version.
10338 echo "Checking Berkeley DB version ..." >&4
10344 #include <sys/types.h>
10349 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10350 int Major, Minor, Patch ;
10351 unsigned long Version ;
10352 (void)db_version(&Major, &Minor, &Patch) ;
10353 printf("You have Berkeley DB Version 2 or greater\n");
10355 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10356 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10357 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10358 Major, Minor, Patch) ;
10360 /* check that db.h & libdb are compatible */
10361 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10362 printf("db.h and libdb are incompatible\n") ;
10366 printf("db.h and libdb are compatible\n") ;
10368 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10369 + DB_VERSION_PATCH ;
10371 /* needs to be >= 2.3.4 */
10372 if (Version < 2003004) {
10373 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10374 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10380 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10381 printf("You have Berkeley DB Version 1\n");
10382 exit(0); /* DB version < 2: the coast is clear. */
10384 exit(1); /* <db.h> not Berkeley DB? */
10390 if eval $compile && ./try; then
10391 echo 'Looks OK.' >&4
10393 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10397 : Remove db from list of libraries to use
10398 echo "Removing unusable -ldb from library list" >&4
10399 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10402 echo "libs = $libs" >&4
10412 : Check the return type needed for hash
10414 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10420 #include <sys/types.h>
10423 #ifndef DB_VERSION_MAJOR
10424 u_int32_t hash_cb (ptr, size)
10432 info.hash = hash_cb;
10436 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10437 if $contains warning try.out >>/dev/null 2>&1 ; then
10440 db_hashtype='u_int32_t'
10443 : XXX Maybe we should just give up here.
10444 db_hashtype=u_int32_t
10446 echo "Help: I can't seem to compile the db test program." >&4
10447 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10450 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10452 *) db_hashtype=u_int32_t
10457 : Check the return type needed for prefix
10459 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10465 #include <sys/types.h>
10468 #ifndef DB_VERSION_MAJOR
10469 size_t prefix_cb (key1, key2)
10477 info.prefix = prefix_cb;
10481 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10482 if $contains warning try.out >>/dev/null 2>&1 ; then
10483 db_prefixtype='int'
10485 db_prefixtype='size_t'
10488 db_prefixtype='size_t'
10489 : XXX Maybe we should just give up here.
10491 echo "Help: I can't seem to compile the db test program." >&4
10492 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10495 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10497 *) db_prefixtype='size_t'
10501 : check for void type
10503 echo "Checking to see how well your C compiler groks the void type..." >&4
10504 case "$voidflags" in
10506 $cat >try.c <<'EOCP'
10512 extern void moo(); /* function returning void */
10513 void (*goo)(); /* ptr to func returning void */
10515 void *hue; /* generic ptr */
10528 int main() { sub(); }
10530 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10531 voidflags=$defvoidused
10532 echo "Good. It appears to support void to the level $package wants.">&4
10533 if $contains warning .out >/dev/null 2>&1; then
10534 echo "However, you might get some warnings that look like this:"
10538 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10539 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10540 echo "It supports 1..."
10541 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10542 echo "It also supports 2..."
10543 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10545 echo "And it supports 4 but not 8 definitely."
10547 echo "It doesn't support 4..."
10548 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10550 echo "But it supports 8."
10553 echo "Neither does it support 8."
10557 echo "It does not support 2..."
10558 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10560 echo "But it supports 4 and 8."
10562 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10564 echo "And it supports 4 but has not heard about 8."
10566 echo "However it supports 8 but not 4."
10571 echo "There is no support at all for void."
10576 case "$voidflags" in
10578 *) $cat >&4 <<'EOM'
10579 Support flag bits are:
10580 1: basic void declarations.
10581 2: arrays of pointers to functions returning void.
10582 4: operations between pointers to and addresses of void functions.
10583 8: generic void pointers.
10586 rp="Your void support flags add up to what?"
10594 : How can we generate normalized random numbers ?
10596 echo "Looking for a random number function..." >&4
10597 case "$randfunc" in
10599 if set drand48 val -f; eval $csym; $val; then
10601 echo "Good, found drand48()." >&4
10602 elif set random val -f; eval $csym; $val; then
10604 echo "OK, found random()." >&4
10607 echo "Yick, looks like I have to use rand()." >&4
10618 *-Dmy_rand=*|*-Dmy_srand=*)
10619 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10620 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10621 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10622 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10626 while $test "$cont"; do
10627 rp="Use which function to generate random numbers?"
10629 if $test "$ans" = "$dflt"; then
10635 if set $ans val -f; eval $csym; $val; then
10639 rp="I cannot find function $ans. Use that name anyway?"
10648 case "$randfunc" in
10650 drand01="drand48()"
10656 case "$randbits" in
10658 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10660 #$i_unistd I_UNISTD
10661 #$i_stdlib I_STDLIB
10664 # include <unistd.h>
10667 # include <stdlib.h>
10672 register unsigned long tmp;
10673 register unsigned long max = 0L;
10675 for (i = 1000; i; i--) {
10676 tmp = (unsigned long) $randfunc();
10677 if (tmp > max) max = tmp;
10679 for (i = 0; max; i++)
10685 if eval $compile_ok; then
10689 echo "(I can't seem to compile the test program...)"
10696 rp="How many bits does your $randfunc() function produce?"
10700 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10701 seedfunc="s$randfunc"
10702 randseedtype=unsigned
10706 rp="How many bits does your $randfunc() function produce?"
10709 seedfunc="s$randfunc"
10710 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10711 if set $seedfunc val -f; eval $csym; $val; then
10712 echo "(Using $seedfunc() to seed random generator)"
10714 echo "(Warning: no $seedfunc() to seed random generator)"
10717 randseedtype=unsigned
10725 echo "Determining whether or not we are on an EBCDIC system..." >&4
10726 $cat >tebcdic.c <<'EOM'
10729 if ('M'==0xd4) return 0;
10736 if eval $compile_ok; then
10738 echo "You have EBCDIC." >&4
10741 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10744 echo "I'm unable to compile the test program." >&4
10745 echo "I'll assume ASCII or some ISO Latin." >&4
10747 $rm -f tebcdic.c tebcdic
10751 : see what type file positions are declared as in the library
10752 rp="What is the type for file position used by fsetpos()?"
10753 set fpos_t fpostype long stdio.h sys/types.h
10756 : Store the full pathname to the sed program for use in the C program
10759 : see what type gids are declared as in the kernel
10761 echo "Looking for the type for group ids returned by getgid()."
10762 set gid_t gidtype xxx stdio.h sys/types.h
10766 xxx=`./findhdr sys/user.h`
10767 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10769 unsigned) dflt="$1 $2" ;;
10773 *) dflt="$gidtype";;
10776 gid_t) echo "gid_t found." ;;
10777 *) rp="What is the type for group ids returned by getgid()?"
10783 : see if getgroups exists
10784 set getgroups d_getgrps
10787 : see if setgroups exists
10788 set setgroups d_setgrps
10792 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10794 case "$d_getgrps$d_setgrps" in
10796 case "$groupstype" in
10797 '') dflt="$gidtype" ;;
10798 *) dflt="$groupstype" ;;
10801 What type of pointer is the second argument to getgroups() and setgroups()?
10802 Usually this is the same as group ids, $gidtype, but not always.
10805 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10809 *) groupstype="$gidtype";;
10812 : see what type lseek is declared as in the kernel
10813 rp="What is the type used for lseek's offset on this system?"
10814 set off_t lseektype long stdio.h sys/types.h
10818 $echo $n "Checking to see how big your file offsets are...$c" >&4
10820 #include <sys/types.h>
10824 printf("%d\n", sizeof($lseektype));
10828 if eval $compile_ok; then
10830 $echo " $lseeksize bytes." >&4
10834 echo "(I can't seem to compile the test program. Guessing...)"
10835 rp="What is the size of your file offsets (in bytes)?"
10842 echo "Checking if your $make program sets \$(MAKE)..." >&4
10843 case "$make_set_make" in
10845 $sed 's/^X //' > testmake.mak << 'EOF'
10847 X @echo 'maketemp="$(MAKE)"'
10849 case "`$make -f testmake.mak 2>/dev/null`" in
10850 *maketemp=*) make_set_make='#' ;;
10851 *) make_set_make="MAKE=$make" ;;
10853 $rm -f testmake.mak
10856 case "$make_set_make" in
10857 '#') echo "Yup, it does.";;
10858 *) echo "Nope, it doesn't.";;
10861 : see what type is used for mode_t
10862 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10863 set mode_t modetype int stdio.h sys/types.h
10866 : define a fucntion to check prototypes
10867 $cat > protochk <<EOSH
10870 optimize="$optimize"
10872 prototype="$prototype"
10877 $cat >> protochk <<'EOSH'
10882 while test $# -ge 2; do
10884 $define) echo "#include <$2>" >> try.c ;;
10885 literal) echo "$2" >> try.c ;;
10889 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
10890 cat >> try.c <<'EOCP'
10891 #ifdef CAN_PROTOTYPE
10892 #define _(args) args
10897 echo "$foo" >> try.c
10898 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10899 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10905 $eunicefix protochk
10907 : see what type is used for size_t
10908 rp="What is the type used for the length parameter for string functions?"
10909 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10912 : check for type of arguments to gethostbyaddr.
10913 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10914 case "$d_gethbyaddr" in
10918 Checking to see what type of arguments are accepted by gethostbyaddr().
10920 hdrs="$define sys/types.h
10921 $d_socket sys/socket.h
10922 $i_niin netinet/in.h
10924 $i_unistd unistd.h"
10925 : The first arg can 'char *' or 'void *'
10926 : The second arg is some of integral type
10927 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10928 for yyy in size_t long int; do
10929 case "$netdb_host_type" in
10930 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10931 if ./protochk "$try" $hdrs; then
10932 echo "Your system accepts $xxx for the first arg."
10933 echo "...and $yyy for the second arg."
10934 netdb_host_type="$xxx"
10935 netdb_hlen_type="$yyy"
10941 : In case none of those worked, prompt the user.
10942 case "$netdb_host_type" in
10943 '') rp='What is the type for the 1st argument to gethostbyaddr?'
10946 netdb_host_type=$ans
10947 rp='What is the type for the 2nd argument to gethostbyaddr?'
10950 netdb_hlen_type=$ans
10954 *) : no gethostbyaddr, so pick harmless defaults
10955 netdb_host_type='char *'
10956 netdb_hlen_type="$sizetype"
10959 # Remove the "const" if needed. -- but then we'll have a
10961 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10964 : check for type of argument to gethostbyname.
10965 if test "X$netdb_name_type" = X ; then
10966 case "$d_gethbyname" in
10970 Checking to see what type of argument is accepted by gethostbyname().
10972 hdrs="$define sys/types.h
10973 $d_socket sys/socket.h
10974 $i_niin netinet/in.h
10976 $i_unistd unistd.h"
10977 for xxx in "const char *" "char *"; do
10978 case "$netdb_name_type" in
10979 '') try="extern struct hostent *gethostbyname($xxx);"
10980 if ./protochk "$try" $hdrs; then
10981 echo "Your system accepts $xxx."
10982 netdb_name_type="$xxx"
10987 : In case none of those worked, prompt the user.
10988 case "$netdb_name_type" in
10989 '') rp='What is the type for the 1st argument to gethostbyname?'
10992 netdb_name_type=$ans
10996 *) : no gethostbyname, so pick harmless default
10997 netdb_name_type='char *'
11002 : check for type of 1st argument to getnetbyaddr.
11003 if test "X$netdb_net_type" = X ; then
11004 case "$d_getnbyaddr" in
11008 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11010 hdrs="$define sys/types.h
11011 $d_socket sys/socket.h
11012 $i_niin netinet/in.h
11014 $i_unistd unistd.h"
11015 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11016 case "$netdb_net_type" in
11017 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11018 if ./protochk "$try" $hdrs; then
11019 echo "Your system accepts $xxx."
11020 netdb_net_type="$xxx"
11025 : In case none of those worked, prompt the user.
11026 case "$netdb_net_type" in
11027 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11030 netdb_net_type=$ans
11034 *) : no getnetbyaddr, so pick harmless default
11035 netdb_net_type='long'
11039 : locate the preferred pager for this system
11053 '') dflt=/usr/ucb/more;;
11060 rp='What pager is used on your system?'
11064 : see what type pids are declared as in the kernel
11065 rp="What is the type of process ids on this system?"
11066 set pid_t pidtype int stdio.h sys/types.h
11069 : check for length of pointer
11073 $echo $n "Checking to see how big your pointers are...$c" >&4
11074 if test "$voidflags" -gt 7; then
11075 echo '#define VOID_PTR char *' > try.c
11077 echo '#define VOID_PTR void *' > try.c
11079 $cat >>try.c <<'EOCP'
11083 printf("%d\n", sizeof(VOID_PTR));
11088 if eval $compile_ok; then
11090 $echo " $ptrsize bytes." >&4
11093 echo "(I can't seem to compile the test program. Guessing...)" >&4
11094 rp="What is the size of a pointer (in bytes)?"
11102 : see if ar generates random libraries by itself
11104 echo "Checking how to generate random libraries on your machine..." >&4
11105 echo 'int bar1() { return bar2(); }' > bar1.c
11106 echo 'int bar2() { return 2; }' > bar2.c
11107 $cat > foo.c <<'EOP'
11108 int main() { printf("%d\n", bar1()); exit(0); }
11110 $cc $ccflags -c bar1.c >/dev/null 2>&1
11111 $cc $ccflags -c bar2.c >/dev/null 2>&1
11112 $cc $ccflags -c foo.c >/dev/null 2>&1
11113 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11114 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11115 ./foobar >/dev/null 2>&1; then
11116 echo "$ar appears to generate random libraries itself."
11119 elif $ar ts bar$_a >/dev/null 2>&1 &&
11120 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11121 ./foobar >/dev/null 2>&1; then
11122 echo "a table of contents needs to be added with '$ar ts'."
11129 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11130 $test -f $ranlib || ranlib=''
11133 if $test -n "$ranlib"; then
11134 echo "your system has '$ranlib'; we'll use that."
11137 echo "your system doesn't seem to support random libraries"
11138 echo "so we'll use lorder and tsort to order the libraries."
11145 : check for type of arguments to select.
11146 case "$selecttype" in
11147 '') case "$d_select" in
11150 Checking to see what type of arguments are accepted by select().
11152 hdrs="$define sys/types.h
11153 $i_systime sys/time.h
11154 $i_sysselct sys/select.h
11155 $d_socket sys/socket.h"
11156 : The first arg can be int, unsigned, or size_t
11157 : The last arg may or may not be 'const'
11159 : void pointer has been seen but using that
11160 : breaks the selectminbits test
11161 for xxx in 'fd_set *' 'int *'; do
11162 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11163 for tmo in 'struct timeval *' 'const struct timeval *'; do
11165 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11166 if ./protochk "$try" $hdrs; then
11167 echo "Your system accepts $xxx."
11176 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11177 case "$d_fd_set" in
11178 $define) dflt="fd_set *" ;;
11187 *) : no select, so pick a harmless default
11194 : check for the select 'width'
11195 case "$selectminbits" in
11196 '') case "$d_select" in
11200 Checking to see on how many bits at a time your select() operates...
11203 #include <sys/types.h>
11205 #$i_systime I_SYS_TIME
11206 #$i_systimek I_SYS_TIME_KERNEL
11211 # ifdef I_SYS_TIME_KERNEL
11214 # include <sys/time.h>
11215 # ifdef I_SYS_TIME_KERNEL
11219 #$i_sysselct I_SYS_SELECT
11220 #ifdef I_SYS_SELECT
11221 #include <sys/select.h>
11225 #define S sizeof(*(b))
11227 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11228 #define NBITS (NBYTES * 8)
11237 fp = fopen("try.c", "r");
11243 b = ($selecttype)s;
11244 for (i = 0; i < NBITS; i++)
11248 select(fd + 1, b, 0, 0, &t);
11249 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11250 printf("%d\n", i + 1);
11255 if eval $compile_ok; then
11256 selectminbits=`./try`
11257 case "$selectminbits" in
11259 Cannot figure out on how many bits at a time your select() operates.
11260 I'll play safe and guess it is 32 bits.
11266 *) bits="$selectminbits bits" ;;
11268 echo "Your select() operates on $bits at a time." >&4
11270 rp='What is the minimum number of bits your select() operates on?'
11271 case "$byteorder" in
11272 1234|12345678) dflt=32 ;;
11277 selectminbits="$val"
11281 *) : no select, so pick a harmless default
11288 : Trace out the files included by signal.h, then look for SIGxxx names.
11289 : Remove SIGARRAYSIZE used by HPUX.
11290 : Remove SIGTYP void lines used by OS2.
11291 xxx=`echo '#include <signal.h>' |
11292 $cppstdin $cppminus $cppflags 2>/dev/null |
11293 $grep '^[ ]*#.*include' |
11294 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11295 : Check this list of files to be sure we have parsed the cpp output ok.
11296 : This will also avoid potentially non-existent files, such
11299 for xx in $xxx /dev/null ; do
11300 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11302 : If we have found no files, at least try signal.h
11303 case "$xxxfiles" in
11304 '') xxxfiles=`./findhdr signal.h` ;;
11307 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11308 print substr($2, 4, 20)
11310 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11311 print substr($3, 4, 20)
11313 : Append some common names just in case the awk scan failed.
11314 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11315 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11316 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11317 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11318 : generate a few handy files for later
11319 $cat > signal.c <<'EOCP'
11320 #include <sys/types.h>
11321 #include <signal.h>
11325 /* Strange style to avoid deeply-nested #if/#else/#endif */
11328 # define NSIG (_NSIG)
11334 # define NSIG (SIGMAX+1)
11340 # define NSIG (SIG_MAX+1)
11346 # define NSIG (MAXSIG+1)
11352 # define NSIG (MAX_SIG+1)
11357 # ifdef SIGARRAYSIZE
11358 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11364 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11368 /* Default to some arbitrary number that's big enough to get most
11369 of the common signals.
11375 printf("NSIG %d\n", NSIG);
11381 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11383 printf "#ifdef SIG"; printf $1; printf "\n"
11384 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11385 printf $1; printf ");\n"
11389 printf "#endif /* JUST_NSIG */\n";
11393 $cat >signal.awk <<'EOP'
11394 BEGIN { ndups = 0 }
11395 $1 ~ /^NSIG$/ { nsig = $2 }
11396 ($1 !~ /^NSIG$/) && (NF == 2) {
11397 if ($2 > maxsig) { maxsig = $2 }
11398 if (sig_name[$2]) {
11399 dup_name[ndups] = $1
11400 dup_num[ndups] = $2
11410 if (nsig == 0) { nsig = maxsig + 1 }
11411 for (n = 1; n < nsig; n++) {
11413 printf("%s %d\n", sig_name[n], sig_num[n])
11416 printf("NUM%d %d\n", n, n)
11419 for (n = 0; n < ndups; n++) {
11420 printf("%s %d\n", dup_name[n], dup_num[n])
11424 $cat >signal_cmd <<EOS
11426 if $test -s signal.lst; then
11427 echo "Using your existing signal.lst file"
11432 $cat >>signal_cmd <<'EOS'
11435 if eval $compile_ok; then
11436 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11438 echo "(I can't seem be able to compile the whole test program)" >&4
11439 echo "(I'll try it in little pieces.)" >&4
11440 set signal -DJUST_NSIG
11441 if eval $compile_ok; then
11442 ./signal$_exe > signal.nsg
11445 echo "I can't seem to figure out how many signals you have." >&4
11446 echo "Guessing 50." >&4
11447 echo 'NSIG 50' > signal.nsg
11449 : Now look at all the signal names, one at a time.
11450 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11451 $cat > signal.c <<EOCP
11452 #include <sys/types.h>
11453 #include <signal.h>
11456 printf("$xx %d\n", SIG${xx});
11461 if eval $compile; then
11462 echo "SIG${xx} found."
11463 ./signal$_exe >> signal.ls1
11465 echo "SIG${xx} NOT found."
11468 if $test -s signal.ls1; then
11469 $cat signal.nsg signal.ls1 |
11470 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11474 if $test -s signal.lst; then
11477 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11478 echo 'kill -l' >signal
11479 set X `csh -f <signal`
11483 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11485 echo $@ | $tr ' ' $trnl | \
11486 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11488 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11490 chmod a+x signal_cmd
11491 $eunicefix signal_cmd
11493 : generate list of signal names
11495 case "$sig_name_init" in
11497 *) case "$sig_num_init" in
11498 ''|*,*) doinit=yes ;;
11503 echo "Generating a list of signal names and numbers..." >&4
11505 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11506 sig_name="ZERO $sig_name"
11507 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11508 { printf "\"%s\", ", $1 }
11509 END { printf "0\n" }' signal.lst`
11510 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11511 sig_num="0 $sig_num"
11512 sig_num_init=`$awk 'BEGIN { printf "0, " }
11513 { printf "%d, ", $2}
11514 END { printf "0\n"}' signal.lst`
11517 echo "The following signals are available:"
11519 echo $sig_name | $awk \
11520 'BEGIN { linelen = 0 }
11522 for (i = 1; i <= NF; i++) {
11523 name = "SIG" $i " "
11524 linelen = linelen + length(name)
11525 if (linelen > 70) {
11527 linelen = length(name)
11533 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11535 : see what type is used for signed size_t
11536 set ssize_t ssizetype int stdio.h sys/types.h
11539 $cat > ssize.c <<EOM
11541 #include <sys/types.h>
11542 #define Size_t $sizetype
11543 #define SSize_t $dflt
11546 if (sizeof(Size_t) == sizeof(SSize_t))
11548 else if (sizeof(Size_t) == sizeof(int))
11557 if eval $compile_ok && ./ssize > /dev/null; then
11558 ssizetype=`./ssize`
11559 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11562 Help! I can't compile and run the ssize_t test program: please enlighten me!
11563 (This is probably a misconfiguration in your system or libraries, and
11564 you really ought to fix it. Still, I'll try anyway.)
11566 I need a type that is the same size as $sizetype, but is guaranteed to
11567 be signed. Common values are ssize_t, int and long.
11570 rp="What signed type is the same size as $sizetype?"
11574 $rm -f ssize ssize.*
11576 : see what type of char stdio uses.
11578 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11579 echo "Your stdio uses unsigned chars." >&4
11580 stdchar="unsigned char"
11582 echo "Your stdio uses signed chars." >&4
11586 : see if time exists
11588 if test "X$d_time" = X -o X"$timetype" = X; then
11589 if set time val -f d_time; eval $csym; $val; then
11590 echo 'time() found.' >&4
11592 rp="What is the type returned by time() on this system?"
11593 set time_t timetype long stdio.h sys/types.h
11596 echo 'time() not found, hope that will do.' >&4
11604 : see what type uids are declared as in the kernel
11606 echo "Looking for the type for user ids returned by getuid()."
11607 set uid_t uidtype xxx stdio.h sys/types.h
11611 xxx=`./findhdr sys/user.h`
11612 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11614 unsigned) dflt="$1 $2" ;;
11618 *) dflt="$uidtype";;
11621 uid_t) echo "uid_t found." ;;
11622 *) rp="What is the type for user ids returned by getuid()?"
11628 : see if dbm.h is available
11629 : see if dbmclose exists
11630 set dbmclose d_dbmclose
11633 case "$d_dbmclose" in
11643 *) set rpcsvc/dbm.h i_rpcsvcdbm
11648 *) echo "We won't be including <dbm.h>"
11658 : see if this is a sys/file.h system
11663 : do we need to include sys/file.h ?
11667 if $h_sysfile; then
11669 echo "We'll be including <sys/file.h>." >&4
11672 echo "We won't be including <sys/file.h>." >&4
11682 : see if fcntl.h is there
11687 : see if we can include fcntl.h
11693 echo "We'll be including <fcntl.h>." >&4
11696 if $h_sysfile; then
11697 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11699 echo "We won't be including <fcntl.h>." >&4
11711 : see if locale.h is available
11712 set locale.h i_locale
11715 : see if mach cthreads are available
11716 if test "X$usethreads" = "X$define"; then
11717 set mach/cthreads.h i_machcthr
11720 i_machcthr="$undef"
11725 : see if this is a math.h system
11729 : see if this is a mntent.h system
11730 set mntent.h i_mntent
11733 : see if ndbm.h is available
11738 : see if dbm_open exists
11739 set dbm_open d_dbm_open
11741 case "$d_dbm_open" in
11744 echo "We won't be including <ndbm.h>"
11753 : see if net/errno.h is available
11755 set net/errno.h val
11758 : Unfortunately, it causes problems on some systems. Arrgh.
11761 cat > try.c <<'EOM'
11764 #include <net/errno.h>
11770 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11771 echo "We'll be including <net/errno.h>." >&4
11773 echo "We won't be including <net/errno.h>." >&4
11782 : see if this is a poll.h system
11786 : get C preprocessor symbols handy
11788 $echo $n "Hmm... $c"
11789 echo $al | $tr ' ' $trnl >Cppsym.know
11790 $cat <<EOSS >Cppsym
11798 case "\$list\$#" in
11801 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11803 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11806 unknown="\$unknown \$sym"
11816 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11818 exit 0; _ _ _ _\1\\ \1\\
11821 echo "exit 1; _ _ _" >>Cppsym\$\$
11822 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11824 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11830 $rm -f Cppsym\$\$ Cppsym2\$\$
11835 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11837 : now check the C compiler for additional symbols
11843 for i in \`$cc -v -c tmp.c 2>&1\`
11846 -D*) echo "\$i" | $sed 's/^-D//';;
11847 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11854 ./ccsym > ccsym1.raw
11855 if $test -s ccsym1.raw; then
11856 $sort ccsym1.raw | $uniq >ccsym.raw
11858 mv ccsym1.raw ccsym.raw
11861 $awk '/\=/ { print $0; next }
11862 { print $0"=1" }' ccsym.raw >ccsym.list
11863 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11864 $comm -13 ccsym.true ccsym.list >ccsym.own
11865 $comm -12 ccsym.true ccsym.list >ccsym.com
11866 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11869 if $test -z ccsym.raw; then
11870 echo "Your C compiler doesn't seem to define any symbol!" >&4
11872 echo "However, your C preprocessor defines the following ones:"
11875 if $test -s ccsym.com; then
11876 echo "Your C compiler and pre-processor define these symbols:"
11877 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11880 $test "$silent" || sleep 1
11882 if $test -s ccsym.cpp; then
11883 $test "$also" && echo " "
11884 echo "Your C pre-processor ${also}defines the following $symbols:"
11885 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11887 $test "$silent" || sleep 1
11889 if $test -s ccsym.own; then
11890 $test "$also" && echo " "
11891 echo "Your C compiler ${also}defines the following cpp variables:"
11892 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11893 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11894 $test "$silent" || sleep 1
11899 : see if this is a termio system
11903 if $test `./findhdr termios.h`; then
11904 set tcsetattr i_termios
11910 "$define") echo "You have POSIX termios.h... good!" >&4;;
11911 *) if ./Cppsym pyr; then
11912 case "`/bin/universe`" in
11913 ucb) if $test `./findhdr sgtty.h`; then
11915 echo "<sgtty.h> found." >&4
11917 echo "System is pyramid with BSD universe."
11918 echo "<sgtty.h> not found--you could have problems." >&4
11920 *) if $test `./findhdr termio.h`; then
11922 echo "<termio.h> found." >&4
11924 echo "System is pyramid with USG universe."
11925 echo "<termio.h> not found--you could have problems." >&4
11929 if $test `./findhdr termio.h`; then
11930 echo "<termio.h> found." >&4
11932 elif $test `./findhdr sgtty.h`; then
11933 echo "<sgtty.h> found." >&4
11936 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11939 if $test `./findhdr sgtty.h`; then
11940 echo "<sgtty.h> found." >&4
11942 elif $test `./findhdr termio.h`; then
11943 echo "<termio.h> found." >&4
11946 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11950 set i_termio; eval $setvar
11951 val=$val2; set i_sgtty; eval $setvar
11952 val=$val3; set i_termios; eval $setvar
11954 : see if stdarg is available
11956 if $test `./findhdr stdarg.h`; then
11957 echo "<stdarg.h> found." >&4
11960 echo "<stdarg.h> NOT found." >&4
11964 : see if varags is available
11966 if $test `./findhdr varargs.h`; then
11967 echo "<varargs.h> found." >&4
11969 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11972 : set up the varargs testing programs
11973 $cat > varargs.c <<EOP
11975 #include <stdarg.h>
11978 #include <varargs.h>
11982 int f(char *p, ...)
11996 p = va_arg(ap, char *);
12001 $cat > varargs <<EOP
12003 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12012 : now check which varargs header should be included
12017 if `./varargs I_STDARG`; then
12019 elif `./varargs I_VARARGS`; then
12024 if `./varargs I_VARARGS`; then
12031 echo "I could not find the definition for va_dcl... You have problems..." >&4
12032 val="$undef"; set i_stdarg; eval $setvar
12033 val="$undef"; set i_varargs; eval $setvar
12038 case "$i_varhdr" in
12040 val="$define"; set i_stdarg; eval $setvar
12041 val="$undef"; set i_varargs; eval $setvar
12044 val="$undef"; set i_stdarg; eval $setvar
12045 val="$define"; set i_varargs; eval $setvar
12048 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12052 : see if stddef is available
12053 set stddef.h i_stddef
12056 : see if sys/access.h is available
12057 set sys/access.h i_sysaccess
12060 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12061 set sys/filio.h i_sysfilio
12064 if $test `./findhdr sys/ioctl.h`; then
12066 echo '<sys/ioctl.h> found.' >&4
12069 if $test $i_sysfilio = "$define"; then
12070 echo '<sys/ioctl.h> NOT found.' >&4
12072 $test $i_sgtty = "$define" && xxx="sgtty.h"
12073 $test $i_termio = "$define" && xxx="termio.h"
12074 $test $i_termios = "$define" && xxx="termios.h"
12075 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12081 : see if sys/resource.h has to be included
12082 set sys/resource.h i_sysresrc
12085 : see if sys/security.h is available
12086 set sys/security.h i_syssecrt
12089 : see if this is a sys/statvfs.h system
12090 set sys/statvfs.h i_sysstatvfs
12093 : see if this is a sys/un.h system
12094 set sys/un.h i_sysun
12097 : see if this is a syswait system
12098 set sys/wait.h i_syswait
12101 : see if this is an utime system
12102 set utime.h i_utime
12105 : see if this is a values.h system
12106 set values.h i_values
12109 : see if this is a vfork system
12112 set vfork.h i_vfork
12120 : see if gdbm.h is available
12125 : see if gdbm_open exists
12126 set gdbm_open d_gdbm_open
12128 case "$d_gdbm_open" in
12131 echo "We won't be including <gdbm.h>"
12141 echo "Looking for extensions..." >&4
12144 : If we are using the old config.sh, known_extensions may contain
12145 : old or inaccurate or duplicate values.
12146 known_extensions=''
12147 nonxs_extensions=''
12148 : We do not use find because it might not be available.
12149 : We do not just use MANIFEST because the user may have dropped
12150 : some additional extensions into the source tree and expect them
12154 DynaLoader|dynaload) ;;
12155 *) if $test -f $xxx/$xxx.xs; then
12156 known_extensions="$known_extensions $xxx"
12157 elif $test -f $xxx/Makefile.PL; then
12158 nonxs_extensions="$nonxs_extensions $xxx"
12160 if $test -d $xxx; then
12161 # Look for nested extensions, eg. Devel/Dprof.
12164 if $test -f $yyy/$yyy.xs; then
12165 known_extensions="$known_extensions $xxx/$yyy"
12166 elif $test -f $yyy/Makefile.PL; then
12167 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12176 set X $nonxs_extensions
12178 nonxs_extensions="$*"
12179 set X $known_extensions
12181 known_extensions="$*"
12184 : Now see which are supported on this system.
12186 for xxx in $known_extensions ; do
12190 $define) avail_ext="$avail_ext $xxx" ;;
12193 GDBM_File|gdbm_fil)
12195 $define) avail_ext="$avail_ext $xxx" ;;
12198 NDBM_File|ndbm_fil)
12200 $define) avail_ext="$avail_ext $xxx" ;;
12203 ODBM_File|odbm_fil)
12204 case "${i_dbm}${i_rpcsvcdbm}" in
12205 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12209 case "$useposix" in
12210 true|define|y) avail_ext="$avail_ext $xxx" ;;
12214 case "$useopcode" in
12215 true|define|y) avail_ext="$avail_ext $xxx" ;;
12219 case "$d_socket" in
12220 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12224 case "$usethreads" in
12225 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12229 : XXX Do we need a useipcsysv variable here
12230 case "${d_msg}${d_sem}${d_shm}" in
12231 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12234 *) avail_ext="$avail_ext $xxx"
12243 : Now see which nonxs extensions are supported on this system.
12244 : For now assume all are.
12246 for xxx in $nonxs_extensions ; do
12248 *) nonxs_ext="$nonxs_ext $xxx"
12260 A number of extensions are supplied with $package. You may choose to
12261 compile these extensions for dynamic loading (the default), compile
12262 them into the $package executable (static loading), or not include
12263 them at all. Answer "none" to include no extensions.
12264 Note that DynaLoader is always built and need not be mentioned here.
12267 case "$dynamic_ext" in
12268 '') dflt="$avail_ext" ;;
12269 *) dflt="$dynamic_ext"
12270 # Perhaps we are reusing an old out-of-date config.sh.
12273 if test X"$dynamic_ext" != X"$avail_ext"; then
12275 NOTICE: Your previous config.sh list may be incorrect.
12276 The extensions now available to you are
12278 but the default list from your previous config.sh is
12290 rp="What extensions do you wish to load dynamically?"
12293 none) dynamic_ext=' ' ;;
12294 *) dynamic_ext="$ans" ;;
12297 case "$static_ext" in
12299 : Exclude those already listed in dynamic linking
12301 for xxx in $avail_ext; do
12302 case " $dynamic_ext " in
12304 *) dflt="$dflt $xxx" ;;
12311 *) dflt="$static_ext"
12318 rp="What extensions do you wish to load statically?"
12321 none) static_ext=' ' ;;
12322 *) static_ext="$ans" ;;
12327 A number of extensions are supplied with $package. Answer "none"
12328 to include no extensions.
12329 Note that DynaLoader is always built and need not be mentioned here.
12332 case "$static_ext" in
12333 '') dflt="$avail_ext" ;;
12334 *) dflt="$static_ext"
12335 # Perhaps we are reusing an old out-of-date config.sh.
12338 if test X"$static_ext" != X"$avail_ext"; then
12340 NOTICE: Your previous config.sh list may be incorrect.
12341 The extensions now available to you are
12343 but the default list from your previous config.sh is
12352 : Exclude those that are not xs extensions
12356 rp="What extensions do you wish to include?"
12359 none) static_ext=' ' ;;
12360 *) static_ext="$ans" ;;
12365 set X $dynamic_ext $static_ext $nonxs_ext
12369 : Remove build directory name from cppstdin so it can be used from
12370 : either the present location or the final installed location.
12372 : Get out of the UU directory to get correct path name.
12374 case "$cppstdin" in
12376 echo "Stripping down cppstdin path name"
12382 : end of configuration questions
12384 echo "End of configuration questions."
12387 : back to where it started
12388 if test -d ../UU; then
12392 : configuration may be patched via a 'config.over' file
12393 if $test -f config.over; then
12396 rp='I see a config.over file. Do you wish to load it?'
12399 n*) echo "OK, I'll ignore it.";;
12401 echo "Configuration override changes have been loaded."
12406 : in case they want portability, strip down executable paths
12407 case "$d_portable" in
12410 echo "Stripping down executable paths..." >&4
12411 for file in $loclist $trylist; do
12412 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12413 eval $file="\$file"
12419 : create config.sh file
12421 echo "Creating config.sh..." >&4
12422 $spitshell <<EOT >config.sh
12425 # This file was produced by running the Configure script. It holds all the
12426 # definitions figured out by Configure. Should you modify one of these values,
12427 # do not forget to propagate your changes by running "Configure -der". You may
12428 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12431 # Package name : $package
12432 # Source directory : $src
12433 # Configuration time: $cf_time
12434 # Configured by : $cf_by
12435 # Target system : $myuname
12445 Revision='$Revision'
12452 alignbytes='$alignbytes'
12453 ansi2knr='$ansi2knr'
12454 aphostname='$aphostname'
12455 apiversion='$apiversion'
12458 archlibexp='$archlibexp'
12459 archname64='$archname64'
12460 archname='$archname'
12461 archobjs='$archobjs'
12469 byteorder='$byteorder'
12471 castflags='$castflags'
12474 cccdlflags='$cccdlflags'
12475 ccdlflags='$ccdlflags'
12478 cf_email='$cf_email'
12483 clocktype='$clocktype'
12485 compress='$compress'
12486 contains='$contains'
12490 cpp_stuff='$cpp_stuff'
12491 cppflags='$cppflags'
12493 cppminus='$cppminus'
12495 cppstdin='$cppstdin'
12496 cryptlib='$cryptlib'
12498 d_Gconvert='$d_Gconvert'
12499 d_access='$d_access'
12500 d_accessx='$d_accessx'
12502 d_archlib='$d_archlib'
12503 d_attribut='$d_attribut'
12507 d_bsdgetpgrp='$d_bsdgetpgrp'
12508 d_bsdsetpgrp='$d_bsdsetpgrp'
12510 d_casti32='$d_casti32'
12511 d_castneg='$d_castneg'
12512 d_charvspr='$d_charvspr'
12514 d_chroot='$d_chroot'
12515 d_chsize='$d_chsize'
12516 d_closedir='$d_closedir'
12517 d_cmsghdr_s='$d_cmsghdr_s'
12521 d_cuserid='$d_cuserid'
12522 d_dbl_dig='$d_dbl_dig'
12523 d_dbmclose64='$d_dbmclose64'
12524 d_dbminit64='$d_dbminit64'
12525 d_delete64='$d_delete64'
12526 d_difftime='$d_difftime'
12527 d_dirent64_s='$d_dirent64_s'
12528 d_dirnamlen='$d_dirnamlen'
12529 d_dlerror='$d_dlerror'
12530 d_dlopen='$d_dlopen'
12531 d_dlsymun='$d_dlsymun'
12532 d_dosuid='$d_dosuid'
12533 d_drand48proto='$d_drand48proto'
12535 d_eaccess='$d_eaccess'
12536 d_endgrent='$d_endgrent'
12537 d_endhent='$d_endhent'
12538 d_endnent='$d_endnent'
12539 d_endpent='$d_endpent'
12540 d_endpwent='$d_endpwent'
12541 d_endsent='$d_endsent'
12542 d_eofnblk='$d_eofnblk'
12543 d_eunice='$d_eunice'
12544 d_fchmod='$d_fchmod'
12545 d_fchown='$d_fchown'
12547 d_fd_macros='$d_fd_macros'
12548 d_fd_set='$d_fd_set'
12549 d_fds_bits='$d_fds_bits'
12550 d_fetch64='$d_fetch64'
12551 d_fgetpos64='$d_fgetpos64'
12552 d_fgetpos='$d_fgetpos'
12553 d_firstkey64='$d_firstkey64'
12554 d_flexfnam='$d_flexfnam'
12555 d_flock64_s='$d_flock64_s'
12557 d_fopen64='$d_fopen64'
12559 d_fpathconf='$d_fpathconf'
12560 d_freopen64='$d_freopen64'
12561 d_fseek64='$d_fseek64'
12562 d_fseeko64='$d_fseeko64'
12563 d_fseeko='$d_fseeko'
12564 d_fsetpos64='$d_fsetpos64'
12565 d_fsetpos='$d_fsetpos'
12566 d_fstat64='$d_fstat64'
12567 d_fstatfs='$d_fstatfs'
12568 d_fstatvfs='$d_fstatvfs'
12569 d_ftell64='$d_ftell64'
12570 d_ftello64='$d_ftello64'
12571 d_ftello='$d_ftello'
12573 d_ftruncate64='$d_ftruncate64'
12574 d_getgrent='$d_getgrent'
12575 d_getgrps='$d_getgrps'
12576 d_gethbyaddr='$d_gethbyaddr'
12577 d_gethbyname='$d_gethbyname'
12578 d_gethent='$d_gethent'
12579 d_gethname='$d_gethname'
12580 d_gethostprotos='$d_gethostprotos'
12581 d_getlogin='$d_getlogin'
12582 d_getnbyaddr='$d_getnbyaddr'
12583 d_getnbyname='$d_getnbyname'
12584 d_getnent='$d_getnent'
12585 d_getnetprotos='$d_getnetprotos'
12586 d_getpbyname='$d_getpbyname'
12587 d_getpbynumber='$d_getpbynumber'
12588 d_getpent='$d_getpent'
12589 d_getpgid='$d_getpgid'
12590 d_getpgrp2='$d_getpgrp2'
12591 d_getpgrp='$d_getpgrp'
12592 d_getppid='$d_getppid'
12593 d_getprior='$d_getprior'
12594 d_getprotoprotos='$d_getprotoprotos'
12595 d_getpwent='$d_getpwent'
12596 d_getsbyname='$d_getsbyname'
12597 d_getsbyport='$d_getsbyport'
12598 d_getsent='$d_getsent'
12599 d_getservprotos='$d_getservprotos'
12600 d_gettimeod='$d_gettimeod'
12601 d_gnulibc='$d_gnulibc'
12602 d_grpasswd='$d_grpasswd'
12605 d_inetaton='$d_inetaton'
12606 d_ino64t='$d_ino64t'
12607 d_int64t='$d_int64t'
12608 d_iovec_s='$d_iovec_s'
12609 d_isascii='$d_isascii'
12610 d_killpg='$d_killpg'
12611 d_lchown='$d_lchown'
12613 d_locconv='$d_locconv'
12614 d_lockf64='$d_lockf64'
12616 d_longdbl='$d_longdbl'
12617 d_longlong='$d_longlong'
12618 d_lseek64='$d_lseek64'
12619 d_lstat64='$d_lstat64'
12622 d_mbstowcs='$d_mbstowcs'
12623 d_mbtowc='$d_mbtowc'
12624 d_memcmp='$d_memcmp'
12625 d_memcpy='$d_memcpy'
12626 d_memmove='$d_memmove'
12627 d_memset='$d_memset'
12629 d_mkfifo='$d_mkfifo'
12630 d_mktime='$d_mktime'
12632 d_msg_ctrunc='$d_msg_ctrunc'
12633 d_msg_dontroute='$d_msg_dontroute'
12634 d_msg_oob='$d_msg_oob'
12635 d_msg_peek='$d_msg_peek'
12636 d_msg_proxy='$d_msg_proxy'
12637 d_msgctl='$d_msgctl'
12638 d_msgget='$d_msgget'
12639 d_msghdr_s='$d_msghdr_s'
12640 d_msgrcv='$d_msgrcv'
12641 d_msgsnd='$d_msgsnd'
12642 d_mymalloc='$d_mymalloc'
12643 d_nextkey64='$d_nextkey64'
12645 d_off64t='$d_off64t'
12646 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12647 d_oldpthreads='$d_oldpthreads'
12648 d_oldsock='$d_oldsock'
12650 d_open64='$d_open64'
12651 d_opendir64='$d_opendir64'
12652 d_pathconf='$d_pathconf'
12654 d_phostname='$d_phostname'
12657 d_portable='$d_portable'
12658 d_pthread_yield='$d_pthread_yield'
12660 d_pwchange='$d_pwchange'
12661 d_pwclass='$d_pwclass'
12662 d_pwcomment='$d_pwcomment'
12663 d_pwexpire='$d_pwexpire'
12664 d_pwgecos='$d_pwgecos'
12665 d_pwpasswd='$d_pwpasswd'
12666 d_pwquota='$d_pwquota'
12667 d_readdir64='$d_readdir64'
12668 d_readdir='$d_readdir'
12669 d_readlink='$d_readlink'
12671 d_recvmsg='$d_recvmsg'
12672 d_rename='$d_rename'
12673 d_rewinddir='$d_rewinddir'
12675 d_safebcpy='$d_safebcpy'
12676 d_safemcpy='$d_safemcpy'
12677 d_sanemcmp='$d_sanemcmp'
12678 d_sched_yield='$d_sched_yield'
12679 d_scm_rights='$d_scm_rights'
12680 d_seekdir64='$d_seekdir64'
12681 d_seekdir='$d_seekdir'
12682 d_select='$d_select'
12684 d_semctl='$d_semctl'
12685 d_semctl_semid_ds='$d_semctl_semid_ds'
12686 d_semctl_semun='$d_semctl_semun'
12687 d_semget='$d_semget'
12689 d_sendmsg='$d_sendmsg'
12690 d_setegid='$d_setegid'
12691 d_seteuid='$d_seteuid'
12692 d_setgrent='$d_setgrent'
12693 d_setgrps='$d_setgrps'
12694 d_sethent='$d_sethent'
12695 d_setlinebuf='$d_setlinebuf'
12696 d_setlocale='$d_setlocale'
12697 d_setnent='$d_setnent'
12698 d_setpent='$d_setpent'
12699 d_setpgid='$d_setpgid'
12700 d_setpgrp2='$d_setpgrp2'
12701 d_setpgrp='$d_setpgrp'
12702 d_setprior='$d_setprior'
12703 d_setpwent='$d_setpwent'
12704 d_setregid='$d_setregid'
12705 d_setresgid='$d_setresgid'
12706 d_setresuid='$d_setresuid'
12707 d_setreuid='$d_setreuid'
12708 d_setrgid='$d_setrgid'
12709 d_setruid='$d_setruid'
12710 d_setsent='$d_setsent'
12711 d_setsid='$d_setsid'
12712 d_setvbuf='$d_setvbuf'
12716 d_shmatprototype='$d_shmatprototype'
12717 d_shmctl='$d_shmctl'
12719 d_shmget='$d_shmget'
12720 d_sigaction='$d_sigaction'
12721 d_sigsetjmp='$d_sigsetjmp'
12722 d_socket='$d_socket'
12723 d_sockpair='$d_sockpair'
12724 d_stat64='$d_stat64'
12725 d_statblks='$d_statblks'
12726 d_statfs='$d_statfs'
12727 d_statfsflags='$d_statfsflags'
12728 d_statvfs='$d_statvfs'
12729 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12730 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12731 d_stdiobase='$d_stdiobase'
12732 d_stdstdio='$d_stdstdio'
12733 d_store64='$d_store64'
12734 d_strchr='$d_strchr'
12735 d_strcoll='$d_strcoll'
12736 d_strctcpy='$d_strctcpy'
12737 d_strerrm='$d_strerrm'
12738 d_strerror='$d_strerror'
12739 d_strtod='$d_strtod'
12740 d_strtol='$d_strtol'
12741 d_strtoul='$d_strtoul'
12742 d_strxfrm='$d_strxfrm'
12743 d_suidsafe='$d_suidsafe'
12744 d_symlink='$d_symlink'
12745 d_syscall='$d_syscall'
12746 d_sysconf='$d_sysconf'
12747 d_sysernlst='$d_sysernlst'
12748 d_syserrlst='$d_syserrlst'
12749 d_system='$d_system'
12750 d_tcgetpgrp='$d_tcgetpgrp'
12751 d_tcsetpgrp='$d_tcsetpgrp'
12752 d_telldir64='$d_telldir64'
12753 d_telldir='$d_telldir'
12756 d_tmpfile64='$d_tmpfile64'
12757 d_truncate64='$d_truncate64'
12758 d_truncate='$d_truncate'
12759 d_tzname='$d_tzname'
12762 d_union_semun='$d_union_semun'
12764 d_void_closedir='$d_void_closedir'
12765 d_voidsig='$d_voidsig'
12766 d_voidtty='$d_voidtty'
12767 d_volatile='$d_volatile'
12768 d_vprintf='$d_vprintf'
12770 d_waitpid='$d_waitpid'
12771 d_wcstombs='$d_wcstombs'
12772 d_wctomb='$d_wctomb'
12773 d_writev='$d_writev'
12776 db_hashtype='$db_hashtype'
12777 db_prefixtype='$db_prefixtype'
12778 defvoidused='$defvoidused'
12779 direntrytype='$direntrytype'
12782 doublesize='$doublesize'
12784 dynamic_ext='$dynamic_ext'
12790 eunicefix='$eunicefix'
12793 extensions='$extensions'
12795 firstmakefile='$firstmakefile'
12797 fpostype='$fpostype'
12798 freetype='$freetype'
12799 full_csh='$full_csh'
12800 full_sed='$full_sed'
12801 gccversion='$gccversion'
12805 groupcat='$groupcat'
12806 groupstype='$groupstype'
12809 h_sysfile='$h_sysfile'
12813 i_arpainet='$i_arpainet'
12814 i_bsdioctl='$i_bsdioctl'
12817 i_dirent='$i_dirent'
12824 i_inttypes='$i_inttypes'
12825 i_limits='$i_limits'
12826 i_locale='$i_locale'
12827 i_machcthr='$i_machcthr'
12828 i_malloc='$i_malloc'
12830 i_memory='$i_memory'
12831 i_mntent='$i_mntent'
12834 i_neterrno='$i_neterrno'
12838 i_rpcsvcdbm='$i_rpcsvcdbm'
12841 i_stdarg='$i_stdarg'
12842 i_stddef='$i_stddef'
12843 i_stdlib='$i_stdlib'
12844 i_string='$i_string'
12845 i_sysaccess='$i_sysaccess'
12846 i_sysdir='$i_sysdir'
12847 i_sysfile='$i_sysfile'
12848 i_sysfilio='$i_sysfilio'
12850 i_sysioctl='$i_sysioctl'
12851 i_sysmount='$i_sysmount'
12852 i_sysndir='$i_sysndir'
12853 i_sysparam='$i_sysparam'
12854 i_sysresrc='$i_sysresrc'
12855 i_syssecrt='$i_syssecrt'
12856 i_sysselct='$i_sysselct'
12857 i_syssockio='$i_syssockio'
12858 i_sysstat='$i_sysstat'
12859 i_sysstatvfs='$i_sysstatvfs'
12860 i_systime='$i_systime'
12861 i_systimek='$i_systimek'
12862 i_systimes='$i_systimes'
12863 i_systypes='$i_systypes'
12864 i_sysuio='$i_sysuio'
12866 i_syswait='$i_syswait'
12867 i_termio='$i_termio'
12868 i_termios='$i_termios'
12870 i_unistd='$i_unistd'
12872 i_values='$i_values'
12873 i_varargs='$i_varargs'
12874 i_varhdr='$i_varhdr'
12876 ignore_versioned_solibs='$ignore_versioned_solibs'
12879 installarchlib='$installarchlib'
12880 installbin='$installbin'
12881 installman1dir='$installman1dir'
12882 installman3dir='$installman3dir'
12883 installprivlib='$installprivlib'
12884 installscript='$installscript'
12885 installsitearch='$installsitearch'
12886 installsitelib='$installsitelib'
12887 installusrbinperl='$installusrbinperl'
12889 known_extensions='$known_extensions'
12893 lddlflags='$lddlflags'
12901 libswanted='$libswanted'
12907 locincpth='$locincpth'
12908 loclibpth='$loclibpth'
12909 longdblsize='$longdblsize'
12910 longlongsize='$longlongsize'
12911 longsize='$longsize'
12915 lseeksize='$lseeksize'
12916 lseektype='$lseektype'
12920 make_set_make='$make_set_make'
12921 mallocobj='$mallocobj'
12922 mallocsrc='$mallocsrc'
12923 malloctype='$malloctype'
12925 man1direxp='$man1direxp'
12928 man3direxp='$man3direxp'
12932 mips_type='$mips_type'
12935 modetype='$modetype'
12938 myarchname='$myarchname'
12939 mydomain='$mydomain'
12940 myhostname='$myhostname'
12943 netdb_hlen_type='$netdb_hlen_type'
12944 netdb_host_type='$netdb_host_type'
12945 netdb_name_type='$netdb_name_type'
12946 netdb_net_type='$netdb_net_type'
12949 nm_so_opt='$nm_so_opt'
12950 nonxs_ext='$nonxs_ext'
12952 o_nonblock='$o_nonblock'
12954 old_pthread_create_joinable='$old_pthread_create_joinable'
12955 optimize='$optimize'
12956 orderlib='$orderlib'
12962 patchlevel='$patchlevel'
12963 path_sep='$path_sep'
12965 perladmin='$perladmin'
12966 perlpath='$perlpath'
12968 phostname='$phostname'
12974 prefixexp='$prefixexp'
12976 privlibexp='$privlibexp'
12977 prototype='$prototype'
12979 randbits='$randbits'
12980 randfunc='$randfunc'
12981 randseedtype='$randseedtype'
12983 rd_nodata='$rd_nodata'
12987 sched_yield='$sched_yield'
12988 scriptdir='$scriptdir'
12989 scriptdirexp='$scriptdirexp'
12991 seedfunc='$seedfunc'
12992 selectminbits='$selectminbits'
12993 selecttype='$selecttype'
12994 sendmail='$sendmail'
12997 sharpbang='$sharpbang'
12998 shmattype='$shmattype'
12999 shortsize='$shortsize'
13002 sig_name='$sig_name'
13003 sig_name_init='$sig_name_init'
13005 sig_num_init='$sig_num_init'
13006 signal_t='$signal_t'
13007 sitearch='$sitearch'
13008 sitearchexp='$sitearchexp'
13010 sitelibexp='$sitelibexp'
13011 sizetype='$sizetype'
13016 sockethdr='$sockethdr'
13017 socketlib='$socketlib'
13019 spackage='$spackage'
13020 spitshell='$spitshell'
13023 ssizetype='$ssizetype'
13024 startperl='$startperl'
13026 static_ext='$static_ext'
13028 stdio_base='$stdio_base'
13029 stdio_bufsiz='$stdio_bufsiz'
13030 stdio_cnt='$stdio_cnt'
13031 stdio_filbuf='$stdio_filbuf'
13032 stdio_ptr='$stdio_ptr'
13035 subversion='$subversion'
13042 timeincl='$timeincl'
13043 timetype='$timetype'
13051 use64bits='$use64bits'
13053 usemultiplicity='$usemultiplicity'
13054 usemymalloc='$usemymalloc'
13056 useopcode='$useopcode'
13057 useperlio='$useperlio'
13058 useposix='$useposix'
13060 useshrplib='$useshrplib'
13061 usethreads='$usethreads'
13062 usevfork='$usevfork'
13067 voidflags='$voidflags'
13073 : Add in command line options if available
13074 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13076 : add special variables
13077 $test -f $src/patchlevel.h && \
13078 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13079 echo "CONFIG=true" >>config.sh
13081 : propagate old symbols
13082 if $test -f UU/config.sh; then
13083 <UU/config.sh sort | uniq >UU/oldconfig.sh
13084 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13085 sort | uniq -u >UU/oldsyms
13086 set X `cat UU/oldsyms`
13092 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13094 echo "# Variables propagated from previous config.sh file." >>config.sh
13095 for sym in `cat UU/oldsyms`; do
13096 echo " Propagating $hint variable "'$'"$sym..."
13097 eval 'tmp="$'"${sym}"'"'
13099 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13105 : Finish up by extracting the .SH files
13119 If you'd like to make any changes to the config.sh file before I begin
13120 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13123 rp="Press return or use a shell escape to edit config.sh:"
13128 *) : in case they cannot read
13129 sh 1>&4 -c "$ans";;
13134 : if this fails, just run all the .SH files by hand
13141 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13148 Now you need to generate make dependencies by running "$make depend".
13149 You might prefer to run it in background: "$make depend > makedepend.out &"
13150 It can take a while, so you might not want to run it right now.
13155 rp="Run $make depend now?"
13159 $make depend && echo "Now you must run a $make."
13162 echo "You must run '$make depend' then '$make'."
13165 elif test -f [Mm]akefile; then
13167 echo "Now you must run a $make."
13172 if $test -f Policy.sh; then
13175 If you compile $package on a different machine or from a different object
13176 directory, copy the Policy.sh file from this object directory to the
13177 new one before you run Configure -- this will help you with most of
13178 the policy defaults.
13182 if $test -f config.msg; then
13183 echo "Hmm. I also noted the following information while running:"
13185 $cat config.msg >&4
13188 $rm -f kit*isdone ark*isdone