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 12:38:43 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 case "$inksh/$needksh" in
118 case "$inksh/$avoidksh" in
124 case "$inksh/$needksh-$avoidksh-" in
127 (I see you are using the Korn shell. Some ksh's blow up on $me,
128 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
134 echo "(Feeding myself to $newsh $reason.)"
136 Configure|*/Configure) exec $newsh $0 "$@";;
137 *) exec $newsh Configure "$@";;
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
147 *bash*) CDPATH='.' ;;
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
412 d_old_pthread_create_joinable=''
413 old_pthread_create_joinable=''
669 ignore_versioned_solibs=''
794 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
797 : We must find out about Eunice early
799 if test -f /etc/unixtovms; then
800 eunicefix=/etc/unixtovms
802 if test -f /etc/unixtovms.exe; then
803 eunicefix=/etc/unixtovms.exe
807 : change the next line if compiling for Xenix/286 on Xenix/386
808 xlibpth='/usr/lib/386 /lib/386'
810 : Possible local library directories to search.
811 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
812 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
814 : general looking path for locating libraries
815 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
816 glibpth="$glibpth /lib /usr/lib $xlibpth"
817 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
818 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
820 : Private path used by Configure to find libraries. Its value
821 : is prepended to libpth. This variable takes care of special
822 : machines, like the mips. Usually, it should be empty.
825 : Possible local include directories to search.
826 : Set locincpth to "" in a hint file to defeat local include searches.
827 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
828 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
830 : no include file wanted by default
833 : list of known cpp symbols, sorted alphabetically
834 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
835 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
836 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
837 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
838 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
839 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
840 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
841 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
842 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
843 al="$al VMS Xenix286"
844 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
845 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
846 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
847 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
848 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
849 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
850 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
851 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
852 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
853 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
854 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
855 al="$al __SVR4_2__ __UMAXV__"
856 al="$al ____386BSD____ __alpha __alpha__ __amiga"
857 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
858 al="$al __host_mips__"
859 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
860 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
861 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
862 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
863 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
864 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
865 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
866 al="$al __mc88100 __mc88100__ __mips __mips__"
867 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
868 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
869 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
870 al="$al _host_mips _mips _unix"
871 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
872 al="$al apollo ardent att386 att3b"
873 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
874 al="$al cadmus clipper concurrent convex cray ctix"
875 al="$al dmert encore gcos gcx gimpel gould"
876 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
877 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
878 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
879 al="$al i186 i286 i386 i486 i8086"
880 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
881 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
882 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
883 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
884 al="$al mc88000 mc88100 merlin mert mips mvs n16"
885 al="$al ncl_el ncl_mr"
886 al="$al news1500 news1700 news1800 news1900 news3700"
887 al="$al news700 news800 news900 ns16000 ns32000"
888 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
889 al="$al parisc pc532 pdp11 plexus posix pyr"
890 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
891 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
892 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
893 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
894 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
895 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
898 : Trailing extension. Override this in a hint file, if needed.
900 : Extra object files, if any, needed on this platform.
903 : default library list
905 : some systems want to use only the non-versioned libso:s
906 ignore_versioned_solibs=''
907 : full support for void wanted by default
910 : set useposix=false in your hint file to disable the POSIX extension.
912 : set useopcode=false in your hint file to disable the Opcode extension.
914 : set usemultiplicity on the Configure command line to enable multiplicity.
915 : set usethreads on the Configure command line to enable threads.
916 : List of libraries we want.
917 : If anyone needs -lnet, put it in a hint file.
918 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
919 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
920 libswanted="$libswanted ucb bsd BSD PW x"
921 : We probably want to search /usr/shlib before most other libraries.
922 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
923 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
924 glibpth="/usr/shlib $glibpth"
925 : Do not use vfork unless overridden by a hint file.
928 : Find the basic shell for Bourne shell scripts
932 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
935 if test -f "$xxx"; then
938 : Build up a list and do a single loop so we can 'break' out.
939 pth=`echo $PATH | sed -e "s/$p_/ /g"`
940 for xxx in sh bash ksh pdksh ash; do
942 try="$try ${p}/${xxx}"
946 if test -f "$xxx"; then
949 elif test -f "$xxx.exe"; then
960 $me: Fatal Error: I can't find a Bourne Shell anywhere.
962 Usually it's in /bin/sh. How did you even get this far?
963 Please contact me (Perl Maintainers) at perlbug@perl.com and
964 we'll try to straighten this all out.
970 : see if sh knows # comments
971 if `$sh -c '#' >/dev/null 2>&1`; then
975 test -f $xcat || xcat=/usr/bin/cat
980 if test -s today; then
983 echo "#! $xcat" > try
987 if test -s today; then
995 echo "Your $sh doesn't grok # comments--I will strip them later on."
998 echo "exec grep -v '^[ ]*#'" >spitshell
1000 $eunicefix spitshell
1001 spitshell=`pwd`/spitshell
1003 echo "I presume that if # doesn't work, #! won't work either!"
1008 : figure out how to guarantee sh startup
1010 '') startsh=${sharpbang}${sh} ;;
1022 : echo "Yup, it does."
1024 echo "Hmm... '$startsh' does not guarantee sh startup..."
1025 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1030 : Save command line options in file UU/cmdline.opt for later use in
1031 : generating config.sh.
1032 cat > cmdline.opt <<EOSH
1033 # Configure command line arguments.
1040 cat >>cmdline.opt <<EOSH
1041 config_arg$argn='$arg'
1043 argn=`expr $argn + 1`
1046 : produce awk script to parse command line options
1047 cat >options.awk <<'EOF'
1049 optstr = "dD:eEf:hKOrsSU:V"; # getopt-style specification
1051 len = length(optstr);
1052 for (i = 1; i <= len; i++) {
1053 c = substr(optstr, i, 1);
1054 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1065 if (substr(str, 1, 1) != "-") {
1066 printf("'%s'\n", str);
1070 for (i = 2; i <= len; i++) {
1071 c = substr(str, i, 1);
1073 printf("-%s\n", substr(str, i));
1079 printf("'%s'\n", substr(str, i + 1));
1092 : process the command line options
1093 set X `for arg in "$@"; do echo "X$arg"; done |
1094 sed -e s/X// | awk -f options.awk`
1099 : set up default values
1110 cat >optdef.sh <<EOS
1116 while test $# -gt 0; do
1118 -d) shift; fastread=yes;;
1119 -e) shift; alldone=cont;;
1123 if test -r "$1"; then
1126 echo "$me: cannot read config file $1." >&2
1131 -h) shift; error=true;;
1132 -r) shift; reuseval=true;;
1133 -s) shift; silent=true; realsilent=true;;
1134 -E) shift; alldone=exit;;
1135 -K) shift; knowitall=true;;
1136 -O) shift; override=true;;
1137 -S) shift; silent=true; extractsh=true;;
1142 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1143 echo "$me: ignoring -D $1" >&2
1146 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1147 *) echo "$1='define'" >> optdef.sh;;
1154 *=) echo "$1" >> optdef.sh;;
1156 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1157 echo "$me: ignoring -U $1" >&2
1159 *) echo "$1='undef'" >> optdef.sh;;
1163 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1166 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1174 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1175 [-U symbol] [-U symbol=]
1176 -d : use defaults for all answers.
1177 -e : go on without questioning past the production of config.sh.
1178 -f : specify an alternate default configuration file.
1179 -h : print this help message and exit (with an error status).
1180 -r : reuse C symbols value if possible (skips costly nm extraction).
1181 -s : silent mode, only echoes questions and essential information.
1182 -D : define symbol to have some value:
1183 -D symbol symbol gets the value 'define'
1184 -D symbol=value symbol gets the value 'value'
1185 -E : stop at the end of questions, after having produced config.sh.
1186 -K : do not use unless you know what you are doing.
1187 -O : let -D and -U override definitions from loaded configuration file.
1188 -S : perform variable substitutions on all .SH files (can mix with -f)
1189 -U : undefine symbol:
1190 -U symbol symbol gets the value 'undef'
1191 -U symbol= symbol gets completely empty
1192 -V : print version number and exit (with a zero status).
1199 case "$fastread$alldone" in
1202 if test ! -t 0; then
1203 echo "Say 'sh Configure', not 'sh <Configure'"
1211 true) exec 1>/dev/null;;
1214 : run the defines and the undefines, if any, but leave the file out there...
1220 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1221 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1222 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1223 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1224 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1227 : Some greps do not return status, grrr.
1228 echo "grimblepritz" >grimble
1229 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1231 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1237 : the following should work in any shell
1241 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1242 cat >contains <<'EOSS'
1243 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1248 : Find the path to the source tree
1251 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1262 if test -f $rsrc/Configure && \
1263 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1265 : found it, so we are ok.
1268 for src in . .. ../.. ../../.. ../../../..; do
1269 if test -f ../$src/Configure && \
1270 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1281 Sorry, I can't seem to locate the source dir for $package. Please start
1282 Configure with an explicit path -- i.e. /some/path/Configure.
1290 echo "Sources for $package found in \"$src\"." >&4
1294 : script used to extract .SH files with variable substitutions
1295 cat >extract <<'EOS'
1297 echo "Doing variable substitutions on .SH files..."
1298 if test -f $src/MANIFEST; then
1299 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1301 echo "(Looking for .SH files under the source directory.)"
1302 set x `(cd $src; find . -name "*.SH" -print)`
1306 0) set x `(cd $src; echo *.SH)`; shift;;
1308 if test ! -f $src/$1; then
1314 while test $name; do
1315 if test ! -d "$name"; then
1316 create="$name $create";
1317 name=`echo $name | sed -e "s|^[^/]*$||"`;
1318 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1323 for file in $create; do
1332 dir=`expr X$file : 'X\(.*\)/'`
1333 file=`expr X$file : 'X.*/\(.*\)'`
1334 (cd $dir && . ./$file)
1344 dir=`expr X$file : 'X\(.*\)/'`
1345 file=`expr X$file : 'X.*/\(.*\)'`
1346 (set x $dir; shift; eval $mkdir_p)
1356 if test -f $src/config_h.SH; then
1357 if test ! -f config.h; then
1358 : oops, they left it out of MANIFEST, probably, so do it anyway.
1364 : extract files and exit if asked to do so
1365 case "$extractsh" in
1367 case "$realsilent" in
1371 case "$config_sh" in
1372 '') config_sh='config.sh';;
1375 echo "Fetching answers from $config_sh..."
1378 test "$override" && . ./optdef.sh
1387 : Eunice requires " " instead of "", can you believe it
1390 echo "Beginning of configuration questions for $package."
1392 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1394 : first determine how to suppress newline on echo command
1396 echo "Checking echo to see how to suppress newlines..."
1397 (echo "hi there\c" ; echo " ") >.echotmp
1398 if $contains c .echotmp >/dev/null 2>&1 ; then
1409 echo $n "The star should be here-->$c"
1413 : Now test for existence of everything in MANIFEST
1415 if test -f $rsrc/MANIFEST; then
1416 echo "First let's make sure your kit is complete. Checking..." >&4
1417 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1420 for filelist in x??; do
1421 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1423 if test -s missing; then
1427 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1429 You have the option of continuing the configuration process, despite the
1430 distinct possibility that your kit is damaged, by typing 'y'es. If you
1431 do, don't blame me if something goes wrong. I advise you to type 'n'o
1432 and contact the author (perlbug@perl.com).
1435 echo $n "Continue? [n] $c" >&4
1439 echo "Continuing..." >&4
1443 echo "ABORTING..." >&4
1448 echo "Looks good..."
1451 echo "There is no MANIFEST file. I hope your kit is complete !"
1456 : Find the appropriate value for a newline for tr
1457 if test -n "$DJGPP"; then
1460 if test X"$trnl" = X; then
1461 case "`echo foo|tr '\n' x 2>/dev/null`" in
1465 if test X"$trnl" = X; then
1466 case "`echo foo|tr '\012' x 2>/dev/null`" in
1467 foox) trnl='\012' ;;
1470 if test X"$trnl" = X; then
1473 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1479 : compute the number of columns on the terminal for proper question formatting
1484 : set up the echo used in my read
1485 myecho="case \"\$xxxm\" in
1486 '') echo $n \"\$rp $c\" >&4;;
1488 '') echo $n \"[\$xxxm] $c\";;
1490 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1492 echo $n \"[\$xxxm] $c\" >&4
1494 echo $n \"\$rp [\$xxxm] $c\" >&4
1500 : now set up to do reads with possible shell escape and default assignment
1506 case "\$fastread" in
1507 yes) case "\$dflt" in
1510 case "\$silent-\$rp" in
1515 *) case "\$silent" in
1516 true) case "\$rp" in
1521 while expr "X\$ans" : "X!" >/dev/null; do
1525 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1533 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1542 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1547 echo "(OK, I'll run with -d after this question.)" >&4
1550 echo "*** Sorry, \$1 not supported yet." >&4
1560 echo "*** Substitution done -- please confirm."
1562 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1567 echo "*** Error -- try again."
1574 case "\$ans\$xxxm\$nostick" in
1586 : create .config dir to save info across Configure sessions
1587 test -d ../.config || mkdir ../.config
1588 cat >../.config/README <<EOF
1589 This directory created by Configure to save information that should
1590 persist across sessions for $package.
1592 You may safely delete it if you wish.
1595 : general instructions
1598 user=`(logname) 2>/dev/null`
1600 '') user=`whoami 2>&1`;;
1602 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1605 rp='Would you like to see the instructions?'
1616 This installation shell script will examine your system and ask you questions
1617 to determine how the perl5 package should be installed. If you get
1618 stuck on a question, you may use a ! shell escape to start a subshell or
1619 execute a command. Many of the questions will have default answers in square
1620 brackets; typing carriage return will give you the default.
1622 On some of the questions which ask for file or directory names you are allowed
1623 to use the ~name construct to specify the login directory belonging to "name",
1624 even if you don't have a shell which knows about that. Questions where this is
1625 allowed will be marked "(~name ok)".
1629 dflt='Type carriage return to continue'
1633 The prompter used in this script allows you to use shell variables and
1634 backticks in your answers. You may use $1, $2, etc... to refer to the words
1635 in the default answer, as if the default line was a set of arguments given to a
1636 script shell. This means you may also use $* to repeat the whole default line,
1637 so you do not have to re-type everything to add something to the default.
1639 Everytime there is a substitution, you will have to confirm. If there is an
1640 error (e.g. an unmatched backtick), the default answer will remain unchanged
1641 and you will be prompted again.
1643 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1644 the questions and use the computed defaults (or the previous answers if there
1645 was already a config.sh file). Type 'Configure -h' for a list of options.
1646 You may also start interactively and then answer '& -d' at any prompt to turn
1647 on the non-interactive behaviour for the remainder of the execution.
1653 Much effort has been expended to ensure that this shell script will run on any
1654 Unix system. If despite that it blows up on yours, your best bet is to edit
1655 Configure and run it again. If you can't run Configure for some reason,
1656 you'll have to generate a config.sh file by hand. Whatever problems you
1657 have, let me (perlbug@perl.com) know how I blew it.
1659 This installation script affects things in two ways:
1661 1) it may do direct variable substitutions on some of the files included
1663 2) it builds a config.h file for inclusion in C programs. You may edit
1664 any of these files as the need arises after running this script.
1666 If you make a mistake on a question, there is no easy way to back up to it
1667 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1668 files. Configure will offer to let you do this before it runs the SH files.
1671 dflt='Type carriage return to continue'
1673 case "$firsttime" in
1674 true) echo $user >>../.config/instruct;;
1678 : find out where common programs are
1680 echo "Locating common programs..." >&4
1693 if test -d \$dir/\$thing; then
1699 for thisthing in \$dir/\$thing; do
1700 : just loop through to pick last item
1702 if test -f \$thisthing; then
1705 elif test -f \$dir/\$thing.exe; then
1706 if test -n "$DJGPP"; then
1707 echo \$dir/\$thing.exe
1709 : on Eunice apparently
1760 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1761 pth="$pth /lib /usr/lib"
1762 for file in $loclist; do
1766 if test -f "$xxx"; then
1769 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1770 xxx=`./loc $file $file $pth`
1773 '') xxx=`./loc $file $file $pth`;;
1774 *) xxx=`./loc $xxx $xxx $pth`;;
1780 echo $file is in $xxx.
1783 echo $file is in $xxx.
1786 echo "I don't know where '$file' is, and my life depends on it." >&4
1787 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1793 echo "Don't worry if any of the following aren't found..."
1795 for file in $trylist; do
1799 if test -f "$xxx"; then
1802 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1803 xxx=`./loc $file $file $pth`
1806 '') xxx=`./loc $file $file $pth`;;
1807 *) xxx=`./loc $xxx $xxx $pth`;;
1813 echo $file is in $xxx.
1816 echo $file is in $xxx.
1819 echo "I don't see $file out there, $say."
1826 echo "Substituting grep for egrep."
1832 echo "Substituting cp for ln."
1838 echo "Hopefully test is built into your sh."
1841 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1842 echo "Using the test built into your sh."
1850 echo "Hopefully echo is built into your sh."
1855 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1856 $echo $n "hi there$c" >foo1
1857 echo $n "hi there$c" >foo2
1858 if cmp foo1 foo2 >/dev/null 2>&1; then
1859 echo "They are compatible. In fact, they may be identical."
1866 They are not compatible! You are probably running ksh on a non-USG system.
1867 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1868 have echo built in and we may have to run some Bourne shell scripts. That
1869 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1872 $echo $n "The star should be here-->$c"
1879 : determine whether symbolic links are supported
1882 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1883 echo "Symbolic links are supported." >&4
1886 echo "Symbolic links are NOT supported." >&4
1891 : see whether [:lower:] and [:upper:] are supported character classes
1893 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1895 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1899 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
1900 # (0xc9 and 0xd1), therefore that is a nice testing point.
1901 if test "X$up" = X -o "X$low" = X; then
1902 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1908 if test "X$up" = X -o "X$low" = X; then
1909 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1915 if test "X$up" = X -o "X$low" = X; then
1916 case "`echo IJ | od -x 2>/dev/null`" in
1918 echo "Hey, this might be EBCDIC." >&4
1919 if test "X$up" = X -o "X$low" = X; then
1920 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1921 ij) up='[A-IJ-RS-Z]'
1926 if test "X$up" = X -o "X$low" = X; then
1927 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1937 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1939 echo "Using $up and $low to convert case." >&4
1942 echo "I don't know how to translate letters from upper to lower case." >&4
1943 echo "Your tr is not acting any way I know of." >&4
1947 : set up the translation script tr, must be called with ./tr of course
1951 '[A-Z][a-z]') exec $tr '$up' '$low';;
1952 '[a-z][A-Z]') exec $tr '$low' '$up';;
1959 : Try to determine whether config.sh was made on this system
1960 case "$config_sh" in
1962 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1963 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1964 # because the A-Z/a-z are not consecutive.
1965 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1966 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1967 newmyuname="$myuname"
1969 case "$knowitall" in
1971 if test -f ../config.sh; then
1972 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1973 eval "`grep myuname= ../config.sh`"
1975 if test "X$myuname" = "X$newmyuname"; then
1983 : Get old answers from old config file if Configure was run on the
1984 : same system, otherwise use the hints.
1987 if test -f config.sh; then
1989 rp="I see a config.sh file. Shall I use it to set the defaults?"
1992 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1993 *) echo "Fetching default answers from your old config.sh file..." >&4
2001 : Older versions did not always set $sh. Catch re-use of such
2010 if test ! -f config.sh; then
2013 First time through, eh? I have some defaults handy for some systems
2014 that need some extra help getting the Configure answers right:
2017 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2019 : Half the following guesses are probably wrong... If you have better
2020 : tests or hints, please send them to perlbug@perl.com
2021 : The metaconfig authors would also appreciate a copy...
2022 $test -f /irix && osname=irix
2023 $test -f /xenix && osname=sco_xenix
2024 $test -f /dynix && osname=dynix
2025 $test -f /dnix && osname=dnix
2026 $test -f /lynx.os && osname=lynxos
2027 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2028 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2029 $test -f /bin/mips && /bin/mips && osname=mips
2030 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2031 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2032 $test -d /usr/apollo/bin && osname=apollo
2033 $test -f /etc/saf/_sactab && osname=svr4
2034 $test -d /usr/include/minix && osname=minix
2035 if $test -d /MachTen -o -d /MachTen_Folder; then
2037 if $test -x /sbin/version; then
2038 osvers=`/sbin/version | $awk '{print $2}' |
2039 $sed -e 's/[A-Za-z]$//'`
2040 elif $test -x /usr/etc/version; then
2041 osvers=`/usr/etc/version | $awk '{print $2}' |
2042 $sed -e 's/[A-Za-z]$//'`
2047 $test -f /sys/posix.dll &&
2048 $test -f /usr/bin/what &&
2049 set X `/usr/bin/what /sys/posix.dll` &&
2050 $test "$3" = UWIN &&
2053 if $test -f $uname; then
2061 umips) osname=umips ;;
2064 [23]100) osname=mips ;;
2065 next*) osname=next ;;
2067 if $test -f /etc/kconfig; then
2069 if test "$lns" = "ln -s"; then
2071 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2073 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2079 if test -n "$DJGPP"; then
2088 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2090 'not found') osvers="$4"."$3" ;;
2091 '<3240'|'<>3240') osvers=3.2.0 ;;
2092 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2093 '=3250'|'>3250') osvers=3.2.5 ;;
2097 *dc.osx) osname=dcosx
2103 domainos) osname=apollo
2109 dynixptx*) osname=dynixptx
2110 osvers=`echo "$4"|sed 's/^v//'`
2112 freebsd) osname=freebsd
2114 genix) osname=genix ;;
2116 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2132 netbsd*) osname=netbsd
2135 news-os) osvers="$3"
2137 4*) osname=newsos4 ;;
2141 bsd386) osname=bsd386
2144 POSIX-BC | posix-bc ) osname=posix-bc
2147 powerux | power_ux | powermax_os | powermaxos | \
2148 powerunix | power_unix) osname=powerux
2151 next*) osname=next ;;
2152 solaris) osname=solaris
2154 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2161 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2165 titanos) osname=titanos
2174 ultrix) osname=ultrix
2177 osf1|mls+) case "$5" in
2180 osvers=`echo "$3" | sed 's/^[xvt]//'`
2182 hp*) osname=hp_osf1 ;;
2183 mips) osname=mips_osf1 ;;
2192 $2) case "$osname" in
2196 : svr4.x or possibly later
2206 if test -f /stand/boot ; then
2207 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2208 if test -n "$INITPROG" -a -f "$INITPROG"; then
2209 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2210 if test -n "$isesix"; then
2218 *) if test -f /etc/systemid; then
2220 set `echo $3 | $sed 's/\./ /g'` $4
2221 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2223 elif $test -f $src/hints/sco_$1_$2.sh; then
2225 elif $test -f $src/hints/sco_$1.sh; then
2230 '') : Still unknown. Probably a generic Sys V.
2239 *) case "$osname" in
2240 '') : Still unknown. Probably a generic BSD.
2248 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2249 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2250 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2253 $rm -f UU/kernel.what
2254 elif test -d c:/.; then
2261 : Now look for a hint file osname_osvers, unless one has been
2262 : specified already.
2265 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2266 : Also try without trailing minor version numbers.
2267 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2268 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2269 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2270 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2273 *) case "$osvers" in
2276 *) if $test -f $src/hints/$file.sh ; then
2278 elif $test -f $src/hints/$xfile.sh ; then
2280 elif $test -f $src/hints/$xxfile.sh ; then
2282 elif $test -f $src/hints/$xxxfile.sh ; then
2284 elif $test -f $src/hints/$xxxxfile.sh ; then
2286 elif $test -f "$src/hints/${osname}.sh" ; then
2295 if $test -f Policy.sh ; then
2298 none) dflt="Policy" ;;
2299 *) dflt="Policy $dflt" ;;
2304 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2308 if $test -f Policy.sh ; then
2311 There's also a Policy hint file available, which should make the
2312 site-specific (policy) questions easier to answer.
2319 You may give one or more space-separated answers, or "none" if appropriate.
2320 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2321 is a good thing. DO NOT give a wrong version.
2325 rp="Which of these apply, if any?"
2328 for file in $tans; do
2329 if $test X$file = XPolicy -a -f Policy.sh; then
2331 $cat Policy.sh >> UU/config.sh
2332 elif $test -f $src/hints/$file.sh; then
2333 . $src/hints/$file.sh
2334 $cat $src/hints/$file.sh >> UU/config.sh
2335 elif $test X$tans = X -o X$tans = Xnone ; then
2338 : Give one chance to correct a possible typo.
2339 echo "$file.sh does not exist"
2341 rp="hint to use instead?"
2343 for file in $ans; do
2344 if $test -f "$src/hints/$file.sh"; then
2345 . $src/hints/$file.sh
2346 $cat $src/hints/$file.sh >> UU/config.sh
2347 elif $test X$ans = X -o X$ans = Xnone ; then
2350 echo "$file.sh does not exist -- ignored."
2357 : Remember our hint file for later.
2358 if $test -f "$src/hints/$file.sh" ; then
2368 echo "Fetching default answers from $config_sh..." >&4
2372 cp $config_sh config.sh 2>/dev/null
2382 test "$override" && . ./optdef.sh
2383 myuname="$newmyuname"
2385 : Restore computed paths
2386 for file in $loclist $trylist; do
2387 eval $file="\$_$file"
2392 Configure uses the operating system name and version to set some defaults.
2393 The default value is probably right if the name rings a bell. Otherwise,
2394 since spelling matters for me, either accept the default or answer "none"
2401 ''|' '|none) dflt=none ;;
2402 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2405 *) dflt="$osname" ;;
2407 rp="Operating system name?"
2411 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2417 ''|' '|none) dflt=none ;;
2418 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2419 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2421 ''|' ') dflt=none ;;
2426 *) dflt="$osvers" ;;
2428 rp="Operating system version?"
2435 : who configured the system
2436 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2437 cf_by=`(logname) 2>/dev/null`
2440 cf_by=`(whoami) 2>/dev/null`
2442 "") cf_by=unknown ;;
2446 : set up the script used to warn in case of inconsistency
2453 echo "*** WHOA THERE!!! ***" >&4
2454 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2455 rp=" Keep the $hint value?"
2458 y) td=$was; tu=$was;;
2462 : function used to set $1 to $val
2463 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2465 $define$undef) . ./whoa; eval "$var=\$td";;
2466 $undef$define) . ./whoa; eval "$var=\$tu";;
2467 *) eval "$var=$val";;
2472 Perl can be built to take advantage of threads, on some systems.
2473 To do so, Configure must be run with -Dusethreads.
2474 (See README.threads for details.)
2476 case "$usethreads" in
2477 $define|true|[yY]*) dflt='y';;
2480 rp='Build a threading Perl?'
2483 y|Y) val="$define" ;;
2489 case "$d_oldpthreads" in
2490 '') : Configure tests would be welcome here. For now, assume undef.
2492 *) val="$d_oldpthreads" ;;
2498 case "$usethreads" in
2499 "$define"|true|[yY]*)
2500 : Look for a hint-file generated 'call-back-unit'. If the
2501 : user has specified that a threading perl is to be built,
2502 : we may need to set or change some other defaults.
2503 if $test -f usethreads.cbu; then
2507 aix|dec_osf|dos_djgpp|freebsd|hpux|irix|linux|os2|solaris|vmesa)
2508 # Known thread-capable platforms.
2512 $osname is not known to support threads.
2513 Please let me (jhi@iki.fi) know how to do that.
2515 Cannot continue, aborting.
2525 Perl can be built so that multiple Perl interpreters can coexist
2526 within the same Perl executable. To do so, Configure must be run with
2529 Normally you do not need this and you should answer no.
2532 case "$usemultiplicity" in
2533 $define|true|[yY]*) dflt='y';;
2536 rp='Build Perl for multiplicity?'
2539 y|Y) val="$define" ;;
2547 Perl can be built to take advantage of explicit 64-bit interfaces,
2548 on some systems. To do so, Configure must be run with -Duse64bits.
2550 If this doesn't make any sense to you, just accept the default 'n'.
2552 case "$use64bits" in
2553 $define|true|[yY]*) dflt='y';;
2556 rp='Try to use explicit 64-bit interfaces, if available?'
2569 case "$archname64" in
2570 '') archname64='' ;; # not a typo
2573 case "$use64bits" in
2574 "$define"|true|[yY]*)
2575 : Look for a hint-file generated 'call-back-unit'. If the
2576 : user has specified that a threading perl is to be built,
2577 : we may need to set or change some other defaults.
2578 if $test -f use64bits.cbu; then
2582 dec_osf|hpux|irix|solaris|unicos)
2583 # Known 64-bit capable platforms.
2587 $osname is not known to support 64-bit interfaces.
2588 Please let me (jhi@iki.fi) know how to do that.
2590 Cannot continue, aborting.
2598 : determine the architecture name
2600 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2601 tarch=`arch`"-$osname"
2602 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2603 if uname -m > tmparch 2>&1 ; then
2604 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2605 -e 's/$/'"-$osname/" tmparch`
2613 case "$myarchname" in
2616 echo "(Your architecture name used to be $myarchname.)"
2623 *) dflt="$archname";;
2625 rp='What is your architecture name'
2628 case "$usethreads" in
2630 echo "Threads selected." >&4
2632 *-thread*) echo "...and architecture name already has -thread." >&4
2634 *) archname="$archname-thread"
2635 echo "...setting architecture name to $archname." >&4
2640 case "$usemultiplicity" in
2642 echo "Multiplicity selected." >&4
2644 *-multi*) echo "...and architecture name already has -multi." >&4
2646 *) archname="$archname-multi"
2647 echo "...setting architecture name to $archname." >&4
2652 case "$use64bits" in
2654 echo "Explicit 64-bitness selected." >&4
2655 case "$archname64" in
2660 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2662 *) archname="$archname-$archname64"
2663 echo "...setting architecture name to $archname." >&4
2673 $define|true) afs=true ;;
2674 $undef|false) afs=false ;;
2675 *) if test -d /afs; then
2683 echo "AFS may be running... I'll be extra cautious then..." >&4
2685 echo "AFS does not seem to be running..." >&4
2688 : decide how portable to be. Allow command line overrides.
2689 case "$d_portable" in
2691 *) d_portable="$define" ;;
2694 : set up shell script to do ~ expansion
2700 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2703 if $test -f /bin/csh; then
2704 /bin/csh -f -c "glob \$1"
2709 name=\`$expr x\$1 : '..\([^/]*\)'\`
2710 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2711 if $test ! -d "\$dir"; then
2713 echo "\$me: can't locate home directory for: \$name" >&2
2718 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2734 : now set up to get a file name
2738 cat <<'EOSC' >>getfile
2751 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2752 fn=`echo $fn | sed 's/(.*)//'`
2758 loc_file=`expr $fn : '.*:\(.*\)'`
2759 fn=`expr $fn : '\(.*\):.*'`
2767 */*) fullpath=true;;
2776 *e*) exp_file=true;;
2779 *p*) nopath_ok=true;;
2784 *d*) type='Directory';;
2785 *l*) type='Locate';;
2790 Locate) what='File';;
2795 case "$d_portable" in
2803 while test "$type"; do
2808 true) rp="$rp (~name ok)";;
2811 if test -f UU/getfile.ok && \
2812 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2831 value=`UU/filexp $ans`
2834 if test "$ans" != "$value"; then
2835 echo "(That expands to $value on this system.)"
2849 /*) value="$ansexp" ;;
2854 echo "I shall only accept a full path name, as in /bin/ls." >&4
2855 echo "Use a ! shell escape if you wish to check pathnames." >&4
2858 echo "Please give a full path name, starting with slash." >&4
2861 echo "Note that using ~name is ok provided it expands well." >&4
2874 if test -f "$ansexp"; then
2876 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2878 echo "($value is not a plain file, but that's ok.)"
2883 if test -d "$ansexp"; then
2888 if test -d "$ansexp"; then
2889 echo "(Looking for $loc_file in directory $value.)"
2890 value="$value/$loc_file"
2891 ansexp="$ansexp/$loc_file"
2893 if test -f "$ansexp"; then
2896 case "$nopath_ok" in
2897 true) case "$value" in
2899 *) echo "Assuming $value will be in people's path."
2915 if test "$fastread" = yes; then
2920 rp="$what $value doesn't exist. Use that name anyway?"
2941 : determine root of directory hierarchy where package will be installed.
2944 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2952 By default, $package will be installed in $dflt/bin, manual
2953 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2954 all installation directories. Typically set to /usr/local, but you
2955 may choose /usr if you wish to install $package among your system
2956 binaries. If you wish to have binaries under /bin but manual pages
2957 under /usr/local/man, that's ok: you will be prompted separately
2958 for each of the installation directories, the prefix being only used
2959 to set the defaults.
2963 rp='Installation prefix to use?'
2971 *) oldprefix="$prefix";;
2978 : set the prefixit variable, to compute a suitable default value
2979 prefixit='case "$3" in
2981 case "$oldprefix" in
2982 "") eval "$1=\"\$$2\"";;
2989 ""|" ") eval "$1=\"\$$2\"";;
2995 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2997 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2998 /*-$oldprefix/*|\~*-$oldprefix/*)
2999 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3000 *) eval "$1=\"\$$2\"";;
3004 : set the base revision
3007 : get the patchlevel
3009 echo "Getting the current patchlevel..." >&4
3010 if $test -r $rsrc/patchlevel.h;then
3011 patchlevel=`awk '/define[ ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
3012 subversion=`awk '/define[ ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3017 $echo $n "(You have $package" $c
3020 *) $echo $n " $baserev" $c ;;
3022 $echo $n " patchlevel $patchlevel" $c
3023 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3026 if test 0 -eq "$subversion"; then
3027 version=`LC_ALL=C; export LC_ALL; \
3028 LANGUAGE=C; export LANGUAGE; \
3029 echo $baserev $patchlevel | \
3030 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3032 version=`LC_ALL=C; export LC_ALL; \
3033 LANGUAGE=C; export LANGUAGE; \
3034 echo $baserev $patchlevel $subversion | \
3035 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3037 : Figure out perl API version. Perhaps this should be in patchlevel.h
3038 if test "$subversion" -lt 50; then
3039 apiversion=`LC_ALL=C; export LC_ALL; \
3040 LANGUAGE=C; export LANGUAGE; \
3041 echo $baserev $patchlevel | \
3042 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3044 apiversion="$version"
3047 : determine where private library files go
3048 : Usual default is /usr/local/lib/perl5/$version.
3049 : Also allow things like /opt/perl/lib/$version, since
3050 : /opt/perl/lib/perl5... would be redundant.
3052 *perl*) set dflt privlib lib/$version ;;
3053 *) set dflt privlib lib/$package/$version ;;
3058 There are some auxiliary files for $package that need to be put into a
3059 private library directory that is accessible by everyone.
3063 rp='Pathname where the private library files will reside?'
3065 if $test "X$privlibexp" != "X$ansexp"; then
3069 privlibexp="$ansexp"
3073 Since you are running AFS, I need to distinguish the directory in which
3074 private files reside from the directory in which they are installed (and from
3075 which they are presumably copied to the former directory by occult means).
3078 case "$installprivlib" in
3079 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3080 *) dflt="$installprivlib";;
3083 rp='Where will private files be installed?'
3085 installprivlib="$ans"
3087 installprivlib="$privlibexp"
3090 : set the prefixup variable, to restore leading tilda escape
3091 prefixup='case "$prefixexp" in
3093 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3096 : determine where public architecture dependent libraries go
3099 : privlib default is /usr/local/lib/$package/$version
3100 : archlib default is /usr/local/lib/$package/$version/$archname
3101 : privlib may have an optional trailing /share.
3102 tdflt=`echo $privlib | $sed 's,/share$,,'`
3103 tdflt=$tdflt/$archname
3112 $spackage contains architecture-dependent library files. If you are
3113 sharing libraries in a heterogeneous environment, you might store
3114 these files in a separate location. Otherwise, you can just include
3115 them with the rest of the public library files.
3119 rp='Where do you want to put the public architecture-dependent libraries?'
3122 archlibexp="$ansexp"
3127 Since you are running AFS, I need to distinguish the directory in
3128 which architecture-dependent library files reside from the directory
3129 in which they are installed (and from which they are presumably copied
3130 to the former directory by occult means).
3133 case "$installarchlib" in
3134 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3135 *) dflt="$installarchlib";;
3138 rp='Where will architecture-dependent library files be installed?'
3140 installarchlib="$ans"
3142 installarchlib="$archlibexp"
3144 if $test X"$archlib" = X"$privlib"; then
3150 : make some quick guesses about what we are up against
3152 $echo $n "Hmm... $c"
3162 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3163 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3165 echo "Looks kind of like an OSF/1 system, but we'll see..."
3167 elif test `echo abc | tr a-z A-Z` = Abc ; then
3168 xxx=`./loc addbib blurfl $pth`
3169 if $test -f $xxx; then
3170 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3174 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3175 echo "Looks kind of like an extended USG system, but we'll see..."
3177 echo "Looks kind of like a USG system, but we'll see..."
3181 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3182 echo "Looks kind of like a BSD system, but we'll see..."
3186 echo "Looks kind of like a Version 7 system, but we'll see..."
3189 case "$eunicefix" in
3192 There is, however, a strange, musty smell in the air that reminds me of
3193 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3197 : it so happens the Eunice I know will not run shell scripts in Unix format
3201 echo "Congratulations. You aren't running Eunice."
3205 : Detect OS2. The p_ variable is set above in the Head.U unit.
3210 I have the feeling something is not exactly right, however...don't tell me...
3211 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3216 if test -f /xenix; then
3217 echo "Actually, this looks more like a XENIX system..."
3222 echo "It's not Xenix..."
3227 if test -f /venix; then
3228 echo "Actually, this looks more like a VENIX system..."
3235 echo "Nor is it Venix..."
3238 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3239 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3242 : see if setuid scripts can be secure
3245 Some kernels have a bug that prevents setuid #! scripts from being
3246 secure. Some sites have disabled setuid #! scripts because of this.
3248 First let's decide if your kernel supports secure setuid #! scripts.
3249 (If setuid #! scripts would be secure but have been disabled anyway,
3250 don't say that they are secure if asked.)
3255 if $test -d /dev/fd; then
3256 echo "#!$ls" >reflect
3257 chmod +x,u+s reflect
3258 ./reflect >flect 2>&1
3259 if $contains "/dev/fd" flect >/dev/null; then
3260 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3264 If you are not sure if they are secure, I can check but I'll need a
3265 username and password different from the one you are using right now.
3266 If you don't have such a username or don't want me to test, simply
3270 rp='Other username to test security of setuid scripts with?'
3275 case "$d_suidsafe" in
3276 '') echo "I'll assume setuid scripts are *not* secure." >&4
3279 echo "Well, the $hint value is *not* secure." >&4
3281 *) echo "Well, the $hint value *is* secure." >&4
3286 $rm -f reflect flect
3287 echo "#!$ls" >reflect
3288 chmod +x,u+s reflect
3291 echo '"su" will (probably) prompt you for '"$ans's password."
3292 su $ans -c './reflect >flect'
3293 if $contains "/dev/fd" flect >/dev/null; then
3294 echo "Okay, it looks like setuid scripts are secure." >&4
3297 echo "I don't think setuid scripts are secure." >&4
3302 rp='Does your kernel have *secure* setuid scripts?'
3305 [yY]*) val="$define";;
3310 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3311 echo "(That's for file descriptors, not floppy disks.)"
3317 $rm -f reflect flect
3319 : now see if they want to do setuid emulation
3322 case "$d_suidsafe" in
3325 echo "No need to emulate SUID scripts since they are secure here." >& 4
3329 Some systems have disabled setuid scripts, especially systems where
3330 setuid scripts cannot be secure. On systems where setuid scripts have
3331 been disabled, the setuid/setgid bits on scripts are currently
3332 useless. It is possible for $package to detect those bits and emulate
3333 setuid/setgid in a secure fashion. This emulation will only work if
3334 setuid scripts have been disabled in your kernel.
3338 "$define") dflt=y ;;
3341 rp="Do you want to do setuid/setgid emulation?"
3344 [yY]*) val="$define";;
3352 : determine where manual pages are on this system
3356 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3357 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3358 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3359 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3360 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3361 sysman=`./loc . /usr/man/man1 $syspath`
3364 if $test -d "$sysman"; then
3365 echo "System manual is in $sysman." >&4
3367 echo "Could not find manual pages in source form." >&4
3370 : see what memory models we can support
3373 $cat >pdp11.c <<'EOP'
3382 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3383 if $test -f pdp11 && ./pdp11 2>/dev/null; then
3384 dflt='unsplit split'
3386 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3389 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3394 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3397 if $test -d /lib/large || $test -d /usr/lib/large; then
3400 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3409 Some systems have different model sizes. On most systems they are called
3410 small, medium, large, and huge. On the PDP11 they are called unsplit and
3411 split. If your system doesn't support different memory models, say "none".
3412 If you wish to force everything to one memory model, say "none" here and
3413 put the appropriate flags later when it asks you for other cc and ld flags.
3414 Venix systems may wish to put "none" and let the compiler figure things out.
3415 (In the following question multiple model names should be space separated.)
3417 The default for most systems is "none".
3420 rp="Which memory models are supported?"
3435 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3436 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3443 rp="What flag indicates separate I and D space?"
3451 *large*|*small*|*medium*|*huge*)
3458 rp="What flag indicates large model?"
3468 *huge*) case "$huge" in
3472 rp="What flag indicates huge model?"
3482 *medium*) case "$medium" in
3486 rp="What flag indicates medium model?"
3493 *) medium="$large";;
3496 *small*) case "$small" in
3500 rp="What flag indicates small model?"
3511 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3514 $rm -f pdp11.* pdp11
3516 : see if we need a special compiler
3524 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3525 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3539 On some older systems the default C compiler will not resolve multiple global
3540 references that happen to have the same name. On some such systems the "Mcc"
3541 command may be used to force these to be resolved. On other systems a "cc -M"
3542 command is required. (Note that the -M flag on other systems indicates a
3543 memory model to use!) If you have the Gnu C compiler, you might wish to use
3549 rp="Use which C compiler?"
3557 rp="Use which C compiler?"
3561 : Look for a hint-file generated 'call-back-unit'. Now that the
3562 : user has specified the compiler, we may need to set or change some
3564 if $test -f cc.cbu; then
3568 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3569 $cat >gccvers.c <<EOM
3574 printf("%s\n", __VERSION__);
3576 printf("%s\n", "1");
3582 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3583 gccversion=`./gccvers`
3584 case "$gccversion" in
3585 '') echo "You are not using GNU cc." ;;
3586 *) echo "You are using GNU cc $gccversion." ;;
3590 echo "*** WHOA THERE!!! ***" >&4
3591 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3592 case "$knowitall" in
3594 echo " You'd better start hunting for one and let me know about it." >&4
3600 case "$gccversion" in
3601 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3604 : What should the include directory be ?
3606 $echo $n "Hmm... $c"
3610 if $test -f /bin/mips && /bin/mips; then
3611 echo "Looks like a MIPS system..."
3612 $cat >usr.c <<'EOCP'
3613 #ifdef SYSTYPE_BSD43
3617 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3618 dflt='/bsd43/usr/include'
3622 mips_type='System V'
3624 $rm -f usr.c usr.out
3625 echo "and you're compiling with the $mips_type compiler and libraries."
3629 echo "Doesn't look like a MIPS system."
3639 case "$xxx_prompt" in
3642 rp='Where are the include files you want to use?'
3650 : see how we invoke the C preprocessor
3652 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3653 cat <<'EOT' >testcpp.c
3659 if test ! -f cppstdin; then
3660 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3662 echo "Keeping your $hint cppstdin wrapper."
3665 wrapper=`pwd`/cppstdin
3669 if $test "X$cppstdin" != "X" && \
3670 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3671 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3673 echo "You used to use $cppstdin $cppminus so we'll use that again."
3675 '') echo "But let's see if we can live without a wrapper..." ;;
3677 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3678 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3680 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3683 echo "(However, $cpprun $cpplast does not work, let's see...)"
3691 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3698 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3699 $cc -E <testcpp.c >testcpp.out 2>&1; \
3700 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3701 echo "Yup, it does."
3704 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3705 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3706 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3707 echo "Yup, it does."
3710 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3711 $cc -P <testcpp.c >testcpp.out 2>&1; \
3712 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3713 echo "Yipee, that works!"
3716 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3717 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3718 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3719 echo "At long last!"
3722 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3723 $cpp <testcpp.c >testcpp.out 2>&1; \
3724 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3728 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3729 $cpp - <testcpp.c >testcpp.out 2>&1; \
3730 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3731 echo "Hooray, it works! I was beginning to wonder."
3734 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3735 $wrapper <testcpp.c >testcpp.out 2>&1; \
3736 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3742 rp="No dice. I can't find a C preprocessor. Name one:"
3746 $x_cpp <testcpp.c >testcpp.out 2>&1
3747 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3748 echo "OK, that will do." >&4
3750 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3765 echo "Perhaps can we force $cc -E using a wrapper..."
3766 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3767 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3773 echo "Nope, we'll have to live without it..."
3788 *) $rm -f $wrapper;;
3790 $rm -f testcpp.c testcpp.out
3792 : Set private lib path
3795 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3800 '') dlist="$loclibpth $plibpth $glibpth";;
3801 *) dlist="$libpth";;
3804 : Now check and see which directories actually exist, avoiding duplicates
3808 if $test -d $xxx; then
3811 *) libpth="$libpth $xxx";;
3817 Some systems have incompatible or broken versions of libraries. Among
3818 the directories listed in the question below, please remove any you
3819 know not to be holding relevant libraries, and add any that are needed.
3820 Say "none" for none.
3831 rp="Directories to use for library searches?"
3838 : compute shared library extension
3841 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3851 On some systems, shared libraries may be available. Answer 'none' if
3852 you want to suppress searching of shared libraries for the remaining
3853 of this configuration.
3856 rp='What is the file extension used for shared libraries?'
3860 : Define several unixisms.
3861 : Hints files or command line option can be used to override them.
3862 : The convoluted testing is in case hints files set either the old
3865 '') case "$exe_ext" in
3867 *) _exe="$exe_ext" ;;
3872 '') case "$lib_ext" in
3879 '') case "$obj_ext" in
3886 '') case "$path_sep" in
3897 : Which makefile gets called first. This is used by make depend.
3898 case "$firstmakefile" in
3899 '') firstmakefile='makefile';;
3902 : Looking for optional libraries
3904 echo "Checking for optional libraries..." >&4
3909 case "$libswanted" in
3910 '') libswanted='c_s';;
3912 for thislib in $libswanted; do
3914 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3915 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3916 echo "Found -l$thislib (shared)."
3919 *) dflt="$dflt -l$thislib";;
3921 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3922 echo "Found -l$thislib (shared)."
3925 *) dflt="$dflt -l$thislib";;
3927 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3928 echo "Found -l$thislib."
3931 *) dflt="$dflt -l$thislib";;
3933 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3934 echo "Found -l$thislib."
3937 *) dflt="$dflt -l$thislib";;
3939 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3940 echo "Found -l${thislib}_s."
3943 *) dflt="$dflt -l${thislib}_s";;
3945 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3946 echo "Found -l$thislib."
3949 *) dflt="$dflt -l$thislib";;
3952 echo "No -l$thislib."
3963 ' '|'') dflt='none';;
3968 Some versions of Unix support shared libraries, which make executables smaller
3969 but make load time slightly longer.
3971 On some systems, mostly System V Release 3's, the shared library is included
3972 by putting the option "-lc_s" as the last thing on the cc command line when
3973 linking. Other systems use shared libraries by default. There may be other
3974 libraries needed to compile $package on your machine as well. If your system
3975 needs the "-lc_s" option, include it here. Include any other special libraries
3976 here as well. Say "none" for none.
3980 rp="Any additional libraries?"
3987 : determine optimize, if desired, or use for debug flag also
3989 ' '|$undef) dflt='none';;
3991 *) dflt="$optimize";;
3995 Some C compilers have problems with their optimizers. By default, $package
3996 compiles with the -O flag to use the optimizer. Alternately, you might want
3997 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3998 systems). Either flag can be specified here. To use neither flag, specify
4002 rp="What optimizer/debugger flag should be used?"
4006 'none') optimize=" ";;
4010 : We will not override a previous value, but we might want to
4011 : augment a hint file
4014 case "$gccversion" in
4015 1*) dflt='-fpcc-struct-return' ;;
4018 *-g*) dflt="$dflt -DDEBUGGING";;
4020 case "$gccversion" in
4021 2*) if test -d /etc/conf/kconfig.d &&
4022 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4031 case "$mips_type" in
4032 *BSD*|'') inclwanted="$locincpth $usrinc";;
4033 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4035 for thisincl in $inclwanted; do
4036 if $test -d $thisincl; then
4037 if $test x$thisincl != x$usrinc; then
4040 *) dflt="$dflt -I$thisincl";;
4046 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4048 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4056 *) dflt="$dflt -D$2";;
4061 set signal.h __LANGUAGE_C__; eval $inctest
4063 set signal.h LANGUAGE_C; eval $inctest
4067 none|recommended) dflt="$ccflags $dflt" ;;
4068 *) dflt="$ccflags";;
4076 Your C compiler may want other flags. For this question you should include
4077 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4078 but you should NOT include libraries or ld flags like -lwhatever. If you
4079 want $package to honor its debug switch, you should include -DDEBUGGING here.
4080 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4082 To use no flags, specify the word "none".
4088 rp="Any additional cc flags?"
4095 : the following weeds options from ccflags that are of no interest to cpp
4097 case "$gccversion" in
4098 1*) cppflags="$cppflags -D__GNUC__"
4100 case "$mips_type" in
4102 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4108 echo "Let me guess what the preprocessor flags are..." >&4
4122 *) ftry="$previous $flag";;
4124 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4125 >cpp1.out 2>/dev/null && \
4126 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4127 >cpp2.out 2>/dev/null && \
4128 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4129 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4131 cppflags="$cppflags $ftry"
4141 *-*) echo "They appear to be: $cppflags";;
4143 $rm -f cpp.c cpp?.out
4147 : flags used in final linking phase
4149 '') if ./venix; then
4155 *-posix*) dflt="$dflt -posix" ;;
4158 *) dflt="$ldflags";;
4161 : Try to guess additional flags to pick up local libraries.
4162 for thislibdir in $libpth; do
4163 case " $loclibpth " in
4166 *"-L$thislibdir "*) ;;
4167 *) dflt="$dflt -L$thislibdir" ;;
4179 Your C linker may need flags. For this question you should
4180 include -L/whatever and any other flags used by the C linker, but you
4181 should NOT include libraries like -lwhatever.
4183 Make sure you include the appropriate -L/path flags if your C linker
4184 does not normally search all of the directories you specified above,
4187 To use no flags, specify the word "none".
4191 rp="Any additional ld flags (NOT including libraries)?"
4197 rmlist="$rmlist pdp11"
4201 echo "Checking your choice of C compiler and flags for coherency..." >&4
4202 $cat > try.c <<'EOF'
4204 main() { printf("Ok\n"); exit(0); }
4206 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4208 $cat >try.msg <<'EOM'
4209 I've tried to compile and run the following simple program:
4212 $cat try.c >> try.msg
4214 $cat >> try.msg <<EOM
4221 and I got the following output:
4225 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4226 if sh -c './try' >>try.msg 2>&1; then
4230 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4233 cat >> try.msg <<'EOQS'
4234 If $libs contains -lsfio, and sfio is mis-configured, then it
4235 sometimes (apparently) runs and exits with a 0 status, but with no
4236 output! It may have to do with sfio's use of _exit vs. exit.
4239 rp="You have a big problem. Shall I abort Configure"
4246 echo "The program compiled OK, but exited with status $?." >>try.msg
4247 rp="You have a problem. Shall I abort Configure"
4251 echo "I can't compile the test program." >>try.msg
4252 rp="You have a BIG problem. Shall I abort Configure"
4258 case "$knowitall" in
4260 echo "(The supplied flags or libraries might be incorrect.)"
4268 *) echo "Ok. Stopping Configure." >&4
4273 n) echo "OK, that should do.";;
4275 $rm -f try try.* core
4277 : determine filename position in cpp output
4279 echo "Computing filename position in cpp output for #include directives..." >&4
4280 echo '#include <stdio.h>' > foo.c
4283 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4284 $grep '^[ ]*#.*stdio\.h' | \
4285 while read cline; do
4288 while $test \$# -gt 0; do
4289 if $test -r \`echo \$1 | $tr -d '"'\`; then
4294 pos=\`expr \$pos + 1\`
4306 *) pos="${fieldn}th";;
4308 echo "Your cpp writes the filename in the $pos field of the line."
4310 : locate header file
4315 if test -f $usrinc/\$wanted; then
4316 echo "$usrinc/\$wanted"
4319 awkprg='{ print \$$fieldn }'
4320 echo "#include <\$wanted>" > foo\$\$.c
4321 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4322 $grep "^[ ]*#.*\$wanted" | \
4323 while read cline; do
4324 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4326 */\$wanted) echo "\$name"; exit 0;;
4337 : define an alternate in-header-list? function
4338 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4339 cont=true; xxf="echo \"<\$1> found.\" >&4";
4340 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4341 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4343 case $# in 4) instead=instead;; *) instead="at last";; esac;
4344 while $test "$cont"; do
4346 var=$2; eval "was=\$$2";
4347 if $test "$xxx" && $test -r "$xxx";
4349 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4352 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4353 set $yyy; shift; shift; yyy=$@;
4354 case $# in 0) cont="";;
4355 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4356 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4357 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4358 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4362 do set $yyy; var=$2; eval "was=\$$2";
4363 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4364 set $yyy; shift; shift; yyy=$@;
4367 : see if this is a malloc.h system
4368 set malloc.h i_malloc
4371 : see if stdlib is available
4372 set stdlib.h i_stdlib
4375 : determine which malloc to compile in
4377 case "$usemymalloc" in
4378 ''|[yY]*|true|$define) dflt='y' ;;
4381 rp="Do you wish to attempt to use the malloc that comes with $package?"
4387 mallocsrc='malloc.c'
4388 mallocobj="malloc$_o"
4389 d_mymalloc="$define"
4392 : Remove malloc from list of libraries to use
4393 echo "Removing unneeded -lmalloc from library list" >&4
4394 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4397 echo "libs = $libs" >&4
4409 : compute the return types of malloc and free
4411 $cat >malloc.c <<END
4415 #include <sys/types.h>
4429 case "$malloctype" in
4431 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4438 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4442 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4449 echo "Your system uses $freetype free(), it would seem." >&4
4451 : Cruising for prototypes
4453 echo "Checking out function prototypes..." >&4
4454 $cat >prototype.c <<'EOCP'
4455 int main(int argc, char *argv[]) {
4458 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4459 echo "Your C compiler appears to support function prototypes."
4462 echo "Your C compiler doesn't seem to understand function prototypes."
4469 case "$prototype" in
4471 *) ansi2knr='ansi2knr'
4476 This version of $package can only be compiled by a compiler that
4477 understands function prototypes. Unfortunately, your C compiler
4479 doesn't seem to understand them. Sorry about that.
4481 If GNU cc is available for your system, perhaps you could try that instead.
4483 Eventually, we hope to support building Perl with pre-ANSI compilers.
4484 If you would like to help in that effort, please contact <perlbug@perl.org>.
4486 Aborting Configure now.
4492 : determine where public executables go
4497 rp='Pathname where the public executables will reside?'
4499 if $test "X$ansexp" != "X$binexp"; then
4507 Since you are running AFS, I need to distinguish the directory in which
4508 executables reside from the directory in which they are installed (and from
4509 which they are presumably copied to the former directory by occult means).
4512 case "$installbin" in
4513 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4514 *) dflt="$installbin";;
4517 rp='Where will public executables be installed?'
4521 installbin="$binexp"
4524 : determine whether to install perl also as /usr/bin/perl
4527 case "$installusrbinperl" in
4528 '') if test -d /usr/bin -a "X$installbin" != X/usr/bin; then
4530 Many scripts expect to perl to be installed as /usr/bin/perl.
4531 I can install the perl you are about to compile also as /usr/bin/perl
4532 (in addition to $installbin/perl).
4535 rp="Do you want to install perl as /usr/bin/perl?"
4538 [yY]*) val="$define";;
4544 case "$installusrbinperl" in
4545 "$undef"|[nN]*) val="$undef";;
4548 set installusrbinperl
4551 : define a shorthand compile call
4555 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4556 : define a shorthand compile call for compilations that should be ok.
4560 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4563 echo "Checking for GNU C Library..." >&4
4564 cat >gnulibc.c <<EOM
4576 if eval $compile_ok && ./gnulibc; then
4578 echo "You are using the GNU C Library"
4581 echo "You are not using the GNU C Library"
4587 : see if nm is to be used to determine whether a symbol is defined or not
4591 case "$d_gnulibc" in
4594 echo "nm probably won't work on the GNU C Library." >&4
4600 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4602 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4603 echo "'nm' won't be sufficient on this sytem." >&4
4609 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4610 if $test $dflt -gt 20; then
4620 true|$define) dflt=y;;
4627 I can use $nm to extract the symbols from your C libraries. This
4628 is a time consuming task which may generate huge output on the disk (up
4629 to 3 megabytes) but that should make the symbols extraction faster. The
4630 alternative is to skip the 'nm' extraction part and to compile a small
4631 test program instead to determine whether each symbol is present. If
4632 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4633 this may be the best solution.
4635 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4638 rp="Shall I use $nm to extract C symbols from the libraries?"
4641 [Nn]*) usenm=false;;
4650 : nm options which may be necessary
4652 '') if $test -f /mach_boot; then
4654 elif $test -d /usr/ccs/lib; then
4655 nm_opt='-p' # Solaris (and SunOS?)
4656 elif $test -f /dgux; then
4658 elif $test -f /lib64/rld; then
4659 nm_opt='-p' # 64-bit Irix
4665 : nm options which may be necessary for shared libraries but illegal
4666 : for archive libraries. Thank you, Linux.
4667 case "$nm_so_opt" in
4668 '') case "$myuname" in
4670 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4671 nm_so_opt='--dynamic'
4680 : get list of predefined functions in a handy place
4685 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4692 *) for thislib in $libs; do
4695 : Handle C library specially below.
4698 thislib=`echo $thislib | $sed -e 's/^-l//'`
4699 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4701 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4703 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4705 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4707 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4709 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4711 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4716 libnames="$libnames $try"
4718 *) libnames="$libnames $thislib" ;;
4727 for xxx in $libpth; do
4728 $test -r $1 || set $xxx/libc.$so
4729 : The messy sed command sorts on library version numbers.
4731 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4732 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4734 s/[0-9][0-9]*/0000&/g
4735 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4738 sort | $sed -e 's/^.* //'`
4741 $test -r $1 || set /usr/ccs/lib/libc.$so
4742 $test -r $1 || set /lib/libsys_s$_a
4748 if $test -r "$1"; then
4749 echo "Your (shared) C library seems to be in $1."
4751 elif $test -r /lib/libc && $test -r /lib/clib; then
4752 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4754 libc='/lib/clib /lib/libc'
4755 if $test -r /lib/syslib; then
4756 echo "(Your math library is in /lib/syslib.)"
4757 libc="$libc /lib/syslib"
4759 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4760 echo "Your C library seems to be in $libc, as you said before."
4761 elif $test -r $incpath/usr/lib/libc$_a; then
4762 libc=$incpath/usr/lib/libc$_a;
4763 echo "Your C library seems to be in $libc. That's fine."
4764 elif $test -r /lib/libc$_a; then
4766 echo "Your C library seems to be in $libc. You're normal."
4768 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4770 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4771 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4772 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4774 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4776 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4779 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4781 if $test -r "$tans"; then
4782 echo "Your C library seems to be in $tans, of all places."
4788 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4792 If the guess above is wrong (which it might be if you're using a strange
4793 compiler, or your machine supports multiple models), you can override it here.
4798 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4800 I can't seem to find your C library. I've looked in the following places:
4803 $sed 's/^/ /' libpath
4806 None of these seems to contain your C library. I need to get its name...
4811 rp='Where is your C library?'
4816 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4817 set X `cat libnames`
4820 case $# in 1) xxx=file; esac
4821 echo "Extracting names from the following $xxx for later perusal:" >&4
4823 $sed 's/^/ /' libnames >&4
4825 $echo $n "This may take a while...$c" >&4
4829 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4830 *) $nm $nm_opt $file 2>/dev/null;;
4835 $grep fprintf libc.tmp > libc.ptf
4836 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4837 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4839 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4841 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4843 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4845 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4847 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4849 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4851 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4853 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4855 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4857 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4859 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4861 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4863 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4864 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4866 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4870 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4872 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4874 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4876 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4878 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4880 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4882 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4884 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4886 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4888 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4890 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4892 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4894 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4897 $nm -p $* 2>/dev/null >libc.tmp
4898 $grep fprintf libc.tmp > libc.ptf
4899 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4900 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4906 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4908 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4909 for thisname in $libnames $libc; do
4910 $ar t $thisname >>libc.tmp
4912 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4914 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4915 # Repeat libc to extract forwarders to DLL entries too
4916 for thisname in $libnames $libc; do
4917 $ar tv $thisname >>libc.tmp
4918 # Revision 50 of EMX has bug in $ar.
4919 # it will not extract forwarders to DLL entries
4920 # Use emximp which will extract exactly them.
4921 emximp -o tmp.imp $thisname \
4923 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4924 < tmp.imp >>libc.tmp
4927 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4930 echo "$ar didn't seem to work right." >&4
4931 echo "Maybe this is a Cray...trying bld instead..." >&4
4932 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4934 for thisname in $libnames; do
4936 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4937 $ar t $thisname >>libc.tmp
4941 echo "That didn't work either. Giving up." >&4
4948 if $test -f /lib/syscalls.exp; then
4950 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4951 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4955 $rm -f libnames libpath
4957 : see if dld is available
4961 : is a C symbol defined?
4964 -v) tf=libc.tmp; tc=""; tdc="";;
4965 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4966 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4969 case "$reuseval-$4" in
4971 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4977 if $contains $tlook $tf >/dev/null 2>&1;
4982 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4983 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4991 $define) tval=true;;
4997 : define an is-in-libc? function
4998 inlibc='echo " "; td=$define; tu=$undef;
4999 sym=$1; var=$2; eval "was=\$$2";
5001 case "$reuseval$was" in
5011 echo "$sym() found." >&4;
5012 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5014 echo "$sym() NOT found." >&4;
5015 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5019 $define) echo "$sym() found." >&4;;
5020 *) echo "$sym() NOT found." >&4;;
5024 : see if dlopen exists
5031 : determine which dynamic loading, if any, to compile in
5033 dldir="ext/DynaLoader"
5046 $define) dflt='y' ;;
5049 $define) dflt='y' ;;
5051 : Does a dl_xxx.xs file exist for this operating system
5052 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5055 rp="Do you wish to use dynamic loading?"
5062 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5063 dflt="$dldir/dl_${osname}.xs"
5064 elif $test "$d_dlopen" = "$define" ; then
5065 dflt="$dldir/dl_dlopen.xs"
5066 elif $test "$i_dld" = "$define" ; then
5067 dflt="$dldir/dl_dld.xs"
5072 *) dflt="$dldir/$dlsrc"
5075 echo "The following dynamic loading files are available:"
5076 : Can not go over to $dldir because getfile has path hard-coded in.
5077 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5078 rp="Source file to use for dynamic loading"
5080 # XXX This getfile call will fail the existence check if you try
5081 # building away from $src (this is not supported yet).
5085 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5089 Some systems may require passing special flags to $cc -c to
5090 compile modules that will be used to create a shared library.
5091 To use no flags, say "none".
5094 case "$cccdlflags" in
5095 '') case "$gccversion" in
5096 '') case "$osname" in
5098 next) dflt='none' ;;
5099 irix*) dflt='-KPIC' ;;
5100 svr4*|esix*|solaris) dflt='-KPIC' ;;
5101 sunos) dflt='-pic' ;;
5105 *) case "$osname" in
5106 svr4*|esix*|solaris) dflt='-fPIC' ;;
5111 *) dflt="$cccdlflags" ;;
5113 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5116 none) cccdlflags=' ' ;;
5117 *) cccdlflags="$ans" ;;
5122 Some systems use ld to create libraries that can be dynamically loaded,
5123 while other systems (such as those using ELF) use $cc.
5127 '') $cat >try.c <<'EOM'
5128 /* Test for whether ELF binaries are produced */
5133 int i = open("a.out",O_RDONLY);
5136 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5137 exit(0); /* succeed (yes, it's ELF) */
5142 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5144 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5148 echo "I'll use ld to build dynamic libraries."
5157 rp="What command should be used to create dynamic libraries?"
5163 Some systems may require passing special flags to $ld to create a
5164 library that can be dynamically loaded. If your ld flags include
5165 -L/other/path options to locate libraries outside your loader's normal
5166 search path, you may need to specify those -L options here as well. To
5167 use no flags, say "none".
5170 case "$lddlflags" in
5171 '') case "$osname" in
5172 beos) dflt='-nostart' ;;
5174 linux|irix*) dflt='-shared' ;;
5175 next) dflt='none' ;;
5176 solaris) dflt='-G' ;;
5177 sunos) dflt='-assert nodefinitions' ;;
5178 svr4*|esix*) dflt="-G $ldflags" ;;
5182 *) dflt="$lddlflags" ;;
5185 : Try to guess additional flags to pick up local libraries.
5186 : Be careful not to append to a plain 'none'
5190 for thisflag in $ldflags; do
5195 *) dflt="$dflt $thisflag" ;;
5202 ''|' ') dflt='none' ;;
5205 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5208 none) lddlflags=' ' ;;
5209 *) lddlflags="$ans" ;;
5214 Some systems may require passing special flags to $cc to indicate that
5215 the resulting executable will use dynamic linking. To use no flags,
5219 case "$ccdlflags" in
5220 '') case "$osname" in
5221 hpux) dflt='-Wl,-E' ;;
5222 linux) dflt='-rdynamic' ;;
5223 next) dflt='none' ;;
5224 sunos) dflt='none' ;;
5228 *) dflt="$ccdlflags" ;;
5230 rp="Any special flags to pass to $cc to use dynamic loading?"
5233 none) ccdlflags=' ' ;;
5234 *) ccdlflags="$ans" ;;
5248 # No dynamic loading being used, so don't bother even to prompt.
5251 *) case "$useshrplib" in
5252 '') case "$osname" in
5253 svr4*|dgux|dynixptx|esix|powerux|beos)
5255 also='Building a shared libperl is required for dynamic loading to work on your system.'
5260 also='Building a shared libperl is needed for MAB support.'
5278 The perl executable is normally obtained by linking perlmain.c with
5279 libperl${_a}, any static extensions (usually just DynaLoader), and
5280 any other libraries needed on this system (such as -lm, etc.). Since
5281 your system supports dynamic loading, it is probably possible to build
5282 a shared libperl.$so. If you will have more than one executable linked
5283 to libperl.$so, this will significantly reduce the size of each
5284 executable, but it may have a noticeable affect on performance. The
5285 default is probably sensible for your system.
5289 rp="Build a shared libperl.$so (y/n)"
5294 # Why does next4 have to be so different?
5295 case "${osname}${osvers}" in
5296 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5297 os2*) xxx='' ;; # Nothing special needed.
5299 *) xxx='LD_LIBRARY_PATH' ;;
5301 if test X"$xxx" != "X"; then
5302 $cat <<EOM | $tee -a ../config.msg >&4
5304 To build perl, you must add the current working directory to your
5305 $xxx environment variable before running make. You can do
5307 $xxx=\`pwd\`:\$$xxx; export $xxx
5308 for Bourne-style shells, or
5310 for Csh-style shells. You *MUST* do this before running make.
5315 *) useshrplib='false' ;;
5320 case "$useshrplib" in
5324 # Figure out a good name for libperl.so. Since it gets stored in
5325 # a version-specific architecture-dependent library, the version
5326 # number isn't really that important, except for making cc/ld happy.
5328 # A name such as libperl.so.3.1
5329 majmin="libperl.$so.$patchlevel.$subversion"
5330 # A name such as libperl.so.301
5331 majonly=`echo $patchlevel $subversion |
5332 $awk '{printf "%d%02d", $1, $2}'`
5333 majonly=libperl.$so.$majonly
5334 # I'd prefer to keep the os-specific stuff here to a minimum, and
5335 # rely on figuring it out from the naming of libc.
5336 case "${osname}${osvers}" in
5339 # XXX How handle the --version stuff for MAB?
5341 linux*) # ld won't link with a bare -lperl otherwise.
5344 *) # Try to guess based on whether libc has major.minor.
5346 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5347 *libc.$so.[0-9]*) dflt=$majonly ;;
5348 *) dflt=libperl.$so ;;
5358 I need to select a good name for the shared libperl. If your system uses
5359 library names with major and minor numbers, then you might want something
5360 like $majmin. Alternatively, if your system uses a single version
5361 number for shared libraries, then you might want to use $majonly.
5362 Or, your system might be quite happy with a simple libperl.$so.
5364 Since the shared libperl will get installed into a version-specific
5365 architecture-dependent directory, the version number of the shared perl
5366 library probably isn't important, so the default should be o.k.
5369 rp='What name do you want to give to the shared libperl?'
5372 echo "Ok, I'll use $libperl"
5375 libperl="libperl${_a}"
5379 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5383 WARNING: Use of the shrpdir variable for the installation location of
5384 the shared $libperl is not supported. It was never documented and
5385 will not work in this version. Let me (perlbug@perl.com)
5386 know of any problems this may cause.
5392 But your current setting of $shrpdir is
5393 the default anyway, so it's harmless.
5398 Further, your current attempted setting of $shrpdir
5399 conflicts with the value of $archlibexp/CORE
5400 that installperl will use.
5407 # How will the perl executable find the installed shared $libperl?
5408 # Add $xxx to ccdlflags.
5409 # If we can't figure out a command-line option, use $shrpenv to
5410 # set env LD_RUN_PATH. The main perl makefile uses this.
5411 shrpdir=$archlibexp/CORE
5414 if "$useshrplib"; then
5417 # We'll set it in Makefile.SH...
5423 xxx="-Wl,-R$shrpdir"
5425 linux|irix*|dec_osf)
5426 xxx="-Wl,-rpath,$shrpdir"
5429 # next doesn't like the default...
5432 # beos doesn't like the default, either.
5435 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5441 # Only add $xxx if it isn't already in ccdlflags.
5442 case " $ccdlflags " in
5444 *) ccdlflags="$ccdlflags $xxx"
5447 Adding $xxx to the flags
5448 passed to $ld so that the perl executable will find the
5449 installed shared $libperl.
5457 # Respect a hint or command-line value.
5459 '') shrpenv="$tmp_shrpenv" ;;
5462 : determine where manual pages go
5463 set man1dir man1dir none
5467 $spackage has manual pages available in source form.
5471 echo "However, you don't have nroff, so they're probably useless to you."
5473 '') man1dir="none";;
5476 echo "If you don't want the manual sources installed, answer 'none'."
5481 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5482 lookpath="$lookpath $prefixexp/man/p_man/man1"
5483 lookpath="$lookpath $prefixexp/man/u_man/man1"
5484 lookpath="$lookpath $prefixexp/man/man.1"
5486 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5487 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5497 rp="Where do the main $spackage manual pages (source) go?"
5499 if $test "X$man1direxp" != "X$ansexp"; then
5503 man1direxp="$ansexp"
5511 Since you are running AFS, I need to distinguish the directory in which
5512 manual pages reside from the directory in which they are installed (and from
5513 which they are presumably copied to the former directory by occult means).
5516 case "$installman1dir" in
5517 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5518 *) dflt="$installman1dir";;
5521 rp='Where will man pages be installed?'
5523 installman1dir="$ans"
5525 installman1dir="$man1direxp"
5528 : What suffix to use on installed man pages
5535 rp="What suffix should be used for the main $spackage man pages?"
5537 '') case "$man1dir" in
5551 *) dflt="$man1ext";;
5558 : see if we can have long filenames
5560 rmlist="$rmlist /tmp/cf$$"
5561 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5562 first=123456789abcdef
5563 second=/tmp/cf$$/$first
5564 $rm -f $first $second
5565 if (echo hi >$first) 2>/dev/null; then
5566 if $test -f 123456789abcde; then
5567 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5570 if (echo hi >$second) 2>/dev/null; then
5571 if $test -f /tmp/cf$$/123456789abcde; then
5573 That's peculiar... You can have filenames longer than 14 characters, but only
5574 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5575 I shall consider your system cannot support long filenames at all.
5579 echo 'You can have filenames longer than 14 characters.' >&4
5584 How confusing! Some of your filesystems are sane enough to allow filenames
5585 longer than 14 characters but some others like /tmp can't even think about them.
5586 So, for now on, I shall assume your kernel does not allow them at all.
5593 You can't have filenames longer than 14 chars. You can't even think about them!
5599 $rm -rf /tmp/cf$$ 123456789abcde*
5601 : determine where library module manual pages go
5602 set man3dir man3dir none
5606 $spackage has manual pages for many of the library modules.
5612 However, you don't have nroff, so they're probably useless to you.
5615 '') man3dir="none";;
5619 case "$d_flexfnam" in
5622 However, your system can't handle the long file names like File::Basename.3.
5625 '') man3dir="none";;
5629 echo "If you don't want the manual sources installed, answer 'none'."
5630 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5632 '') case "$prefix" in
5633 *$prog*) dflt=`echo $man1dir |
5634 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5635 *) dflt="$privlib/man/man3" ;;
5639 *) dflt="$man3dir" ;;
5644 rp="Where do the $package library man pages (source) go?"
5646 if test "X$man3direxp" != "X$ansexp"; then
5651 man3direxp="$ansexp"
5659 Since you are running AFS, I need to distinguish the directory in which
5660 manual pages reside from the directory in which they are installed (and from
5661 which they are presumably copied to the former directory by occult means).
5664 case "$installman3dir" in
5665 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5666 *) dflt="$installman3dir";;
5669 rp='Where will man pages be installed?'
5671 installman3dir="$ans"
5673 installman3dir="$man3direxp"
5676 : What suffix to use on installed man pages
5683 rp="What suffix should be used for the $package library man pages?"
5685 '') case "$man3dir" in
5699 *) dflt="$man3ext";;
5706 : see if we have to deal with yellow pages, now NIS.
5707 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5708 if $test -f /usr/etc/nibindd; then
5710 echo "I'm fairly confident you're on a NeXT."
5712 rp='Do you get the hosts file via NetInfo?'
5721 y*) hostcat='nidump hosts .';;
5722 *) case "$hostcat" in
5723 nidump*) hostcat='';;
5733 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5741 rp='Are you getting the hosts file via yellow pages?'
5744 y*) hostcat='ypcat hosts';;
5745 *) hostcat='cat /etc/hosts';;
5751 '') hostcat='cat /etc/hosts';;
5754 '') groupcat='cat /etc/group';;
5757 '') passcat='cat /etc/passwd';;
5760 : now get the host name
5762 echo "Figuring out host name..." >&4
5763 case "$myhostname" in
5765 echo 'Maybe "hostname" will work...'
5766 if tans=`sh -c hostname 2>&1` ; then
5774 if $test "$cont"; then
5776 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5777 if tans=`cat /etc/systemid 2>&1` ; then
5779 phostname='cat /etc/systemid'
5780 echo "Whadyaknow. Xenix always was a bit strange..."
5783 elif $test -r /etc/systemid; then
5784 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5787 if $test "$cont"; then
5788 echo 'No, maybe "uuname -l" will work...'
5789 if tans=`sh -c 'uuname -l' 2>&1` ; then
5791 phostname='uuname -l'
5793 echo 'Strange. Maybe "uname -n" will work...'
5794 if tans=`sh -c 'uname -n' 2>&1` ; then
5796 phostname='uname -n'
5798 echo 'Oh well, maybe I can mine it out of whoami.h...'
5799 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5800 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5801 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5803 case "$myhostname" in
5804 '') echo "Does this machine have an identity crisis or something?"
5807 echo "Well, you said $myhostname before..."
5808 phostname='echo $myhostname';;
5814 : you do not want to know about this
5819 if $test "$myhostname" ; then
5821 rp='Your host name appears to be "'$myhostname'".'" Right?"
5829 : bad guess or no guess
5830 while $test "X$myhostname" = X ; do
5832 rp="Please type the (one word) name of your host:"
5837 : translate upper to lower if necessary
5838 case "$myhostname" in
5840 echo "(Normalizing case in your host name)"
5841 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5845 case "$myhostname" in
5847 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5848 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5849 echo "(Trimming domain name from host name--host name is now $myhostname)"
5851 *) case "$mydomain" in
5854 test "X$hostcat" = "Xypcat hosts" &&
5855 ypmatch "$myhostname" hosts 2>/dev/null |\
5856 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5859 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5860 /[ ]$myhostname[ . ]/p" > hosts
5863 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5864 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5865 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5866 hosts | $sort | $uniq | \
5867 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5868 case `$echo X$dflt` in
5869 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5872 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5877 tans=`./loc resolv.conf X /etc /usr/etc`
5878 if $test -f "$tans"; then
5879 echo "(Attempting domain name extraction from $tans)"
5880 dflt=.`$sed -n -e 's/ / /g' \
5881 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5882 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5884 .) dflt=.`$sed -n -e 's/ / /g' \
5885 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5886 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5893 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5894 dflt=.`sh -c domainname 2>/dev/null`
5897 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5902 .) echo "(Lost all hope -- silly guess then)"
5908 *) dflt="$mydomain";;
5912 rp="What is your domain name?"
5922 : translate upper to lower if necessary
5925 echo "(Normalizing case in your domain name)"
5926 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5930 : a little sanity check here
5931 case "$phostname" in
5934 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5935 $myhostname$mydomain|$myhostname) ;;
5937 case "$phostname" in
5939 echo "(That doesn't agree with your whoami.h file, by the way.)"
5942 echo "(That doesn't agree with your $phostname command, by the way.)"
5952 I need to get your e-mail address in Internet format if possible, i.e.
5953 something like user@host.domain. Please answer accurately since I have
5954 no easy means to double check it. The default value provided below
5955 is most probably close to the reality but may not be valid from outside
5956 your organization...
5960 while test "$cont"; do
5962 '') dflt="$cf_by@$myhostname$mydomain";;
5963 *) dflt="$cf_email";;
5965 rp='What is your e-mail address?'
5971 rp='Address does not look like an Internet one. Use it anyway?'
5987 If you or somebody else will be maintaining perl at your site, please
5988 fill in the correct e-mail address here so that they may be contacted
5989 if necessary. Currently, the "perlbug" program included with perl
5990 will send mail to this address in addition to perlbug@perl.com. You may
5991 enter "none" for no administrator.
5994 case "$perladmin" in
5995 '') dflt="$cf_email";;
5996 *) dflt="$perladmin";;
5998 rp='Perl administrator e-mail address'
6002 : figure out how to guarantee perl startup
6003 case "$startperl" in
6005 case "$sharpbang" in
6009 I can use the #! construct to start perl on your system. This will
6010 make startup of perl scripts faster, but may cause problems if you
6011 want to share those scripts and perl is not in a standard place
6012 ($binexp/perl) on all your platforms. The alternative is to force
6013 a shell by starting the script with a single ':' character.
6017 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6020 none) startperl=": # use perl";;
6021 *) startperl="#!$ans"
6022 if $test 30 -lt `echo "$ans" | wc -c`; then
6025 WARNING: Some systems limit the #! command to 32 characters.
6026 If you experience difficulty running Perl scripts with #!, try
6027 installing Perl in a directory with a shorter pathname.
6033 *) startperl=": # use perl"
6038 echo "I'll use $startperl to start perl scripts."
6040 : figure best path for perl in scripts
6043 perlpath="$binexp/perl"
6044 case "$startperl" in
6049 I will use the "eval 'exec'" idiom to start Perl on your system.
6050 I can use the full path of your Perl binary for this purpose, but
6051 doing so may cause problems if you want to share those scripts and
6052 Perl is not always in a standard place ($binexp/perl).
6056 rp="What path shall I use in \"eval 'exec'\"?"
6063 case "$startperl" in
6065 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6068 : determine where public executable scripts go
6069 set scriptdir scriptdir
6071 case "$scriptdir" in
6074 : guess some guesses
6075 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6076 $test -d /usr/share/bin && dflt=/usr/share/bin
6077 $test -d /usr/local/script && dflt=/usr/local/script
6078 $test -d $prefixexp/script && dflt=$prefixexp/script
6082 *) dflt="$scriptdir"
6087 Some installations have a separate directory just for executable scripts so
6088 that they can mount it across multiple architectures but keep the scripts in
6089 one spot. You might, for example, have a subdirectory of /usr/share for this.
6090 Or you might just lump your scripts in with all your other executables.
6094 rp='Where do you keep publicly executable scripts?'
6096 if $test "X$ansexp" != "X$scriptdirexp"; then
6100 scriptdirexp="$ansexp"
6104 Since you are running AFS, I need to distinguish the directory in which
6105 scripts reside from the directory in which they are installed (and from
6106 which they are presumably copied to the former directory by occult means).
6109 case "$installscript" in
6110 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6111 *) dflt="$installscript";;
6114 rp='Where will public scripts be installed?'
6116 installscript="$ans"
6118 installscript="$scriptdirexp"
6121 : determine where site specific libraries go.
6122 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6123 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6125 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6126 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6131 The installation process will also create a directory for
6132 site-specific extensions and modules. Some users find it convenient
6133 to place all local files in this directory rather than in the main
6134 distribution directory.
6138 rp='Pathname for the site-specific library files?'
6140 if $test "X$sitelibexp" != "X$ansexp"; then
6144 sitelibexp="$ansexp"
6148 Since you are running AFS, I need to distinguish the directory in
6149 which site-specific files reside from the directory in which they are
6150 installed (and from which they are presumably copied to the former
6151 directory by occult means).
6154 case "$installsitelib" in
6155 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6156 *) dflt="$installsitelib";;
6159 rp='Where will site-specific files be installed?'
6161 installsitelib="$ans"
6163 installsitelib="$sitelibexp"
6166 : determine where site specific architecture-dependent libraries go.
6167 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6168 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6169 : sitelib may have an optional trailing /share.
6170 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6171 tdflt="$tdflt/$archname"
6172 set sitearch sitearch none
6175 '') dflt="$tdflt" ;;
6176 *) dflt="$sitearch" ;;
6180 The installation process will also create a directory for
6181 architecture-dependent site-specific extensions and modules.
6185 rp='Pathname for the site-specific architecture-dependent library files?'
6187 if $test "X$sitearchexp" != "X$ansexp"; then
6191 sitearchexp="$ansexp"
6195 Since you are running AFS, I need to distinguish the directory in
6196 which site-specific architecture-dependent library files reside from
6197 the directory in which they are installed (and from which they are
6198 presumably copied to the former directory by occult means).
6201 case "$installsitearch" in
6202 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6203 *) dflt="$installsitearch";;
6206 rp='Where will site-specific architecture-dependent files be installed?'
6208 installsitearch="$ans"
6210 installsitearch="$sitearchexp"
6215 Previous version of $package used the standard IO mechanisms as defined
6216 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6217 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6218 the default. This abstraction layer can use AT&T's sfio (if you already
6219 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6220 problems with some extension modules. Using PerlIO with stdio is safe,
6221 but it is slower than plain stdio and therefore is not the default.
6223 If this doesn't make any sense to you, just accept the default 'n'.
6225 case "$useperlio" in
6226 $define|true|[yY]*) dflt='y';;
6229 rp='Use the experimental PerlIO abstraction layer?'
6236 echo "Ok, doing things the stdio way"
6243 : Check how to convert floats to strings.
6244 if test "X$d_Gconvert" = X; then
6246 echo "Checking for an efficient way to convert floats to strings."
6249 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6250 char *myname = "gconvert";
6253 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6254 char *myname = "gcvt";
6257 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6258 char *myname = "sprintf";
6264 checkit(expect, got)
6268 if (strcmp(expect, got)) {
6269 printf("%s oddity: Expected %s, got %s\n",
6270 myname, expect, got);
6280 /* This must be 1st test on (which?) platform */
6281 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6282 Gconvert(0.1, 8, 0, buf);
6283 checkit("0.1", buf);
6285 Gconvert(1.0, 8, 0, buf);
6288 Gconvert(0.0, 8, 0, buf);
6291 Gconvert(-1.0, 8, 0, buf);
6294 /* Some Linux gcvt's give 1.e+5 here. */
6295 Gconvert(100000.0, 8, 0, buf);
6296 checkit("100000", buf);
6298 /* Some Linux gcvt's give -1.e+5 here. */
6299 Gconvert(-100000.0, 8, 0, buf);
6300 checkit("-100000", buf);
6305 case "$d_Gconvert" in
6306 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6307 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6308 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6309 *) xxx_list='gconvert gcvt sprintf' ;;
6312 for xxx_convert in $xxx_list; do
6313 echo "Trying $xxx_convert"
6315 set try -DTRY_$xxx_convert
6316 if eval $compile; then
6317 echo "$xxx_convert" found. >&4
6319 echo "I'll use $xxx_convert to convert floats into a string." >&4
6322 echo "...But $xxx_convert didn't work as I expected."
6325 echo "$xxx_convert NOT found." >&4
6329 case "$xxx_convert" in
6330 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6331 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6332 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6336 : Initialize h_fcntl
6339 : Initialize h_sysfile
6342 : access call always available on UNIX
6346 : locate the flags for 'access()'
6350 $cat >access.c <<'EOCP'
6351 #include <sys/types.h>
6356 #include <sys/file.h>
6365 : check sys/file.h first, no particular reason here
6366 if $test `./findhdr sys/file.h` && \
6367 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6369 echo "<sys/file.h> defines the *_OK access constants." >&4
6370 elif $test `./findhdr fcntl.h` && \
6371 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6373 echo "<fcntl.h> defines the *_OK access constants." >&4
6374 elif $test `./findhdr unistd.h` && \
6375 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6376 echo "<unistd.h> defines the *_OK access constants." >&4
6378 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6384 : see if accessx exists
6385 set accessx d_accessx
6388 : see if alarm exists
6392 : Look for GNU-cc style attribute checking
6394 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6395 $cat >attrib.c <<'EOCP'
6397 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6399 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6400 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6401 echo "Your C compiler doesn't fully support __attribute__."
6404 echo "Your C compiler supports __attribute__."
6408 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6415 : see if bcmp exists
6419 : see if bcopy exists
6423 : see if this is a unistd.h system
6424 set unistd.h i_unistd
6427 : see if getpgrp exists
6428 set getpgrp d_getpgrp
6431 case "$d_getpgrp" in
6434 echo "Checking to see which flavor of getpgrp is in use..."
6437 #include <sys/types.h>
6439 # include <unistd.h>
6443 if (getuid() == 0) {
6444 printf("(I see you are running Configure as super-user...)\n");
6448 if (getpgrp(1) == 0)
6457 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6458 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6460 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6461 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6464 echo "I can't seem to compile and run the test program."
6466 xxx="a USG one, i.e. you use getpgrp()."
6468 # SVR4 systems can appear rather BSD-ish.
6471 xxx="a BSD one, i.e. you use getpgrp(pid)."
6475 xxx="probably a USG one, i.e. you use getpgrp()."
6480 echo "Assuming your getpgrp is $xxx" >&4
6489 : see if setpgrp exists
6490 set setpgrp d_setpgrp
6493 case "$d_setpgrp" in
6496 echo "Checking to see which flavor of setpgrp is in use..."
6499 #include <sys/types.h>
6501 # include <unistd.h>
6505 if (getuid() == 0) {
6506 printf("(I see you are running Configure as super-user...)\n");
6510 if (-1 == setpgrp(1, 1))
6513 if (setpgrp() != -1)
6519 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6520 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6522 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6523 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6526 echo "(I can't seem to compile and run the test program.)"
6528 xxx="a USG one, i.e. you use setpgrp()."
6530 # SVR4 systems can appear rather BSD-ish.
6533 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6537 xxx="probably a USG one, i.e. you use setpgrp()."
6542 echo "Assuming your setpgrp is $xxx" >&4
6550 : see if bzero exists
6554 : check for lengths of integral types
6558 echo "Checking to see how big your integers are..." >&4
6559 $cat >intsize.c <<'EOCP'
6563 printf("intsize=%d;\n", sizeof(int));
6564 printf("longsize=%d;\n", sizeof(long));
6565 printf("shortsize=%d;\n", sizeof(short));
6570 if eval $compile_ok && ./intsize > /dev/null; then
6572 echo "Your integers are $intsize bytes long."
6573 echo "Your long integers are $longsize bytes long."
6574 echo "Your short integers are $shortsize bytes long."
6578 Help! I can't compile and run the intsize test program: please enlighten me!
6579 (This is probably a misconfiguration in your system or libraries, and
6580 you really ought to fix it. Still, I'll try anyway.)
6584 rp="What is the size of an integer (in bytes)?"
6588 rp="What is the size of a long integer (in bytes)?"
6592 rp="What is the size of a short integer (in bytes)?"
6598 $rm -f intsize intsize.*
6600 : see if signal is declared as pointer to function returning int or void
6602 xxx=`./findhdr signal.h`
6603 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6604 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6605 echo "You have int (*signal())() instead of void." >&4
6607 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6608 echo "You have void (*signal())()." >&4
6610 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6611 echo "You have int (*signal())() instead of void." >&4
6613 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6614 echo "You have void (*signal())()." >&4
6617 case "$d_voidsig" in
6619 echo "I can't determine whether signal handler returns void or int..." >&4
6621 rp="What type does your signal handler return?"
6628 echo "As you already told me, signal handler returns void." >&4
6631 *) echo "As you already told me, signal handler returns int." >&4
6638 case "$d_voidsig" in
6639 "$define") signal_t="void";;
6644 : check for ability to cast large floats to 32-bit ints.
6646 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6647 if $test "$intsize" -ge 4; then
6654 #include <sys/types.h>
6656 $signal_t blech(s) int s; { exit(3); }
6663 signal(SIGFPE, blech);
6665 /* Don't let compiler optimize the test away. Store the number
6666 in a writable string for gcc to pass to sscanf under HP/UX.
6668 sprintf(str, "2147483647");
6669 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6673 /* x86 processors will probably give 0x8000 0000, which is a
6674 sign change. We don't want that. We want to mimic SPARC
6675 behavior here, which is to preserve the sign and give
6678 if (i32 != ($xxx) f)
6684 if eval $compile_ok; then
6688 echo "(I can't seem to compile the test program--assuming it can't)"
6696 echo "Nope, it can't."
6703 : check for ability to cast negative floats to unsigned
6705 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6708 #include <sys/types.h>
6710 $signal_t blech(s) int s; { exit(7); }
6711 $signal_t blech_in_list(s) int s; { exit(4); }
6712 unsigned long dummy_long(p) unsigned long p; { return p; }
6713 unsigned int dummy_int(p) unsigned int p; { return p; }
6714 unsigned short dummy_short(p) unsigned short p; { return p; }
6718 unsigned long along;
6720 unsigned short ashort;
6724 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6725 a direct f = -123. assignment. gcc-2.8.0 reportedly
6726 optimized the whole file away
6728 /* Store the number in a writable string for gcc to pass to
6731 sprintf(str, "-123");
6732 sscanf(str, "%lf", &f); /* f = -123.; */
6734 signal(SIGFPE, blech);
6735 along = (unsigned long)f;
6736 aint = (unsigned int)f;
6737 ashort = (unsigned short)f;
6738 if (along != (unsigned long)-123)
6740 if (aint != (unsigned int)-123)
6742 if (ashort != (unsigned short)-123)
6744 sprintf(str, "1073741824.");
6745 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6748 along = (unsigned long)f;
6749 if (along != 0x80000000)
6753 along = (unsigned long)f;
6754 if (along != 0x7fffffff)
6758 along = (unsigned long)f;
6759 if (along != 0x80000001)
6763 signal(SIGFPE, blech_in_list);
6764 sprintf(str, "123.");
6765 sscanf(str, "%lf", &f); /* f = 123.; */
6766 along = dummy_long((unsigned long)f);
6767 aint = dummy_int((unsigned int)f);
6768 ashort = dummy_short((unsigned short)f);
6769 if (along != (unsigned long)123)
6771 if (aint != (unsigned int)123)
6773 if (ashort != (unsigned short)123)
6780 if eval $compile_ok; then
6784 echo "(I can't seem to compile the test program--assuming it can't)"
6787 case "$castflags" in
6792 echo "Nope, it can't."
6799 : see if vprintf exists
6801 if set vprintf val -f d_vprintf; eval $csym; $val; then
6802 echo 'vprintf() found.' >&4
6804 $cat >vprintf.c <<'EOF'
6805 #include <varargs.h>
6807 main() { xxx("foo"); }
6816 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6820 if eval $compile && ./vprintf; then
6821 echo "Your vsprintf() returns (int)." >&4
6824 echo "Your vsprintf() returns (char*)." >&4
6828 echo 'vprintf() NOT found.' >&4
6838 : see if chown exists
6842 : see if chroot exists
6846 : see if chsize exists
6850 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6851 while $test $# -ge 2; do
6853 $define) echo "#include <$2>";;
6857 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6858 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6867 : see if this is a sys/uio.h system
6868 set sys/uio.h i_sysuio
6871 echo "Checking to see if your system supports struct iovec..." >&4
6872 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6874 case "$d_iovec_s" in
6875 "$define") echo "Yup, it does." >&4
6877 *) echo "Nope, it doesn't." >&4
6883 : see whether socket exists
6885 $echo $n "Hmm... $c" >&4
6886 if set socket val -f d_socket; eval $csym; $val; then
6887 echo "Looks like you have Berkeley networking support." >&4
6889 if set setsockopt val -f; eval $csym; $val; then
6892 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6896 if $contains socklib libc.list >/dev/null 2>&1; then
6897 echo "Looks like you have Berkeley networking support." >&4
6899 : we will have to assume that it supports the 4.2 BSD interface
6902 echo "You don't have Berkeley networking in libc$_a..." >&4
6903 if test "X$d_socket" = "X$define"; then
6904 echo "...but you seem to believe that you have sockets." >&4
6906 for net in net socket
6908 if test -f /usr/lib/lib$net$_a; then
6909 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6910 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6911 if $contains socket libc.list >/dev/null 2>&1; then
6916 echo "...but the Wollongong group seems to have hacked it in." >&4
6917 sockethdr="-I/usr/netinclude"
6920 echo "Found Berkeley sockets interface in lib$net." >& 4
6921 if $contains setsockopt libc.list >/dev/null 2>&1; then
6924 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6931 if test "X$d_socket" != "X$define"; then
6932 echo "or anywhere else I see." >&4
6940 : see if socketpair exists
6941 set socketpair d_sockpair
6946 echo "Checking the availability of certain socket constants..." >& 4
6947 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6948 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6950 #include <sys/types.h>
6951 #include <sys/socket.h>
6957 set try; if eval $compile; then
6960 set d_${enum}; eval $setvar
6964 set sendmsg d_sendmsg
6967 set recvmsg d_recvmsg
6971 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6972 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6974 case "$d_msghdr_s" in
6975 "$define") echo "Yup, it does." >&4
6977 *) echo "Nope, it doesn't." >&4
6981 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6982 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6984 case "$d_cmsghdr_s" in
6985 "$define") echo "Yup, it does." >&4
6987 *) echo "Nope, it doesn't." >&4
6991 : check for const keyword
6993 echo 'Checking to see if your C compiler knows about "const"...' >&4
6994 $cat >const.c <<'EOCP'
6995 typedef struct spug { int drokk; } spug;
7002 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7004 echo "Yup, it does."
7007 echo "Nope, it doesn't."
7012 : see if crypt exists
7014 if set crypt val -f d_crypt; eval $csym; $val; then
7015 echo 'crypt() found.' >&4
7019 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7020 if $test -z "$cryptlib"; then
7021 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7025 if $test -z "$cryptlib"; then
7026 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7030 if $test -z "$cryptlib"; then
7031 cryptlib=`./loc libcrypt$_a "" $libpth`
7035 if $test -z "$cryptlib"; then
7036 echo 'crypt() NOT found.' >&4
7045 : get csh whereabouts
7047 'csh') val="$undef" ;;
7052 : Respect a hint or command line value for full_csh.
7054 '') full_csh=$csh ;;
7057 : see if cuserid exists
7058 set cuserid d_cuserid
7061 : see if this is a limits.h system
7062 set limits.h i_limits
7065 : see if this is a float.h system
7069 : See if number of significant digits in a double precision number is known
7071 $cat >dbl_dig.c <<EOM
7081 printf("Contains DBL_DIG");
7084 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7085 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7086 echo "DBL_DIG found." >&4
7089 echo "DBL_DIG NOT found." >&4
7097 if $test X"$use64bits" = X"$define"; then
7098 : see if dbminit64 exists
7099 set dbminit64 d_dbminit64
7102 : see if dbmclose64 exists
7103 set dbmclose64 d_dbmclose64
7106 : see if fetch64 exists
7107 set fetch64 d_fetch64
7110 : see if store64 exists
7111 set store64 d_store64
7114 : see if delete64 exists
7115 set delete64 d_delete64
7118 : see if firstkey64 exists
7119 set firstkey64 d_firstkey64
7122 : see if nextkey64 exists
7123 set nextkey64 d_nextkey64
7127 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7134 : see if difftime exists
7135 set difftime d_difftime
7138 : see if sys/stat.h is available
7139 set sys/stat.h i_sysstat
7142 : see if this is a dirent system
7144 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7146 echo "<dirent.h> found." >&4
7149 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7150 echo "<sys/dir.h> found." >&4
7153 xinc=`./findhdr sys/ndir.h`
7155 echo "<dirent.h> NOT found." >&4
7160 : Look for type of directory structure.
7162 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7164 case "$direntrytype" in
7167 $define) guess1='struct dirent' ;;
7168 *) guess1='struct direct' ;;
7171 *) guess1="$direntrytype"
7176 'struct dirent') guess2='struct direct' ;;
7177 *) guess2='struct dirent' ;;
7180 if $contains "$guess1" try.c >/dev/null 2>&1; then
7181 direntrytype="$guess1"
7182 echo "Your directory entries are $direntrytype." >&4
7183 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7184 direntrytype="$guess2"
7185 echo "Your directory entries seem to be $direntrytype." >&4
7187 echo "I don't recognize your system's directory entries." >&4
7188 rp="What type is used for directory entries on this system?"
7196 : see if the directory entry stores field length
7198 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7199 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7200 echo "Good, your directory entry keeps length information in d_namlen." >&4
7203 echo "Your directory entry does not know about the d_namlen field." >&4
7211 if $test X"$use64bits" = X"$define"; then
7212 : see if fstat64 exists
7213 set fstat64 d_fstat64
7216 : see if ftruncate64 exists
7217 set ftruncate64 d_ftruncate64
7220 : see if lockf64 exists
7221 set lockf64 d_lockf64
7224 : see if lseek64 exists
7225 set lseek64 d_lseek64
7228 : see if lstat64 exists
7229 set lstat64 d_lstat64
7232 : see if open64 exists
7236 : see if opendir64 exists
7237 set opendir64 d_opendir64
7240 : see if readdir64 exists
7241 set readdir64 d_readdir64
7244 : see if seekdir64 exists
7245 set seekdir64 d_seekdir64
7248 : see if stat64 exists
7252 : see if telldir64 exists
7253 set telldir64 d_telldir64
7256 : see if truncate64 exists
7257 set truncate64 d_truncate64
7262 echo $n "Checking to see if your system supports off64_t...$c" >&4
7264 #include <sys/types.h>
7265 off64_t foo() { off64_t x; x = 7; return x; }'
7267 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7269 echo " Yup, it does." >&4
7272 echo " Nope, it doesn't." >&4
7280 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7282 case "$i_sysstat" in
7285 #include <sys/types.h>
7286 #include <sys/stat.h>
7287 ino64_t foo() { ino64_t x; x = 7; return x; }'
7289 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7295 if $test "X$val" = X"$define"; then
7296 echo " Yup, it does." >&4
7298 echo " Nope, it doesn't." >&4
7303 : check for struct flock64
7305 echo "Checking to see if your system supports struct flock64..." >&4
7307 set d_flock64_s flock64 l_len define fcntl.h
7314 case "$d_flock64_s" in
7315 "$define") echo "Yup, it does." >&4
7317 *) echo "Nope, it doesn't." >&4
7321 : check for struct dirent64
7323 echo "Checking to see if your system supports struct dirent64..." >&4
7324 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7326 case "$d_dirent64_s" in
7327 "$define") echo "Yup, it does." >&4
7329 *) echo "Nope, it doesn't." >&4
7335 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
7342 : see if dlerror exists
7345 set dlerror d_dlerror
7349 : see if dlfcn is available
7357 On a few systems, the dynamically loaded modules that perl generates and uses
7358 will need a different extension than shared libs. The default will probably
7366 rp='What is the extension of dynamically loaded modules'
7375 : Check if dlsym need a leading underscore
7381 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7382 $cat >dyna.c <<'EOM'
7391 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7393 #include <sys/types.h>
7407 int mode = RTLD_LAZY ;
7409 handle = dlopen("./dyna.$dlext", mode) ;
7410 if (handle == NULL) {
7415 symbol = dlsym(handle, "fred") ;
7416 if (symbol == NULL) {
7417 /* try putting a leading underscore */
7418 symbol = dlsym(handle, "_fred") ;
7419 if (symbol == NULL) {
7432 : Call the object file tmp-dyna.o in case dlext=o.
7433 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7434 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7435 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7436 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7439 1) echo "Test program failed using dlopen." >&4
7440 echo "Perhaps you should not use dynamic loading." >&4;;
7441 2) echo "Test program failed using dlsym." >&4
7442 echo "Perhaps you should not use dynamic loading." >&4;;
7443 3) echo "dlsym needs a leading underscore" >&4
7445 4) echo "dlsym doesn't need a leading underscore." >&4;;
7448 echo "I can't compile and run the test program." >&4
7453 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7458 hasproto='varname=$1; func=$2; shift; shift;
7459 while $test $# -ge 2; do
7461 $define) echo "#include <$2>";;
7465 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7466 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7467 echo "$func() prototype found.";
7470 echo "$func() prototype NOT found.";
7475 $rm -f try.c tryout.c'
7477 : see if prototype for drand48 is available
7479 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7482 : see if dup2 exists
7486 : see if eaccess exists
7487 set eaccess d_eaccess
7490 : see if endgrent exists
7491 set endgrent d_endgrent
7494 : see if endhostent exists
7495 set endhostent d_endhent
7498 : see if endnetent exists
7499 set endnetent d_endnent
7502 : see if endprotoent exists
7503 set endprotoent d_endpent
7506 : see if endpwent exists
7507 set endpwent d_endpwent
7510 : see if endservent exists
7511 set endservent d_endsent
7514 : Locate the flags for 'open()'
7516 $cat >open3.c <<'EOCP'
7517 #include <sys/types.h>
7522 #include <sys/file.h>
7533 : check sys/file.h first to get FREAD on Sun
7534 if $test `./findhdr sys/file.h` && \
7535 set open3 -DI_SYS_FILE && eval $compile; then
7537 echo "<sys/file.h> defines the O_* constants..." >&4
7539 echo "and you have the 3 argument form of open()." >&4
7542 echo "but not the 3 argument form of open(). Oh, well." >&4
7545 elif $test `./findhdr fcntl.h` && \
7546 set open3 -DI_FCNTL && eval $compile; then
7548 echo "<fcntl.h> defines the O_* constants..." >&4
7550 echo "and you have the 3 argument form of open()." >&4
7553 echo "but not the 3 argument form of open(). Oh, well." >&4
7558 echo "I can't find the O_* constant definitions! You got problems." >&4
7564 : check for non-blocking I/O stuff
7565 case "$h_sysfile" in
7566 true) echo "#include <sys/file.h>" > head.c;;
7569 true) echo "#include <fcntl.h>" > head.c;;
7570 *) echo "#include <sys/fcntl.h>" > head.c;;
7575 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7576 case "$o_nonblock" in
7579 $cat >>try.c <<'EOCP'
7582 printf("O_NONBLOCK\n");
7586 printf("O_NDELAY\n");
7590 printf("FNDELAY\n");
7597 if eval $compile_ok; then
7599 case "$o_nonblock" in
7600 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7601 *) echo "Seems like we can use $o_nonblock.";;
7604 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7607 *) echo "Using $hint value $o_nonblock.";;
7609 $rm -f try try.* .out core
7612 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7618 #include <sys/types.h>
7620 #define MY_O_NONBLOCK $o_nonblock
7621 #ifndef errno /* XXX need better Configure test */
7624 $signal_t blech(x) int x; { exit(3); }
7626 $cat >> try.c <<'EOCP'
7634 pipe(pd); /* Down: child -> parent */
7635 pipe(pu); /* Up: parent -> child */
7638 close(pd[1]); /* Parent reads from pd[0] */
7639 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7640 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7642 signal(SIGALRM, blech);
7644 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7646 sprintf(string, "%d\n", ret);
7647 write(2, string, strlen(string));
7650 if (errno == EAGAIN) {
7656 if (errno == EWOULDBLOCK)
7657 printf("EWOULDBLOCK\n");
7660 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7661 sleep(2); /* Give it time to close our pipe */
7663 ret = read(pd[0], buf, 1); /* Should read EOF */
7665 sprintf(string, "%d\n", ret);
7666 write(3, string, strlen(string));
7670 close(pd[0]); /* We write to pd[1] */
7671 close(pu[1]); /* We read from pu[0] */
7672 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7673 close(pd[1]); /* Pipe pd is now fully closed! */
7674 exit(0); /* Bye bye, thank you for playing! */
7678 if eval $compile_ok; then
7679 echo "$startsh" >mtry
7680 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7682 ./mtry >/dev/null 2>&1
7684 0) eagain=`$cat try.out`;;
7685 1) echo "Could not perform non-blocking setting!";;
7686 2) echo "I did a successful read() for something that was not there!";;
7687 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7688 *) echo "Something terribly wrong happened during testing.";;
7690 rd_nodata=`$cat try.ret`
7691 echo "A read() system call with no data present returns $rd_nodata."
7692 case "$rd_nodata" in
7695 echo "(That's peculiar, fixing that to be -1.)"
7701 echo "Forcing errno EAGAIN on read() with no data available."
7705 echo "Your read() sets errno to $eagain when no data is available."
7708 status=`$cat try.err`
7710 0) echo "And it correctly returns 0 to signal EOF.";;
7711 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7712 *) echo "However, your read() returns '$status' on EOF??";;
7715 if test "$status" = "$rd_nodata"; then
7716 echo "WARNING: you can't distinguish between EOF and no data!"
7720 echo "I can't compile the test program--assuming errno EAGAIN will do."
7727 echo "Using $hint value $eagain."
7728 echo "Your read() returns $rd_nodata when no data is present."
7729 case "$d_eofnblk" in
7730 "$define") echo "And you can see EOF because read() returns 0.";;
7731 "$undef") echo "But you can't see EOF status from read() returned value.";;
7733 echo "(Assuming you can't see EOF status from read anyway.)"
7739 $rm -f try try.* .out core head.c mtry
7741 : see if fchmod exists
7745 : see if fchown exists
7749 : see if this is an fcntl system
7753 : see if sys/select.h has to be included
7754 set sys/select.h i_sysselct
7757 : see if we should include time.h, sys/time.h, or both
7759 if test "X$timeincl" = X; then
7760 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7761 $echo $n "I'm now running the test program...$c"
7762 $cat >try.c <<'EOCP'
7763 #include <sys/types.h>
7768 #ifdef SYSTIMEKERNEL
7771 #include <sys/time.h>
7774 #include <sys/select.h>
7783 struct timezone tzp;
7785 if (foo.tm_sec == foo.tm_sec)
7788 if (bar.tv_sec == bar.tv_sec)
7795 for s_timezone in '-DS_TIMEZONE' ''; do
7797 for s_timeval in '-DS_TIMEVAL' ''; do
7798 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7799 for i_time in '' '-DI_TIME'; do
7800 for i_systime in '-DI_SYSTIME' ''; do
7803 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7804 if eval $compile; then
7805 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7809 $echo $n "Succeeded with $flags$c"
7821 *SYSTIMEKERNEL*) i_systimek="$define"
7822 timeincl=`./findhdr sys/time.h`
7823 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7824 *) i_systimek="$undef";;
7827 *I_TIME*) i_time="$define"
7828 timeincl=`./findhdr time.h`" $timeincl"
7829 echo "We'll include <time.h>." >&4;;
7830 *) i_time="$undef";;
7833 *I_SYSTIME*) i_systime="$define"
7834 timeincl=`./findhdr sys/time.h`" $timeincl"
7835 echo "We'll include <sys/time.h>." >&4;;
7836 *) i_systime="$undef";;
7841 : check for fd_set items
7844 Checking to see how well your C compiler handles fd_set and friends ...
7846 $cat >fd_set.c <<EOCP
7847 #$i_systime I_SYS_TIME
7848 #$i_sysselct I_SYS_SELECT
7849 #$d_socket HAS_SOCKET
7850 #include <sys/types.h>
7852 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7855 #include <sys/time.h>
7858 #include <sys/select.h>
7867 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7874 set fd_set -DTRYBITS
7875 if eval $compile; then
7876 d_fds_bits="$define"
7878 echo "Well, your system knows about the normal fd_set typedef..." >&4
7880 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7881 d_fd_macros="$define"
7884 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7886 d_fd_macros="$undef"
7890 Hmm, your compiler has some difficulty with fd_set. Checking further...
7893 if eval $compile; then
7896 echo "Well, your system has some sort of fd_set available..." >&4
7898 echo "and you have the normal fd_set macros." >&4
7899 d_fd_macros="$define"
7902 but not the normal fd_set macros! Gross! More work for me...
7904 d_fd_macros="$undef"
7907 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7910 d_fd_macros="$undef"
7915 : see if fgetpos exists
7916 set fgetpos d_fgetpos
7920 if $test X"$use64bits" = X"$define"; then
7921 : see if fgetpos64 exists
7922 set fgetpos64 d_fgetpos64
7925 : see if fopen64 exists
7926 set freopen64 d_fopen64
7929 : see if freopen64 exists
7930 set freopen64 d_freopen64
7933 : see if fseek64 exists
7934 set fseek64 d_fseek64
7937 : see if fseeko64 exists
7938 set fseeko64 d_fseeko64
7941 : see if fsetpos64 exists
7942 set fsetpos64 d_fsetpos64
7945 : see if ftell64 exists
7946 set ftell64 d_ftell64
7949 : see if ftello64 exists
7950 set ftello64 d_ftello64
7953 : see if tmpfile64 exists
7954 set tmpfile64 d_tmpfile64
7958 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7965 : see if flock exists
7969 : see if fork exists
7973 : see if pathconf exists
7974 set pathconf d_pathconf
7977 : see if fpathconf exists
7978 set fpathconf d_fpathconf
7981 : see if fseeko exists
7985 : see if fsetpos exists
7986 set fsetpos d_fsetpos
7989 : see if this is a sys/param system
7990 set sys/param.h i_sysparam
7993 : see if this is a sys/mount.h system
7994 set sys/mount.h i_sysmount
7998 : see if statfs exists
8002 : see if fstatfs exists
8003 set fstatfs d_fstatfs
8006 : see if statfs knows about mount flags
8007 set d_statfsflags statfs f_flags $i_sysparam sys/param.h $i_sysmount sys/mount.h
8011 : see if statvfs exists
8012 set statvfs d_statvfs
8015 : see if fstatvfs exists
8016 set fstatvfs d_fstatvfs
8020 : see if ftello exists
8024 : see if getgrent exists
8025 set getgrent d_getgrent
8028 : see if gethostbyaddr exists
8029 set gethostbyaddr d_gethbyaddr
8032 : see if gethostbyname exists
8033 set gethostbyname d_gethbyname
8036 : see if gethostent exists
8037 set gethostent d_gethent
8040 : see how we will look up host name
8043 : dummy stub to allow use of elif
8044 elif set gethostname val -f d_gethname; eval $csym; $val; then
8045 echo 'gethostname() found.' >&4
8046 d_gethname="$define"
8048 elif set uname val -f d_uname; eval $csym; $val; then
8051 uname() was found, but you're running xenix, and older versions of xenix
8052 have a broken uname(). If you don't really know whether your xenix is old
8053 enough to have a broken system call, use the default answer.
8060 rp='Is your uname() broken?'
8063 n*) d_uname="$define"; call=uname;;
8066 echo 'uname() found.' >&4
8071 case "$d_gethname" in
8072 '') d_gethname="$undef";;
8075 '') d_uname="$undef";;
8077 case "$d_uname$d_gethname" in
8082 Every now and then someone has a $call() that lies about the hostname
8083 but can't be fixed for political or economic reasons. If you wish, I can
8084 pretend $call() isn't there and maybe compute hostname at run-time
8085 thanks to the '$phostname' command.
8088 rp="Shall I ignore $call() from now on?"
8091 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8094 case "$phostname" in
8096 *) case "$aphostname" in
8102 file=`./loc $file $file $pth`
8103 aphostname=`echo $file $*`
8108 case "$d_uname$d_gethname" in
8111 case "$phostname" in
8113 echo "There will be no way for $package to get your hostname." >&4;;
8115 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8119 case "$d_phostname" in
8120 '') d_phostname="$undef";;
8123 : see if this is a netdb.h system
8127 : see if prototypes for various gethostxxx netdb.h functions are available
8129 set d_gethostprotos gethostent $i_netdb netdb.h
8132 : see if getlogin exists
8133 set getlogin d_getlogin
8136 : see if getnetbyaddr exists
8137 set getnetbyaddr d_getnbyaddr
8140 : see if getnetbyname exists
8141 set getnetbyname d_getnbyname
8144 : see if getnetent exists
8145 set getnetent d_getnent
8148 : see if prototypes for various getnetxxx netdb.h functions are available
8150 set d_getnetprotos getnetent $i_netdb netdb.h
8154 : see if getprotobyname exists
8155 set getprotobyname d_getpbyname
8158 : see if getprotobynumber exists
8159 set getprotobynumber d_getpbynumber
8162 : see if getprotoent exists
8163 set getprotoent d_getpent
8166 : see if getpgid exists
8167 set getpgid d_getpgid
8170 : see if getpgrp2 exists
8171 set getpgrp2 d_getpgrp2
8174 : see if getppid exists
8175 set getppid d_getppid
8178 : see if getpriority exists
8179 set getpriority d_getprior
8182 : see if prototypes for various getprotoxxx netdb.h functions are available
8184 set d_getprotoprotos getprotoent $i_netdb netdb.h
8187 : see if getpwent exists
8188 set getpwent d_getpwent
8192 : see if getservbyname exists
8193 set getservbyname d_getsbyname
8196 : see if getservbyport exists
8197 set getservbyport d_getsbyport
8200 : see if getservent exists
8201 set getservent d_getsent
8204 : see if prototypes for various getservxxx netdb.h functions are available
8206 set d_getservprotos getservent $i_netdb netdb.h
8209 : see if gettimeofday or ftime exists
8210 set gettimeofday d_gettimeod
8212 case "$d_gettimeod" in
8218 val="$undef"; set d_ftime; eval $setvar
8221 case "$d_gettimeod$d_ftime" in
8224 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8228 : see if this is an grp system
8234 xxx=`./findhdr grp.h`
8235 $cppstdin $cppflags $cppminus < $xxx >$$.h
8237 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8249 set d_grpasswd; eval $setvar
8253 : see if this is a netinet/in.h or sys/in.h system
8254 set netinet/in.h i_niin sys/in.h i_sysin
8257 : see if arpa/inet.h has to be included
8258 set arpa/inet.h i_arpainet
8261 : see if htonl --and friends-- exists
8266 : Maybe they are macros.
8271 #include <sys/types.h>
8272 #$i_niin I_NETINET_IN
8274 #$i_arpainet I_ARPA_INET
8276 #include <netinet/in.h>
8282 #include <arpa/inet.h>
8285 printf("Defined as a macro.");
8288 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8289 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8291 echo "But it seems to be defined as a macro." >&4
8299 : see which of string.h or strings.h is needed
8301 strings=`./findhdr string.h`
8302 if $test "$strings" && $test -r "$strings"; then
8303 echo "Using <string.h> instead of <strings.h>." >&4
8307 strings=`./findhdr strings.h`
8308 if $test "$strings" && $test -r "$strings"; then
8309 echo "Using <strings.h> instead of <string.h>." >&4
8311 echo "No string header found -- You'll surely have problems." >&4
8317 "$undef") strings=`./findhdr strings.h`;;
8318 *) strings=`./findhdr string.h`;;
8323 if set index val -f; eval $csym; $val; then
8324 if set strchr val -f d_strchr; eval $csym; $val; then
8325 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8328 echo "strchr() found." >&4
8332 echo "index() found." >&4
8337 echo "index() found." >&4
8340 if set strchr val -f d_strchr; eval $csym; $val; then
8343 echo "strchr() found." >&4
8345 echo "No index() or strchr() found!" >&4
8350 set d_strchr; eval $setvar
8352 set d_index; eval $setvar
8354 : check whether inet_aton exists
8355 set inet_aton d_inetaton
8358 : see if inttypes.h is available
8359 : we want a real compile instead of Inhdr because some systems
8360 : have an inttypes.h which includes non-existent headers
8363 #include <inttypes.h>
8365 static int32_t foo32 = 0x12345678;
8369 if eval $compile; then
8370 echo "<inttypes.h> found." >&4
8373 echo "<inttypes.h> NOT found." >&4
8381 case "$use64bits" in
8384 echo $n "Checking to see if your system supports int64_t...$c" >&4
8386 #include <sys/types.h>
8387 #$i_inttypes I_INTTYPES
8389 #include <inttypes.h>
8391 int64_t foo() { int64_t x; x = 7; return x; }
8393 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8395 echo " Yup, it does." >&4
8398 echo " Nope, it doesn't." >&4
8411 $cat >isascii.c <<'EOCP'
8423 if eval $compile; then
8424 echo "isascii() found." >&4
8427 echo "isascii() NOT found." >&4
8434 : see if killpg exists
8438 : see if lchown exists
8440 $cat > try.c <<'EOCP'
8441 /* System header to define __stub macros and hopefully few prototypes,
8442 which can conflict with char lchown(); below. */
8444 /* Override any gcc2 internal prototype to avoid an error. */
8445 /* We use char because int might match the return type of a gcc2
8446 builtin and then its argument prototype would still apply. */
8449 /* The GNU C library defines this for functions which it implements
8450 to always fail with ENOSYS. Some functions are actually named
8451 something starting with __ and the normal name is an alias. */
8452 #if defined (__stub_lchown) || defined (__stub___lchown)
8460 if eval $compile; then
8461 $echo "lchown() found." >&4
8464 $echo "lchown() NOT found." >&4
8470 : see if link exists
8474 : see if localeconv exists
8475 set localeconv d_locconv
8478 : see if lockf exists
8482 : check for length of double
8484 case "$doublesize" in
8486 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8487 $cat >try.c <<'EOCP'
8491 printf("%d\n", sizeof(double));
8495 if eval $compile_ok; then
8497 $echo " $doublesize bytes." >&4
8500 echo "(I can't seem to compile the test program. Guessing...)"
8501 rp="What is the size of a double precision number (in bytes)?"
8509 : check for long doubles
8511 echo $n "Checking to see if your system supports long doubles...$c" >&4
8512 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8513 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8515 echo " Yup, it does." >&4
8518 echo " Nope, it doesn't." >&4
8524 : check for length of long double
8525 case "${d_longdbl}${longdblsize}" in
8528 $echo $n "Checking to see how big your long doubles are...$c" >&4
8529 $cat >try.c <<'EOCP'
8533 printf("%d\n", sizeof(long double));
8537 if eval $compile; then
8539 $echo " $longdblsize bytes." >&4
8543 echo "(I can't seem to compile the test program. Guessing...)" >&4
8544 rp="What is the size of a long double (in bytes)?"
8548 if $test "X$doublesize" = "X$longdblsize"; then
8549 echo "(That isn't any different from an ordinary double.)"
8555 : check for long long
8557 echo $n "Checking to see if your system supports long long...$c" >&4
8558 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8559 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8561 echo " Yup, it does." >&4
8564 echo " Nope, it doesn't." >&4
8570 : check for length of long long
8571 case "${d_longlong}${longlongsize}" in
8574 $echo $n "Checking to see how big your long longs are...$c" >&4
8575 $cat >try.c <<'EOCP'
8579 printf("%d\n", sizeof(long long));
8583 if eval $compile_ok; then
8584 longlongsize=`./try`
8585 $echo " $longlongsize bytes." >&4
8589 echo "(I can't seem to compile the test program. Guessing...)"
8590 rp="What is the size of a long long (in bytes)?"
8594 if $test "X$longsize" = "X$longlongsize"; then
8595 echo "(That isn't any different from an ordinary long.)"
8601 : see if lstat exists
8605 : see if mblen exists
8609 : see if mbstowcs exists
8610 set mbstowcs d_mbstowcs
8613 : see if mbtowc exists
8617 : see if memcmp exists
8621 : see if memcpy exists
8625 : see if memmove exists
8626 set memmove d_memmove
8629 : see if memset exists
8633 : see if mkdir exists
8637 : see if mkfifo exists
8641 : see if mktime exists
8645 : see if msgctl exists
8649 : see if msgget exists
8653 : see if msgsnd exists
8657 : see if msgrcv exists
8661 : see how much of the 'msg*(2)' library is present.
8664 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8665 *"$undef"*) h_msg=false;;
8669 case "`ipcs 2>&1`" in
8670 "SVID messages"*"not configured"*)
8671 echo "Your $osname does not have the msg*(2) configured." >&4
8686 : we could also check for sys/ipc.h ...
8687 if $h_msg && $test `./findhdr sys/msg.h`; then
8688 echo "You have the full msg*(2) library." >&4
8691 echo "You don't have the full msg*(2) library." >&4
8697 : see if nice exists
8701 : how to create joinable pthreads
8702 if test "X$usethreads" = "X$define"; then
8704 echo "Checking what constant to use for creating joinable pthreads..." >&4
8705 $cat >try.c <<'EOCP'
8706 #include <pthread.h>
8708 int detachstate = JOINABLE;
8711 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8712 if eval $compile; then
8713 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8714 val="$undef" # Yes, undef.
8715 set d_old_pthread_create_joinable
8718 set old_pthread_create_joinable
8721 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8722 if eval $compile; then
8723 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8725 set d_old_pthread_create_joinable
8727 val=PTHREAD_CREATE_UNDETACHED
8728 set old_pthread_create_joinable
8731 set try -DJOINABLE=__UNDETACHED
8732 if eval $compile; then
8733 echo "You seem to use __UNDETACHED." >&2
8735 set d_old_pthread_create_joinable
8738 set old_pthread_create_joinable
8741 echo "Egads, nothing obvious found. Guessing that you use 0." >&2
8743 set d_old_pthread_create_joinable
8746 set old_pthread_create_joinable
8753 d_old_pthread_create_joinable="$undef"
8754 old_pthread_create_joinable=""
8757 : see if pause exists
8761 : see if pipe exists
8765 : see if poll exists
8770 : see whether the various POSIXish _yields exist
8772 #include <pthread.h>
8778 #ifdef PTHREAD_YIELD
8781 #ifdef PTHREAD_YIELD_NULL
8782 pthread_yield(NULL);
8788 : see if sched_yield exists
8789 set try -DSCHED_YIELD
8790 if eval $compile; then
8792 sched_yield='sched_yield()'
8796 case "$usethreads" in
8799 $define) echo 'sched_yield() found.' >&4 ;;
8800 *) echo 'sched_yield() NOT found.' >&4 ;;
8806 : see if pthread_yield exists
8807 set try -DPTHREAD_YIELD
8808 if eval $compile; then
8810 case "$sched_yield" in
8811 '') sched_yield='pthread_yield()' ;;
8814 set try -DPTHREAD_YIELD_NULL
8815 if eval $compile; then
8817 case "$sched_yield" in
8818 '') sched_yield='pthread_yield(NULL)' ;;
8824 case "$usethreads" in
8827 $define) echo 'pthread_yield() found.' >&4 ;;
8828 *) echo 'pthread_yield() NOT found.' >&4 ;;
8835 case "$sched_yield" in
8836 '') sched_yield=undef ;;
8841 : see if this is a pwd.h system
8847 xxx=`./findhdr pwd.h`
8848 $cppstdin $cppflags $cppminus < $xxx >$$.h
8850 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8858 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8866 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8874 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8882 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8890 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8898 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8906 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8918 set d_pwquota; eval $setvar
8919 set d_pwage; eval $setvar
8920 set d_pwchange; eval $setvar
8921 set d_pwclass; eval $setvar
8922 set d_pwexpire; eval $setvar
8923 set d_pwcomment; eval $setvar
8924 set d_pwgecos; eval $setvar
8925 set d_pwpasswd; eval $setvar
8929 : see if readdir and friends exist
8930 set readdir d_readdir
8932 set seekdir d_seekdir
8934 set telldir d_telldir
8936 set rewinddir d_rewinddir
8939 : see if readlink exists
8940 set readlink d_readlink
8943 : see if readv exists
8947 : see if rename exists
8951 : see if rmdir exists
8955 : see if memory.h is available.
8960 : See if it conflicts with string.h
8966 $cppstdin $cppflags $cppminus < $strings > mem.h
8967 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8969 echo "We won't be including <memory.h>."
8979 : can bcopy handle overlapping blocks?
8984 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8991 $cat >>try.c <<'EOCP'
8994 # include <memory.h>
8997 # include <stdlib.h>
9000 # include <string.h>
9002 # include <strings.h>
9005 # include <unistd.h> /* Needed for NetBSD */
9009 char buf[128], abc[128];
9015 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9017 for (align = 7; align >= 0; align--) {
9018 for (len = 36; len; len--) {
9021 for (off = 1; off <= len; off++) {
9022 bcopy(b, b+off, len);
9023 bcopy(b+off, b, len);
9024 if (bcmp(b, abc, len))
9033 if eval $compile_ok; then
9034 if ./try 2>/dev/null; then
9038 echo "It can't, sorry."
9039 case "$d_memmove" in
9040 "$define") echo "But that's Ok since you have memmove()." ;;
9044 echo "(I can't compile the test program, so we'll assume not...)"
9045 case "$d_memmove" in
9046 "$define") echo "But that's Ok since you have memmove()." ;;
9051 $rm -f try.* try core
9055 : can memcpy handle overlapping blocks?
9060 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9067 $cat >>try.c <<'EOCP'
9070 # include <memory.h>
9073 # include <stdlib.h>
9076 # include <string.h>
9078 # include <strings.h>
9081 # include <unistd.h> /* Needed for NetBSD */
9085 char buf[128], abc[128];
9091 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9092 try to store the string in read-only memory. */
9093 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9095 for (align = 7; align >= 0; align--) {
9096 for (len = 36; len; len--) {
9098 memcpy(b, abc, len);
9099 for (off = 1; off <= len; off++) {
9100 memcpy(b+off, b, len);
9101 memcpy(b, b+off, len);
9102 if (memcmp(b, abc, len))
9111 if eval $compile_ok; then
9112 if ./try 2>/dev/null; then
9116 echo "It can't, sorry."
9117 case "$d_memmove" in
9118 "$define") echo "But that's Ok since you have memmove()." ;;
9122 echo "(I can't compile the test program, so we'll assume not...)"
9123 case "$d_memmove" in
9124 "$define") echo "But that's Ok since you have memmove()." ;;
9129 $rm -f try.* try core
9133 : can memcmp be trusted to compare relative magnitude?
9138 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9145 $cat >>try.c <<'EOCP'
9148 # include <memory.h>
9151 # include <stdlib.h>
9154 # include <string.h>
9156 # include <strings.h>
9159 # include <unistd.h> /* Needed for NetBSD */
9165 if ((a < b) && memcmp(&a, &b, 1) < 0)
9171 if eval $compile_ok; then
9172 if ./try 2>/dev/null; then
9176 echo "No, it can't (it uses signed chars)."
9179 echo "(I can't compile the test program, so we'll assume not...)"
9183 $rm -f try.* try core
9187 : see if select exists
9191 : see if semctl exists
9195 : see if semget exists
9199 : see if semop exists
9203 : see how much of the 'sem*(2)' library is present.
9206 case "$d_semctl$d_semget$d_semop" in
9207 *"$undef"*) h_sem=false;;
9211 case "`ipcs 2>&1`" in
9212 "SVID messages"*"not configured"*)
9213 echo "Your $osname does not have the sem*(2) configured." >&4
9226 : we could also check for sys/ipc.h ...
9227 if $h_sem && $test `./findhdr sys/sem.h`; then
9228 echo "You have the full sem*(2) library." >&4
9231 echo "You don't have the full sem*(2) library." >&4
9237 : see whether sys/sem.h defines union semun
9239 $cat > try.c <<'END'
9240 #include <sys/types.h>
9241 #include <sys/ipc.h>
9242 #include <sys/sem.h>
9243 int main () { union semun semun; semun.buf = 0; }
9246 if eval $compile; then
9247 echo "You have union semun in <sys/sem.h>." >&4
9250 echo "You do not have union semun in <sys/sem.h>." >&4
9253 $rm -f try try.c try.h
9257 : see how to do semctl IPC_STAT
9260 : see whether semctl IPC_STAT can use union semun
9265 # define S_IRUSR S_IREAD
9266 # define S_IWUSR S_IWRITE
9267 # define S_IXUSR S_IEXEC
9269 # define S_IRUSR 0400
9270 # define S_IWUSR 0200
9271 # define S_IXUSR 0100
9273 # define S_IRGRP (S_IRUSR>>3)
9274 # define S_IWGRP (S_IWUSR>>3)
9275 # define S_IXGRP (S_IXUSR>>3)
9276 # define S_IROTH (S_IRUSR>>6)
9277 # define S_IWOTH (S_IWUSR>>6)
9278 # define S_IXOTH (S_IXUSR>>6)
9281 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9282 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9283 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9288 #include <sys/types.h>
9289 #include <sys/ipc.h>
9290 #include <sys/sem.h>
9291 #include <sys/stat.h>
9298 #$d_union_semun HAS_UNION_SEMUN
9301 #ifndef HAS_UNION_SEMUN
9304 struct semid_ds *buf;
9305 unsigned short *array;
9311 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9312 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9314 struct semid_ds argbuf;
9317 st = semctl(sem, 0, IPC_STAT, arg);
9321 # endif /* IPC_STAT */
9322 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9324 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9325 # endif /* IPC_RMID */
9326 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9328 #endif /* IPC_PRIVATE && ... */
9329 printf("semget failed: errno = %d\n", errno);
9335 if eval $compile; then
9338 semun) val="$define" ;;
9344 case "$d_semctl_semun" in
9346 echo "You can use union semun for semctl IPC_STAT." >&4
9349 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9354 : see whether semctl IPC_STAT can use struct semid_ds pointer
9355 $cat > try.c <<'END'
9356 #include <sys/types.h>
9357 #include <sys/ipc.h>
9358 #include <sys/sem.h>
9359 #include <sys/stat.h>
9367 struct semid_ds arg;
9370 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9371 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9374 st = semctl(sem, 0, IPC_STAT, &arg);
9376 printf("semid_ds\n");
9378 # endif /* IPC_STAT */
9379 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9381 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9382 # endif /* IPC_RMID */
9383 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9385 #endif /* IPC_PRIVATE && ... */
9386 printf("semget failed: errno = %d\n", errno);
9393 if eval $compile; then
9396 semid_ds) val="$define" ;;
9400 set d_semctl_semid_ds
9402 case "$d_semctl_semid_ds" in
9404 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9406 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9413 # We do not have the full sem*(2) library, so assume we can not
9419 set d_semctl_semid_ds
9424 : see if setegid exists
9425 set setegid d_setegid
9428 : see if seteuid exists
9429 set seteuid d_seteuid
9432 : see if setgrent exists
9433 set setgrent d_setgrent
9436 : see if sethostent exists
9437 set sethostent d_sethent
9440 : see if setlinebuf exists
9441 set setlinebuf d_setlinebuf
9444 : see if setlocale exists
9445 set setlocale d_setlocale
9448 : see if setnetent exists
9449 set setnetent d_setnent
9452 : see if setprotoent exists
9453 set setprotoent d_setpent
9456 : see if setpgid exists
9457 set setpgid d_setpgid
9460 : see if setpgrp2 exists
9461 set setpgrp2 d_setpgrp2
9464 : see if setpriority exists
9465 set setpriority d_setprior
9468 : see if setpwent exists
9469 set setpwent d_setpwent
9472 : see if setregid exists
9473 set setregid d_setregid
9475 set setresgid d_setresgid
9478 : see if setreuid exists
9479 set setreuid d_setreuid
9481 set setresuid d_setresuid
9484 : see if setrgid exists
9485 set setrgid d_setrgid
9488 : see if setruid exists
9489 set setruid d_setruid
9492 : see if setservent exists
9493 set setservent d_setsent
9496 : see if setsid exists
9500 : see if setvbuf exists
9501 set setvbuf d_setvbuf
9504 : see if sfio.h is available
9509 : see if sfio library is available
9520 : Ok, but do we want to use it.
9524 true|$define|[yY]*) dflt='y';;
9527 echo "$package can use the sfio library, but it is experimental."
9528 rp="You seem to have sfio available, do you want to try using it?"
9532 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9534 : Remove sfio from list of libraries to use
9535 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9538 echo "libs = $libs" >&4
9542 *) case "$usesfio" in
9544 echo "Sorry, cannot find sfio on this machine" >&4
9545 echo "Ignoring your setting of usesfio=$usesfio" >&4
9553 $define) usesfio='true';;
9554 *) usesfio='false';;
9557 : see if shmctl exists
9561 : see if shmget exists
9565 : see if shmat exists
9568 : see what shmat returns
9571 $cat >shmat.c <<'END'
9572 #include <sys/shm.h>
9575 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9580 echo "and it returns ($shmattype)." >&4
9581 : see if a prototype for shmat is available
9582 xxx=`./findhdr sys/shm.h`
9583 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9584 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9595 set d_shmatprototype
9598 : see if shmdt exists
9602 : see how much of the 'shm*(2)' library is present.
9605 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9606 *"$undef"*) h_shm=false;;
9610 case "`ipcs 2>&1`" in
9611 "SVID shared memory"*"not configured"*)
9612 echo "Your $osname does not have the shm*(2) configured." >&4
9627 : we could also check for sys/ipc.h ...
9628 if $h_shm && $test `./findhdr sys/shm.h`; then
9629 echo "You have the full shm*(2) library." >&4
9632 echo "You don't have the full shm*(2) library." >&4
9639 : see if we have sigaction
9640 if set sigaction val -f d_sigaction; eval $csym; $val; then
9641 echo 'sigaction() found.' >&4
9642 $cat > try.c <<'EOP'
9644 #include <sys/types.h>
9648 struct sigaction act, oact;
9652 if eval $compile_ok; then
9655 echo "But you don't seem to have a useable struct sigaction." >&4
9659 echo 'sigaction NOT found.' >&4
9662 set d_sigaction; eval $setvar
9663 $rm -f try try$_o try.c
9665 : see if sigsetjmp exists
9667 case "$d_sigsetjmp" in
9675 if (sigsetjmp(env,1))
9683 if eval $compile; then
9684 if ./try >/dev/null 2>&1; then
9685 echo "POSIX sigsetjmp found." >&4
9689 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9695 echo "sigsetjmp not found." >&4
9699 *) val="$d_sigsetjmp"
9700 case "$d_sigsetjmp" in
9701 $define) echo "POSIX sigsetjmp found." >&4;;
9702 $undef) echo "sigsetjmp not found." >&4;;
9710 : see if stat knows about block sizes
9712 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9715 : see if _ptr and _cnt from stdio act std
9717 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9718 echo "(Looks like you have stdio.h from Linux.)"
9719 case "$stdio_ptr" in
9720 '') stdio_ptr='((fp)->_IO_read_ptr)'
9723 *) ptr_lval=$d_stdio_ptr_lval;;
9725 case "$stdio_cnt" in
9726 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9729 *) cnt_lval=$d_stdio_cnt_lval;;
9731 case "$stdio_base" in
9732 '') stdio_base='((fp)->_IO_read_base)';;
9734 case "$stdio_bufsiz" in
9735 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9738 case "$stdio_ptr" in
9739 '') stdio_ptr='((fp)->_ptr)'
9742 *) ptr_lval=$d_stdio_ptr_lval;;
9744 case "$stdio_cnt" in
9745 '') stdio_cnt='((fp)->_cnt)'
9748 *) cnt_lval=$d_stdio_cnt_lval;;
9750 case "$stdio_base" in
9751 '') stdio_base='((fp)->_base)';;
9753 case "$stdio_bufsiz" in
9754 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9757 : test whether _ptr and _cnt really work
9758 echo "Checking how std your stdio is..." >&4
9761 #define FILE_ptr(fp) $stdio_ptr
9762 #define FILE_cnt(fp) $stdio_cnt
9764 FILE *fp = fopen("try.c", "r");
9767 18 <= FILE_cnt(fp) &&
9768 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9776 if eval $compile; then
9778 echo "Your stdio acts pretty std."
9781 echo "Your stdio isn't very std."
9784 echo "Your stdio doesn't appear very std."
9790 : Can _ptr be used as an lvalue?
9791 case "$d_stdstdio$ptr_lval" in
9792 $define$define) val=$define ;;
9795 set d_stdio_ptr_lval
9798 : Can _cnt be used as an lvalue?
9799 case "$d_stdstdio$cnt_lval" in
9800 $define$define) val=$define ;;
9803 set d_stdio_cnt_lval
9806 : see if _base is also standard
9808 case "$d_stdstdio" in
9812 #define FILE_base(fp) $stdio_base
9813 #define FILE_bufsiz(fp) $stdio_bufsiz
9815 FILE *fp = fopen("try.c", "r");
9818 19 <= FILE_bufsiz(fp) &&
9819 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9826 if eval $compile; then
9828 echo "And its _base field acts std."
9831 echo "But its _base field isn't std."
9834 echo "However, it seems to be lacking the _base field."
9842 : see if strcoll exists
9843 set strcoll d_strcoll
9846 : check for structure copying
9848 echo "Checking to see if your C compiler can copy structs..." >&4
9849 $cat >try.c <<'EOCP'
9859 if $cc -c try.c >/dev/null 2>&1 ; then
9864 echo "Nope, it can't."
9870 : see if strerror and/or sys_errlist[] exist
9872 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9873 if set strerror val -f d_strerror; eval $csym; $val; then
9874 echo 'strerror() found.' >&4
9875 d_strerror="$define"
9876 d_strerrm='strerror(e)'
9877 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9878 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9879 d_syserrlst="$define"
9881 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9882 d_syserrlst="$undef"
9884 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9885 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9886 echo 'strerror() found in string header.' >&4
9887 d_strerror="$define"
9888 d_strerrm='strerror(e)'
9889 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9890 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9891 d_syserrlst="$define"
9893 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9894 d_syserrlst="$undef"
9896 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9897 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9899 d_syserrlst="$define"
9900 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9902 echo 'strerror() and sys_errlist[] NOT found.' >&4
9904 d_syserrlst="$undef"
9905 d_strerrm='"unknown"'
9909 : see if strtod exists
9913 : see if strtol exists
9917 : see if strtoul exists
9918 set strtoul d_strtoul
9921 : see if strxfrm exists
9922 set strxfrm d_strxfrm
9925 : see if symlink exists
9926 set symlink d_symlink
9929 : see if syscall exists
9930 set syscall d_syscall
9933 : see if sysconf exists
9934 set sysconf d_sysconf
9937 : see if system exists
9941 : see if tcgetpgrp exists
9942 set tcgetpgrp d_tcgetpgrp
9945 : see if tcsetpgrp exists
9946 set tcsetpgrp d_tcsetpgrp
9949 : define an is-a-typedef? function
9950 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9952 "") inclist="sys/types.h";;
9954 eval "varval=\$$var";
9958 for inc in $inclist; do
9959 echo "#include <$inc>" >>temp.c;
9961 echo "#ifdef $type" >> temp.c;
9962 echo "printf(\"We have $type\");" >> temp.c;
9963 echo "#endif" >> temp.c;
9964 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9965 if $contains $type temp.E >/dev/null 2>&1; then
9971 *) eval "$var=\$varval";;
9974 : define an is-a-typedef? function that prompts if the type is not available.
9975 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9977 "") inclist="sys/types.h";;
9979 eval "varval=\$$var";
9983 for inc in $inclist; do
9984 echo "#include <$inc>" >>temp.c;
9986 echo "#ifdef $type" >> temp.c;
9987 echo "printf(\"We have $type\");" >> temp.c;
9988 echo "#endif" >> temp.c;
9989 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9991 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9992 if $contains $type temp.E >/dev/null 2>&1; then
9993 echo "$type found." >&4;
9996 echo "$type NOT found." >&4;
10002 *) eval "$var=\$varval";;
10005 : see if this is a sys/times.h system
10006 set sys/times.h i_systimes
10009 : see if times exists
10011 if set times val -f d_times; eval $csym; $val; then
10012 echo 'times() found.' >&4
10015 case "$i_systimes" in
10016 "$define") inc='sys/times.h';;
10018 rp="What is the type returned by times() on this system?"
10019 set clock_t clocktype long stdio.h sys/types.h $inc
10022 echo 'times() NOT found, hope that will do.' >&4
10027 : see if truncate exists
10028 set truncate d_truncate
10031 : see if tzname[] exists
10033 if set tzname val -a d_tzname; eval $csym; $val; then
10035 echo 'tzname[] found.' >&4
10038 echo 'tzname[] NOT found.' >&4
10043 : see if umask exists
10047 : backward compatibility for d_hvfork
10048 if test X$d_hvfork != X; then
10049 d_vfork="$d_hvfork"
10052 : see if there is a vfork
10057 : Ok, but do we want to use it. vfork is reportedly unreliable in
10058 : perl on Solaris 2.x, and probably elsewhere.
10062 case "$usevfork" in
10066 rp="Some systems have problems with vfork(). Do you want to use it?"
10071 echo "Ok, we won't use vfork()."
10080 $define) usevfork='true';;
10081 *) usevfork='false';;
10084 : see if this is an sysdir system
10085 set sys/dir.h i_sysdir
10088 : see if this is an sysndir system
10089 set sys/ndir.h i_sysndir
10092 : see if sys/types.h has to be included
10093 set sys/types.h i_systypes
10096 : see if closedir exists
10097 set closedir d_closedir
10100 case "$d_closedir" in
10103 echo "Checking whether closedir() returns a status..." >&4
10104 cat > closedir.c <<EOM
10105 #$i_dirent I_DIRENT /**/
10106 #$i_sysdir I_SYS_DIR /**/
10107 #$i_sysndir I_SYS_NDIR /**/
10108 #$i_systypes I_SYS_TYPES /**/
10110 #if defined(I_SYS_TYPES)
10111 #include <sys/types.h>
10113 #if defined(I_DIRENT)
10114 #include <dirent.h>
10115 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10116 #include <sys/dir.h>
10120 #include <sys/ndir.h>
10124 #include <ndir.h> /* may be wrong in the future */
10126 #include <sys/dir.h>
10131 int main() { return closedir(opendir(".")); }
10134 if eval $compile_ok; then
10135 if ./closedir > /dev/null 2>&1 ; then
10136 echo "Yes, it does."
10139 echo "No, it doesn't."
10143 echo "(I can't seem to compile the test program--assuming it doesn't)"
10151 set d_void_closedir
10154 : check for volatile keyword
10156 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10157 $cat >try.c <<'EOCP'
10160 typedef struct _goo_struct goo_struct;
10161 goo_struct * volatile goo = ((goo_struct *)0);
10162 struct _goo_struct {
10167 typedef unsigned short foo_t;
10168 char *volatile foo;
10170 volatile foo_t blech;
10174 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10176 echo "Yup, it does."
10179 echo "Nope, it doesn't."
10185 : see if there is a wait4
10189 : see if waitpid exists
10190 set waitpid d_waitpid
10193 : see if wcstombs exists
10194 set wcstombs d_wcstombs
10197 : see if wctomb exists
10198 set wctomb d_wctomb
10201 : see if writev exists
10202 set writev d_writev
10205 : preserve RCS keywords in files with variable substitution, grrr
10210 Revision='$Revision'
10212 : check for alignment requirements
10214 case "$alignbytes" in
10215 '') echo "Checking alignment constraints..." >&4
10216 $cat >try.c <<'EOCP'
10223 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10227 if eval $compile_ok; then
10231 echo "(I can't seem to compile the test program...)"
10234 *) dflt="$alignbytes"
10237 rp="Doubles must be aligned on a how-many-byte boundary?"
10242 : check for ordering of bytes in a long
10243 case "$byteorder" in
10247 In the following, larger digits indicate more significance. A big-endian
10248 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10249 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10250 machines may have weird orders like 3412. A Cray will report 87654321. If
10251 the test program works the default is probably right.
10252 I'm now running the test program...
10254 $cat >try.c <<'EOCP'
10261 char c[sizeof(long)];
10264 if (sizeof(long) > 4)
10265 u.l = (0x08070605L << 32) | 0x04030201L;
10268 for (i = 0; i < sizeof(long); i++)
10269 printf("%c", u.c[i]+'0');
10276 if eval $compile && ./try > /dev/null; then
10279 [1-4][1-4][1-4][1-4]|12345678|87654321)
10280 echo "(The test program ran ok.)"
10281 echo "byteorder=$dflt"
10284 ????|????????) echo "(The test program ran ok.)" ;;
10285 *) echo "(The test program didn't run right for some reason.)" ;;
10290 (I can't seem to compile the test program. Guessing big-endian...)
10293 case "$xxx_prompt" in
10295 rp="What is the order of bytes in a long?"
10306 : how do we catenate cpp tokens here?
10308 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10309 $cat >cpp_stuff.c <<'EOCP'
10310 #define RCAT(a,b)a/**/b
10311 #define ACAT(a,b)a ## b
10315 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10316 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10317 echo "Oh! Smells like ANSI's been here." >&4
10318 echo "We can catify or stringify, separately or together!"
10320 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10321 echo "Ah, yes! The good old days!" >&4
10322 echo "However, in the good old days we don't know how to stringify and"
10323 echo "catify at the same time."
10327 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10328 to have to edit the values of CAT[2-5] in config.h...
10330 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10334 : see if this is a db.h system
10340 : Check db version.
10342 echo "Checking Berkeley DB version ..." >&4
10348 #include <sys/types.h>
10353 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10354 int Major, Minor, Patch ;
10355 unsigned long Version ;
10356 (void)db_version(&Major, &Minor, &Patch) ;
10357 printf("You have Berkeley DB Version 2 or greater\n");
10359 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10360 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10361 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10362 Major, Minor, Patch) ;
10364 /* check that db.h & libdb are compatible */
10365 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10366 printf("db.h and libdb are incompatible\n") ;
10370 printf("db.h and libdb are compatible\n") ;
10372 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10373 + DB_VERSION_PATCH ;
10375 /* needs to be >= 2.3.4 */
10376 if (Version < 2003004) {
10377 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10378 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10384 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10385 printf("You have Berkeley DB Version 1\n");
10386 exit(0); /* DB version < 2: the coast is clear. */
10388 exit(1); /* <db.h> not Berkeley DB? */
10394 if eval $compile && ./try; then
10395 echo 'Looks OK.' >&4
10397 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10401 : Remove db from list of libraries to use
10402 echo "Removing unusable -ldb from library list" >&4
10403 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10406 echo "libs = $libs" >&4
10416 : Check the return type needed for hash
10418 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10424 #include <sys/types.h>
10427 #ifndef DB_VERSION_MAJOR
10428 u_int32_t hash_cb (ptr, size)
10436 info.hash = hash_cb;
10440 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10441 if $contains warning try.out >>/dev/null 2>&1 ; then
10444 db_hashtype='u_int32_t'
10447 : XXX Maybe we should just give up here.
10448 db_hashtype=u_int32_t
10450 echo "Help: I can't seem to compile the db test program." >&4
10451 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10454 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10456 *) db_hashtype=u_int32_t
10461 : Check the return type needed for prefix
10463 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10469 #include <sys/types.h>
10472 #ifndef DB_VERSION_MAJOR
10473 size_t prefix_cb (key1, key2)
10481 info.prefix = prefix_cb;
10485 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10486 if $contains warning try.out >>/dev/null 2>&1 ; then
10487 db_prefixtype='int'
10489 db_prefixtype='size_t'
10492 db_prefixtype='size_t'
10493 : XXX Maybe we should just give up here.
10495 echo "Help: I can't seem to compile the db test program." >&4
10496 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10499 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10501 *) db_prefixtype='size_t'
10505 : check for void type
10507 echo "Checking to see how well your C compiler groks the void type..." >&4
10508 case "$voidflags" in
10510 $cat >try.c <<'EOCP'
10516 extern void moo(); /* function returning void */
10517 void (*goo)(); /* ptr to func returning void */
10519 void *hue; /* generic ptr */
10534 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10535 voidflags=$defvoidused
10536 echo "Good. It appears to support void to the level $package wants.">&4
10537 if $contains warning .out >/dev/null 2>&1; then
10538 echo "However, you might get some warnings that look like this:"
10542 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10543 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10544 echo "It supports 1..."
10545 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10546 echo "It also supports 2..."
10547 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10549 echo "And it supports 4 but not 8 definitely."
10551 echo "It doesn't support 4..."
10552 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10554 echo "But it supports 8."
10557 echo "Neither does it support 8."
10561 echo "It does not support 2..."
10562 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10564 echo "But it supports 4 and 8."
10566 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10568 echo "And it supports 4 but has not heard about 8."
10570 echo "However it supports 8 but not 4."
10575 echo "There is no support at all for void."
10580 case "$voidflags" in
10582 *) $cat >&4 <<'EOM'
10583 Support flag bits are:
10584 1: basic void declarations.
10585 2: arrays of pointers to functions returning void.
10586 4: operations between pointers to and addresses of void functions.
10587 8: generic void pointers.
10590 rp="Your void support flags add up to what?"
10598 : How can we generate normalized random numbers ?
10600 echo "Looking for a random number function..." >&4
10601 case "$randfunc" in
10603 if set drand48 val -f; eval $csym; $val; then
10605 echo "Good, found drand48()." >&4
10606 elif set random val -f; eval $csym; $val; then
10608 echo "OK, found random()." >&4
10611 echo "Yick, looks like I have to use rand()." >&4
10622 *-Dmy_rand=*|*-Dmy_srand=*)
10623 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10624 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10625 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10626 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10630 while $test "$cont"; do
10631 rp="Use which function to generate random numbers?"
10633 if $test "$ans" = "$dflt"; then
10639 if set $ans val -f; eval $csym; $val; then
10643 rp="I cannot find function $ans. Use that name anyway?"
10652 case "$randfunc" in
10654 drand01="drand48()"
10660 case "$randbits" in
10662 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10664 #$i_unistd I_UNISTD
10665 #$i_stdlib I_STDLIB
10668 # include <unistd.h>
10671 # include <stdlib.h>
10676 register unsigned long tmp;
10677 register unsigned long max = 0L;
10679 for (i = 1000; i; i--) {
10680 tmp = (unsigned long) $randfunc();
10681 if (tmp > max) max = tmp;
10683 for (i = 0; max; i++)
10689 if eval $compile_ok; then
10693 echo "(I can't seem to compile the test program...)"
10700 rp="How many bits does your $randfunc() function produce?"
10704 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10705 seedfunc="s$randfunc"
10706 randseedtype=unsigned
10710 rp="How many bits does your $randfunc() function produce?"
10713 seedfunc="s$randfunc"
10714 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10715 if set $seedfunc val -f; eval $csym; $val; then
10716 echo "(Using $seedfunc() to seed random generator)"
10718 echo "(Warning: no $seedfunc() to seed random generator)"
10721 randseedtype=unsigned
10729 echo "Determining whether or not we are on an EBCDIC system..." >&4
10730 $cat >tebcdic.c <<'EOM'
10733 if ('M'==0xd4) return 0;
10740 if eval $compile_ok; then
10742 echo "You have EBCDIC." >&4
10745 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10748 echo "I'm unable to compile the test program." >&4
10749 echo "I'll assume ASCII or some ISO Latin." >&4
10751 $rm -f tebcdic.c tebcdic
10755 : see what type file positions are declared as in the library
10756 rp="What is the type for file position used by fsetpos()?"
10757 set fpos_t fpostype long stdio.h sys/types.h
10760 : Store the full pathname to the sed program for use in the C program
10763 : see what type gids are declared as in the kernel
10765 echo "Looking for the type for group ids returned by getgid()."
10766 set gid_t gidtype xxx stdio.h sys/types.h
10770 xxx=`./findhdr sys/user.h`
10771 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10773 unsigned) dflt="$1 $2" ;;
10777 *) dflt="$gidtype";;
10780 gid_t) echo "gid_t found." ;;
10781 *) rp="What is the type for group ids returned by getgid()?"
10787 : see if getgroups exists
10788 set getgroups d_getgrps
10791 : see if setgroups exists
10792 set setgroups d_setgrps
10796 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10798 case "$d_getgrps$d_setgrps" in
10800 case "$groupstype" in
10801 '') dflt="$gidtype" ;;
10802 *) dflt="$groupstype" ;;
10805 What type of pointer is the second argument to getgroups() and setgroups()?
10806 Usually this is the same as group ids, $gidtype, but not always.
10809 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10813 *) groupstype="$gidtype";;
10816 : see what type lseek is declared as in the kernel
10817 rp="What is the type used for lseek's offset on this system?"
10818 set off_t lseektype long stdio.h sys/types.h
10822 $echo $n "Checking to see how big your file offsets are...$c" >&4
10824 #include <sys/types.h>
10828 printf("%d\n", sizeof($lseektype));
10832 if eval $compile_ok; then
10834 $echo " $lseeksize bytes." >&4
10838 echo "(I can't seem to compile the test program. Guessing...)"
10839 rp="What is the size of your file offsets (in bytes)?"
10846 echo "Checking if your $make program sets \$(MAKE)..." >&4
10847 case "$make_set_make" in
10849 $sed 's/^X //' > testmake.mak << 'EOF'
10851 X @echo 'maketemp="$(MAKE)"'
10853 case "`$make -f testmake.mak 2>/dev/null`" in
10854 *maketemp=*) make_set_make='#' ;;
10855 *) make_set_make="MAKE=$make" ;;
10857 $rm -f testmake.mak
10860 case "$make_set_make" in
10861 '#') echo "Yup, it does.";;
10862 *) echo "Nope, it doesn't.";;
10865 : see what type is used for mode_t
10866 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10867 set mode_t modetype int stdio.h sys/types.h
10870 : define a fucntion to check prototypes
10871 $cat > protochk <<EOSH
10874 optimize="$optimize"
10876 prototype="$prototype"
10881 $cat >> protochk <<'EOSH'
10886 while test $# -ge 2; do
10888 $define) echo "#include <$2>" >> try.c ;;
10889 literal) echo "$2" >> try.c ;;
10893 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
10894 cat >> try.c <<'EOCP'
10895 #ifdef CAN_PROTOTYPE
10896 #define _(args) args
10901 echo "$foo" >> try.c
10902 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10903 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10909 $eunicefix protochk
10911 : see what type is used for size_t
10912 rp="What is the type used for the length parameter for string functions?"
10913 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10916 : check for type of arguments to gethostbyaddr.
10917 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10918 case "$d_gethbyaddr" in
10922 Checking to see what type of arguments are accepted by gethostbyaddr().
10924 hdrs="$define sys/types.h
10925 $d_socket sys/socket.h
10926 $i_niin netinet/in.h
10928 $i_unistd unistd.h"
10929 : The first arg can 'char *' or 'void *'
10930 : The second arg is some of integral type
10931 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10932 for yyy in size_t long int; do
10933 case "$netdb_host_type" in
10934 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10935 if ./protochk "$try" $hdrs; then
10936 echo "Your system accepts $xxx for the first arg."
10937 echo "...and $yyy for the second arg."
10938 netdb_host_type="$xxx"
10939 netdb_hlen_type="$yyy"
10945 : In case none of those worked, prompt the user.
10946 case "$netdb_host_type" in
10947 '') rp='What is the type for the 1st argument to gethostbyaddr?'
10950 netdb_host_type=$ans
10951 rp='What is the type for the 2nd argument to gethostbyaddr?'
10954 netdb_hlen_type=$ans
10958 *) : no gethostbyaddr, so pick harmless defaults
10959 netdb_host_type='char *'
10960 netdb_hlen_type="$sizetype"
10963 # Remove the "const" if needed. -- but then we'll have a
10965 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10968 : check for type of argument to gethostbyname.
10969 if test "X$netdb_name_type" = X ; then
10970 case "$d_gethbyname" in
10974 Checking to see what type of argument is accepted by gethostbyname().
10976 hdrs="$define sys/types.h
10977 $d_socket sys/socket.h
10978 $i_niin netinet/in.h
10980 $i_unistd unistd.h"
10981 for xxx in "const char *" "char *"; do
10982 case "$netdb_name_type" in
10983 '') try="extern struct hostent *gethostbyname($xxx);"
10984 if ./protochk "$try" $hdrs; then
10985 echo "Your system accepts $xxx."
10986 netdb_name_type="$xxx"
10991 : In case none of those worked, prompt the user.
10992 case "$netdb_name_type" in
10993 '') rp='What is the type for the 1st argument to gethostbyname?'
10996 netdb_name_type=$ans
11000 *) : no gethostbyname, so pick harmless default
11001 netdb_name_type='char *'
11006 : check for type of 1st argument to getnetbyaddr.
11007 if test "X$netdb_net_type" = X ; then
11008 case "$d_getnbyaddr" in
11012 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11014 hdrs="$define sys/types.h
11015 $d_socket sys/socket.h
11016 $i_niin netinet/in.h
11018 $i_unistd unistd.h"
11019 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11020 case "$netdb_net_type" in
11021 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11022 if ./protochk "$try" $hdrs; then
11023 echo "Your system accepts $xxx."
11024 netdb_net_type="$xxx"
11029 : In case none of those worked, prompt the user.
11030 case "$netdb_net_type" in
11031 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11034 netdb_net_type=$ans
11038 *) : no getnetbyaddr, so pick harmless default
11039 netdb_net_type='long'
11043 : locate the preferred pager for this system
11057 '') dflt=/usr/ucb/more;;
11064 rp='What pager is used on your system?'
11068 : see what type pids are declared as in the kernel
11069 rp="What is the type of process ids on this system?"
11070 set pid_t pidtype int stdio.h sys/types.h
11073 : check for length of pointer
11077 $echo $n "Checking to see how big your pointers are...$c" >&4
11078 if test "$voidflags" -gt 7; then
11079 echo '#define VOID_PTR char *' > try.c
11081 echo '#define VOID_PTR void *' > try.c
11083 $cat >>try.c <<'EOCP'
11087 printf("%d\n", sizeof(VOID_PTR));
11092 if eval $compile_ok; then
11094 $echo " $ptrsize bytes." >&4
11097 echo "(I can't seem to compile the test program. Guessing...)" >&4
11098 rp="What is the size of a pointer (in bytes)?"
11106 : see if ar generates random libraries by itself
11108 echo "Checking how to generate random libraries on your machine..." >&4
11109 echo 'int bar1() { return bar2(); }' > bar1.c
11110 echo 'int bar2() { return 2; }' > bar2.c
11111 $cat > foo.c <<'EOP'
11112 main() { printf("%d\n", bar1()); exit(0); }
11114 $cc $ccflags -c bar1.c >/dev/null 2>&1
11115 $cc $ccflags -c bar2.c >/dev/null 2>&1
11116 $cc $ccflags -c foo.c >/dev/null 2>&1
11117 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11118 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11119 ./foobar >/dev/null 2>&1; then
11120 echo "$ar appears to generate random libraries itself."
11123 elif $ar ts bar$_a >/dev/null 2>&1 &&
11124 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11125 ./foobar >/dev/null 2>&1; then
11126 echo "a table of contents needs to be added with '$ar ts'."
11133 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11134 $test -f $ranlib || ranlib=''
11137 if $test -n "$ranlib"; then
11138 echo "your system has '$ranlib'; we'll use that."
11141 echo "your system doesn't seem to support random libraries"
11142 echo "so we'll use lorder and tsort to order the libraries."
11149 : check for type of arguments to select.
11150 case "$selecttype" in
11151 '') case "$d_select" in
11154 Checking to see what type of arguments are accepted by select().
11156 hdrs="$define sys/types.h
11157 $i_systime sys/time.h
11158 $i_sysselct sys/select.h
11159 $d_socket sys/socket.h"
11160 : The first arg can be int, unsigned, or size_t
11161 : The last arg may or may not be 'const'
11163 : void pointer has been seen but using that
11164 : breaks the selectminbits test
11165 for xxx in 'fd_set *' 'int *'; do
11166 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11167 for tmo in 'struct timeval *' 'const struct timeval *'; do
11169 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11170 if ./protochk "$try" $hdrs; then
11171 echo "Your system accepts $xxx."
11180 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11181 case "$d_fd_set" in
11182 $define) dflt="fd_set *" ;;
11191 *) : no select, so pick a harmless default
11198 : check for the select 'width'
11199 case "$selectminbits" in
11200 '') case "$d_select" in
11204 Checking to see on how many bits at a time your select() operates...
11207 #include <sys/types.h>
11209 #$i_systime I_SYS_TIME
11210 #$i_systimek I_SYS_TIME_KERNEL
11215 # ifdef I_SYS_TIME_KERNEL
11218 # include <sys/time.h>
11219 # ifdef I_SYS_TIME_KERNEL
11223 #$i_sysselct I_SYS_SELECT
11224 #ifdef I_SYS_SELECT
11225 #include <sys/select.h>
11229 #define S sizeof(*(b))
11231 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11232 #define NBITS (NBYTES * 8)
11241 fp = fopen("try.c", "r");
11247 b = ($selecttype)s;
11248 for (i = 0; i < NBITS; i++)
11252 select(fd + 1, b, 0, 0, &t);
11253 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11254 printf("%d\n", i + 1);
11259 if eval $compile_ok; then
11260 selectminbits=`./try`
11261 case "$selectminbits" in
11263 Cannot figure out on how many bits at a time your select() operates.
11264 I'll play safe and guess it is 32 bits.
11270 *) bits="$selectminbits bits" ;;
11272 echo "Your select() operates on $bits at a time." >&4
11274 rp='What is the minimum number of bits your select() operates on?'
11275 case "$byteorder" in
11276 1234|12345678) dflt=32 ;;
11281 selectminbits="$val"
11285 *) : no select, so pick a harmless default
11292 : Trace out the files included by signal.h, then look for SIGxxx names.
11293 : Remove SIGARRAYSIZE used by HPUX.
11294 : Remove SIGTYP void lines used by OS2.
11295 xxx=`echo '#include <signal.h>' |
11296 $cppstdin $cppminus $cppflags 2>/dev/null |
11297 $grep '^[ ]*#.*include' |
11298 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11299 : Check this list of files to be sure we have parsed the cpp output ok.
11300 : This will also avoid potentially non-existent files, such
11303 for xx in $xxx /dev/null ; do
11304 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11306 : If we have found no files, at least try signal.h
11307 case "$xxxfiles" in
11308 '') xxxfiles=`./findhdr signal.h` ;;
11311 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11312 print substr($2, 4, 20)
11314 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11315 print substr($3, 4, 20)
11317 : Append some common names just in case the awk scan failed.
11318 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11319 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11320 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11321 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11322 : generate a few handy files for later
11323 $cat > signal.c <<'EOCP'
11324 #include <sys/types.h>
11325 #include <signal.h>
11329 /* Strange style to avoid deeply-nested #if/#else/#endif */
11332 # define NSIG (_NSIG)
11338 # define NSIG (SIGMAX+1)
11344 # define NSIG (SIG_MAX+1)
11350 # define NSIG (MAXSIG+1)
11356 # define NSIG (MAX_SIG+1)
11361 # ifdef SIGARRAYSIZE
11362 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11368 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11372 /* Default to some arbitrary number that's big enough to get most
11373 of the common signals.
11379 printf("NSIG %d\n", NSIG);
11385 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11387 printf "#ifdef SIG"; printf $1; printf "\n"
11388 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11389 printf $1; printf ");\n"
11393 printf "#endif /* JUST_NSIG */\n";
11397 $cat >signal.awk <<'EOP'
11398 BEGIN { ndups = 0 }
11399 $1 ~ /^NSIG$/ { nsig = $2 }
11400 ($1 !~ /^NSIG$/) && (NF == 2) {
11401 if ($2 > maxsig) { maxsig = $2 }
11402 if (sig_name[$2]) {
11403 dup_name[ndups] = $1
11404 dup_num[ndups] = $2
11414 if (nsig == 0) { nsig = maxsig + 1 }
11415 for (n = 1; n < nsig; n++) {
11417 printf("%s %d\n", sig_name[n], sig_num[n])
11420 printf("NUM%d %d\n", n, n)
11423 for (n = 0; n < ndups; n++) {
11424 printf("%s %d\n", dup_name[n], dup_num[n])
11428 $cat >signal_cmd <<EOS
11430 if $test -s signal.lst; then
11431 echo "Using your existing signal.lst file"
11436 $cat >>signal_cmd <<'EOS'
11439 if eval $compile_ok; then
11440 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11442 echo "(I can't seem be able to compile the whole test program)" >&4
11443 echo "(I'll try it in little pieces.)" >&4
11444 set signal -DJUST_NSIG
11445 if eval $compile_ok; then
11446 ./signal$_exe > signal.nsg
11449 echo "I can't seem to figure out how many signals you have." >&4
11450 echo "Guessing 50." >&4
11451 echo 'NSIG 50' > signal.nsg
11453 : Now look at all the signal names, one at a time.
11454 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11455 $cat > signal.c <<EOCP
11456 #include <sys/types.h>
11457 #include <signal.h>
11460 printf("$xx %d\n", SIG${xx});
11465 if eval $compile; then
11466 echo "SIG${xx} found."
11467 ./signal$_exe >> signal.ls1
11469 echo "SIG${xx} NOT found."
11472 if $test -s signal.ls1; then
11473 $cat signal.nsg signal.ls1 |
11474 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11478 if $test -s signal.lst; then
11481 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11482 echo 'kill -l' >signal
11483 set X `csh -f <signal`
11487 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11489 echo $@ | $tr ' ' $trnl | \
11490 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11492 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11494 chmod a+x signal_cmd
11495 $eunicefix signal_cmd
11497 : generate list of signal names
11499 case "$sig_name_init" in
11501 *) case "$sig_num_init" in
11502 ''|*,*) doinit=yes ;;
11507 echo "Generating a list of signal names and numbers..." >&4
11509 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11510 sig_name="ZERO $sig_name"
11511 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11512 { printf "\"%s\", ", $1 }
11513 END { printf "0\n" }' signal.lst`
11514 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11515 sig_num="0 $sig_num"
11516 sig_num_init=`$awk 'BEGIN { printf "0, " }
11517 { printf "%d, ", $2}
11518 END { printf "0\n"}' signal.lst`
11521 echo "The following signals are available:"
11523 echo $sig_name | $awk \
11524 'BEGIN { linelen = 0 }
11526 for (i = 1; i <= NF; i++) {
11527 name = "SIG" $i " "
11528 linelen = linelen + length(name)
11529 if (linelen > 70) {
11531 linelen = length(name)
11537 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11539 : see what type is used for signed size_t
11540 set ssize_t ssizetype int stdio.h sys/types.h
11543 $cat > ssize.c <<EOM
11545 #include <sys/types.h>
11546 #define Size_t $sizetype
11547 #define SSize_t $dflt
11550 if (sizeof(Size_t) == sizeof(SSize_t))
11552 else if (sizeof(Size_t) == sizeof(int))
11561 if eval $compile_ok && ./ssize > /dev/null; then
11562 ssizetype=`./ssize`
11563 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11566 Help! I can't compile and run the ssize_t test program: please enlighten me!
11567 (This is probably a misconfiguration in your system or libraries, and
11568 you really ought to fix it. Still, I'll try anyway.)
11570 I need a type that is the same size as $sizetype, but is guaranteed to
11571 be signed. Common values are ssize_t, int and long.
11574 rp="What signed type is the same size as $sizetype?"
11578 $rm -f ssize ssize.*
11580 : see what type of char stdio uses.
11582 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11583 echo "Your stdio uses unsigned chars." >&4
11584 stdchar="unsigned char"
11586 echo "Your stdio uses signed chars." >&4
11590 : see if time exists
11592 if test "X$d_time" = X -o X"$timetype" = X; then
11593 if set time val -f d_time; eval $csym; $val; then
11594 echo 'time() found.' >&4
11596 rp="What is the type returned by time() on this system?"
11597 set time_t timetype long stdio.h sys/types.h
11600 echo 'time() not found, hope that will do.' >&4
11608 : see what type uids are declared as in the kernel
11610 echo "Looking for the type for user ids returned by getuid()."
11611 set uid_t uidtype xxx stdio.h sys/types.h
11615 xxx=`./findhdr sys/user.h`
11616 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11618 unsigned) dflt="$1 $2" ;;
11622 *) dflt="$uidtype";;
11625 uid_t) echo "uid_t found." ;;
11626 *) rp="What is the type for user ids returned by getuid()?"
11632 : see if dbm.h is available
11633 : see if dbmclose exists
11634 set dbmclose d_dbmclose
11637 case "$d_dbmclose" in
11647 *) set rpcsvc/dbm.h i_rpcsvcdbm
11652 *) echo "We won't be including <dbm.h>"
11662 : see if this is a sys/file.h system
11667 : do we need to include sys/file.h ?
11671 if $h_sysfile; then
11673 echo "We'll be including <sys/file.h>." >&4
11676 echo "We won't be including <sys/file.h>." >&4
11686 : see if fcntl.h is there
11691 : see if we can include fcntl.h
11697 echo "We'll be including <fcntl.h>." >&4
11700 if $h_sysfile; then
11701 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11703 echo "We won't be including <fcntl.h>." >&4
11715 : see if locale.h is available
11716 set locale.h i_locale
11719 : see if mach cthreads are available
11720 if test "X$usethreads" = "X$define"; then
11721 set mach/cthreads.h i_machcthr
11724 i_machcthr="$undef"
11729 : see if this is a math.h system
11733 : see if this is a mntent.h system
11734 set mntent.h i_mntent
11737 : see if ndbm.h is available
11742 : see if dbm_open exists
11743 set dbm_open d_dbm_open
11745 case "$d_dbm_open" in
11748 echo "We won't be including <ndbm.h>"
11757 : see if net/errno.h is available
11759 set net/errno.h val
11762 : Unfortunately, it causes problems on some systems. Arrgh.
11765 cat > try.c <<'EOM'
11768 #include <net/errno.h>
11774 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11775 echo "We'll be including <net/errno.h>." >&4
11777 echo "We won't be including <net/errno.h>." >&4
11786 : see if this is a poll.h system
11790 : get C preprocessor symbols handy
11792 $echo $n "Hmm... $c"
11793 echo $al | $tr ' ' $trnl >Cppsym.know
11794 $cat <<EOSS >Cppsym
11802 case "\$list\$#" in
11805 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11807 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11810 unknown="\$unknown \$sym"
11820 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11822 exit 0; _ _ _ _\1\\ \1\\
11825 echo "exit 1; _ _ _" >>Cppsym\$\$
11826 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11828 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11834 $rm -f Cppsym\$\$ Cppsym2\$\$
11839 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11841 : now check the C compiler for additional symbols
11847 for i in \`$cc -v -c tmp.c 2>&1\`
11850 -D*) echo "\$i" | $sed 's/^-D//';;
11851 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11858 ./ccsym > ccsym1.raw
11859 if $test -s ccsym1.raw; then
11860 $sort ccsym1.raw | $uniq >ccsym.raw
11862 mv ccsym1.raw ccsym.raw
11865 $awk '/\=/ { print $0; next }
11866 { print $0"=1" }' ccsym.raw >ccsym.list
11867 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11868 $comm -13 ccsym.true ccsym.list >ccsym.own
11869 $comm -12 ccsym.true ccsym.list >ccsym.com
11870 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11873 if $test -z ccsym.raw; then
11874 echo "Your C compiler doesn't seem to define any symbol!" >&4
11876 echo "However, your C preprocessor defines the following ones:"
11879 if $test -s ccsym.com; then
11880 echo "Your C compiler and pre-processor define these symbols:"
11881 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11884 $test "$silent" || sleep 1
11886 if $test -s ccsym.cpp; then
11887 $test "$also" && echo " "
11888 echo "Your C pre-processor ${also}defines the following $symbols:"
11889 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11891 $test "$silent" || sleep 1
11893 if $test -s ccsym.own; then
11894 $test "$also" && echo " "
11895 echo "Your C compiler ${also}defines the following cpp variables:"
11896 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11897 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11898 $test "$silent" || sleep 1
11903 : see if this is a termio system
11907 if $test `./findhdr termios.h`; then
11908 set tcsetattr i_termios
11914 "$define") echo "You have POSIX termios.h... good!" >&4;;
11915 *) if ./Cppsym pyr; then
11916 case "`/bin/universe`" in
11917 ucb) if $test `./findhdr sgtty.h`; then
11919 echo "<sgtty.h> found." >&4
11921 echo "System is pyramid with BSD universe."
11922 echo "<sgtty.h> not found--you could have problems." >&4
11924 *) if $test `./findhdr termio.h`; then
11926 echo "<termio.h> found." >&4
11928 echo "System is pyramid with USG universe."
11929 echo "<termio.h> not found--you could have problems." >&4
11933 if $test `./findhdr termio.h`; then
11934 echo "<termio.h> found." >&4
11936 elif $test `./findhdr sgtty.h`; then
11937 echo "<sgtty.h> found." >&4
11940 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11943 if $test `./findhdr sgtty.h`; then
11944 echo "<sgtty.h> found." >&4
11946 elif $test `./findhdr termio.h`; then
11947 echo "<termio.h> found." >&4
11950 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11954 set i_termio; eval $setvar
11955 val=$val2; set i_sgtty; eval $setvar
11956 val=$val3; set i_termios; eval $setvar
11958 : see if stdarg is available
11960 if $test `./findhdr stdarg.h`; then
11961 echo "<stdarg.h> found." >&4
11964 echo "<stdarg.h> NOT found." >&4
11968 : see if varags is available
11970 if $test `./findhdr varargs.h`; then
11971 echo "<varargs.h> found." >&4
11973 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11976 : set up the varargs testing programs
11977 $cat > varargs.c <<EOP
11979 #include <stdarg.h>
11982 #include <varargs.h>
11986 int f(char *p, ...)
12000 p = va_arg(ap, char *);
12005 $cat > varargs <<EOP
12007 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12016 : now check which varargs header should be included
12021 if `./varargs I_STDARG`; then
12023 elif `./varargs I_VARARGS`; then
12028 if `./varargs I_VARARGS`; then
12035 echo "I could not find the definition for va_dcl... You have problems..." >&4
12036 val="$undef"; set i_stdarg; eval $setvar
12037 val="$undef"; set i_varargs; eval $setvar
12042 case "$i_varhdr" in
12044 val="$define"; set i_stdarg; eval $setvar
12045 val="$undef"; set i_varargs; eval $setvar
12048 val="$undef"; set i_stdarg; eval $setvar
12049 val="$define"; set i_varargs; eval $setvar
12052 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12056 : see if stddef is available
12057 set stddef.h i_stddef
12060 : see if sys/access.h is available
12061 set sys/access.h i_sysaccess
12064 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12065 set sys/filio.h i_sysfilio
12068 if $test `./findhdr sys/ioctl.h`; then
12070 echo '<sys/ioctl.h> found.' >&4
12073 if $test $i_sysfilio = "$define"; then
12074 echo '<sys/ioctl.h> NOT found.' >&4
12076 $test $i_sgtty = "$define" && xxx="sgtty.h"
12077 $test $i_termio = "$define" && xxx="termio.h"
12078 $test $i_termios = "$define" && xxx="termios.h"
12079 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12085 : see if sys/resource.h has to be included
12086 set sys/resource.h i_sysresrc
12089 : see if sys/security.h is available
12090 set sys/security.h i_syssecrt
12093 : see if this is a sys/statvfs.h system
12094 set sys/statvfs.h i_sysstatvfs
12097 : see if this is a sys/un.h system
12098 set sys/un.h i_sysun
12101 : see if this is a syswait system
12102 set sys/wait.h i_syswait
12105 : see if this is an utime system
12106 set utime.h i_utime
12109 : see if this is a values.h system
12110 set values.h i_values
12113 : see if this is a vfork system
12116 set vfork.h i_vfork
12124 : see if gdbm.h is available
12129 : see if gdbm_open exists
12130 set gdbm_open d_gdbm_open
12132 case "$d_gdbm_open" in
12135 echo "We won't be including <gdbm.h>"
12145 echo "Looking for extensions..." >&4
12148 : If we are using the old config.sh, known_extensions may contain
12149 : old or inaccurate or duplicate values.
12150 known_extensions=''
12151 nonxs_extensions=''
12152 : We do not use find because it might not be available.
12153 : We do not just use MANIFEST because the user may have dropped
12154 : some additional extensions into the source tree and expect them
12158 DynaLoader|dynaload) ;;
12159 *) if $test -f $xxx/$xxx.xs; then
12160 known_extensions="$known_extensions $xxx"
12161 elif $test -f $xxx/Makefile.PL; then
12162 nonxs_extensions="$nonxs_extensions $xxx"
12164 if $test -d $xxx; then
12165 # Look for nested extensions, eg. Devel/Dprof.
12168 if $test -f $yyy/$yyy.xs; then
12169 known_extensions="$known_extensions $xxx/$yyy"
12170 elif $test -f $yyy/Makefile.PL; then
12171 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12180 set X $nonxs_extensions
12182 nonxs_extensions="$*"
12183 set X $known_extensions
12185 known_extensions="$*"
12188 : Now see which are supported on this system.
12190 for xxx in $known_extensions ; do
12194 $define) avail_ext="$avail_ext $xxx" ;;
12197 GDBM_File|gdbm_fil)
12199 $define) avail_ext="$avail_ext $xxx" ;;
12202 NDBM_File|ndbm_fil)
12204 $define) avail_ext="$avail_ext $xxx" ;;
12207 ODBM_File|odbm_fil)
12208 case "${i_dbm}${i_rpcsvcdbm}" in
12209 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12213 case "$useposix" in
12214 true|define|y) avail_ext="$avail_ext $xxx" ;;
12218 case "$useopcode" in
12219 true|define|y) avail_ext="$avail_ext $xxx" ;;
12223 case "$d_socket" in
12224 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12228 case "$usethreads" in
12229 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12233 : XXX Do we need a useipcsysv variable here
12234 case "${d_msg}${d_sem}${d_shm}" in
12235 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12238 *) avail_ext="$avail_ext $xxx"
12247 : Now see which nonxs extensions are supported on this system.
12248 : For now assume all are.
12250 for xxx in $nonxs_extensions ; do
12252 *) nonxs_ext="$nonxs_ext $xxx"
12264 A number of extensions are supplied with $package. You may choose to
12265 compile these extensions for dynamic loading (the default), compile
12266 them into the $package executable (static loading), or not include
12267 them at all. Answer "none" to include no extensions.
12268 Note that DynaLoader is always built and need not be mentioned here.
12271 case "$dynamic_ext" in
12272 '') dflt="$avail_ext" ;;
12273 *) dflt="$dynamic_ext"
12274 # Perhaps we are reusing an old out-of-date config.sh.
12277 if test X"$dynamic_ext" != X"$avail_ext"; then
12279 NOTICE: Your previous config.sh list may be incorrect.
12280 The extensions now available to you are
12282 but the default list from your previous config.sh is
12294 rp="What extensions do you wish to load dynamically?"
12297 none) dynamic_ext=' ' ;;
12298 *) dynamic_ext="$ans" ;;
12301 case "$static_ext" in
12303 : Exclude those already listed in dynamic linking
12305 for xxx in $avail_ext; do
12306 case " $dynamic_ext " in
12308 *) dflt="$dflt $xxx" ;;
12315 *) dflt="$static_ext"
12322 rp="What extensions do you wish to load statically?"
12325 none) static_ext=' ' ;;
12326 *) static_ext="$ans" ;;
12331 A number of extensions are supplied with $package. Answer "none"
12332 to include no extensions.
12333 Note that DynaLoader is always built and need not be mentioned here.
12336 case "$static_ext" in
12337 '') dflt="$avail_ext" ;;
12338 *) dflt="$static_ext"
12339 # Perhaps we are reusing an old out-of-date config.sh.
12342 if test X"$static_ext" != X"$avail_ext"; then
12344 NOTICE: Your previous config.sh list may be incorrect.
12345 The extensions now available to you are
12347 but the default list from your previous config.sh is
12356 : Exclude those that are not xs extensions
12360 rp="What extensions do you wish to include?"
12363 none) static_ext=' ' ;;
12364 *) static_ext="$ans" ;;
12369 set X $dynamic_ext $static_ext $nonxs_ext
12373 : Remove build directory name from cppstdin so it can be used from
12374 : either the present location or the final installed location.
12376 : Get out of the UU directory to get correct path name.
12378 case "$cppstdin" in
12380 echo "Stripping down cppstdin path name"
12386 : end of configuration questions
12388 echo "End of configuration questions."
12391 : back to where it started
12392 if test -d ../UU; then
12396 : configuration may be patched via a 'config.over' file
12397 if $test -f config.over; then
12400 rp='I see a config.over file. Do you wish to load it?'
12403 n*) echo "OK, I'll ignore it.";;
12405 echo "Configuration override changes have been loaded."
12410 : in case they want portability, strip down executable paths
12411 case "$d_portable" in
12414 echo "Stripping down executable paths..." >&4
12415 for file in $loclist $trylist; do
12416 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12417 eval $file="\$file"
12423 : create config.sh file
12425 echo "Creating config.sh..." >&4
12426 $spitshell <<EOT >config.sh
12429 # This file was produced by running the Configure script. It holds all the
12430 # definitions figured out by Configure. Should you modify one of these values,
12431 # do not forget to propagate your changes by running "Configure -der". You may
12432 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12435 # Package name : $package
12436 # Source directory : $src
12437 # Configuration time: $cf_time
12438 # Configured by : $cf_by
12439 # Target system : $myuname
12449 Revision='$Revision'
12456 alignbytes='$alignbytes'
12457 ansi2knr='$ansi2knr'
12458 aphostname='$aphostname'
12459 apiversion='$apiversion'
12462 archlibexp='$archlibexp'
12463 archname64='$archname64'
12464 archname='$archname'
12465 archobjs='$archobjs'
12473 byteorder='$byteorder'
12475 castflags='$castflags'
12478 cccdlflags='$cccdlflags'
12479 ccdlflags='$ccdlflags'
12482 cf_email='$cf_email'
12487 clocktype='$clocktype'
12489 compress='$compress'
12490 contains='$contains'
12494 cpp_stuff='$cpp_stuff'
12495 cppflags='$cppflags'
12497 cppminus='$cppminus'
12499 cppstdin='$cppstdin'
12500 cryptlib='$cryptlib'
12502 d_Gconvert='$d_Gconvert'
12503 d_access='$d_access'
12504 d_accessx='$d_accessx'
12506 d_archlib='$d_archlib'
12507 d_attribut='$d_attribut'
12511 d_bsdgetpgrp='$d_bsdgetpgrp'
12512 d_bsdsetpgrp='$d_bsdsetpgrp'
12514 d_casti32='$d_casti32'
12515 d_castneg='$d_castneg'
12516 d_charvspr='$d_charvspr'
12518 d_chroot='$d_chroot'
12519 d_chsize='$d_chsize'
12520 d_closedir='$d_closedir'
12521 d_cmsghdr_s='$d_cmsghdr_s'
12525 d_cuserid='$d_cuserid'
12526 d_dbl_dig='$d_dbl_dig'
12527 d_dbmclose64='$d_dbmclose64'
12528 d_dbminit64='$d_dbminit64'
12529 d_delete64='$d_delete64'
12530 d_difftime='$d_difftime'
12531 d_dirent64_s='$d_dirent64_s'
12532 d_dirnamlen='$d_dirnamlen'
12533 d_dlerror='$d_dlerror'
12534 d_dlopen='$d_dlopen'
12535 d_dlsymun='$d_dlsymun'
12536 d_dosuid='$d_dosuid'
12537 d_drand48proto='$d_drand48proto'
12539 d_eaccess='$d_eaccess'
12540 d_endgrent='$d_endgrent'
12541 d_endhent='$d_endhent'
12542 d_endnent='$d_endnent'
12543 d_endpent='$d_endpent'
12544 d_endpwent='$d_endpwent'
12545 d_endsent='$d_endsent'
12546 d_eofnblk='$d_eofnblk'
12547 d_eunice='$d_eunice'
12548 d_fchmod='$d_fchmod'
12549 d_fchown='$d_fchown'
12551 d_fd_macros='$d_fd_macros'
12552 d_fd_set='$d_fd_set'
12553 d_fds_bits='$d_fds_bits'
12554 d_fetch64='$d_fetch64'
12555 d_fgetpos64='$d_fgetpos64'
12556 d_fgetpos='$d_fgetpos'
12557 d_firstkey64='$d_firstkey64'
12558 d_flexfnam='$d_flexfnam'
12559 d_flock64_s='$d_flock64_s'
12561 d_fopen64='$d_fopen64'
12563 d_fpathconf='$d_fpathconf'
12564 d_freopen64='$d_freopen64'
12565 d_fseek64='$d_fseek64'
12566 d_fseeko64='$d_fseeko64'
12567 d_fseeko='$d_fseeko'
12568 d_fsetpos64='$d_fsetpos64'
12569 d_fsetpos='$d_fsetpos'
12570 d_fstat64='$d_fstat64'
12571 d_fstatfs='$d_fstatfs'
12572 d_fstatvfs='$d_fstatvfs'
12573 d_ftell64='$d_ftell64'
12574 d_ftello64='$d_ftello64'
12575 d_ftello='$d_ftello'
12577 d_ftruncate64='$d_ftruncate64'
12578 d_getgrent='$d_getgrent'
12579 d_getgrps='$d_getgrps'
12580 d_gethbyaddr='$d_gethbyaddr'
12581 d_gethbyname='$d_gethbyname'
12582 d_gethent='$d_gethent'
12583 d_gethname='$d_gethname'
12584 d_gethostprotos='$d_gethostprotos'
12585 d_getlogin='$d_getlogin'
12586 d_getnbyaddr='$d_getnbyaddr'
12587 d_getnbyname='$d_getnbyname'
12588 d_getnent='$d_getnent'
12589 d_getnetprotos='$d_getnetprotos'
12590 d_getpbyname='$d_getpbyname'
12591 d_getpbynumber='$d_getpbynumber'
12592 d_getpent='$d_getpent'
12593 d_getpgid='$d_getpgid'
12594 d_getpgrp2='$d_getpgrp2'
12595 d_getpgrp='$d_getpgrp'
12596 d_getppid='$d_getppid'
12597 d_getprior='$d_getprior'
12598 d_getprotoprotos='$d_getprotoprotos'
12599 d_getpwent='$d_getpwent'
12600 d_getsbyname='$d_getsbyname'
12601 d_getsbyport='$d_getsbyport'
12602 d_getsent='$d_getsent'
12603 d_getservprotos='$d_getservprotos'
12604 d_gettimeod='$d_gettimeod'
12605 d_gnulibc='$d_gnulibc'
12606 d_grpasswd='$d_grpasswd'
12609 d_inetaton='$d_inetaton'
12610 d_ino64t='$d_ino64t'
12611 d_int64t='$d_int64t'
12612 d_iovec_s='$d_iovec_s'
12613 d_isascii='$d_isascii'
12614 d_killpg='$d_killpg'
12615 d_lchown='$d_lchown'
12617 d_locconv='$d_locconv'
12618 d_lockf64='$d_lockf64'
12620 d_longdbl='$d_longdbl'
12621 d_longlong='$d_longlong'
12622 d_lseek64='$d_lseek64'
12623 d_lstat64='$d_lstat64'
12626 d_mbstowcs='$d_mbstowcs'
12627 d_mbtowc='$d_mbtowc'
12628 d_memcmp='$d_memcmp'
12629 d_memcpy='$d_memcpy'
12630 d_memmove='$d_memmove'
12631 d_memset='$d_memset'
12633 d_mkfifo='$d_mkfifo'
12634 d_mktime='$d_mktime'
12636 d_msg_ctrunc='$d_msg_ctrunc'
12637 d_msg_dontroute='$d_msg_dontroute'
12638 d_msg_oob='$d_msg_oob'
12639 d_msg_peek='$d_msg_peek'
12640 d_msg_proxy='$d_msg_proxy'
12641 d_msgctl='$d_msgctl'
12642 d_msgget='$d_msgget'
12643 d_msghdr_s='$d_msghdr_s'
12644 d_msgrcv='$d_msgrcv'
12645 d_msgsnd='$d_msgsnd'
12646 d_mymalloc='$d_mymalloc'
12647 d_nextkey64='$d_nextkey64'
12649 d_off64t='$d_off64t'
12650 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12651 d_oldpthreads='$d_oldpthreads'
12652 d_oldsock='$d_oldsock'
12654 d_open64='$d_open64'
12655 d_opendir64='$d_opendir64'
12656 d_pathconf='$d_pathconf'
12658 d_phostname='$d_phostname'
12661 d_portable='$d_portable'
12662 d_pthread_yield='$d_pthread_yield'
12664 d_pwchange='$d_pwchange'
12665 d_pwclass='$d_pwclass'
12666 d_pwcomment='$d_pwcomment'
12667 d_pwexpire='$d_pwexpire'
12668 d_pwgecos='$d_pwgecos'
12669 d_pwpasswd='$d_pwpasswd'
12670 d_pwquota='$d_pwquota'
12671 d_readdir64='$d_readdir64'
12672 d_readdir='$d_readdir'
12673 d_readlink='$d_readlink'
12675 d_recvmsg='$d_recvmsg'
12676 d_rename='$d_rename'
12677 d_rewinddir='$d_rewinddir'
12679 d_safebcpy='$d_safebcpy'
12680 d_safemcpy='$d_safemcpy'
12681 d_sanemcmp='$d_sanemcmp'
12682 d_sched_yield='$d_sched_yield'
12683 d_scm_rights='$d_scm_rights'
12684 d_seekdir64='$d_seekdir64'
12685 d_seekdir='$d_seekdir'
12686 d_select='$d_select'
12688 d_semctl='$d_semctl'
12689 d_semctl_semid_ds='$d_semctl_semid_ds'
12690 d_semctl_semun='$d_semctl_semun'
12691 d_semget='$d_semget'
12693 d_sendmsg='$d_sendmsg'
12694 d_setegid='$d_setegid'
12695 d_seteuid='$d_seteuid'
12696 d_setgrent='$d_setgrent'
12697 d_setgrps='$d_setgrps'
12698 d_sethent='$d_sethent'
12699 d_setlinebuf='$d_setlinebuf'
12700 d_setlocale='$d_setlocale'
12701 d_setnent='$d_setnent'
12702 d_setpent='$d_setpent'
12703 d_setpgid='$d_setpgid'
12704 d_setpgrp2='$d_setpgrp2'
12705 d_setpgrp='$d_setpgrp'
12706 d_setprior='$d_setprior'
12707 d_setpwent='$d_setpwent'
12708 d_setregid='$d_setregid'
12709 d_setresgid='$d_setresgid'
12710 d_setresuid='$d_setresuid'
12711 d_setreuid='$d_setreuid'
12712 d_setrgid='$d_setrgid'
12713 d_setruid='$d_setruid'
12714 d_setsent='$d_setsent'
12715 d_setsid='$d_setsid'
12716 d_setvbuf='$d_setvbuf'
12720 d_shmatprototype='$d_shmatprototype'
12721 d_shmctl='$d_shmctl'
12723 d_shmget='$d_shmget'
12724 d_sigaction='$d_sigaction'
12725 d_sigsetjmp='$d_sigsetjmp'
12726 d_socket='$d_socket'
12727 d_sockpair='$d_sockpair'
12728 d_stat64='$d_stat64'
12729 d_statblks='$d_statblks'
12730 d_statfs='$d_statfs'
12731 d_statfsflags='$d_statfsflags'
12732 d_statvfs='$d_statvfs'
12733 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12734 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12735 d_stdiobase='$d_stdiobase'
12736 d_stdstdio='$d_stdstdio'
12737 d_store64='$d_store64'
12738 d_strchr='$d_strchr'
12739 d_strcoll='$d_strcoll'
12740 d_strctcpy='$d_strctcpy'
12741 d_strerrm='$d_strerrm'
12742 d_strerror='$d_strerror'
12743 d_strtod='$d_strtod'
12744 d_strtol='$d_strtol'
12745 d_strtoul='$d_strtoul'
12746 d_strxfrm='$d_strxfrm'
12747 d_suidsafe='$d_suidsafe'
12748 d_symlink='$d_symlink'
12749 d_syscall='$d_syscall'
12750 d_sysconf='$d_sysconf'
12751 d_sysernlst='$d_sysernlst'
12752 d_syserrlst='$d_syserrlst'
12753 d_system='$d_system'
12754 d_tcgetpgrp='$d_tcgetpgrp'
12755 d_tcsetpgrp='$d_tcsetpgrp'
12756 d_telldir64='$d_telldir64'
12757 d_telldir='$d_telldir'
12760 d_tmpfile64='$d_tmpfile64'
12761 d_truncate64='$d_truncate64'
12762 d_truncate='$d_truncate'
12763 d_tzname='$d_tzname'
12766 d_union_semun='$d_union_semun'
12768 d_void_closedir='$d_void_closedir'
12769 d_voidsig='$d_voidsig'
12770 d_voidtty='$d_voidtty'
12771 d_volatile='$d_volatile'
12772 d_vprintf='$d_vprintf'
12774 d_waitpid='$d_waitpid'
12775 d_wcstombs='$d_wcstombs'
12776 d_wctomb='$d_wctomb'
12777 d_writev='$d_writev'
12780 db_hashtype='$db_hashtype'
12781 db_prefixtype='$db_prefixtype'
12782 defvoidused='$defvoidused'
12783 direntrytype='$direntrytype'
12786 doublesize='$doublesize'
12788 dynamic_ext='$dynamic_ext'
12794 eunicefix='$eunicefix'
12797 extensions='$extensions'
12799 firstmakefile='$firstmakefile'
12801 fpostype='$fpostype'
12802 freetype='$freetype'
12803 full_csh='$full_csh'
12804 full_sed='$full_sed'
12805 gccversion='$gccversion'
12809 groupcat='$groupcat'
12810 groupstype='$groupstype'
12813 h_sysfile='$h_sysfile'
12817 i_arpainet='$i_arpainet'
12818 i_bsdioctl='$i_bsdioctl'
12821 i_dirent='$i_dirent'
12828 i_inttypes='$i_inttypes'
12829 i_limits='$i_limits'
12830 i_locale='$i_locale'
12831 i_machcthr='$i_machcthr'
12832 i_malloc='$i_malloc'
12834 i_memory='$i_memory'
12835 i_mntent='$i_mntent'
12838 i_neterrno='$i_neterrno'
12842 i_rpcsvcdbm='$i_rpcsvcdbm'
12845 i_stdarg='$i_stdarg'
12846 i_stddef='$i_stddef'
12847 i_stdlib='$i_stdlib'
12848 i_string='$i_string'
12849 i_sysaccess='$i_sysaccess'
12850 i_sysdir='$i_sysdir'
12851 i_sysfile='$i_sysfile'
12852 i_sysfilio='$i_sysfilio'
12854 i_sysioctl='$i_sysioctl'
12855 i_sysmount='$i_sysmount'
12856 i_sysndir='$i_sysndir'
12857 i_sysparam='$i_sysparam'
12858 i_sysresrc='$i_sysresrc'
12859 i_syssecrt='$i_syssecrt'
12860 i_sysselct='$i_sysselct'
12861 i_syssockio='$i_syssockio'
12862 i_sysstat='$i_sysstat'
12863 i_sysstatvfs='$i_sysstatvfs'
12864 i_systime='$i_systime'
12865 i_systimek='$i_systimek'
12866 i_systimes='$i_systimes'
12867 i_systypes='$i_systypes'
12868 i_sysuio='$i_sysuio'
12870 i_syswait='$i_syswait'
12871 i_termio='$i_termio'
12872 i_termios='$i_termios'
12874 i_unistd='$i_unistd'
12876 i_values='$i_values'
12877 i_varargs='$i_varargs'
12878 i_varhdr='$i_varhdr'
12880 ignore_versioned_solibs='$ignore_versioned_solibs'
12883 installarchlib='$installarchlib'
12884 installbin='$installbin'
12885 installman1dir='$installman1dir'
12886 installman3dir='$installman3dir'
12887 installprivlib='$installprivlib'
12888 installscript='$installscript'
12889 installsitearch='$installsitearch'
12890 installsitelib='$installsitelib'
12891 installusrbinperl='$installusrbinperl'
12893 known_extensions='$known_extensions'
12897 lddlflags='$lddlflags'
12905 libswanted='$libswanted'
12911 locincpth='$locincpth'
12912 loclibpth='$loclibpth'
12913 longdblsize='$longdblsize'
12914 longlongsize='$longlongsize'
12915 longsize='$longsize'
12919 lseeksize='$lseeksize'
12920 lseektype='$lseektype'
12924 make_set_make='$make_set_make'
12925 mallocobj='$mallocobj'
12926 mallocsrc='$mallocsrc'
12927 malloctype='$malloctype'
12929 man1direxp='$man1direxp'
12932 man3direxp='$man3direxp'
12936 mips_type='$mips_type'
12939 modetype='$modetype'
12942 myarchname='$myarchname'
12943 mydomain='$mydomain'
12944 myhostname='$myhostname'
12947 netdb_hlen_type='$netdb_hlen_type'
12948 netdb_host_type='$netdb_host_type'
12949 netdb_name_type='$netdb_name_type'
12950 netdb_net_type='$netdb_net_type'
12953 nm_so_opt='$nm_so_opt'
12954 nonxs_ext='$nonxs_ext'
12956 o_nonblock='$o_nonblock'
12958 old_pthread_create_joinable='$old_pthread_create_joinable'
12959 optimize='$optimize'
12960 orderlib='$orderlib'
12966 patchlevel='$patchlevel'
12967 path_sep='$path_sep'
12969 perladmin='$perladmin'
12970 perlpath='$perlpath'
12972 phostname='$phostname'
12978 prefixexp='$prefixexp'
12980 privlibexp='$privlibexp'
12981 prototype='$prototype'
12983 randbits='$randbits'
12984 randfunc='$randfunc'
12985 randseedtype='$randseedtype'
12987 rd_nodata='$rd_nodata'
12991 sched_yield='$sched_yield'
12992 scriptdir='$scriptdir'
12993 scriptdirexp='$scriptdirexp'
12995 seedfunc='$seedfunc'
12996 selectminbits='$selectminbits'
12997 selecttype='$selecttype'
12998 sendmail='$sendmail'
13001 sharpbang='$sharpbang'
13002 shmattype='$shmattype'
13003 shortsize='$shortsize'
13006 sig_name='$sig_name'
13007 sig_name_init='$sig_name_init'
13009 sig_num_init='$sig_num_init'
13010 signal_t='$signal_t'
13011 sitearch='$sitearch'
13012 sitearchexp='$sitearchexp'
13014 sitelibexp='$sitelibexp'
13015 sizetype='$sizetype'
13020 sockethdr='$sockethdr'
13021 socketlib='$socketlib'
13023 spackage='$spackage'
13024 spitshell='$spitshell'
13027 ssizetype='$ssizetype'
13028 startperl='$startperl'
13030 static_ext='$static_ext'
13032 stdio_base='$stdio_base'
13033 stdio_bufsiz='$stdio_bufsiz'
13034 stdio_cnt='$stdio_cnt'
13035 stdio_filbuf='$stdio_filbuf'
13036 stdio_ptr='$stdio_ptr'
13039 subversion='$subversion'
13046 timeincl='$timeincl'
13047 timetype='$timetype'
13055 use64bits='$use64bits'
13057 usemultiplicity='$usemultiplicity'
13058 usemymalloc='$usemymalloc'
13060 useopcode='$useopcode'
13061 useperlio='$useperlio'
13062 useposix='$useposix'
13064 useshrplib='$useshrplib'
13065 usethreads='$usethreads'
13066 usevfork='$usevfork'
13071 voidflags='$voidflags'
13077 : Add in command line options if available
13078 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13080 : add special variables
13081 $test -f $src/patchlevel.h && \
13082 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13083 echo "CONFIG=true" >>config.sh
13085 : propagate old symbols
13086 if $test -f UU/config.sh; then
13087 <UU/config.sh sort | uniq >UU/oldconfig.sh
13088 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13089 sort | uniq -u >UU/oldsyms
13090 set X `cat UU/oldsyms`
13096 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13098 echo "# Variables propagated from previous config.sh file." >>config.sh
13099 for sym in `cat UU/oldsyms`; do
13100 echo " Propagating $hint variable "'$'"$sym..."
13101 eval 'tmp="$'"${sym}"'"'
13103 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13109 : Finish up by extracting the .SH files
13123 If you'd like to make any changes to the config.sh file before I begin
13124 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13127 rp="Press return or use a shell escape to edit config.sh:"
13132 *) : in case they cannot read
13133 sh 1>&4 -c "$ans";;
13138 : if this fails, just run all the .SH files by hand
13145 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13152 Now you need to generate make dependencies by running "$make depend".
13153 You might prefer to run it in background: "$make depend > makedepend.out &"
13154 It can take a while, so you might not want to run it right now.
13159 rp="Run $make depend now?"
13163 $make depend && echo "Now you must run a $make."
13166 echo "You must run '$make depend' then '$make'."
13169 elif test -f [Mm]akefile; then
13171 echo "Now you must run a $make."
13176 if $test -f Policy.sh; then
13179 If you compile $package on a different machine or from a different object
13180 directory, copy the Policy.sh file from this object directory to the
13181 new one before you run Configure -- this will help you with most of
13182 the policy defaults.
13186 if $test -f config.msg; then
13187 echo "Hmm. I also noted the following information while running:"
13189 $cat config.msg >&4
13192 $rm -f kit*isdone ark*isdone