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 Thu Jan 21 10:23:50 EET 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
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 (Jarkko Hietaniemi) at jhi@iki.fi 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 (jhi@iki.fi).
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 (jhi@iki.fi) 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 jhi@iki.fi
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
5173 linux|irix*) dflt='-shared' ;;
5174 next) dflt='none' ;;
5175 solaris) dflt='-G' ;;
5176 sunos) dflt='-assert nodefinitions' ;;
5177 svr4*|esix*) dflt="-G $ldflags" ;;
5181 *) dflt="$lddlflags" ;;
5184 : Try to guess additional flags to pick up local libraries.
5185 : Be careful not to append to a plain 'none'
5189 for thisflag in $ldflags; do
5194 *) dflt="$dflt $thisflag" ;;
5201 ''|' ') dflt='none' ;;
5204 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
5207 none) lddlflags=' ' ;;
5208 *) lddlflags="$ans" ;;
5213 Some systems may require passing special flags to $cc to indicate that
5214 the resulting executable will use dynamic linking. To use no flags,
5218 case "$ccdlflags" in
5219 '') case "$osname" in
5220 hpux) dflt='-Wl,-E' ;;
5221 linux) dflt='-rdynamic' ;;
5222 next) dflt='none' ;;
5223 sunos) dflt='none' ;;
5227 *) dflt="$ccdlflags" ;;
5229 rp="Any special flags to pass to $cc to use dynamic loading?"
5232 none) ccdlflags=' ' ;;
5233 *) ccdlflags="$ans" ;;
5247 # No dynamic loading being used, so don't bother even to prompt.
5250 *) case "$useshrplib" in
5251 '') case "$osname" in
5252 svr4*|dgux|dynixptx|esix|powerux)
5254 also='Building a shared libperl is required for dynamic loading to work on your system.'
5259 also='Building a shared libperl is needed for MAB support.'
5277 The perl executable is normally obtained by linking perlmain.c with
5278 libperl${_a}, any static extensions (usually just DynaLoader), and
5279 any other libraries needed on this system (such as -lm, etc.). Since
5280 your system supports dynamic loading, it is probably possible to build
5281 a shared libperl.$so. If you will have more than one executable linked
5282 to libperl.$so, this will significantly reduce the size of each
5283 executable, but it may have a noticeable affect on performance. The
5284 default is probably sensible for your system.
5288 rp="Build a shared libperl.$so (y/n)"
5293 # Why does next4 have to be so different?
5294 case "${osname}${osvers}" in
5295 next4*) xxx='DYLD_LIBRARY_PATH' ;;
5296 os2*) xxx='' ;; # Nothing special needed.
5297 *) xxx='LD_LIBRARY_PATH' ;;
5299 if test X"$xxx" != "X"; then
5300 $cat <<EOM | $tee -a ../config.msg >&4
5302 To build perl, you must add the current working directory to your
5303 $xxx environment variable before running make. You can do
5305 $xxx=\`pwd\`:\$$xxx; export $xxx
5306 for Bourne-style shells, or
5308 for Csh-style shells. You *MUST* do this before running make.
5313 *) useshrplib='false' ;;
5318 case "$useshrplib" in
5322 # Figure out a good name for libperl.so. Since it gets stored in
5323 # a version-specific architecture-dependent library, the version
5324 # number isn't really that important, except for making cc/ld happy.
5326 # A name such as libperl.so.3.1
5327 majmin="libperl.$so.$patchlevel.$subversion"
5328 # A name such as libperl.so.301
5329 majonly=`echo $patchlevel $subversion |
5330 $awk '{printf "%d%02d", $1, $2}'`
5331 majonly=libperl.$so.$majonly
5332 # I'd prefer to keep the os-specific stuff here to a minimum, and
5333 # rely on figuring it out from the naming of libc.
5334 case "${osname}${osvers}" in
5337 # XXX How handle the --version stuff for MAB?
5339 linux*) # ld won't link with a bare -lperl otherwise.
5342 *) # Try to guess based on whether libc has major.minor.
5344 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
5345 *libc.$so.[0-9]*) dflt=$majonly ;;
5346 *) dflt=libperl.$so ;;
5356 I need to select a good name for the shared libperl. If your system uses
5357 library names with major and minor numbers, then you might want something
5358 like $majmin. Alternatively, if your system uses a single version
5359 number for shared libraries, then you might want to use $majonly.
5360 Or, your system might be quite happy with a simple libperl.$so.
5362 Since the shared libperl will get installed into a version-specific
5363 architecture-dependent directory, the version number of the shared perl
5364 library probably isn't important, so the default should be o.k.
5367 rp='What name do you want to give to the shared libperl?'
5370 echo "Ok, I'll use $libperl"
5373 libperl="libperl${_a}"
5377 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
5381 WARNING: Use of the shrpdir variable for the installation location of
5382 the shared $libperl is not supported. It was never documented and
5383 will not work in this version. Let me (jhi@iki.fi)
5384 know of any problems this may cause.
5390 But your current setting of $shrpdir is
5391 the default anyway, so it's harmless.
5396 Further, your current attempted setting of $shrpdir
5397 conflicts with the value of $archlibexp/CORE
5398 that installperl will use.
5405 # How will the perl executable find the installed shared $libperl?
5406 # Add $xxx to ccdlflags.
5407 # If we can't figure out a command-line option, use $shrpenv to
5408 # set env LD_RUN_PATH. The main perl makefile uses this.
5409 shrpdir=$archlibexp/CORE
5412 if "$useshrplib"; then
5415 # We'll set it in Makefile.SH...
5421 xxx="-Wl,-R$shrpdir"
5423 linux|irix*|dec_osf)
5424 xxx="-Wl,-rpath,$shrpdir"
5427 # next doesn't like the default...
5430 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
5436 # Only add $xxx if it isn't already in ccdlflags.
5437 case " $ccdlflags " in
5439 *) ccdlflags="$ccdlflags $xxx"
5442 Adding $xxx to the flags
5443 passed to $ld so that the perl executable will find the
5444 installed shared $libperl.
5452 # Respect a hint or command-line value.
5454 '') shrpenv="$tmp_shrpenv" ;;
5457 : determine where manual pages go
5458 set man1dir man1dir none
5462 $spackage has manual pages available in source form.
5466 echo "However, you don't have nroff, so they're probably useless to you."
5468 '') man1dir="none";;
5471 echo "If you don't want the manual sources installed, answer 'none'."
5476 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
5477 lookpath="$lookpath $prefixexp/man/p_man/man1"
5478 lookpath="$lookpath $prefixexp/man/u_man/man1"
5479 lookpath="$lookpath $prefixexp/man/man.1"
5481 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
5482 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
5492 rp="Where do the main $spackage manual pages (source) go?"
5494 if $test "X$man1direxp" != "X$ansexp"; then
5498 man1direxp="$ansexp"
5506 Since you are running AFS, I need to distinguish the directory in which
5507 manual pages reside from the directory in which they are installed (and from
5508 which they are presumably copied to the former directory by occult means).
5511 case "$installman1dir" in
5512 '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
5513 *) dflt="$installman1dir";;
5516 rp='Where will man pages be installed?'
5518 installman1dir="$ans"
5520 installman1dir="$man1direxp"
5523 : What suffix to use on installed man pages
5530 rp="What suffix should be used for the main $spackage man pages?"
5532 '') case "$man1dir" in
5546 *) dflt="$man1ext";;
5553 : see if we can have long filenames
5555 rmlist="$rmlist /tmp/cf$$"
5556 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
5557 first=123456789abcdef
5558 second=/tmp/cf$$/$first
5559 $rm -f $first $second
5560 if (echo hi >$first) 2>/dev/null; then
5561 if $test -f 123456789abcde; then
5562 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
5565 if (echo hi >$second) 2>/dev/null; then
5566 if $test -f /tmp/cf$$/123456789abcde; then
5568 That's peculiar... You can have filenames longer than 14 characters, but only
5569 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
5570 I shall consider your system cannot support long filenames at all.
5574 echo 'You can have filenames longer than 14 characters.' >&4
5579 How confusing! Some of your filesystems are sane enough to allow filenames
5580 longer than 14 characters but some others like /tmp can't even think about them.
5581 So, for now on, I shall assume your kernel does not allow them at all.
5588 You can't have filenames longer than 14 chars. You can't even think about them!
5594 $rm -rf /tmp/cf$$ 123456789abcde*
5596 : determine where library module manual pages go
5597 set man3dir man3dir none
5601 $spackage has manual pages for many of the library modules.
5607 However, you don't have nroff, so they're probably useless to you.
5610 '') man3dir="none";;
5614 case "$d_flexfnam" in
5617 However, your system can't handle the long file names like File::Basename.3.
5620 '') man3dir="none";;
5624 echo "If you don't want the manual sources installed, answer 'none'."
5625 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5627 '') case "$prefix" in
5628 *$prog*) dflt=`echo $man1dir |
5629 $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
5630 *) dflt="$privlib/man/man3" ;;
5634 *) dflt="$man3dir" ;;
5639 rp="Where do the $package library man pages (source) go?"
5641 if test "X$man3direxp" != "X$ansexp"; then
5646 man3direxp="$ansexp"
5654 Since you are running AFS, I need to distinguish the directory in which
5655 manual pages reside from the directory in which they are installed (and from
5656 which they are presumably copied to the former directory by occult means).
5659 case "$installman3dir" in
5660 '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
5661 *) dflt="$installman3dir";;
5664 rp='Where will man pages be installed?'
5666 installman3dir="$ans"
5668 installman3dir="$man3direxp"
5671 : What suffix to use on installed man pages
5678 rp="What suffix should be used for the $package library man pages?"
5680 '') case "$man3dir" in
5694 *) dflt="$man3ext";;
5701 : see if we have to deal with yellow pages, now NIS.
5702 if $test -d /usr/etc/yp || $test -d /etc/yp; then
5703 if $test -f /usr/etc/nibindd; then
5705 echo "I'm fairly confident you're on a NeXT."
5707 rp='Do you get the hosts file via NetInfo?'
5716 y*) hostcat='nidump hosts .';;
5717 *) case "$hostcat" in
5718 nidump*) hostcat='';;
5728 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
5736 rp='Are you getting the hosts file via yellow pages?'
5739 y*) hostcat='ypcat hosts';;
5740 *) hostcat='cat /etc/hosts';;
5746 '') hostcat='cat /etc/hosts';;
5749 '') groupcat='cat /etc/group';;
5752 '') passcat='cat /etc/passwd';;
5755 : now get the host name
5757 echo "Figuring out host name..." >&4
5758 case "$myhostname" in
5760 echo 'Maybe "hostname" will work...'
5761 if tans=`sh -c hostname 2>&1` ; then
5769 if $test "$cont"; then
5771 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
5772 if tans=`cat /etc/systemid 2>&1` ; then
5774 phostname='cat /etc/systemid'
5775 echo "Whadyaknow. Xenix always was a bit strange..."
5778 elif $test -r /etc/systemid; then
5779 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5782 if $test "$cont"; then
5783 echo 'No, maybe "uuname -l" will work...'
5784 if tans=`sh -c 'uuname -l' 2>&1` ; then
5786 phostname='uuname -l'
5788 echo 'Strange. Maybe "uname -n" will work...'
5789 if tans=`sh -c 'uname -n' 2>&1` ; then
5791 phostname='uname -n'
5793 echo 'Oh well, maybe I can mine it out of whoami.h...'
5794 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5795 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5796 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5798 case "$myhostname" in
5799 '') echo "Does this machine have an identity crisis or something?"
5802 echo "Well, you said $myhostname before..."
5803 phostname='echo $myhostname';;
5809 : you do not want to know about this
5814 if $test "$myhostname" ; then
5816 rp='Your host name appears to be "'$myhostname'".'" Right?"
5824 : bad guess or no guess
5825 while $test "X$myhostname" = X ; do
5827 rp="Please type the (one word) name of your host:"
5832 : translate upper to lower if necessary
5833 case "$myhostname" in
5835 echo "(Normalizing case in your host name)"
5836 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5840 case "$myhostname" in
5842 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5843 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5844 echo "(Trimming domain name from host name--host name is now $myhostname)"
5846 *) case "$mydomain" in
5849 test "X$hostcat" = "Xypcat hosts" &&
5850 ypmatch "$myhostname" hosts 2>/dev/null |\
5851 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
5854 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
5855 /[ ]$myhostname[ . ]/p" > hosts
5858 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
5859 END { print sum }" hosts` = x1 || tmp_re="[ ]"
5860 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5861 hosts | $sort | $uniq | \
5862 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5863 case `$echo X$dflt` in
5864 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
5867 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5872 tans=`./loc resolv.conf X /etc /usr/etc`
5873 if $test -f "$tans"; then
5874 echo "(Attempting domain name extraction from $tans)"
5875 dflt=.`$sed -n -e 's/ / /g' \
5876 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
5877 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5879 .) dflt=.`$sed -n -e 's/ / /g' \
5880 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
5881 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5888 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5889 dflt=.`sh -c domainname 2>/dev/null`
5892 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5897 .) echo "(Lost all hope -- silly guess then)"
5903 *) dflt="$mydomain";;
5907 rp="What is your domain name?"
5917 : translate upper to lower if necessary
5920 echo "(Normalizing case in your domain name)"
5921 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5925 : a little sanity check here
5926 case "$phostname" in
5929 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5930 $myhostname$mydomain|$myhostname) ;;
5932 case "$phostname" in
5934 echo "(That doesn't agree with your whoami.h file, by the way.)"
5937 echo "(That doesn't agree with your $phostname command, by the way.)"
5947 I need to get your e-mail address in Internet format if possible, i.e.
5948 something like user@host.domain. Please answer accurately since I have
5949 no easy means to double check it. The default value provided below
5950 is most probably close to the reality but may not be valid from outside
5951 your organization...
5955 while test "$cont"; do
5957 '') dflt="$cf_by@$myhostname$mydomain";;
5958 *) dflt="$cf_email";;
5960 rp='What is your e-mail address?'
5966 rp='Address does not look like an Internet one. Use it anyway?'
5982 If you or somebody else will be maintaining perl at your site, please
5983 fill in the correct e-mail address here so that they may be contacted
5984 if necessary. Currently, the "perlbug" program included with perl
5985 will send mail to this address in addition to perlbug@perl.com. You may
5986 enter "none" for no administrator.
5989 case "$perladmin" in
5990 '') dflt="$cf_email";;
5991 *) dflt="$perladmin";;
5993 rp='Perl administrator e-mail address'
5997 : figure out how to guarantee perl startup
5998 case "$startperl" in
6000 case "$sharpbang" in
6004 I can use the #! construct to start perl on your system. This will
6005 make startup of perl scripts faster, but may cause problems if you
6006 want to share those scripts and perl is not in a standard place
6007 ($binexp/perl) on all your platforms. The alternative is to force
6008 a shell by starting the script with a single ':' character.
6012 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6015 none) startperl=": # use perl";;
6016 *) startperl="#!$ans"
6017 if $test 30 -lt `echo "$ans" | wc -c`; then
6020 WARNING: Some systems limit the #! command to 32 characters.
6021 If you experience difficulty running Perl scripts with #!, try
6022 installing Perl in a directory with a shorter pathname.
6028 *) startperl=": # use perl"
6033 echo "I'll use $startperl to start perl scripts."
6035 : figure best path for perl in scripts
6038 perlpath="$binexp/perl"
6039 case "$startperl" in
6044 I will use the "eval 'exec'" idiom to start Perl on your system.
6045 I can use the full path of your Perl binary for this purpose, but
6046 doing so may cause problems if you want to share those scripts and
6047 Perl is not always in a standard place ($binexp/perl).
6051 rp="What path shall I use in \"eval 'exec'\"?"
6058 case "$startperl" in
6060 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6063 : determine where public executable scripts go
6064 set scriptdir scriptdir
6066 case "$scriptdir" in
6069 : guess some guesses
6070 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6071 $test -d /usr/share/bin && dflt=/usr/share/bin
6072 $test -d /usr/local/script && dflt=/usr/local/script
6073 $test -d $prefixexp/script && dflt=$prefixexp/script
6077 *) dflt="$scriptdir"
6082 Some installations have a separate directory just for executable scripts so
6083 that they can mount it across multiple architectures but keep the scripts in
6084 one spot. You might, for example, have a subdirectory of /usr/share for this.
6085 Or you might just lump your scripts in with all your other executables.
6089 rp='Where do you keep publicly executable scripts?'
6091 if $test "X$ansexp" != "X$scriptdirexp"; then
6095 scriptdirexp="$ansexp"
6099 Since you are running AFS, I need to distinguish the directory in which
6100 scripts reside from the directory in which they are installed (and from
6101 which they are presumably copied to the former directory by occult means).
6104 case "$installscript" in
6105 '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
6106 *) dflt="$installscript";;
6109 rp='Where will public scripts be installed?'
6111 installscript="$ans"
6113 installscript="$scriptdirexp"
6116 : determine where site specific libraries go.
6117 : Usual default is /usr/local/lib/perl5/site_perl/$apiversion
6118 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6120 *perl*) set dflt sitelib lib/site_$prog/$apiversion ;;
6121 *) set dflt sitelib lib/$package/site_$prog/$apiversion ;;
6126 The installation process will also create a directory for
6127 site-specific extensions and modules. Some users find it convenient
6128 to place all local files in this directory rather than in the main
6129 distribution directory.
6133 rp='Pathname for the site-specific library files?'
6135 if $test "X$sitelibexp" != "X$ansexp"; then
6139 sitelibexp="$ansexp"
6143 Since you are running AFS, I need to distinguish the directory in
6144 which site-specific files reside from the directory in which they are
6145 installed (and from which they are presumably copied to the former
6146 directory by occult means).
6149 case "$installsitelib" in
6150 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
6151 *) dflt="$installsitelib";;
6154 rp='Where will site-specific files be installed?'
6156 installsitelib="$ans"
6158 installsitelib="$sitelibexp"
6161 : determine where site specific architecture-dependent libraries go.
6162 : sitelib default is /usr/local/lib/perl5/site_perl/$apiversion
6163 : sitearch default is /usr/local/lib/perl5/site_perl/$apiversion/$archname
6164 : sitelib may have an optional trailing /share.
6165 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6166 tdflt="$tdflt/$archname"
6167 set sitearch sitearch none
6170 '') dflt="$tdflt" ;;
6171 *) dflt="$sitearch" ;;
6175 The installation process will also create a directory for
6176 architecture-dependent site-specific extensions and modules.
6180 rp='Pathname for the site-specific architecture-dependent library files?'
6182 if $test "X$sitearchexp" != "X$ansexp"; then
6186 sitearchexp="$ansexp"
6190 Since you are running AFS, I need to distinguish the directory in
6191 which site-specific architecture-dependent library files reside from
6192 the directory in which they are installed (and from which they are
6193 presumably copied to the former directory by occult means).
6196 case "$installsitearch" in
6197 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
6198 *) dflt="$installsitearch";;
6201 rp='Where will site-specific architecture-dependent files be installed?'
6203 installsitearch="$ans"
6205 installsitearch="$sitearchexp"
6210 Previous version of $package used the standard IO mechanisms as defined
6211 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
6212 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
6213 the default. This abstraction layer can use AT&T's sfio (if you already
6214 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
6215 problems with some extension modules. Using PerlIO with stdio is safe,
6216 but it is slower than plain stdio and therefore is not the default.
6218 If this doesn't make any sense to you, just accept the default 'n'.
6220 case "$useperlio" in
6221 $define|true|[yY]*) dflt='y';;
6224 rp='Use the experimental PerlIO abstraction layer?'
6231 echo "Ok, doing things the stdio way"
6238 : Check how to convert floats to strings.
6239 if test "X$d_Gconvert" = X; then
6241 echo "Checking for an efficient way to convert floats to strings."
6244 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
6245 char *myname = "gconvert";
6248 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
6249 char *myname = "gcvt";
6252 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
6253 char *myname = "sprintf";
6259 checkit(expect, got)
6263 if (strcmp(expect, got)) {
6264 printf("%s oddity: Expected %s, got %s\n",
6265 myname, expect, got);
6275 /* This must be 1st test on (which?) platform */
6276 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
6277 Gconvert(0.1, 8, 0, buf);
6278 checkit("0.1", buf);
6280 Gconvert(1.0, 8, 0, buf);
6283 Gconvert(0.0, 8, 0, buf);
6286 Gconvert(-1.0, 8, 0, buf);
6289 /* Some Linux gcvt's give 1.e+5 here. */
6290 Gconvert(100000.0, 8, 0, buf);
6291 checkit("100000", buf);
6293 /* Some Linux gcvt's give -1.e+5 here. */
6294 Gconvert(-100000.0, 8, 0, buf);
6295 checkit("-100000", buf);
6300 case "$d_Gconvert" in
6301 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
6302 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
6303 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
6304 *) xxx_list='gconvert gcvt sprintf' ;;
6307 for xxx_convert in $xxx_list; do
6308 echo "Trying $xxx_convert"
6310 set try -DTRY_$xxx_convert
6311 if eval $compile; then
6312 echo "$xxx_convert" found. >&4
6314 echo "I'll use $xxx_convert to convert floats into a string." >&4
6317 echo "...But $xxx_convert didn't work as I expected."
6320 echo "$xxx_convert NOT found." >&4
6324 case "$xxx_convert" in
6325 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
6326 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
6327 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
6331 : Initialize h_fcntl
6334 : Initialize h_sysfile
6337 : access call always available on UNIX
6341 : locate the flags for 'access()'
6345 $cat >access.c <<'EOCP'
6346 #include <sys/types.h>
6351 #include <sys/file.h>
6360 : check sys/file.h first, no particular reason here
6361 if $test `./findhdr sys/file.h` && \
6362 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
6364 echo "<sys/file.h> defines the *_OK access constants." >&4
6365 elif $test `./findhdr fcntl.h` && \
6366 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
6368 echo "<fcntl.h> defines the *_OK access constants." >&4
6369 elif $test `./findhdr unistd.h` && \
6370 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
6371 echo "<unistd.h> defines the *_OK access constants." >&4
6373 echo "I can't find the four *_OK access constants--I'll use mine." >&4
6379 : see if accessx exists
6380 set accessx d_accessx
6383 : see if alarm exists
6387 : Look for GNU-cc style attribute checking
6389 echo "Checking whether your compiler can handle __attribute__ ..." >&4
6390 $cat >attrib.c <<'EOCP'
6392 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
6394 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
6395 if $contains 'warning' attrib.out >/dev/null 2>&1; then
6396 echo "Your C compiler doesn't fully support __attribute__."
6399 echo "Your C compiler supports __attribute__."
6403 echo "Your C compiler doesn't seem to understand __attribute__ at all."
6410 : see if bcmp exists
6414 : see if bcopy exists
6418 : see if this is a unistd.h system
6419 set unistd.h i_unistd
6422 : see if getpgrp exists
6423 set getpgrp d_getpgrp
6426 case "$d_getpgrp" in
6429 echo "Checking to see which flavor of getpgrp is in use..."
6432 #include <sys/types.h>
6434 # include <unistd.h>
6438 if (getuid() == 0) {
6439 printf("(I see you are running Configure as super-user...)\n");
6443 if (getpgrp(1) == 0)
6452 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6453 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
6455 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6456 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
6459 echo "I can't seem to compile and run the test program."
6461 xxx="a USG one, i.e. you use getpgrp()."
6463 # SVR4 systems can appear rather BSD-ish.
6466 xxx="a BSD one, i.e. you use getpgrp(pid)."
6470 xxx="probably a USG one, i.e. you use getpgrp()."
6475 echo "Assuming your getpgrp is $xxx" >&4
6484 : see if setpgrp exists
6485 set setpgrp d_setpgrp
6488 case "$d_setpgrp" in
6491 echo "Checking to see which flavor of setpgrp is in use..."
6494 #include <sys/types.h>
6496 # include <unistd.h>
6500 if (getuid() == 0) {
6501 printf("(I see you are running Configure as super-user...)\n");
6505 if (-1 == setpgrp(1, 1))
6508 if (setpgrp() != -1)
6514 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6515 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
6517 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
6518 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
6521 echo "(I can't seem to compile and run the test program.)"
6523 xxx="a USG one, i.e. you use setpgrp()."
6525 # SVR4 systems can appear rather BSD-ish.
6528 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
6532 xxx="probably a USG one, i.e. you use setpgrp()."
6537 echo "Assuming your setpgrp is $xxx" >&4
6545 : see if bzero exists
6549 : check for lengths of integral types
6553 echo "Checking to see how big your integers are..." >&4
6554 $cat >intsize.c <<'EOCP'
6558 printf("intsize=%d;\n", sizeof(int));
6559 printf("longsize=%d;\n", sizeof(long));
6560 printf("shortsize=%d;\n", sizeof(short));
6565 if eval $compile_ok && ./intsize > /dev/null; then
6567 echo "Your integers are $intsize bytes long."
6568 echo "Your long integers are $longsize bytes long."
6569 echo "Your short integers are $shortsize bytes long."
6573 Help! I can't compile and run the intsize test program: please enlighten me!
6574 (This is probably a misconfiguration in your system or libraries, and
6575 you really ought to fix it. Still, I'll try anyway.)
6579 rp="What is the size of an integer (in bytes)?"
6583 rp="What is the size of a long integer (in bytes)?"
6587 rp="What is the size of a short integer (in bytes)?"
6593 $rm -f intsize intsize.*
6595 : see if signal is declared as pointer to function returning int or void
6597 xxx=`./findhdr signal.h`
6598 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
6599 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6600 echo "You have int (*signal())() instead of void." >&4
6602 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
6603 echo "You have void (*signal())()." >&4
6605 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
6606 echo "You have int (*signal())() instead of void." >&4
6608 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
6609 echo "You have void (*signal())()." >&4
6612 case "$d_voidsig" in
6614 echo "I can't determine whether signal handler returns void or int..." >&4
6616 rp="What type does your signal handler return?"
6623 echo "As you already told me, signal handler returns void." >&4
6626 *) echo "As you already told me, signal handler returns int." >&4
6633 case "$d_voidsig" in
6634 "$define") signal_t="void";;
6639 : check for ability to cast large floats to 32-bit ints.
6641 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
6642 if $test "$intsize" -ge 4; then
6649 #include <sys/types.h>
6651 $signal_t blech(s) int s; { exit(3); }
6658 signal(SIGFPE, blech);
6660 /* Don't let compiler optimize the test away. Store the number
6661 in a writable string for gcc to pass to sscanf under HP/UX.
6663 sprintf(str, "2147483647");
6664 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
6668 /* x86 processors will probably give 0x8000 0000, which is a
6669 sign change. We don't want that. We want to mimic SPARC
6670 behavior here, which is to preserve the sign and give
6673 if (i32 != ($xxx) f)
6679 if eval $compile_ok; then
6683 echo "(I can't seem to compile the test program--assuming it can't)"
6691 echo "Nope, it can't."
6698 : check for ability to cast negative floats to unsigned
6700 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
6703 #include <sys/types.h>
6705 $signal_t blech(s) int s; { exit(7); }
6706 $signal_t blech_in_list(s) int s; { exit(4); }
6707 unsigned long dummy_long(p) unsigned long p; { return p; }
6708 unsigned int dummy_int(p) unsigned int p; { return p; }
6709 unsigned short dummy_short(p) unsigned short p; { return p; }
6713 unsigned long along;
6715 unsigned short ashort;
6719 /* Frustrate gcc-2.7.2's optimizer which failed this test with
6720 a direct f = -123. assignment. gcc-2.8.0 reportedly
6721 optimized the whole file away
6723 /* Store the number in a writable string for gcc to pass to
6726 sprintf(str, "-123");
6727 sscanf(str, "%lf", &f); /* f = -123.; */
6729 signal(SIGFPE, blech);
6730 along = (unsigned long)f;
6731 aint = (unsigned int)f;
6732 ashort = (unsigned short)f;
6733 if (along != (unsigned long)-123)
6735 if (aint != (unsigned int)-123)
6737 if (ashort != (unsigned short)-123)
6739 sprintf(str, "1073741824.");
6740 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
6743 along = (unsigned long)f;
6744 if (along != 0x80000000)
6748 along = (unsigned long)f;
6749 if (along != 0x7fffffff)
6753 along = (unsigned long)f;
6754 if (along != 0x80000001)
6758 signal(SIGFPE, blech_in_list);
6759 sprintf(str, "123.");
6760 sscanf(str, "%lf", &f); /* f = 123.; */
6761 along = dummy_long((unsigned long)f);
6762 aint = dummy_int((unsigned int)f);
6763 ashort = dummy_short((unsigned short)f);
6764 if (along != (unsigned long)123)
6766 if (aint != (unsigned int)123)
6768 if (ashort != (unsigned short)123)
6775 if eval $compile_ok; then
6779 echo "(I can't seem to compile the test program--assuming it can't)"
6782 case "$castflags" in
6787 echo "Nope, it can't."
6794 : see if vprintf exists
6796 if set vprintf val -f d_vprintf; eval $csym; $val; then
6797 echo 'vprintf() found.' >&4
6799 $cat >vprintf.c <<'EOF'
6800 #include <varargs.h>
6802 main() { xxx("foo"); }
6811 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
6815 if eval $compile && ./vprintf; then
6816 echo "Your vsprintf() returns (int)." >&4
6819 echo "Your vsprintf() returns (char*)." >&4
6823 echo 'vprintf() NOT found.' >&4
6833 : see if chown exists
6837 : see if chroot exists
6841 : see if chsize exists
6845 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
6846 while $test $# -ge 2; do
6848 $define) echo "#include <$2>";;
6852 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
6853 if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
6862 : see if this is a sys/uio.h system
6863 set sys/uio.h i_sysuio
6866 echo "Checking to see if your system supports struct iovec..." >&4
6867 set d_iovec_s iovec iov_base $i_sysuio sys/uio.h
6869 case "$d_iovec_s" in
6870 "$define") echo "Yup, it does." >&4
6872 *) echo "Nope, it doesn't." >&4
6878 : see whether socket exists
6880 $echo $n "Hmm... $c" >&4
6881 if set socket val -f d_socket; eval $csym; $val; then
6882 echo "Looks like you have Berkeley networking support." >&4
6884 if set setsockopt val -f; eval $csym; $val; then
6887 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
6891 if $contains socklib libc.list >/dev/null 2>&1; then
6892 echo "Looks like you have Berkeley networking support." >&4
6894 : we will have to assume that it supports the 4.2 BSD interface
6897 echo "You don't have Berkeley networking in libc$_a..." >&4
6898 if test "X$d_socket" = "X$define"; then
6899 echo "...but you seem to believe that you have sockets." >&4
6901 for net in net socket
6903 if test -f /usr/lib/lib$net$_a; then
6904 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
6905 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
6906 if $contains socket libc.list >/dev/null 2>&1; then
6911 echo "...but the Wollongong group seems to have hacked it in." >&4
6912 sockethdr="-I/usr/netinclude"
6915 echo "Found Berkeley sockets interface in lib$net." >& 4
6916 if $contains setsockopt libc.list >/dev/null 2>&1; then
6919 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
6926 if test "X$d_socket" != "X$define"; then
6927 echo "or anywhere else I see." >&4
6935 : see if socketpair exists
6936 set socketpair d_sockpair
6941 echo "Checking the availability of certain socket constants..." >& 4
6942 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
6943 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
6945 #include <sys/types.h>
6946 #include <sys/socket.h>
6952 set try; if eval $compile; then
6955 set d_${enum}; eval $setvar
6959 set sendmsg d_sendmsg
6962 set recvmsg d_recvmsg
6966 $echo $n "Checking to see if your system supports struct msghdr...$c" >&4
6967 set d_msghdr_s msghdr msg_name define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6969 case "$d_msghdr_s" in
6970 "$define") echo "Yup, it does." >&4
6972 *) echo "Nope, it doesn't." >&4
6976 $echo $n "Checking to see if your system supports struct cmsghdr...$c" >&4
6977 set d_cmsghdr_s cmsghdr cmsg_len define sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
6979 case "$d_cmsghdr_s" in
6980 "$define") echo "Yup, it does." >&4
6982 *) echo "Nope, it doesn't." >&4
6986 : check for const keyword
6988 echo 'Checking to see if your C compiler knows about "const"...' >&4
6989 $cat >const.c <<'EOCP'
6990 typedef struct spug { int drokk; } spug;
6997 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
6999 echo "Yup, it does."
7002 echo "Nope, it doesn't."
7007 : see if crypt exists
7009 if set crypt val -f d_crypt; eval $csym; $val; then
7010 echo 'crypt() found.' >&4
7014 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7015 if $test -z "$cryptlib"; then
7016 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7020 if $test -z "$cryptlib"; then
7021 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7025 if $test -z "$cryptlib"; then
7026 cryptlib=`./loc libcrypt$_a "" $libpth`
7030 if $test -z "$cryptlib"; then
7031 echo 'crypt() NOT found.' >&4
7040 : get csh whereabouts
7042 'csh') val="$undef" ;;
7047 : Respect a hint or command line value for full_csh.
7049 '') full_csh=$csh ;;
7052 : see if cuserid exists
7053 set cuserid d_cuserid
7056 : see if this is a limits.h system
7057 set limits.h i_limits
7060 : see if this is a float.h system
7064 : See if number of significant digits in a double precision number is known
7066 $cat >dbl_dig.c <<EOM
7076 printf("Contains DBL_DIG");
7079 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7080 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7081 echo "DBL_DIG found." >&4
7084 echo "DBL_DIG NOT found." >&4
7092 if $test X"$use64bits" = X"$define"; then
7093 : see if dbminit64 exists
7094 set dbminit64 d_dbminit64
7097 : see if dbmclose64 exists
7098 set dbmclose64 d_dbmclose64
7101 : see if fetch64 exists
7102 set fetch64 d_fetch64
7105 : see if store64 exists
7106 set store64 d_store64
7109 : see if delete64 exists
7110 set delete64 d_delete64
7113 : see if firstkey64 exists
7114 set firstkey64 d_firstkey64
7117 : see if nextkey64 exists
7118 set nextkey64 d_nextkey64
7122 for xxx in d_dbminit64 d_dbmclose64 d_fetch64 d_store64 d_delete64 d_firstkey64 d_nextkey64
7129 : see if difftime exists
7130 set difftime d_difftime
7133 : see if sys/stat.h is available
7134 set sys/stat.h i_sysstat
7137 : see if this is a dirent system
7139 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7141 echo "<dirent.h> found." >&4
7144 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7145 echo "<sys/dir.h> found." >&4
7148 xinc=`./findhdr sys/ndir.h`
7150 echo "<dirent.h> NOT found." >&4
7155 : Look for type of directory structure.
7157 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7159 case "$direntrytype" in
7162 $define) guess1='struct dirent' ;;
7163 *) guess1='struct direct' ;;
7166 *) guess1="$direntrytype"
7171 'struct dirent') guess2='struct direct' ;;
7172 *) guess2='struct dirent' ;;
7175 if $contains "$guess1" try.c >/dev/null 2>&1; then
7176 direntrytype="$guess1"
7177 echo "Your directory entries are $direntrytype." >&4
7178 elif $contains "$guess2" try.c >/dev/null 2>&1; then
7179 direntrytype="$guess2"
7180 echo "Your directory entries seem to be $direntrytype." >&4
7182 echo "I don't recognize your system's directory entries." >&4
7183 rp="What type is used for directory entries on this system?"
7191 : see if the directory entry stores field length
7193 $cppstdin $cppflags $cppminus < "$xinc" > try.c
7194 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
7195 echo "Good, your directory entry keeps length information in d_namlen." >&4
7198 echo "Your directory entry does not know about the d_namlen field." >&4
7206 if $test X"$use64bits" = X"$define"; then
7207 : see if fstat64 exists
7208 set fstat64 d_fstat64
7211 : see if ftruncate64 exists
7212 set ftruncate64 d_ftruncate64
7215 : see if lockf64 exists
7216 set lockf64 d_lockf64
7219 : see if lseek64 exists
7220 set lseek64 d_lseek64
7223 : see if lstat64 exists
7224 set lstat64 d_lstat64
7227 : see if open64 exists
7231 : see if opendir64 exists
7232 set opendir64 d_opendir64
7235 : see if readdir64 exists
7236 set readdir64 d_readdir64
7239 : see if seekdir64 exists
7240 set seekdir64 d_seekdir64
7243 : see if stat64 exists
7247 : see if telldir64 exists
7248 set telldir64 d_telldir64
7251 : see if truncate64 exists
7252 set truncate64 d_truncate64
7257 echo $n "Checking to see if your system supports off64_t...$c" >&4
7259 #include <sys/types.h>
7260 off64_t foo() { off64_t x; x = 7; return x; }'
7262 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7264 echo " Yup, it does." >&4
7267 echo " Nope, it doesn't." >&4
7275 echo $n "Checking to see if your system supports ino64_t...$c" >&4
7277 case "$i_sysstat" in
7280 #include <sys/types.h>
7281 #include <sys/stat.h>
7282 ino64_t foo() { ino64_t x; x = 7; return x; }'
7284 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
7290 if $test "X$val" = X"$define"; then
7291 echo " Yup, it does." >&4
7293 echo " Nope, it doesn't." >&4
7298 : check for struct flock64
7300 echo "Checking to see if your system supports struct flock64..." >&4
7302 set d_flock64_s flock64 l_len define fcntl.h
7309 case "$d_flock64_s" in
7310 "$define") echo "Yup, it does." >&4
7312 *) echo "Nope, it doesn't." >&4
7316 : check for struct dirent64
7318 echo "Checking to see if your system supports struct dirent64..." >&4
7319 set d_dirent64_s dirent64 d_off $i_dirent dirent.h
7321 case "$d_dirent64_s" in
7322 "$define") echo "Yup, it does." >&4
7324 *) echo "Nope, it doesn't." >&4
7330 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
7337 : see if dlerror exists
7340 set dlerror d_dlerror
7344 : see if dlfcn is available
7352 On a few systems, the dynamically loaded modules that perl generates and uses
7353 will need a different extension than shared libs. The default will probably
7361 rp='What is the extension of dynamically loaded modules'
7370 : Check if dlsym need a leading underscore
7376 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
7377 $cat >dyna.c <<'EOM'
7386 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
7388 #include <sys/types.h>
7402 int mode = RTLD_LAZY ;
7404 handle = dlopen("./dyna.$dlext", mode) ;
7405 if (handle == NULL) {
7410 symbol = dlsym(handle, "fred") ;
7411 if (symbol == NULL) {
7412 /* try putting a leading underscore */
7413 symbol = dlsym(handle, "_fred") ;
7414 if (symbol == NULL) {
7427 : Call the object file tmp-dyna.o in case dlext=o.
7428 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
7429 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
7430 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
7431 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
7434 1) echo "Test program failed using dlopen." >&4
7435 echo "Perhaps you should not use dynamic loading." >&4;;
7436 2) echo "Test program failed using dlsym." >&4
7437 echo "Perhaps you should not use dynamic loading." >&4;;
7438 3) echo "dlsym needs a leading underscore" >&4
7440 4) echo "dlsym doesn't need a leading underscore." >&4;;
7443 echo "I can't compile and run the test program." >&4
7448 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
7453 hasproto='varname=$1; func=$2; shift; shift;
7454 while $test $# -ge 2; do
7456 $define) echo "#include <$2>";;
7460 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
7461 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
7462 echo "$func() prototype found.";
7465 echo "$func() prototype NOT found.";
7470 $rm -f try.c tryout.c'
7472 : see if prototype for drand48 is available
7474 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
7477 : see if dup2 exists
7481 : see if eaccess exists
7482 set eaccess d_eaccess
7485 : see if endgrent exists
7486 set endgrent d_endgrent
7489 : see if endhostent exists
7490 set endhostent d_endhent
7493 : see if endnetent exists
7494 set endnetent d_endnent
7497 : see if endprotoent exists
7498 set endprotoent d_endpent
7501 : see if endpwent exists
7502 set endpwent d_endpwent
7505 : see if endservent exists
7506 set endservent d_endsent
7509 : Locate the flags for 'open()'
7511 $cat >open3.c <<'EOCP'
7512 #include <sys/types.h>
7517 #include <sys/file.h>
7528 : check sys/file.h first to get FREAD on Sun
7529 if $test `./findhdr sys/file.h` && \
7530 set open3 -DI_SYS_FILE && eval $compile; then
7532 echo "<sys/file.h> defines the O_* constants..." >&4
7534 echo "and you have the 3 argument form of open()." >&4
7537 echo "but not the 3 argument form of open(). Oh, well." >&4
7540 elif $test `./findhdr fcntl.h` && \
7541 set open3 -DI_FCNTL && eval $compile; then
7543 echo "<fcntl.h> defines the O_* constants..." >&4
7545 echo "and you have the 3 argument form of open()." >&4
7548 echo "but not the 3 argument form of open(). Oh, well." >&4
7553 echo "I can't find the O_* constant definitions! You got problems." >&4
7559 : check for non-blocking I/O stuff
7560 case "$h_sysfile" in
7561 true) echo "#include <sys/file.h>" > head.c;;
7564 true) echo "#include <fcntl.h>" > head.c;;
7565 *) echo "#include <sys/fcntl.h>" > head.c;;
7570 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
7571 case "$o_nonblock" in
7574 $cat >>try.c <<'EOCP'
7577 printf("O_NONBLOCK\n");
7581 printf("O_NDELAY\n");
7585 printf("FNDELAY\n");
7592 if eval $compile_ok; then
7594 case "$o_nonblock" in
7595 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
7596 *) echo "Seems like we can use $o_nonblock.";;
7599 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
7602 *) echo "Using $hint value $o_nonblock.";;
7604 $rm -f try try.* .out core
7607 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
7613 #include <sys/types.h>
7615 #define MY_O_NONBLOCK $o_nonblock
7616 #ifndef errno /* XXX need better Configure test */
7619 $signal_t blech(x) int x; { exit(3); }
7621 $cat >> try.c <<'EOCP'
7629 pipe(pd); /* Down: child -> parent */
7630 pipe(pu); /* Up: parent -> child */
7633 close(pd[1]); /* Parent reads from pd[0] */
7634 close(pu[0]); /* Parent writes (blocking) to pu[1] */
7635 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
7637 signal(SIGALRM, blech);
7639 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
7641 sprintf(string, "%d\n", ret);
7642 write(2, string, strlen(string));
7645 if (errno == EAGAIN) {
7651 if (errno == EWOULDBLOCK)
7652 printf("EWOULDBLOCK\n");
7655 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
7656 sleep(2); /* Give it time to close our pipe */
7658 ret = read(pd[0], buf, 1); /* Should read EOF */
7660 sprintf(string, "%d\n", ret);
7661 write(3, string, strlen(string));
7665 close(pd[0]); /* We write to pd[1] */
7666 close(pu[1]); /* We read from pu[0] */
7667 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
7668 close(pd[1]); /* Pipe pd is now fully closed! */
7669 exit(0); /* Bye bye, thank you for playing! */
7673 if eval $compile_ok; then
7674 echo "$startsh" >mtry
7675 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
7677 ./mtry >/dev/null 2>&1
7679 0) eagain=`$cat try.out`;;
7680 1) echo "Could not perform non-blocking setting!";;
7681 2) echo "I did a successful read() for something that was not there!";;
7682 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
7683 *) echo "Something terribly wrong happened during testing.";;
7685 rd_nodata=`$cat try.ret`
7686 echo "A read() system call with no data present returns $rd_nodata."
7687 case "$rd_nodata" in
7690 echo "(That's peculiar, fixing that to be -1.)"
7696 echo "Forcing errno EAGAIN on read() with no data available."
7700 echo "Your read() sets errno to $eagain when no data is available."
7703 status=`$cat try.err`
7705 0) echo "And it correctly returns 0 to signal EOF.";;
7706 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
7707 *) echo "However, your read() returns '$status' on EOF??";;
7710 if test "$status" = "$rd_nodata"; then
7711 echo "WARNING: you can't distinguish between EOF and no data!"
7715 echo "I can't compile the test program--assuming errno EAGAIN will do."
7722 echo "Using $hint value $eagain."
7723 echo "Your read() returns $rd_nodata when no data is present."
7724 case "$d_eofnblk" in
7725 "$define") echo "And you can see EOF because read() returns 0.";;
7726 "$undef") echo "But you can't see EOF status from read() returned value.";;
7728 echo "(Assuming you can't see EOF status from read anyway.)"
7734 $rm -f try try.* .out core head.c mtry
7736 : see if fchmod exists
7740 : see if fchown exists
7744 : see if this is an fcntl system
7748 : see if sys/select.h has to be included
7749 set sys/select.h i_sysselct
7752 : see if we should include time.h, sys/time.h, or both
7754 if test "X$timeincl" = X; then
7755 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
7756 $echo $n "I'm now running the test program...$c"
7757 $cat >try.c <<'EOCP'
7758 #include <sys/types.h>
7763 #ifdef SYSTIMEKERNEL
7766 #include <sys/time.h>
7769 #include <sys/select.h>
7778 struct timezone tzp;
7780 if (foo.tm_sec == foo.tm_sec)
7783 if (bar.tv_sec == bar.tv_sec)
7790 for s_timezone in '-DS_TIMEZONE' ''; do
7792 for s_timeval in '-DS_TIMEVAL' ''; do
7793 for i_systimek in '' '-DSYSTIMEKERNEL'; do
7794 for i_time in '' '-DI_TIME'; do
7795 for i_systime in '-DI_SYSTIME' ''; do
7798 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
7799 if eval $compile; then
7800 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
7804 $echo $n "Succeeded with $flags$c"
7816 *SYSTIMEKERNEL*) i_systimek="$define"
7817 timeincl=`./findhdr sys/time.h`
7818 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
7819 *) i_systimek="$undef";;
7822 *I_TIME*) i_time="$define"
7823 timeincl=`./findhdr time.h`" $timeincl"
7824 echo "We'll include <time.h>." >&4;;
7825 *) i_time="$undef";;
7828 *I_SYSTIME*) i_systime="$define"
7829 timeincl=`./findhdr sys/time.h`" $timeincl"
7830 echo "We'll include <sys/time.h>." >&4;;
7831 *) i_systime="$undef";;
7836 : check for fd_set items
7839 Checking to see how well your C compiler handles fd_set and friends ...
7841 $cat >fd_set.c <<EOCP
7842 #$i_systime I_SYS_TIME
7843 #$i_sysselct I_SYS_SELECT
7844 #$d_socket HAS_SOCKET
7845 #include <sys/types.h>
7847 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
7850 #include <sys/time.h>
7853 #include <sys/select.h>
7862 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
7869 set fd_set -DTRYBITS
7870 if eval $compile; then
7871 d_fds_bits="$define"
7873 echo "Well, your system knows about the normal fd_set typedef..." >&4
7875 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
7876 d_fd_macros="$define"
7879 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
7881 d_fd_macros="$undef"
7885 Hmm, your compiler has some difficulty with fd_set. Checking further...
7888 if eval $compile; then
7891 echo "Well, your system has some sort of fd_set available..." >&4
7893 echo "and you have the normal fd_set macros." >&4
7894 d_fd_macros="$define"
7897 but not the normal fd_set macros! Gross! More work for me...
7899 d_fd_macros="$undef"
7902 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
7905 d_fd_macros="$undef"
7910 : see if fgetpos exists
7911 set fgetpos d_fgetpos
7915 if $test X"$use64bits" = X"$define"; then
7916 : see if fgetpos64 exists
7917 set fgetpos64 d_fgetpos64
7920 : see if fopen64 exists
7921 set freopen64 d_fopen64
7924 : see if freopen64 exists
7925 set freopen64 d_freopen64
7928 : see if fseek64 exists
7929 set fseek64 d_fseek64
7932 : see if fseeko64 exists
7933 set fseeko64 d_fseeko64
7936 : see if fsetpos64 exists
7937 set fsetpos64 d_fsetpos64
7940 : see if ftell64 exists
7941 set ftell64 d_ftell64
7944 : see if ftello64 exists
7945 set ftello64 d_ftello64
7948 : see if tmpfile64 exists
7949 set tmpfile64 d_tmpfile64
7953 for xxx in d_fgetpos64 d_fopen64 d_freopen64 d_fseek64 d_fseeko64 d_fsetpos64 d_ftell64 d_ftello64 d_tmpfile64
7960 : see if flock exists
7964 : see if fork exists
7968 : see if pathconf exists
7969 set pathconf d_pathconf
7972 : see if fpathconf exists
7973 set fpathconf d_fpathconf
7976 : see if fseeko exists
7980 : see if fsetpos exists
7981 set fsetpos d_fsetpos
7984 : see if this is a sys/mount.h system
7985 set sys/mount.h i_sysmount
7989 : see if statfs exists
7993 : see if fstatfs exists
7994 set fstatfs d_fstatfs
7997 : see if statfs knows about mount flags
7998 set d_statfsflags statfs f_flags $i_sysmount sys/mount.h
8002 : see if statvfs exists
8003 set statvfs d_statvfs
8006 : see if fstatvfs exists
8007 set fstatvfs d_fstatvfs
8011 : see if ftello exists
8015 : see if getgrent exists
8016 set getgrent d_getgrent
8019 : see if gethostbyaddr exists
8020 set gethostbyaddr d_gethbyaddr
8023 : see if gethostbyname exists
8024 set gethostbyname d_gethbyname
8027 : see if gethostent exists
8028 set gethostent d_gethent
8031 : see how we will look up host name
8034 : dummy stub to allow use of elif
8035 elif set gethostname val -f d_gethname; eval $csym; $val; then
8036 echo 'gethostname() found.' >&4
8037 d_gethname="$define"
8039 elif set uname val -f d_uname; eval $csym; $val; then
8042 uname() was found, but you're running xenix, and older versions of xenix
8043 have a broken uname(). If you don't really know whether your xenix is old
8044 enough to have a broken system call, use the default answer.
8051 rp='Is your uname() broken?'
8054 n*) d_uname="$define"; call=uname;;
8057 echo 'uname() found.' >&4
8062 case "$d_gethname" in
8063 '') d_gethname="$undef";;
8066 '') d_uname="$undef";;
8068 case "$d_uname$d_gethname" in
8073 Every now and then someone has a $call() that lies about the hostname
8074 but can't be fixed for political or economic reasons. If you wish, I can
8075 pretend $call() isn't there and maybe compute hostname at run-time
8076 thanks to the '$phostname' command.
8079 rp="Shall I ignore $call() from now on?"
8082 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8085 case "$phostname" in
8087 *) case "$aphostname" in
8093 file=`./loc $file $file $pth`
8094 aphostname=`echo $file $*`
8099 case "$d_uname$d_gethname" in
8102 case "$phostname" in
8104 echo "There will be no way for $package to get your hostname." >&4;;
8106 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
8110 case "$d_phostname" in
8111 '') d_phostname="$undef";;
8114 : see if this is a netdb.h system
8118 : see if prototypes for various gethostxxx netdb.h functions are available
8120 set d_gethostprotos gethostent $i_netdb netdb.h
8123 : see if getlogin exists
8124 set getlogin d_getlogin
8127 : see if getnetbyaddr exists
8128 set getnetbyaddr d_getnbyaddr
8131 : see if getnetbyname exists
8132 set getnetbyname d_getnbyname
8135 : see if getnetent exists
8136 set getnetent d_getnent
8139 : see if prototypes for various getnetxxx netdb.h functions are available
8141 set d_getnetprotos getnetent $i_netdb netdb.h
8145 : see if getprotobyname exists
8146 set getprotobyname d_getpbyname
8149 : see if getprotobynumber exists
8150 set getprotobynumber d_getpbynumber
8153 : see if getprotoent exists
8154 set getprotoent d_getpent
8157 : see if getpgid exists
8158 set getpgid d_getpgid
8161 : see if getpgrp2 exists
8162 set getpgrp2 d_getpgrp2
8165 : see if getppid exists
8166 set getppid d_getppid
8169 : see if getpriority exists
8170 set getpriority d_getprior
8173 : see if prototypes for various getprotoxxx netdb.h functions are available
8175 set d_getprotoprotos getprotoent $i_netdb netdb.h
8178 : see if getpwent exists
8179 set getpwent d_getpwent
8183 : see if getservbyname exists
8184 set getservbyname d_getsbyname
8187 : see if getservbyport exists
8188 set getservbyport d_getsbyport
8191 : see if getservent exists
8192 set getservent d_getsent
8195 : see if prototypes for various getservxxx netdb.h functions are available
8197 set d_getservprotos getservent $i_netdb netdb.h
8200 : see if gettimeofday or ftime exists
8201 set gettimeofday d_gettimeod
8203 case "$d_gettimeod" in
8209 val="$undef"; set d_ftime; eval $setvar
8212 case "$d_gettimeod$d_ftime" in
8215 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
8219 : see if this is an grp system
8225 xxx=`./findhdr grp.h`
8226 $cppstdin $cppflags $cppminus < $xxx >$$.h
8228 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
8240 set d_grpasswd; eval $setvar
8244 : see if this is a netinet/in.h or sys/in.h system
8245 set netinet/in.h i_niin sys/in.h i_sysin
8248 : see if arpa/inet.h has to be included
8249 set arpa/inet.h i_arpainet
8252 : see if htonl --and friends-- exists
8257 : Maybe they are macros.
8262 #include <sys/types.h>
8263 #$i_niin I_NETINET_IN
8265 #$i_arpainet I_ARPA_INET
8267 #include <netinet/in.h>
8273 #include <arpa/inet.h>
8276 printf("Defined as a macro.");
8279 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
8280 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
8282 echo "But it seems to be defined as a macro." >&4
8290 : see which of string.h or strings.h is needed
8292 strings=`./findhdr string.h`
8293 if $test "$strings" && $test -r "$strings"; then
8294 echo "Using <string.h> instead of <strings.h>." >&4
8298 strings=`./findhdr strings.h`
8299 if $test "$strings" && $test -r "$strings"; then
8300 echo "Using <strings.h> instead of <string.h>." >&4
8302 echo "No string header found -- You'll surely have problems." >&4
8308 "$undef") strings=`./findhdr strings.h`;;
8309 *) strings=`./findhdr string.h`;;
8314 if set index val -f; eval $csym; $val; then
8315 if set strchr val -f d_strchr; eval $csym; $val; then
8316 if $contains strchr "$strings" >/dev/null 2>&1 ; then
8319 echo "strchr() found." >&4
8323 echo "index() found." >&4
8328 echo "index() found." >&4
8331 if set strchr val -f d_strchr; eval $csym; $val; then
8334 echo "strchr() found." >&4
8336 echo "No index() or strchr() found!" >&4
8341 set d_strchr; eval $setvar
8343 set d_index; eval $setvar
8345 : check whether inet_aton exists
8346 set inet_aton d_inetaton
8349 : see if inttypes.h is available
8350 : we want a real compile instead of Inhdr because some systems
8351 : have an inttypes.h which includes non-existent headers
8354 #include <inttypes.h>
8356 static int32_t foo32 = 0x12345678;
8360 if eval $compile; then
8361 echo "<inttypes.h> found." >&4
8364 echo "<inttypes.h> NOT found." >&4
8372 case "$use64bits" in
8375 echo $n "Checking to see if your system supports int64_t...$c" >&4
8377 #include <sys/types.h>
8378 #$i_inttypes I_INTTYPES
8380 #include <inttypes.h>
8382 int64_t foo() { int64_t x; x = 7; return x; }
8384 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8386 echo " Yup, it does." >&4
8389 echo " Nope, it doesn't." >&4
8402 $cat >isascii.c <<'EOCP'
8414 if eval $compile; then
8415 echo "isascii() found." >&4
8418 echo "isascii() NOT found." >&4
8425 : see if killpg exists
8429 : see if lchown exists
8431 $cat > try.c <<'EOCP'
8432 /* System header to define __stub macros and hopefully few prototypes,
8433 which can conflict with char lchown(); below. */
8435 /* Override any gcc2 internal prototype to avoid an error. */
8436 /* We use char because int might match the return type of a gcc2
8437 builtin and then its argument prototype would still apply. */
8440 /* The GNU C library defines this for functions which it implements
8441 to always fail with ENOSYS. Some functions are actually named
8442 something starting with __ and the normal name is an alias. */
8443 #if defined (__stub_lchown) || defined (__stub___lchown)
8451 if eval $compile; then
8452 $echo "lchown() found." >&4
8455 $echo "lchown() NOT found." >&4
8461 : see if link exists
8465 : see if localeconv exists
8466 set localeconv d_locconv
8469 : see if lockf exists
8473 : check for length of double
8475 case "$doublesize" in
8477 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
8478 $cat >try.c <<'EOCP'
8482 printf("%d\n", sizeof(double));
8486 if eval $compile_ok; then
8488 $echo " $doublesize bytes." >&4
8491 echo "(I can't seem to compile the test program. Guessing...)"
8492 rp="What is the size of a double precision number (in bytes)?"
8500 : check for long doubles
8502 echo $n "Checking to see if your system supports long doubles...$c" >&4
8503 echo 'long double foo() { long double x; x = 7.0; return x; }' > try.c
8504 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8506 echo " Yup, it does." >&4
8509 echo " Nope, it doesn't." >&4
8515 : check for length of long double
8516 case "${d_longdbl}${longdblsize}" in
8519 $echo $n "Checking to see how big your long doubles are...$c" >&4
8520 $cat >try.c <<'EOCP'
8524 printf("%d\n", sizeof(long double));
8528 if eval $compile; then
8530 $echo " $longdblsize bytes." >&4
8534 echo "(I can't seem to compile the test program. Guessing...)" >&4
8535 rp="What is the size of a long double (in bytes)?"
8539 if $test "X$doublesize" = "X$longdblsize"; then
8540 echo "(That isn't any different from an ordinary double.)"
8546 : check for long long
8548 echo $n "Checking to see if your system supports long long...$c" >&4
8549 echo 'long long foo() { long long x; x = 7; return x; }' > try.c
8550 if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
8552 echo " Yup, it does." >&4
8555 echo " Nope, it doesn't." >&4
8561 : check for length of long long
8562 case "${d_longlong}${longlongsize}" in
8565 $echo $n "Checking to see how big your long longs are...$c" >&4
8566 $cat >try.c <<'EOCP'
8570 printf("%d\n", sizeof(long long));
8574 if eval $compile_ok; then
8575 longlongsize=`./try`
8576 $echo " $longlongsize bytes." >&4
8580 echo "(I can't seem to compile the test program. Guessing...)"
8581 rp="What is the size of a long long (in bytes)?"
8585 if $test "X$longsize" = "X$longlongsize"; then
8586 echo "(That isn't any different from an ordinary long.)"
8592 : see if lstat exists
8596 : see if mblen exists
8600 : see if mbstowcs exists
8601 set mbstowcs d_mbstowcs
8604 : see if mbtowc exists
8608 : see if memcmp exists
8612 : see if memcpy exists
8616 : see if memmove exists
8617 set memmove d_memmove
8620 : see if memset exists
8624 : see if mkdir exists
8628 : see if mkfifo exists
8632 : see if mktime exists
8636 : see if msgctl exists
8640 : see if msgget exists
8644 : see if msgsnd exists
8648 : see if msgrcv exists
8652 : see how much of the 'msg*(2)' library is present.
8655 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
8656 *"$undef"*) h_msg=false;;
8660 case "`ipcs 2>&1`" in
8661 "SVID messages"*"not configured"*)
8662 echo "Your $osname does not have the msg*(2) configured." >&4
8677 : we could also check for sys/ipc.h ...
8678 if $h_msg && $test `./findhdr sys/msg.h`; then
8679 echo "You have the full msg*(2) library." >&4
8682 echo "You don't have the full msg*(2) library." >&4
8688 : see if nice exists
8692 : how to create joinable pthreads
8693 if test "X$usethreads" = "X$define"; then
8695 echo "Checking what constant to use for creating joinable pthreads..." >&4
8696 $cat >try.c <<'EOCP'
8697 #include <pthread.h>
8699 int detachstate = JOINABLE;
8702 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
8703 if eval $compile; then
8704 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&2
8705 val="$undef" # Yes, undef.
8706 set d_old_pthread_create_joinable
8709 set old_pthread_create_joinable
8712 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
8713 if eval $compile; then
8714 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&2
8716 set d_old_pthread_create_joinable
8718 val=PTHREAD_CREATE_UNDETACHED
8719 set old_pthread_create_joinable
8722 set try -DJOINABLE=__UNDETACHED
8723 if eval $compile; then
8724 echo "You seem to use __UNDETACHED." >&2
8726 set d_old_pthread_create_joinable
8729 set old_pthread_create_joinable
8732 echo "Egads, nothing obvious found. Guessing that you use 0." >&2
8734 set d_old_pthread_create_joinable
8737 set old_pthread_create_joinable
8744 d_old_pthread_create_joinable="$undef"
8745 old_pthread_create_joinable=""
8748 : see if pause exists
8752 : see if pipe exists
8756 : see if poll exists
8761 : see whether the various POSIXish _yields exist
8763 #include <pthread.h>
8769 #ifdef PTHREAD_YIELD
8772 #ifdef PTHREAD_YIELD_NULL
8773 pthread_yield(NULL);
8779 : see if sched_yield exists
8780 set try -DSCHED_YIELD
8781 if eval $compile; then
8783 sched_yield='sched_yield()'
8787 case "$usethreads" in
8790 $define) echo 'sched_yield() found.' >&4 ;;
8791 *) echo 'sched_yield() NOT found.' >&4 ;;
8797 : see if pthread_yield exists
8798 set try -DPTHREAD_YIELD
8799 if eval $compile; then
8801 case "$sched_yield" in
8802 '') sched_yield='pthread_yield()' ;;
8805 set try -DPTHREAD_YIELD_NULL
8806 if eval $compile; then
8808 case "$sched_yield" in
8809 '') sched_yield='pthread_yield(NULL)' ;;
8815 case "$usethreads" in
8818 $define) echo 'pthread_yield() found.' >&4 ;;
8819 *) echo 'pthread_yield() NOT found.' >&4 ;;
8826 case "$sched_yield" in
8827 '') sched_yield=undef ;;
8832 : see if this is a pwd.h system
8838 xxx=`./findhdr pwd.h`
8839 $cppstdin $cppflags $cppminus < $xxx >$$.h
8841 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
8849 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
8857 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
8865 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
8873 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
8881 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
8889 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
8897 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
8909 set d_pwquota; eval $setvar
8910 set d_pwage; eval $setvar
8911 set d_pwchange; eval $setvar
8912 set d_pwclass; eval $setvar
8913 set d_pwexpire; eval $setvar
8914 set d_pwcomment; eval $setvar
8915 set d_pwgecos; eval $setvar
8916 set d_pwpasswd; eval $setvar
8920 : see if readdir and friends exist
8921 set readdir d_readdir
8923 set seekdir d_seekdir
8925 set telldir d_telldir
8927 set rewinddir d_rewinddir
8930 : see if readlink exists
8931 set readlink d_readlink
8934 : see if readv exists
8938 : see if rename exists
8942 : see if rmdir exists
8946 : see if memory.h is available.
8951 : See if it conflicts with string.h
8957 $cppstdin $cppflags $cppminus < $strings > mem.h
8958 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
8960 echo "We won't be including <memory.h>."
8970 : can bcopy handle overlapping blocks?
8975 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
8982 $cat >>try.c <<'EOCP'
8985 # include <memory.h>
8988 # include <stdlib.h>
8991 # include <string.h>
8993 # include <strings.h>
8996 # include <unistd.h> /* Needed for NetBSD */
9000 char buf[128], abc[128];
9006 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
9008 for (align = 7; align >= 0; align--) {
9009 for (len = 36; len; len--) {
9012 for (off = 1; off <= len; off++) {
9013 bcopy(b, b+off, len);
9014 bcopy(b+off, b, len);
9015 if (bcmp(b, abc, len))
9024 if eval $compile_ok; then
9025 if ./try 2>/dev/null; then
9029 echo "It can't, sorry."
9030 case "$d_memmove" in
9031 "$define") echo "But that's Ok since you have memmove()." ;;
9035 echo "(I can't compile the test program, so we'll assume not...)"
9036 case "$d_memmove" in
9037 "$define") echo "But that's Ok since you have memmove()." ;;
9042 $rm -f try.* try core
9046 : can memcpy handle overlapping blocks?
9051 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
9058 $cat >>try.c <<'EOCP'
9061 # include <memory.h>
9064 # include <stdlib.h>
9067 # include <string.h>
9069 # include <strings.h>
9072 # include <unistd.h> /* Needed for NetBSD */
9076 char buf[128], abc[128];
9082 /* Copy "abcde..." string to char abc[] so that gcc doesn't
9083 try to store the string in read-only memory. */
9084 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
9086 for (align = 7; align >= 0; align--) {
9087 for (len = 36; len; len--) {
9089 memcpy(b, abc, len);
9090 for (off = 1; off <= len; off++) {
9091 memcpy(b+off, b, len);
9092 memcpy(b, b+off, len);
9093 if (memcmp(b, abc, len))
9102 if eval $compile_ok; then
9103 if ./try 2>/dev/null; then
9107 echo "It can't, sorry."
9108 case "$d_memmove" in
9109 "$define") echo "But that's Ok since you have memmove()." ;;
9113 echo "(I can't compile the test program, so we'll assume not...)"
9114 case "$d_memmove" in
9115 "$define") echo "But that's Ok since you have memmove()." ;;
9120 $rm -f try.* try core
9124 : can memcmp be trusted to compare relative magnitude?
9129 echo "Checking if your memcmp() can compare relative magnitude..." >&4
9136 $cat >>try.c <<'EOCP'
9139 # include <memory.h>
9142 # include <stdlib.h>
9145 # include <string.h>
9147 # include <strings.h>
9150 # include <unistd.h> /* Needed for NetBSD */
9156 if ((a < b) && memcmp(&a, &b, 1) < 0)
9162 if eval $compile_ok; then
9163 if ./try 2>/dev/null; then
9167 echo "No, it can't (it uses signed chars)."
9170 echo "(I can't compile the test program, so we'll assume not...)"
9174 $rm -f try.* try core
9178 : see if select exists
9182 : see if semctl exists
9186 : see if semget exists
9190 : see if semop exists
9194 : see how much of the 'sem*(2)' library is present.
9197 case "$d_semctl$d_semget$d_semop" in
9198 *"$undef"*) h_sem=false;;
9202 case "`ipcs 2>&1`" in
9203 "SVID messages"*"not configured"*)
9204 echo "Your $osname does not have the sem*(2) configured." >&4
9217 : we could also check for sys/ipc.h ...
9218 if $h_sem && $test `./findhdr sys/sem.h`; then
9219 echo "You have the full sem*(2) library." >&4
9222 echo "You don't have the full sem*(2) library." >&4
9228 : see whether sys/sem.h defines union semun
9230 $cat > try.c <<'END'
9231 #include <sys/types.h>
9232 #include <sys/ipc.h>
9233 #include <sys/sem.h>
9234 int main () { union semun semun; semun.buf = 0; }
9237 if eval $compile; then
9238 echo "You have union semun in <sys/sem.h>." >&4
9241 echo "You do not have union semun in <sys/sem.h>." >&4
9244 $rm -f try try.c try.h
9248 : see how to do semctl IPC_STAT
9251 : see whether semctl IPC_STAT can use union semun
9256 # define S_IRUSR S_IREAD
9257 # define S_IWUSR S_IWRITE
9258 # define S_IXUSR S_IEXEC
9260 # define S_IRUSR 0400
9261 # define S_IWUSR 0200
9262 # define S_IXUSR 0100
9264 # define S_IRGRP (S_IRUSR>>3)
9265 # define S_IWGRP (S_IWUSR>>3)
9266 # define S_IXGRP (S_IXUSR>>3)
9267 # define S_IROTH (S_IRUSR>>6)
9268 # define S_IWOTH (S_IWUSR>>6)
9269 # define S_IXOTH (S_IXUSR>>6)
9272 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
9273 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
9274 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
9279 #include <sys/types.h>
9280 #include <sys/ipc.h>
9281 #include <sys/sem.h>
9282 #include <sys/stat.h>
9289 #$d_union_semun HAS_UNION_SEMUN
9292 #ifndef HAS_UNION_SEMUN
9295 struct semid_ds *buf;
9296 unsigned short *array;
9302 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9303 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9305 struct semid_ds argbuf;
9308 st = semctl(sem, 0, IPC_STAT, arg);
9312 # endif /* IPC_STAT */
9313 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9315 if (semctl(sem, 0, IPC_RMID, arg) != 0)
9316 # endif /* IPC_RMID */
9317 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9319 #endif /* IPC_PRIVATE && ... */
9320 printf("semget failed: errno = %d\n", errno);
9326 if eval $compile; then
9329 semun) val="$define" ;;
9335 case "$d_semctl_semun" in
9337 echo "You can use union semun for semctl IPC_STAT." >&4
9340 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
9345 : see whether semctl IPC_STAT can use struct semid_ds pointer
9346 $cat > try.c <<'END'
9347 #include <sys/types.h>
9348 #include <sys/ipc.h>
9349 #include <sys/sem.h>
9350 #include <sys/stat.h>
9358 struct semid_ds arg;
9361 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
9362 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
9365 st = semctl(sem, 0, IPC_STAT, &arg);
9367 printf("semid_ds\n");
9369 # endif /* IPC_STAT */
9370 printf("semctl IPC_STAT failed: errno = %d\n", errno);
9372 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
9373 # endif /* IPC_RMID */
9374 printf("semctl IPC_RMID failed: errno = %d\n", errno);
9376 #endif /* IPC_PRIVATE && ... */
9377 printf("semget failed: errno = %d\n", errno);
9384 if eval $compile; then
9387 semid_ds) val="$define" ;;
9391 set d_semctl_semid_ds
9393 case "$d_semctl_semid_ds" in
9395 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
9397 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
9404 # We do not have the full sem*(2) library, so assume we can not
9410 set d_semctl_semid_ds
9415 : see if setegid exists
9416 set setegid d_setegid
9419 : see if seteuid exists
9420 set seteuid d_seteuid
9423 : see if setgrent exists
9424 set setgrent d_setgrent
9427 : see if sethostent exists
9428 set sethostent d_sethent
9431 : see if setlinebuf exists
9432 set setlinebuf d_setlinebuf
9435 : see if setlocale exists
9436 set setlocale d_setlocale
9439 : see if setnetent exists
9440 set setnetent d_setnent
9443 : see if setprotoent exists
9444 set setprotoent d_setpent
9447 : see if setpgid exists
9448 set setpgid d_setpgid
9451 : see if setpgrp2 exists
9452 set setpgrp2 d_setpgrp2
9455 : see if setpriority exists
9456 set setpriority d_setprior
9459 : see if setpwent exists
9460 set setpwent d_setpwent
9463 : see if setregid exists
9464 set setregid d_setregid
9466 set setresgid d_setresgid
9469 : see if setreuid exists
9470 set setreuid d_setreuid
9472 set setresuid d_setresuid
9475 : see if setrgid exists
9476 set setrgid d_setrgid
9479 : see if setruid exists
9480 set setruid d_setruid
9483 : see if setservent exists
9484 set setservent d_setsent
9487 : see if setsid exists
9491 : see if setvbuf exists
9492 set setvbuf d_setvbuf
9495 : see if sfio.h is available
9500 : see if sfio library is available
9511 : Ok, but do we want to use it.
9515 true|$define|[yY]*) dflt='y';;
9518 echo "$package can use the sfio library, but it is experimental."
9519 rp="You seem to have sfio available, do you want to try using it?"
9523 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
9525 : Remove sfio from list of libraries to use
9526 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
9529 echo "libs = $libs" >&4
9533 *) case "$usesfio" in
9535 echo "Sorry, cannot find sfio on this machine" >&4
9536 echo "Ignoring your setting of usesfio=$usesfio" >&4
9544 $define) usesfio='true';;
9545 *) usesfio='false';;
9548 : see if shmctl exists
9552 : see if shmget exists
9556 : see if shmat exists
9559 : see what shmat returns
9562 $cat >shmat.c <<'END'
9563 #include <sys/shm.h>
9566 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
9571 echo "and it returns ($shmattype)." >&4
9572 : see if a prototype for shmat is available
9573 xxx=`./findhdr sys/shm.h`
9574 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
9575 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
9586 set d_shmatprototype
9589 : see if shmdt exists
9593 : see how much of the 'shm*(2)' library is present.
9596 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
9597 *"$undef"*) h_shm=false;;
9601 case "`ipcs 2>&1`" in
9602 "SVID shared memory"*"not configured"*)
9603 echo "Your $osname does not have the shm*(2) configured." >&4
9618 : we could also check for sys/ipc.h ...
9619 if $h_shm && $test `./findhdr sys/shm.h`; then
9620 echo "You have the full shm*(2) library." >&4
9623 echo "You don't have the full shm*(2) library." >&4
9630 : see if we have sigaction
9631 if set sigaction val -f d_sigaction; eval $csym; $val; then
9632 echo 'sigaction() found.' >&4
9633 $cat > try.c <<'EOP'
9635 #include <sys/types.h>
9639 struct sigaction act, oact;
9643 if eval $compile_ok; then
9646 echo "But you don't seem to have a useable struct sigaction." >&4
9650 echo 'sigaction NOT found.' >&4
9653 set d_sigaction; eval $setvar
9654 $rm -f try try$_o try.c
9656 : see if sigsetjmp exists
9658 case "$d_sigsetjmp" in
9666 if (sigsetjmp(env,1))
9674 if eval $compile; then
9675 if ./try >/dev/null 2>&1; then
9676 echo "POSIX sigsetjmp found." >&4
9680 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
9686 echo "sigsetjmp not found." >&4
9690 *) val="$d_sigsetjmp"
9691 case "$d_sigsetjmp" in
9692 $define) echo "POSIX sigsetjmp found." >&4;;
9693 $undef) echo "sigsetjmp not found." >&4;;
9701 : see if stat knows about block sizes
9703 set d_statblks stat st_blocks $i_sysstat sys/stat.h
9706 : see if _ptr and _cnt from stdio act std
9708 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9709 echo "(Looks like you have stdio.h from Linux.)"
9710 case "$stdio_ptr" in
9711 '') stdio_ptr='((fp)->_IO_read_ptr)'
9714 *) ptr_lval=$d_stdio_ptr_lval;;
9716 case "$stdio_cnt" in
9717 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
9720 *) cnt_lval=$d_stdio_cnt_lval;;
9722 case "$stdio_base" in
9723 '') stdio_base='((fp)->_IO_read_base)';;
9725 case "$stdio_bufsiz" in
9726 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
9729 case "$stdio_ptr" in
9730 '') stdio_ptr='((fp)->_ptr)'
9733 *) ptr_lval=$d_stdio_ptr_lval;;
9735 case "$stdio_cnt" in
9736 '') stdio_cnt='((fp)->_cnt)'
9739 *) cnt_lval=$d_stdio_cnt_lval;;
9741 case "$stdio_base" in
9742 '') stdio_base='((fp)->_base)';;
9744 case "$stdio_bufsiz" in
9745 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
9748 : test whether _ptr and _cnt really work
9749 echo "Checking how std your stdio is..." >&4
9752 #define FILE_ptr(fp) $stdio_ptr
9753 #define FILE_cnt(fp) $stdio_cnt
9755 FILE *fp = fopen("try.c", "r");
9758 18 <= FILE_cnt(fp) &&
9759 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
9767 if eval $compile; then
9769 echo "Your stdio acts pretty std."
9772 echo "Your stdio isn't very std."
9775 echo "Your stdio doesn't appear very std."
9781 : Can _ptr be used as an lvalue?
9782 case "$d_stdstdio$ptr_lval" in
9783 $define$define) val=$define ;;
9786 set d_stdio_ptr_lval
9789 : Can _cnt be used as an lvalue?
9790 case "$d_stdstdio$cnt_lval" in
9791 $define$define) val=$define ;;
9794 set d_stdio_cnt_lval
9797 : see if _base is also standard
9799 case "$d_stdstdio" in
9803 #define FILE_base(fp) $stdio_base
9804 #define FILE_bufsiz(fp) $stdio_bufsiz
9806 FILE *fp = fopen("try.c", "r");
9809 19 <= FILE_bufsiz(fp) &&
9810 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
9817 if eval $compile; then
9819 echo "And its _base field acts std."
9822 echo "But its _base field isn't std."
9825 echo "However, it seems to be lacking the _base field."
9833 : see if strcoll exists
9834 set strcoll d_strcoll
9837 : check for structure copying
9839 echo "Checking to see if your C compiler can copy structs..." >&4
9840 $cat >try.c <<'EOCP'
9850 if $cc -c try.c >/dev/null 2>&1 ; then
9855 echo "Nope, it can't."
9861 : see if strerror and/or sys_errlist[] exist
9863 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
9864 if set strerror val -f d_strerror; eval $csym; $val; then
9865 echo 'strerror() found.' >&4
9866 d_strerror="$define"
9867 d_strerrm='strerror(e)'
9868 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9869 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
9870 d_syserrlst="$define"
9872 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
9873 d_syserrlst="$undef"
9875 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
9876 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
9877 echo 'strerror() found in string header.' >&4
9878 d_strerror="$define"
9879 d_strerrm='strerror(e)'
9880 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9881 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
9882 d_syserrlst="$define"
9884 echo "(You don't appear to have any sys_errlist[], how can this be?)"
9885 d_syserrlst="$undef"
9887 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
9888 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
9890 d_syserrlst="$define"
9891 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
9893 echo 'strerror() and sys_errlist[] NOT found.' >&4
9895 d_syserrlst="$undef"
9896 d_strerrm='"unknown"'
9900 : see if strtod exists
9904 : see if strtol exists
9908 : see if strtoul exists
9909 set strtoul d_strtoul
9912 : see if strxfrm exists
9913 set strxfrm d_strxfrm
9916 : see if symlink exists
9917 set symlink d_symlink
9920 : see if syscall exists
9921 set syscall d_syscall
9924 : see if sysconf exists
9925 set sysconf d_sysconf
9928 : see if system exists
9932 : see if tcgetpgrp exists
9933 set tcgetpgrp d_tcgetpgrp
9936 : see if tcsetpgrp exists
9937 set tcsetpgrp d_tcsetpgrp
9940 : define an is-a-typedef? function
9941 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9943 "") inclist="sys/types.h";;
9945 eval "varval=\$$var";
9949 for inc in $inclist; do
9950 echo "#include <$inc>" >>temp.c;
9952 echo "#ifdef $type" >> temp.c;
9953 echo "printf(\"We have $type\");" >> temp.c;
9954 echo "#endif" >> temp.c;
9955 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9956 if $contains $type temp.E >/dev/null 2>&1; then
9962 *) eval "$var=\$varval";;
9965 : define an is-a-typedef? function that prompts if the type is not available.
9966 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9968 "") inclist="sys/types.h";;
9970 eval "varval=\$$var";
9974 for inc in $inclist; do
9975 echo "#include <$inc>" >>temp.c;
9977 echo "#ifdef $type" >> temp.c;
9978 echo "printf(\"We have $type\");" >> temp.c;
9979 echo "#endif" >> temp.c;
9980 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9982 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9983 if $contains $type temp.E >/dev/null 2>&1; then
9984 echo "$type found." >&4;
9987 echo "$type NOT found." >&4;
9993 *) eval "$var=\$varval";;
9996 : see if this is a sys/times.h system
9997 set sys/times.h i_systimes
10000 : see if times exists
10002 if set times val -f d_times; eval $csym; $val; then
10003 echo 'times() found.' >&4
10006 case "$i_systimes" in
10007 "$define") inc='sys/times.h';;
10009 rp="What is the type returned by times() on this system?"
10010 set clock_t clocktype long stdio.h sys/types.h $inc
10013 echo 'times() NOT found, hope that will do.' >&4
10018 : see if truncate exists
10019 set truncate d_truncate
10022 : see if tzname[] exists
10024 if set tzname val -a d_tzname; eval $csym; $val; then
10026 echo 'tzname[] found.' >&4
10029 echo 'tzname[] NOT found.' >&4
10034 : see if umask exists
10038 : backward compatibility for d_hvfork
10039 if test X$d_hvfork != X; then
10040 d_vfork="$d_hvfork"
10043 : see if there is a vfork
10048 : Ok, but do we want to use it. vfork is reportedly unreliable in
10049 : perl on Solaris 2.x, and probably elsewhere.
10053 case "$usevfork" in
10057 rp="Some systems have problems with vfork(). Do you want to use it?"
10062 echo "Ok, we won't use vfork()."
10071 $define) usevfork='true';;
10072 *) usevfork='false';;
10075 : see if this is an sysdir system
10076 set sys/dir.h i_sysdir
10079 : see if this is an sysndir system
10080 set sys/ndir.h i_sysndir
10083 : see if sys/types.h has to be included
10084 set sys/types.h i_systypes
10087 : see if closedir exists
10088 set closedir d_closedir
10091 case "$d_closedir" in
10094 echo "Checking whether closedir() returns a status..." >&4
10095 cat > closedir.c <<EOM
10096 #$i_dirent I_DIRENT /**/
10097 #$i_sysdir I_SYS_DIR /**/
10098 #$i_sysndir I_SYS_NDIR /**/
10099 #$i_systypes I_SYS_TYPES /**/
10101 #if defined(I_SYS_TYPES)
10102 #include <sys/types.h>
10104 #if defined(I_DIRENT)
10105 #include <dirent.h>
10106 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10107 #include <sys/dir.h>
10111 #include <sys/ndir.h>
10115 #include <ndir.h> /* may be wrong in the future */
10117 #include <sys/dir.h>
10122 int main() { return closedir(opendir(".")); }
10125 if eval $compile_ok; then
10126 if ./closedir > /dev/null 2>&1 ; then
10127 echo "Yes, it does."
10130 echo "No, it doesn't."
10134 echo "(I can't seem to compile the test program--assuming it doesn't)"
10142 set d_void_closedir
10145 : check for volatile keyword
10147 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10148 $cat >try.c <<'EOCP'
10151 typedef struct _goo_struct goo_struct;
10152 goo_struct * volatile goo = ((goo_struct *)0);
10153 struct _goo_struct {
10158 typedef unsigned short foo_t;
10159 char *volatile foo;
10161 volatile foo_t blech;
10165 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10167 echo "Yup, it does."
10170 echo "Nope, it doesn't."
10176 : see if there is a wait4
10180 : see if waitpid exists
10181 set waitpid d_waitpid
10184 : see if wcstombs exists
10185 set wcstombs d_wcstombs
10188 : see if wctomb exists
10189 set wctomb d_wctomb
10192 : see if writev exists
10193 set writev d_writev
10196 : preserve RCS keywords in files with variable substitution, grrr
10201 Revision='$Revision'
10203 : check for alignment requirements
10205 case "$alignbytes" in
10206 '') echo "Checking alignment constraints..." >&4
10207 $cat >try.c <<'EOCP'
10214 printf("%d\n", (char *)&try.bar - (char *)&try.foo);
10218 if eval $compile_ok; then
10222 echo "(I can't seem to compile the test program...)"
10225 *) dflt="$alignbytes"
10228 rp="Doubles must be aligned on a how-many-byte boundary?"
10233 : check for ordering of bytes in a long
10234 case "$byteorder" in
10238 In the following, larger digits indicate more significance. A big-endian
10239 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
10240 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
10241 machines may have weird orders like 3412. A Cray will report 87654321. If
10242 the test program works the default is probably right.
10243 I'm now running the test program...
10245 $cat >try.c <<'EOCP'
10252 char c[sizeof(long)];
10255 if (sizeof(long) > 4)
10256 u.l = (0x08070605L << 32) | 0x04030201L;
10259 for (i = 0; i < sizeof(long); i++)
10260 printf("%c", u.c[i]+'0');
10267 if eval $compile && ./try > /dev/null; then
10270 [1-4][1-4][1-4][1-4]|12345678|87654321)
10271 echo "(The test program ran ok.)"
10272 echo "byteorder=$dflt"
10275 ????|????????) echo "(The test program ran ok.)" ;;
10276 *) echo "(The test program didn't run right for some reason.)" ;;
10281 (I can't seem to compile the test program. Guessing big-endian...)
10284 case "$xxx_prompt" in
10286 rp="What is the order of bytes in a long?"
10297 : how do we catenate cpp tokens here?
10299 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
10300 $cat >cpp_stuff.c <<'EOCP'
10301 #define RCAT(a,b)a/**/b
10302 #define ACAT(a,b)a ## b
10306 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
10307 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
10308 echo "Oh! Smells like ANSI's been here." >&4
10309 echo "We can catify or stringify, separately or together!"
10311 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
10312 echo "Ah, yes! The good old days!" >&4
10313 echo "However, in the good old days we don't know how to stringify and"
10314 echo "catify at the same time."
10318 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
10319 to have to edit the values of CAT[2-5] in config.h...
10321 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
10325 : see if this is a db.h system
10331 : Check db version.
10333 echo "Checking Berkeley DB version ..." >&4
10339 #include <sys/types.h>
10344 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
10345 int Major, Minor, Patch ;
10346 unsigned long Version ;
10347 (void)db_version(&Major, &Minor, &Patch) ;
10348 printf("You have Berkeley DB Version 2 or greater\n");
10350 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
10351 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
10352 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
10353 Major, Minor, Patch) ;
10355 /* check that db.h & libdb are compatible */
10356 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
10357 printf("db.h and libdb are incompatible\n") ;
10361 printf("db.h and libdb are compatible\n") ;
10363 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
10364 + DB_VERSION_PATCH ;
10366 /* needs to be >= 2.3.4 */
10367 if (Version < 2003004) {
10368 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
10369 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
10375 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
10376 printf("You have Berkeley DB Version 1\n");
10377 exit(0); /* DB version < 2: the coast is clear. */
10379 exit(1); /* <db.h> not Berkeley DB? */
10385 if eval $compile && ./try; then
10386 echo 'Looks OK.' >&4
10388 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
10392 : Remove db from list of libraries to use
10393 echo "Removing unusable -ldb from library list" >&4
10394 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
10397 echo "libs = $libs" >&4
10407 : Check the return type needed for hash
10409 echo "Checking return type needed for hash for Berkeley DB ..." >&4
10415 #include <sys/types.h>
10418 #ifndef DB_VERSION_MAJOR
10419 u_int32_t hash_cb (ptr, size)
10427 info.hash = hash_cb;
10431 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10432 if $contains warning try.out >>/dev/null 2>&1 ; then
10435 db_hashtype='u_int32_t'
10438 : XXX Maybe we should just give up here.
10439 db_hashtype=u_int32_t
10441 echo "Help: I can't seem to compile the db test program." >&4
10442 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
10445 echo "Your version of Berkeley DB uses $db_hashtype for hash."
10447 *) db_hashtype=u_int32_t
10452 : Check the return type needed for prefix
10454 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
10460 #include <sys/types.h>
10463 #ifndef DB_VERSION_MAJOR
10464 size_t prefix_cb (key1, key2)
10472 info.prefix = prefix_cb;
10476 if $cc $ccflags -c try.c >try.out 2>&1 ; then
10477 if $contains warning try.out >>/dev/null 2>&1 ; then
10478 db_prefixtype='int'
10480 db_prefixtype='size_t'
10483 db_prefixtype='size_t'
10484 : XXX Maybe we should just give up here.
10486 echo "Help: I can't seem to compile the db test program." >&4
10487 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
10490 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
10492 *) db_prefixtype='size_t'
10496 : check for void type
10498 echo "Checking to see how well your C compiler groks the void type..." >&4
10499 case "$voidflags" in
10501 $cat >try.c <<'EOCP'
10507 extern void moo(); /* function returning void */
10508 void (*goo)(); /* ptr to func returning void */
10510 void *hue; /* generic ptr */
10525 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
10526 voidflags=$defvoidused
10527 echo "Good. It appears to support void to the level $package wants.">&4
10528 if $contains warning .out >/dev/null 2>&1; then
10529 echo "However, you might get some warnings that look like this:"
10533 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
10534 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
10535 echo "It supports 1..."
10536 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
10537 echo "It also supports 2..."
10538 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
10540 echo "And it supports 4 but not 8 definitely."
10542 echo "It doesn't support 4..."
10543 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
10545 echo "But it supports 8."
10548 echo "Neither does it support 8."
10552 echo "It does not support 2..."
10553 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
10555 echo "But it supports 4 and 8."
10557 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
10559 echo "And it supports 4 but has not heard about 8."
10561 echo "However it supports 8 but not 4."
10566 echo "There is no support at all for void."
10571 case "$voidflags" in
10573 *) $cat >&4 <<'EOM'
10574 Support flag bits are:
10575 1: basic void declarations.
10576 2: arrays of pointers to functions returning void.
10577 4: operations between pointers to and addresses of void functions.
10578 8: generic void pointers.
10581 rp="Your void support flags add up to what?"
10589 : How can we generate normalized random numbers ?
10591 echo "Looking for a random number function..." >&4
10592 case "$randfunc" in
10594 if set drand48 val -f; eval $csym; $val; then
10596 echo "Good, found drand48()." >&4
10597 elif set random val -f; eval $csym; $val; then
10599 echo "OK, found random()." >&4
10602 echo "Yick, looks like I have to use rand()." >&4
10613 *-Dmy_rand=*|*-Dmy_srand=*)
10614 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
10615 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
10616 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
10617 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
10621 while $test "$cont"; do
10622 rp="Use which function to generate random numbers?"
10624 if $test "$ans" = "$dflt"; then
10630 if set $ans val -f; eval $csym; $val; then
10634 rp="I cannot find function $ans. Use that name anyway?"
10643 case "$randfunc" in
10645 drand01="drand48()"
10651 case "$randbits" in
10653 echo "Checking to see how many bits your $randfunc() function produces..." >&4
10655 #$i_unistd I_UNISTD
10656 #$i_stdlib I_STDLIB
10659 # include <unistd.h>
10662 # include <stdlib.h>
10667 register unsigned long tmp;
10668 register unsigned long max = 0L;
10670 for (i = 1000; i; i--) {
10671 tmp = (unsigned long) $randfunc();
10672 if (tmp > max) max = tmp;
10674 for (i = 0; max; i++)
10680 if eval $compile_ok; then
10684 echo "(I can't seem to compile the test program...)"
10691 rp="How many bits does your $randfunc() function produce?"
10695 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10696 seedfunc="s$randfunc"
10697 randseedtype=unsigned
10701 rp="How many bits does your $randfunc() function produce?"
10704 seedfunc="s$randfunc"
10705 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
10706 if set $seedfunc val -f; eval $csym; $val; then
10707 echo "(Using $seedfunc() to seed random generator)"
10709 echo "(Warning: no $seedfunc() to seed random generator)"
10712 randseedtype=unsigned
10720 echo "Determining whether or not we are on an EBCDIC system..." >&4
10721 $cat >tebcdic.c <<'EOM'
10724 if ('M'==0xd4) return 0;
10731 if eval $compile_ok; then
10733 echo "You have EBCDIC." >&4
10736 echo "Nope, no EBCDIC. Assuming ASCII or some ISO Latin." >&4
10739 echo "I'm unable to compile the test program." >&4
10740 echo "I'll assume ASCII or some ISO Latin." >&4
10742 $rm -f tebcdic.c tebcdic
10746 : see what type file positions are declared as in the library
10747 rp="What is the type for file position used by fsetpos()?"
10748 set fpos_t fpostype long stdio.h sys/types.h
10751 : Store the full pathname to the sed program for use in the C program
10754 : see what type gids are declared as in the kernel
10756 echo "Looking for the type for group ids returned by getgid()."
10757 set gid_t gidtype xxx stdio.h sys/types.h
10761 xxx=`./findhdr sys/user.h`
10762 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
10764 unsigned) dflt="$1 $2" ;;
10768 *) dflt="$gidtype";;
10771 gid_t) echo "gid_t found." ;;
10772 *) rp="What is the type for group ids returned by getgid()?"
10778 : see if getgroups exists
10779 set getgroups d_getgrps
10782 : see if setgroups exists
10783 set setgroups d_setgrps
10787 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
10789 case "$d_getgrps$d_setgrps" in
10791 case "$groupstype" in
10792 '') dflt="$gidtype" ;;
10793 *) dflt="$groupstype" ;;
10796 What type of pointer is the second argument to getgroups() and setgroups()?
10797 Usually this is the same as group ids, $gidtype, but not always.
10800 rp='What type pointer is the second argument to getgroups() and setgroups()?'
10804 *) groupstype="$gidtype";;
10807 : see what type lseek is declared as in the kernel
10808 rp="What is the type used for lseek's offset on this system?"
10809 set off_t lseektype long stdio.h sys/types.h
10813 $echo $n "Checking to see how big your file offsets are...$c" >&4
10815 #include <sys/types.h>
10819 printf("%d\n", sizeof($lseektype));
10823 if eval $compile_ok; then
10825 $echo " $lseeksize bytes." >&4
10829 echo "(I can't seem to compile the test program. Guessing...)"
10830 rp="What is the size of your file offsets (in bytes)?"
10837 echo "Checking if your $make program sets \$(MAKE)..." >&4
10838 case "$make_set_make" in
10840 $sed 's/^X //' > testmake.mak << 'EOF'
10842 X @echo 'maketemp="$(MAKE)"'
10844 case "`$make -f testmake.mak 2>/dev/null`" in
10845 *maketemp=*) make_set_make='#' ;;
10846 *) make_set_make="MAKE=$make" ;;
10848 $rm -f testmake.mak
10851 case "$make_set_make" in
10852 '#') echo "Yup, it does.";;
10853 *) echo "Nope, it doesn't.";;
10856 : see what type is used for mode_t
10857 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
10858 set mode_t modetype int stdio.h sys/types.h
10861 : define a fucntion to check prototypes
10862 $cat > protochk <<EOSH
10865 optimize="$optimize"
10867 prototype="$prototype"
10872 $cat >> protochk <<'EOSH'
10877 while test $# -ge 2; do
10879 $define) echo "#include <$2>" >> try.c ;;
10880 literal) echo "$2" >> try.c ;;
10884 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
10885 cat >> try.c <<'EOCP'
10886 #ifdef CAN_PROTOTYPE
10887 #define _(args) args
10892 echo "$foo" >> try.c
10893 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
10894 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
10900 $eunicefix protochk
10902 : see what type is used for size_t
10903 rp="What is the type used for the length parameter for string functions?"
10904 set size_t sizetype 'unsigned int' stdio.h sys/types.h
10907 : check for type of arguments to gethostbyaddr.
10908 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
10909 case "$d_gethbyaddr" in
10913 Checking to see what type of arguments are accepted by gethostbyaddr().
10915 hdrs="$define sys/types.h
10916 $d_socket sys/socket.h
10917 $i_niin netinet/in.h
10919 $i_unistd unistd.h"
10920 : The first arg can 'char *' or 'void *'
10921 : The second arg is some of integral type
10922 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
10923 for yyy in size_t long int; do
10924 case "$netdb_host_type" in
10925 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
10926 if ./protochk "$try" $hdrs; then
10927 echo "Your system accepts $xxx for the first arg."
10928 echo "...and $yyy for the second arg."
10929 netdb_host_type="$xxx"
10930 netdb_hlen_type="$yyy"
10936 : In case none of those worked, prompt the user.
10937 case "$netdb_host_type" in
10938 '') rp='What is the type for the 1st argument to gethostbyaddr?'
10941 netdb_host_type=$ans
10942 rp='What is the type for the 2nd argument to gethostbyaddr?'
10945 netdb_hlen_type=$ans
10949 *) : no gethostbyaddr, so pick harmless defaults
10950 netdb_host_type='char *'
10951 netdb_hlen_type="$sizetype"
10954 # Remove the "const" if needed. -- but then we'll have a
10956 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
10959 : check for type of argument to gethostbyname.
10960 if test "X$netdb_name_type" = X ; then
10961 case "$d_gethbyname" in
10965 Checking to see what type of argument is accepted by gethostbyname().
10967 hdrs="$define sys/types.h
10968 $d_socket sys/socket.h
10969 $i_niin netinet/in.h
10971 $i_unistd unistd.h"
10972 for xxx in "const char *" "char *"; do
10973 case "$netdb_name_type" in
10974 '') try="extern struct hostent *gethostbyname($xxx);"
10975 if ./protochk "$try" $hdrs; then
10976 echo "Your system accepts $xxx."
10977 netdb_name_type="$xxx"
10982 : In case none of those worked, prompt the user.
10983 case "$netdb_name_type" in
10984 '') rp='What is the type for the 1st argument to gethostbyname?'
10987 netdb_name_type=$ans
10991 *) : no gethostbyname, so pick harmless default
10992 netdb_name_type='char *'
10997 : check for type of 1st argument to getnetbyaddr.
10998 if test "X$netdb_net_type" = X ; then
10999 case "$d_getnbyaddr" in
11003 Checking to see what type of 1st argument is accepted by getnetbyaddr().
11005 hdrs="$define sys/types.h
11006 $d_socket sys/socket.h
11007 $i_niin netinet/in.h
11009 $i_unistd unistd.h"
11010 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
11011 case "$netdb_net_type" in
11012 '') try="extern struct netent *getnetbyaddr($xxx, int);"
11013 if ./protochk "$try" $hdrs; then
11014 echo "Your system accepts $xxx."
11015 netdb_net_type="$xxx"
11020 : In case none of those worked, prompt the user.
11021 case "$netdb_net_type" in
11022 '') rp='What is the type for the 1st argument to getnetbyaddr?'
11025 netdb_net_type=$ans
11029 *) : no getnetbyaddr, so pick harmless default
11030 netdb_net_type='long'
11034 : locate the preferred pager for this system
11048 '') dflt=/usr/ucb/more;;
11055 rp='What pager is used on your system?'
11059 : see what type pids are declared as in the kernel
11060 rp="What is the type of process ids on this system?"
11061 set pid_t pidtype int stdio.h sys/types.h
11064 : check for length of pointer
11068 $echo $n "Checking to see how big your pointers are...$c" >&4
11069 if test "$voidflags" -gt 7; then
11070 echo '#define VOID_PTR char *' > try.c
11072 echo '#define VOID_PTR void *' > try.c
11074 $cat >>try.c <<'EOCP'
11078 printf("%d\n", sizeof(VOID_PTR));
11083 if eval $compile_ok; then
11085 $echo " $ptrsize bytes." >&4
11088 echo "(I can't seem to compile the test program. Guessing...)" >&4
11089 rp="What is the size of a pointer (in bytes)?"
11097 : see if ar generates random libraries by itself
11099 echo "Checking how to generate random libraries on your machine..." >&4
11100 echo 'int bar1() { return bar2(); }' > bar1.c
11101 echo 'int bar2() { return 2; }' > bar2.c
11102 $cat > foo.c <<'EOP'
11103 main() { printf("%d\n", bar1()); exit(0); }
11105 $cc $ccflags -c bar1.c >/dev/null 2>&1
11106 $cc $ccflags -c bar2.c >/dev/null 2>&1
11107 $cc $ccflags -c foo.c >/dev/null 2>&1
11108 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
11109 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11110 ./foobar >/dev/null 2>&1; then
11111 echo "$ar appears to generate random libraries itself."
11114 elif $ar ts bar$_a >/dev/null 2>&1 &&
11115 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
11116 ./foobar >/dev/null 2>&1; then
11117 echo "a table of contents needs to be added with '$ar ts'."
11124 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
11125 $test -f $ranlib || ranlib=''
11128 if $test -n "$ranlib"; then
11129 echo "your system has '$ranlib'; we'll use that."
11132 echo "your system doesn't seem to support random libraries"
11133 echo "so we'll use lorder and tsort to order the libraries."
11140 : check for type of arguments to select.
11141 case "$selecttype" in
11142 '') case "$d_select" in
11145 Checking to see what type of arguments are accepted by select().
11147 hdrs="$define sys/types.h
11148 $i_systime sys/time.h
11149 $i_sysselct sys/select.h
11150 $d_socket sys/socket.h"
11151 : The first arg can be int, unsigned, or size_t
11152 : The last arg may or may not be 'const'
11154 : void pointer has been seen but using that
11155 : breaks the selectminbits test
11156 for xxx in 'fd_set *' 'int *'; do
11157 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
11158 for tmo in 'struct timeval *' 'const struct timeval *'; do
11160 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
11161 if ./protochk "$try" $hdrs; then
11162 echo "Your system accepts $xxx."
11171 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
11172 case "$d_fd_set" in
11173 $define) dflt="fd_set *" ;;
11182 *) : no select, so pick a harmless default
11189 : check for the select 'width'
11190 case "$selectminbits" in
11191 '') case "$d_select" in
11195 Checking to see on how many bits at a time your select() operates...
11198 #include <sys/types.h>
11200 #$i_systime I_SYS_TIME
11201 #$i_systimek I_SYS_TIME_KERNEL
11206 # ifdef I_SYS_TIME_KERNEL
11209 # include <sys/time.h>
11210 # ifdef I_SYS_TIME_KERNEL
11214 #$i_sysselct I_SYS_SELECT
11215 #ifdef I_SYS_SELECT
11216 #include <sys/select.h>
11220 #define S sizeof(*(b))
11222 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
11223 #define NBITS (NBYTES * 8)
11232 fp = fopen("try.c", "r");
11238 b = ($selecttype)s;
11239 for (i = 0; i < NBITS; i++)
11243 select(fd + 1, b, 0, 0, &t);
11244 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
11245 printf("%d\n", i + 1);
11250 if eval $compile_ok; then
11251 selectminbits=`./try`
11252 case "$selectminbits" in
11254 Cannot figure out on how many bits at a time your select() operates.
11255 I'll play safe and guess it is 32 bits.
11261 *) bits="$selectminbits bits" ;;
11263 echo "Your select() operates on $bits at a time." >&4
11265 rp='What is the minimum number of bits your select() operates on?'
11266 case "$byteorder" in
11267 1234|12345678) dflt=32 ;;
11272 selectminbits="$val"
11276 *) : no select, so pick a harmless default
11283 : Trace out the files included by signal.h, then look for SIGxxx names.
11284 : Remove SIGARRAYSIZE used by HPUX.
11285 : Remove SIGTYP void lines used by OS2.
11286 xxx=`echo '#include <signal.h>' |
11287 $cppstdin $cppminus $cppflags 2>/dev/null |
11288 $grep '^[ ]*#.*include' |
11289 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
11290 : Check this list of files to be sure we have parsed the cpp output ok.
11291 : This will also avoid potentially non-existent files, such
11294 for xx in $xxx /dev/null ; do
11295 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
11297 : If we have found no files, at least try signal.h
11298 case "$xxxfiles" in
11299 '') xxxfiles=`./findhdr signal.h` ;;
11302 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
11303 print substr($2, 4, 20)
11305 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
11306 print substr($3, 4, 20)
11308 : Append some common names just in case the awk scan failed.
11309 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
11310 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
11311 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
11312 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
11313 : generate a few handy files for later
11314 $cat > signal.c <<'EOCP'
11315 #include <sys/types.h>
11316 #include <signal.h>
11320 /* Strange style to avoid deeply-nested #if/#else/#endif */
11323 # define NSIG (_NSIG)
11329 # define NSIG (SIGMAX+1)
11335 # define NSIG (SIG_MAX+1)
11341 # define NSIG (MAXSIG+1)
11347 # define NSIG (MAX_SIG+1)
11352 # ifdef SIGARRAYSIZE
11353 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
11359 # define NSIG (_sys_nsig) /* Solaris 2.5 */
11363 /* Default to some arbitrary number that's big enough to get most
11364 of the common signals.
11370 printf("NSIG %d\n", NSIG);
11376 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
11378 printf "#ifdef SIG"; printf $1; printf "\n"
11379 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
11380 printf $1; printf ");\n"
11384 printf "#endif /* JUST_NSIG */\n";
11388 $cat >signal.awk <<'EOP'
11389 BEGIN { ndups = 0 }
11390 $1 ~ /^NSIG$/ { nsig = $2 }
11391 ($1 !~ /^NSIG$/) && (NF == 2) {
11392 if ($2 > maxsig) { maxsig = $2 }
11393 if (sig_name[$2]) {
11394 dup_name[ndups] = $1
11395 dup_num[ndups] = $2
11405 if (nsig == 0) { nsig = maxsig + 1 }
11406 for (n = 1; n < nsig; n++) {
11408 printf("%s %d\n", sig_name[n], sig_num[n])
11411 printf("NUM%d %d\n", n, n)
11414 for (n = 0; n < ndups; n++) {
11415 printf("%s %d\n", dup_name[n], dup_num[n])
11419 $cat >signal_cmd <<EOS
11421 if $test -s signal.lst; then
11422 echo "Using your existing signal.lst file"
11427 $cat >>signal_cmd <<'EOS'
11430 if eval $compile_ok; then
11431 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11433 echo "(I can't seem be able to compile the whole test program)" >&4
11434 echo "(I'll try it in little pieces.)" >&4
11435 set signal -DJUST_NSIG
11436 if eval $compile_ok; then
11437 ./signal$_exe > signal.nsg
11440 echo "I can't seem to figure out how many signals you have." >&4
11441 echo "Guessing 50." >&4
11442 echo 'NSIG 50' > signal.nsg
11444 : Now look at all the signal names, one at a time.
11445 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
11446 $cat > signal.c <<EOCP
11447 #include <sys/types.h>
11448 #include <signal.h>
11451 printf("$xx %d\n", SIG${xx});
11456 if eval $compile; then
11457 echo "SIG${xx} found."
11458 ./signal$_exe >> signal.ls1
11460 echo "SIG${xx} NOT found."
11463 if $test -s signal.ls1; then
11464 $cat signal.nsg signal.ls1 |
11465 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
11469 if $test -s signal.lst; then
11472 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
11473 echo 'kill -l' >signal
11474 set X `csh -f <signal`
11478 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
11480 echo $@ | $tr ' ' $trnl | \
11481 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
11483 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
11485 chmod a+x signal_cmd
11486 $eunicefix signal_cmd
11488 : generate list of signal names
11490 case "$sig_name_init" in
11492 *) case "$sig_num_init" in
11493 ''|*,*) doinit=yes ;;
11498 echo "Generating a list of signal names and numbers..." >&4
11500 sig_name=`$awk '{printf "%s ", $1}' signal.lst`
11501 sig_name="ZERO $sig_name"
11502 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
11503 { printf "\"%s\", ", $1 }
11504 END { printf "0\n" }' signal.lst`
11505 sig_num=`$awk '{printf "%d ", $2}' signal.lst`
11506 sig_num="0 $sig_num"
11507 sig_num_init=`$awk 'BEGIN { printf "0, " }
11508 { printf "%d, ", $2}
11509 END { printf "0\n"}' signal.lst`
11512 echo "The following signals are available:"
11514 echo $sig_name | $awk \
11515 'BEGIN { linelen = 0 }
11517 for (i = 1; i <= NF; i++) {
11518 name = "SIG" $i " "
11519 linelen = linelen + length(name)
11520 if (linelen > 70) {
11522 linelen = length(name)
11528 $rm -f signal signal.c signal.awk signal.lst signal_cmd
11530 : see what type is used for signed size_t
11531 set ssize_t ssizetype int stdio.h sys/types.h
11534 $cat > ssize.c <<EOM
11536 #include <sys/types.h>
11537 #define Size_t $sizetype
11538 #define SSize_t $dflt
11541 if (sizeof(Size_t) == sizeof(SSize_t))
11543 else if (sizeof(Size_t) == sizeof(int))
11552 if eval $compile_ok && ./ssize > /dev/null; then
11553 ssizetype=`./ssize`
11554 echo "I'll be using $ssizetype for functions returning a byte count." >&4
11557 Help! I can't compile and run the ssize_t test program: please enlighten me!
11558 (This is probably a misconfiguration in your system or libraries, and
11559 you really ought to fix it. Still, I'll try anyway.)
11561 I need a type that is the same size as $sizetype, but is guaranteed to
11562 be signed. Common values are ssize_t, int and long.
11565 rp="What signed type is the same size as $sizetype?"
11569 $rm -f ssize ssize.*
11571 : see what type of char stdio uses.
11573 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11574 echo "Your stdio uses unsigned chars." >&4
11575 stdchar="unsigned char"
11577 echo "Your stdio uses signed chars." >&4
11581 : see if time exists
11583 if test "X$d_time" = X -o X"$timetype" = X; then
11584 if set time val -f d_time; eval $csym; $val; then
11585 echo 'time() found.' >&4
11587 rp="What is the type returned by time() on this system?"
11588 set time_t timetype long stdio.h sys/types.h
11591 echo 'time() not found, hope that will do.' >&4
11599 : see what type uids are declared as in the kernel
11601 echo "Looking for the type for user ids returned by getuid()."
11602 set uid_t uidtype xxx stdio.h sys/types.h
11606 xxx=`./findhdr sys/user.h`
11607 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
11609 unsigned) dflt="$1 $2" ;;
11613 *) dflt="$uidtype";;
11616 uid_t) echo "uid_t found." ;;
11617 *) rp="What is the type for user ids returned by getuid()?"
11623 : see if dbm.h is available
11624 : see if dbmclose exists
11625 set dbmclose d_dbmclose
11628 case "$d_dbmclose" in
11638 *) set rpcsvc/dbm.h i_rpcsvcdbm
11643 *) echo "We won't be including <dbm.h>"
11653 : see if this is a sys/file.h system
11658 : do we need to include sys/file.h ?
11662 if $h_sysfile; then
11664 echo "We'll be including <sys/file.h>." >&4
11667 echo "We won't be including <sys/file.h>." >&4
11677 : see if fcntl.h is there
11682 : see if we can include fcntl.h
11688 echo "We'll be including <fcntl.h>." >&4
11691 if $h_sysfile; then
11692 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11694 echo "We won't be including <fcntl.h>." >&4
11706 : see if locale.h is available
11707 set locale.h i_locale
11710 : see if mach cthreads are available
11711 if test "X$usethreads" = "X$define"; then
11712 set mach/cthreads.h i_machcthr
11715 i_machcthr="$undef"
11720 : see if this is a math.h system
11724 : see if this is a mntent.h system
11725 set mntent.h i_mntent
11728 : see if ndbm.h is available
11733 : see if dbm_open exists
11734 set dbm_open d_dbm_open
11736 case "$d_dbm_open" in
11739 echo "We won't be including <ndbm.h>"
11748 : see if net/errno.h is available
11750 set net/errno.h val
11753 : Unfortunately, it causes problems on some systems. Arrgh.
11756 cat > try.c <<'EOM'
11759 #include <net/errno.h>
11765 if $cc $ccflags -c try.c >/dev/null 2>&1; then
11766 echo "We'll be including <net/errno.h>." >&4
11768 echo "We won't be including <net/errno.h>." >&4
11777 : see if this is a poll.h system
11781 : get C preprocessor symbols handy
11783 $echo $n "Hmm... $c"
11784 echo $al | $tr ' ' $trnl >Cppsym.know
11785 $cat <<EOSS >Cppsym
11793 case "\$list\$#" in
11796 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
11798 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
11801 unknown="\$unknown \$sym"
11811 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
11813 exit 0; _ _ _ _\1\\ \1\\
11816 echo "exit 1; _ _ _" >>Cppsym\$\$
11817 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
11819 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
11825 $rm -f Cppsym\$\$ Cppsym2\$\$
11830 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
11832 : now check the C compiler for additional symbols
11838 for i in \`$cc -v -c tmp.c 2>&1\`
11841 -D*) echo "\$i" | $sed 's/^-D//';;
11842 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
11849 ./ccsym > ccsym1.raw
11850 if $test -s ccsym1.raw; then
11851 $sort ccsym1.raw | $uniq >ccsym.raw
11853 mv ccsym1.raw ccsym.raw
11856 $awk '/\=/ { print $0; next }
11857 { print $0"=1" }' ccsym.raw >ccsym.list
11858 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
11859 $comm -13 ccsym.true ccsym.list >ccsym.own
11860 $comm -12 ccsym.true ccsym.list >ccsym.com
11861 $comm -23 ccsym.true ccsym.list >ccsym.cpp
11864 if $test -z ccsym.raw; then
11865 echo "Your C compiler doesn't seem to define any symbol!" >&4
11867 echo "However, your C preprocessor defines the following ones:"
11870 if $test -s ccsym.com; then
11871 echo "Your C compiler and pre-processor define these symbols:"
11872 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
11875 $test "$silent" || sleep 1
11877 if $test -s ccsym.cpp; then
11878 $test "$also" && echo " "
11879 echo "Your C pre-processor ${also}defines the following $symbols:"
11880 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
11882 $test "$silent" || sleep 1
11884 if $test -s ccsym.own; then
11885 $test "$also" && echo " "
11886 echo "Your C compiler ${also}defines the following cpp variables:"
11887 $sed -e 's/\(.*\)=1/\1/' ccsym.own
11888 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
11889 $test "$silent" || sleep 1
11894 : see if this is a termio system
11898 if $test `./findhdr termios.h`; then
11899 set tcsetattr i_termios
11905 "$define") echo "You have POSIX termios.h... good!" >&4;;
11906 *) if ./Cppsym pyr; then
11907 case "`/bin/universe`" in
11908 ucb) if $test `./findhdr sgtty.h`; then
11910 echo "<sgtty.h> found." >&4
11912 echo "System is pyramid with BSD universe."
11913 echo "<sgtty.h> not found--you could have problems." >&4
11915 *) if $test `./findhdr termio.h`; then
11917 echo "<termio.h> found." >&4
11919 echo "System is pyramid with USG universe."
11920 echo "<termio.h> not found--you could have problems." >&4
11924 if $test `./findhdr termio.h`; then
11925 echo "<termio.h> found." >&4
11927 elif $test `./findhdr sgtty.h`; then
11928 echo "<sgtty.h> found." >&4
11931 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
11934 if $test `./findhdr sgtty.h`; then
11935 echo "<sgtty.h> found." >&4
11937 elif $test `./findhdr termio.h`; then
11938 echo "<termio.h> found." >&4
11941 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
11945 set i_termio; eval $setvar
11946 val=$val2; set i_sgtty; eval $setvar
11947 val=$val3; set i_termios; eval $setvar
11949 : see if stdarg is available
11951 if $test `./findhdr stdarg.h`; then
11952 echo "<stdarg.h> found." >&4
11955 echo "<stdarg.h> NOT found." >&4
11959 : see if varags is available
11961 if $test `./findhdr varargs.h`; then
11962 echo "<varargs.h> found." >&4
11964 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
11967 : set up the varargs testing programs
11968 $cat > varargs.c <<EOP
11970 #include <stdarg.h>
11973 #include <varargs.h>
11977 int f(char *p, ...)
11991 p = va_arg(ap, char *);
11996 $cat > varargs <<EOP
11998 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
12007 : now check which varargs header should be included
12012 if `./varargs I_STDARG`; then
12014 elif `./varargs I_VARARGS`; then
12019 if `./varargs I_VARARGS`; then
12026 echo "I could not find the definition for va_dcl... You have problems..." >&4
12027 val="$undef"; set i_stdarg; eval $setvar
12028 val="$undef"; set i_varargs; eval $setvar
12033 case "$i_varhdr" in
12035 val="$define"; set i_stdarg; eval $setvar
12036 val="$undef"; set i_varargs; eval $setvar
12039 val="$undef"; set i_stdarg; eval $setvar
12040 val="$define"; set i_varargs; eval $setvar
12043 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
12047 : see if stddef is available
12048 set stddef.h i_stddef
12051 : see if sys/access.h is available
12052 set sys/access.h i_sysaccess
12055 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
12056 set sys/filio.h i_sysfilio
12059 if $test `./findhdr sys/ioctl.h`; then
12061 echo '<sys/ioctl.h> found.' >&4
12064 if $test $i_sysfilio = "$define"; then
12065 echo '<sys/ioctl.h> NOT found.' >&4
12067 $test $i_sgtty = "$define" && xxx="sgtty.h"
12068 $test $i_termio = "$define" && xxx="termio.h"
12069 $test $i_termios = "$define" && xxx="termios.h"
12070 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
12076 : see if this is a sys/param system
12077 set sys/param.h i_sysparam
12080 : see if sys/resource.h has to be included
12081 set sys/resource.h i_sysresrc
12084 : see if sys/security.h is available
12085 set sys/security.h i_syssecrt
12088 : see if this is a sys/statvfs.h system
12089 set sys/statvfs.h i_sysstatvfs
12092 : see if this is a sys/un.h system
12093 set sys/un.h i_sysun
12096 : see if this is a syswait system
12097 set sys/wait.h i_syswait
12100 : see if this is an utime system
12101 set utime.h i_utime
12104 : see if this is a values.h system
12105 set values.h i_values
12108 : see if this is a vfork system
12111 set vfork.h i_vfork
12119 : see if gdbm.h is available
12124 : see if gdbm_open exists
12125 set gdbm_open d_gdbm_open
12127 case "$d_gdbm_open" in
12130 echo "We won't be including <gdbm.h>"
12140 echo "Looking for extensions..." >&4
12143 : If we are using the old config.sh, known_extensions may contain
12144 : old or inaccurate or duplicate values.
12145 known_extensions=''
12146 nonxs_extensions=''
12147 : We do not use find because it might not be available.
12148 : We do not just use MANIFEST because the user may have dropped
12149 : some additional extensions into the source tree and expect them
12153 DynaLoader|dynaload) ;;
12154 *) if $test -f $xxx/$xxx.xs; then
12155 known_extensions="$known_extensions $xxx"
12156 elif $test -f $xxx/Makefile.PL; then
12157 nonxs_extensions="$nonxs_extensions $xxx"
12159 if $test -d $xxx; then
12160 # Look for nested extensions, eg. Devel/Dprof.
12163 if $test -f $yyy/$yyy.xs; then
12164 known_extensions="$known_extensions $xxx/$yyy"
12165 elif $test -f $yyy/Makefile.PL; then
12166 nonxs_extensions="$nonxs_extensions $xxx/$yyy"
12175 set X $nonxs_extensions
12177 nonxs_extensions="$*"
12178 set X $known_extensions
12180 known_extensions="$*"
12183 : Now see which are supported on this system.
12185 for xxx in $known_extensions ; do
12189 $define) avail_ext="$avail_ext $xxx" ;;
12192 GDBM_File|gdbm_fil)
12194 $define) avail_ext="$avail_ext $xxx" ;;
12197 NDBM_File|ndbm_fil)
12199 $define) avail_ext="$avail_ext $xxx" ;;
12202 ODBM_File|odbm_fil)
12203 case "${i_dbm}${i_rpcsvcdbm}" in
12204 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12208 case "$useposix" in
12209 true|define|y) avail_ext="$avail_ext $xxx" ;;
12213 case "$useopcode" in
12214 true|define|y) avail_ext="$avail_ext $xxx" ;;
12218 case "$d_socket" in
12219 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12223 case "$usethreads" in
12224 true|$define|y) avail_ext="$avail_ext $xxx" ;;
12228 : XXX Do we need a useipcsysv variable here
12229 case "${d_msg}${d_sem}${d_shm}" in
12230 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
12233 *) avail_ext="$avail_ext $xxx"
12242 : Now see which nonxs extensions are supported on this system.
12243 : For now assume all are.
12245 for xxx in $nonxs_extensions ; do
12247 *) nonxs_ext="$nonxs_ext $xxx"
12259 A number of extensions are supplied with $package. You may choose to
12260 compile these extensions for dynamic loading (the default), compile
12261 them into the $package executable (static loading), or not include
12262 them at all. Answer "none" to include no extensions.
12263 Note that DynaLoader is always built and need not be mentioned here.
12266 case "$dynamic_ext" in
12267 '') dflt="$avail_ext" ;;
12268 *) dflt="$dynamic_ext"
12269 # Perhaps we are reusing an old out-of-date config.sh.
12272 if test X"$dynamic_ext" != X"$avail_ext"; then
12274 NOTICE: Your previous config.sh list may be incorrect.
12275 The extensions now available to you are
12277 but the default list from your previous config.sh is
12289 rp="What extensions do you wish to load dynamically?"
12292 none) dynamic_ext=' ' ;;
12293 *) dynamic_ext="$ans" ;;
12296 case "$static_ext" in
12298 : Exclude those already listed in dynamic linking
12300 for xxx in $avail_ext; do
12301 case " $dynamic_ext " in
12303 *) dflt="$dflt $xxx" ;;
12310 *) dflt="$static_ext"
12317 rp="What extensions do you wish to load statically?"
12320 none) static_ext=' ' ;;
12321 *) static_ext="$ans" ;;
12326 A number of extensions are supplied with $package. Answer "none"
12327 to include no extensions.
12328 Note that DynaLoader is always built and need not be mentioned here.
12331 case "$static_ext" in
12332 '') dflt="$avail_ext" ;;
12333 *) dflt="$static_ext"
12334 # Perhaps we are reusing an old out-of-date config.sh.
12337 if test X"$static_ext" != X"$avail_ext"; then
12339 NOTICE: Your previous config.sh list may be incorrect.
12340 The extensions now available to you are
12342 but the default list from your previous config.sh is
12351 : Exclude those that are not xs extensions
12355 rp="What extensions do you wish to include?"
12358 none) static_ext=' ' ;;
12359 *) static_ext="$ans" ;;
12364 set X $dynamic_ext $static_ext $nonxs_ext
12368 : Remove build directory name from cppstdin so it can be used from
12369 : either the present location or the final installed location.
12371 : Get out of the UU directory to get correct path name.
12373 case "$cppstdin" in
12375 echo "Stripping down cppstdin path name"
12381 : end of configuration questions
12383 echo "End of configuration questions."
12386 : back to where it started
12387 if test -d ../UU; then
12391 : configuration may be patched via a 'config.over' file
12392 if $test -f config.over; then
12395 rp='I see a config.over file. Do you wish to load it?'
12398 n*) echo "OK, I'll ignore it.";;
12400 echo "Configuration override changes have been loaded."
12405 : in case they want portability, strip down executable paths
12406 case "$d_portable" in
12409 echo "Stripping down executable paths..." >&4
12410 for file in $loclist $trylist; do
12411 if test X$file != Xln -a X$file != Xar -o X$osname != Xos2; then
12412 eval $file="\$file"
12418 : create config.sh file
12420 echo "Creating config.sh..." >&4
12421 $spitshell <<EOT >config.sh
12424 # This file was produced by running the Configure script. It holds all the
12425 # definitions figured out by Configure. Should you modify one of these values,
12426 # do not forget to propagate your changes by running "Configure -der". You may
12427 # instead choose to run each of the .SH files by yourself, or "Configure -S".
12430 # Package name : $package
12431 # Source directory : $src
12432 # Configuration time: $cf_time
12433 # Configured by : $cf_by
12434 # Target system : $myuname
12444 Revision='$Revision'
12451 alignbytes='$alignbytes'
12452 ansi2knr='$ansi2knr'
12453 aphostname='$aphostname'
12454 apiversion='$apiversion'
12457 archlibexp='$archlibexp'
12458 archname64='$archname64'
12459 archname='$archname'
12460 archobjs='$archobjs'
12468 byteorder='$byteorder'
12470 castflags='$castflags'
12473 cccdlflags='$cccdlflags'
12474 ccdlflags='$ccdlflags'
12477 cf_email='$cf_email'
12482 clocktype='$clocktype'
12484 compress='$compress'
12485 contains='$contains'
12489 cpp_stuff='$cpp_stuff'
12490 cppflags='$cppflags'
12492 cppminus='$cppminus'
12494 cppstdin='$cppstdin'
12495 cryptlib='$cryptlib'
12497 d_Gconvert='$d_Gconvert'
12498 d_access='$d_access'
12499 d_accessx='$d_accessx'
12501 d_archlib='$d_archlib'
12502 d_attribut='$d_attribut'
12506 d_bsdgetpgrp='$d_bsdgetpgrp'
12507 d_bsdsetpgrp='$d_bsdsetpgrp'
12509 d_casti32='$d_casti32'
12510 d_castneg='$d_castneg'
12511 d_charvspr='$d_charvspr'
12513 d_chroot='$d_chroot'
12514 d_chsize='$d_chsize'
12515 d_closedir='$d_closedir'
12516 d_cmsghdr_s='$d_cmsghdr_s'
12520 d_cuserid='$d_cuserid'
12521 d_dbl_dig='$d_dbl_dig'
12522 d_dbmclose64='$d_dbmclose64'
12523 d_dbminit64='$d_dbminit64'
12524 d_delete64='$d_delete64'
12525 d_difftime='$d_difftime'
12526 d_dirent64_s='$d_dirent64_s'
12527 d_dirnamlen='$d_dirnamlen'
12528 d_dlerror='$d_dlerror'
12529 d_dlopen='$d_dlopen'
12530 d_dlsymun='$d_dlsymun'
12531 d_dosuid='$d_dosuid'
12532 d_drand48proto='$d_drand48proto'
12534 d_eaccess='$d_eaccess'
12535 d_endgrent='$d_endgrent'
12536 d_endhent='$d_endhent'
12537 d_endnent='$d_endnent'
12538 d_endpent='$d_endpent'
12539 d_endpwent='$d_endpwent'
12540 d_endsent='$d_endsent'
12541 d_eofnblk='$d_eofnblk'
12542 d_eunice='$d_eunice'
12543 d_fchmod='$d_fchmod'
12544 d_fchown='$d_fchown'
12546 d_fd_macros='$d_fd_macros'
12547 d_fd_set='$d_fd_set'
12548 d_fds_bits='$d_fds_bits'
12549 d_fetch64='$d_fetch64'
12550 d_fgetpos64='$d_fgetpos64'
12551 d_fgetpos='$d_fgetpos'
12552 d_firstkey64='$d_firstkey64'
12553 d_flexfnam='$d_flexfnam'
12554 d_flock64_s='$d_flock64_s'
12556 d_fopen64='$d_fopen64'
12558 d_fpathconf='$d_fpathconf'
12559 d_freopen64='$d_freopen64'
12560 d_fseek64='$d_fseek64'
12561 d_fseeko64='$d_fseeko64'
12562 d_fseeko='$d_fseeko'
12563 d_fsetpos64='$d_fsetpos64'
12564 d_fsetpos='$d_fsetpos'
12565 d_fstat64='$d_fstat64'
12566 d_fstatfs='$d_fstatfs'
12567 d_fstatvfs='$d_fstatvfs'
12568 d_ftell64='$d_ftell64'
12569 d_ftello64='$d_ftello64'
12570 d_ftello='$d_ftello'
12572 d_ftruncate64='$d_ftruncate64'
12573 d_getgrent='$d_getgrent'
12574 d_getgrps='$d_getgrps'
12575 d_gethbyaddr='$d_gethbyaddr'
12576 d_gethbyname='$d_gethbyname'
12577 d_gethent='$d_gethent'
12578 d_gethname='$d_gethname'
12579 d_gethostprotos='$d_gethostprotos'
12580 d_getlogin='$d_getlogin'
12581 d_getnbyaddr='$d_getnbyaddr'
12582 d_getnbyname='$d_getnbyname'
12583 d_getnent='$d_getnent'
12584 d_getnetprotos='$d_getnetprotos'
12585 d_getpbyname='$d_getpbyname'
12586 d_getpbynumber='$d_getpbynumber'
12587 d_getpent='$d_getpent'
12588 d_getpgid='$d_getpgid'
12589 d_getpgrp2='$d_getpgrp2'
12590 d_getpgrp='$d_getpgrp'
12591 d_getppid='$d_getppid'
12592 d_getprior='$d_getprior'
12593 d_getprotoprotos='$d_getprotoprotos'
12594 d_getpwent='$d_getpwent'
12595 d_getsbyname='$d_getsbyname'
12596 d_getsbyport='$d_getsbyport'
12597 d_getsent='$d_getsent'
12598 d_getservprotos='$d_getservprotos'
12599 d_gettimeod='$d_gettimeod'
12600 d_gnulibc='$d_gnulibc'
12601 d_grpasswd='$d_grpasswd'
12604 d_inetaton='$d_inetaton'
12605 d_ino64t='$d_ino64t'
12606 d_int64t='$d_int64t'
12607 d_iovec_s='$d_iovec_s'
12608 d_isascii='$d_isascii'
12609 d_killpg='$d_killpg'
12610 d_lchown='$d_lchown'
12612 d_locconv='$d_locconv'
12613 d_lockf64='$d_lockf64'
12615 d_longdbl='$d_longdbl'
12616 d_longlong='$d_longlong'
12617 d_lseek64='$d_lseek64'
12618 d_lstat64='$d_lstat64'
12621 d_mbstowcs='$d_mbstowcs'
12622 d_mbtowc='$d_mbtowc'
12623 d_memcmp='$d_memcmp'
12624 d_memcpy='$d_memcpy'
12625 d_memmove='$d_memmove'
12626 d_memset='$d_memset'
12628 d_mkfifo='$d_mkfifo'
12629 d_mktime='$d_mktime'
12631 d_msg_ctrunc='$d_msg_ctrunc'
12632 d_msg_dontroute='$d_msg_dontroute'
12633 d_msg_oob='$d_msg_oob'
12634 d_msg_peek='$d_msg_peek'
12635 d_msg_proxy='$d_msg_proxy'
12636 d_msgctl='$d_msgctl'
12637 d_msgget='$d_msgget'
12638 d_msghdr_s='$d_msghdr_s'
12639 d_msgrcv='$d_msgrcv'
12640 d_msgsnd='$d_msgsnd'
12641 d_mymalloc='$d_mymalloc'
12642 d_nextkey64='$d_nextkey64'
12644 d_off64t='$d_off64t'
12645 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
12646 d_oldpthreads='$d_oldpthreads'
12647 d_oldsock='$d_oldsock'
12649 d_open64='$d_open64'
12650 d_opendir64='$d_opendir64'
12651 d_pathconf='$d_pathconf'
12653 d_phostname='$d_phostname'
12656 d_portable='$d_portable'
12657 d_pthread_yield='$d_pthread_yield'
12659 d_pwchange='$d_pwchange'
12660 d_pwclass='$d_pwclass'
12661 d_pwcomment='$d_pwcomment'
12662 d_pwexpire='$d_pwexpire'
12663 d_pwgecos='$d_pwgecos'
12664 d_pwpasswd='$d_pwpasswd'
12665 d_pwquota='$d_pwquota'
12666 d_readdir64='$d_readdir64'
12667 d_readdir='$d_readdir'
12668 d_readlink='$d_readlink'
12670 d_recvmsg='$d_recvmsg'
12671 d_rename='$d_rename'
12672 d_rewinddir='$d_rewinddir'
12674 d_safebcpy='$d_safebcpy'
12675 d_safemcpy='$d_safemcpy'
12676 d_sanemcmp='$d_sanemcmp'
12677 d_sched_yield='$d_sched_yield'
12678 d_scm_rights='$d_scm_rights'
12679 d_seekdir64='$d_seekdir64'
12680 d_seekdir='$d_seekdir'
12681 d_select='$d_select'
12683 d_semctl='$d_semctl'
12684 d_semctl_semid_ds='$d_semctl_semid_ds'
12685 d_semctl_semun='$d_semctl_semun'
12686 d_semget='$d_semget'
12688 d_sendmsg='$d_sendmsg'
12689 d_setegid='$d_setegid'
12690 d_seteuid='$d_seteuid'
12691 d_setgrent='$d_setgrent'
12692 d_setgrps='$d_setgrps'
12693 d_sethent='$d_sethent'
12694 d_setlinebuf='$d_setlinebuf'
12695 d_setlocale='$d_setlocale'
12696 d_setnent='$d_setnent'
12697 d_setpent='$d_setpent'
12698 d_setpgid='$d_setpgid'
12699 d_setpgrp2='$d_setpgrp2'
12700 d_setpgrp='$d_setpgrp'
12701 d_setprior='$d_setprior'
12702 d_setpwent='$d_setpwent'
12703 d_setregid='$d_setregid'
12704 d_setresgid='$d_setresgid'
12705 d_setresuid='$d_setresuid'
12706 d_setreuid='$d_setreuid'
12707 d_setrgid='$d_setrgid'
12708 d_setruid='$d_setruid'
12709 d_setsent='$d_setsent'
12710 d_setsid='$d_setsid'
12711 d_setvbuf='$d_setvbuf'
12715 d_shmatprototype='$d_shmatprototype'
12716 d_shmctl='$d_shmctl'
12718 d_shmget='$d_shmget'
12719 d_sigaction='$d_sigaction'
12720 d_sigsetjmp='$d_sigsetjmp'
12721 d_socket='$d_socket'
12722 d_sockpair='$d_sockpair'
12723 d_stat64='$d_stat64'
12724 d_statblks='$d_statblks'
12725 d_statfs='$d_statfs'
12726 d_statfsflags='$d_statfsflags'
12727 d_statvfs='$d_statvfs'
12728 d_stdio_cnt_lval='$d_stdio_cnt_lval'
12729 d_stdio_ptr_lval='$d_stdio_ptr_lval'
12730 d_stdiobase='$d_stdiobase'
12731 d_stdstdio='$d_stdstdio'
12732 d_store64='$d_store64'
12733 d_strchr='$d_strchr'
12734 d_strcoll='$d_strcoll'
12735 d_strctcpy='$d_strctcpy'
12736 d_strerrm='$d_strerrm'
12737 d_strerror='$d_strerror'
12738 d_strtod='$d_strtod'
12739 d_strtol='$d_strtol'
12740 d_strtoul='$d_strtoul'
12741 d_strxfrm='$d_strxfrm'
12742 d_suidsafe='$d_suidsafe'
12743 d_symlink='$d_symlink'
12744 d_syscall='$d_syscall'
12745 d_sysconf='$d_sysconf'
12746 d_sysernlst='$d_sysernlst'
12747 d_syserrlst='$d_syserrlst'
12748 d_system='$d_system'
12749 d_tcgetpgrp='$d_tcgetpgrp'
12750 d_tcsetpgrp='$d_tcsetpgrp'
12751 d_telldir64='$d_telldir64'
12752 d_telldir='$d_telldir'
12755 d_tmpfile64='$d_tmpfile64'
12756 d_truncate64='$d_truncate64'
12757 d_truncate='$d_truncate'
12758 d_tzname='$d_tzname'
12761 d_union_semun='$d_union_semun'
12763 d_void_closedir='$d_void_closedir'
12764 d_voidsig='$d_voidsig'
12765 d_voidtty='$d_voidtty'
12766 d_volatile='$d_volatile'
12767 d_vprintf='$d_vprintf'
12769 d_waitpid='$d_waitpid'
12770 d_wcstombs='$d_wcstombs'
12771 d_wctomb='$d_wctomb'
12772 d_writev='$d_writev'
12775 db_hashtype='$db_hashtype'
12776 db_prefixtype='$db_prefixtype'
12777 defvoidused='$defvoidused'
12778 direntrytype='$direntrytype'
12781 doublesize='$doublesize'
12783 dynamic_ext='$dynamic_ext'
12789 eunicefix='$eunicefix'
12792 extensions='$extensions'
12794 firstmakefile='$firstmakefile'
12796 fpostype='$fpostype'
12797 freetype='$freetype'
12798 full_csh='$full_csh'
12799 full_sed='$full_sed'
12800 gccversion='$gccversion'
12804 groupcat='$groupcat'
12805 groupstype='$groupstype'
12808 h_sysfile='$h_sysfile'
12812 i_arpainet='$i_arpainet'
12813 i_bsdioctl='$i_bsdioctl'
12816 i_dirent='$i_dirent'
12823 i_inttypes='$i_inttypes'
12824 i_limits='$i_limits'
12825 i_locale='$i_locale'
12826 i_machcthr='$i_machcthr'
12827 i_malloc='$i_malloc'
12829 i_memory='$i_memory'
12830 i_mntent='$i_mntent'
12833 i_neterrno='$i_neterrno'
12837 i_rpcsvcdbm='$i_rpcsvcdbm'
12840 i_stdarg='$i_stdarg'
12841 i_stddef='$i_stddef'
12842 i_stdlib='$i_stdlib'
12843 i_string='$i_string'
12844 i_sysaccess='$i_sysaccess'
12845 i_sysdir='$i_sysdir'
12846 i_sysfile='$i_sysfile'
12847 i_sysfilio='$i_sysfilio'
12849 i_sysioctl='$i_sysioctl'
12850 i_sysmount='$i_sysmount'
12851 i_sysndir='$i_sysndir'
12852 i_sysparam='$i_sysparam'
12853 i_sysresrc='$i_sysresrc'
12854 i_syssecrt='$i_syssecrt'
12855 i_sysselct='$i_sysselct'
12856 i_syssockio='$i_syssockio'
12857 i_sysstat='$i_sysstat'
12858 i_sysstatvfs='$i_sysstatvfs'
12859 i_systime='$i_systime'
12860 i_systimek='$i_systimek'
12861 i_systimes='$i_systimes'
12862 i_systypes='$i_systypes'
12863 i_sysuio='$i_sysuio'
12865 i_syswait='$i_syswait'
12866 i_termio='$i_termio'
12867 i_termios='$i_termios'
12869 i_unistd='$i_unistd'
12871 i_values='$i_values'
12872 i_varargs='$i_varargs'
12873 i_varhdr='$i_varhdr'
12875 ignore_versioned_solibs='$ignore_versioned_solibs'
12878 installarchlib='$installarchlib'
12879 installbin='$installbin'
12880 installman1dir='$installman1dir'
12881 installman3dir='$installman3dir'
12882 installprivlib='$installprivlib'
12883 installscript='$installscript'
12884 installsitearch='$installsitearch'
12885 installsitelib='$installsitelib'
12886 installusrbinperl='$installusrbinperl'
12888 known_extensions='$known_extensions'
12892 lddlflags='$lddlflags'
12900 libswanted='$libswanted'
12906 locincpth='$locincpth'
12907 loclibpth='$loclibpth'
12908 longdblsize='$longdblsize'
12909 longlongsize='$longlongsize'
12910 longsize='$longsize'
12914 lseeksize='$lseeksize'
12915 lseektype='$lseektype'
12919 make_set_make='$make_set_make'
12920 mallocobj='$mallocobj'
12921 mallocsrc='$mallocsrc'
12922 malloctype='$malloctype'
12924 man1direxp='$man1direxp'
12927 man3direxp='$man3direxp'
12931 mips_type='$mips_type'
12934 modetype='$modetype'
12937 myarchname='$myarchname'
12938 mydomain='$mydomain'
12939 myhostname='$myhostname'
12942 netdb_hlen_type='$netdb_hlen_type'
12943 netdb_host_type='$netdb_host_type'
12944 netdb_name_type='$netdb_name_type'
12945 netdb_net_type='$netdb_net_type'
12948 nm_so_opt='$nm_so_opt'
12949 nonxs_ext='$nonxs_ext'
12951 o_nonblock='$o_nonblock'
12953 old_pthread_create_joinable='$old_pthread_create_joinable'
12954 optimize='$optimize'
12955 orderlib='$orderlib'
12961 patchlevel='$patchlevel'
12962 path_sep='$path_sep'
12964 perladmin='$perladmin'
12965 perlpath='$perlpath'
12967 phostname='$phostname'
12973 prefixexp='$prefixexp'
12975 privlibexp='$privlibexp'
12976 prototype='$prototype'
12978 randbits='$randbits'
12979 randfunc='$randfunc'
12980 randseedtype='$randseedtype'
12982 rd_nodata='$rd_nodata'
12986 sched_yield='$sched_yield'
12987 scriptdir='$scriptdir'
12988 scriptdirexp='$scriptdirexp'
12990 seedfunc='$seedfunc'
12991 selectminbits='$selectminbits'
12992 selecttype='$selecttype'
12993 sendmail='$sendmail'
12996 sharpbang='$sharpbang'
12997 shmattype='$shmattype'
12998 shortsize='$shortsize'
13001 sig_name='$sig_name'
13002 sig_name_init='$sig_name_init'
13004 sig_num_init='$sig_num_init'
13005 signal_t='$signal_t'
13006 sitearch='$sitearch'
13007 sitearchexp='$sitearchexp'
13009 sitelibexp='$sitelibexp'
13010 sizetype='$sizetype'
13015 sockethdr='$sockethdr'
13016 socketlib='$socketlib'
13018 spackage='$spackage'
13019 spitshell='$spitshell'
13022 ssizetype='$ssizetype'
13023 startperl='$startperl'
13025 static_ext='$static_ext'
13027 stdio_base='$stdio_base'
13028 stdio_bufsiz='$stdio_bufsiz'
13029 stdio_cnt='$stdio_cnt'
13030 stdio_filbuf='$stdio_filbuf'
13031 stdio_ptr='$stdio_ptr'
13034 subversion='$subversion'
13041 timeincl='$timeincl'
13042 timetype='$timetype'
13050 use64bits='$use64bits'
13052 usemultiplicity='$usemultiplicity'
13053 usemymalloc='$usemymalloc'
13055 useopcode='$useopcode'
13056 useperlio='$useperlio'
13057 useposix='$useposix'
13059 useshrplib='$useshrplib'
13060 usethreads='$usethreads'
13061 usevfork='$usevfork'
13066 voidflags='$voidflags'
13072 : Add in command line options if available
13073 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
13075 : add special variables
13076 $test -f $src/patchlevel.h && \
13077 awk '/^#define/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
13078 echo "CONFIG=true" >>config.sh
13080 : propagate old symbols
13081 if $test -f UU/config.sh; then
13082 <UU/config.sh sort | uniq >UU/oldconfig.sh
13083 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
13084 sort | uniq -u >UU/oldsyms
13085 set X `cat UU/oldsyms`
13091 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
13093 echo "# Variables propagated from previous config.sh file." >>config.sh
13094 for sym in `cat UU/oldsyms`; do
13095 echo " Propagating $hint variable "'$'"$sym..."
13096 eval 'tmp="$'"${sym}"'"'
13098 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
13104 : Finish up by extracting the .SH files
13118 If you'd like to make any changes to the config.sh file before I begin
13119 to configure things, do it as a shell escape now (e.g. !vi config.sh).
13122 rp="Press return or use a shell escape to edit config.sh:"
13127 *) : in case they cannot read
13128 sh 1>&4 -c "$ans";;
13133 : if this fails, just run all the .SH files by hand
13140 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
13147 Now you need to generate make dependencies by running "$make depend".
13148 You might prefer to run it in background: "$make depend > makedepend.out &"
13149 It can take a while, so you might not want to run it right now.
13154 rp="Run $make depend now?"
13158 $make depend && echo "Now you must run a $make."
13161 echo "You must run '$make depend' then '$make'."
13164 elif test -f [Mm]akefile; then
13166 echo "Now you must run a $make."
13171 if $test -f Policy.sh; then
13174 If you compile $package on a different machine or from a different object
13175 directory, copy the Policy.sh file from this object directory to the
13176 new one before you run Configure -- this will help you with most of
13177 the policy defaults.
13181 if $test -f config.msg; then
13182 echo "Hmm. I also noted the following information while running:"
13184 $cat config.msg >&4
13187 $rm -f kit*isdone ark*isdone