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 Wed Jan 26 09:59:39 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
440 d_old_pthread_create_joinable=''
441 old_pthread_create_joinable=''
674 inc_version_list_init=''
694 ignore_versioned_solibs=''
852 d_stdio_stream_array=''
853 stdio_stream_array=''
897 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
900 : We must find out about Eunice early
902 if test -f /etc/unixtovms; then
903 eunicefix=/etc/unixtovms
905 if test -f /etc/unixtovms.exe; then
906 eunicefix=/etc/unixtovms.exe
910 : list of known cpp symbols, sorted alphabetically
911 al="386BSD 3b1 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370"
912 al="$al AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE"
913 al="$al alliant alpha am29000 AM29000 amiga AMIGAOS AMIX"
914 al="$al ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS"
915 al="$al BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4"
916 al="$al BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi"
917 al="$al bull c cadmus clipper CMU COFF COMPILER_VERSION"
918 al="$al concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX"
919 al="$al CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO"
920 al="$al Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS"
921 al="$al FreeBSD GCC_NEW_VARARGS gcos gcx gimpel"
922 al="$al GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN"
923 al="$al H3050R H3050RX hbullx20 hcx host_mips"
924 al="$al hp200 hp300 hp700 HP700 hp800 hp9000"
925 al="$al hp9000s200 hp9000s300 hp9000s400 hp9000s500"
926 al="$al hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE"
927 al="$al i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960"
928 al="$al iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64"
929 al="$al INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1"
930 al="$al LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE"
931 al="$al LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE"
932 al="$al Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG"
933 al="$al LONGDOUBLE LONGLONG LP64 luna luna88k Lynx"
934 al="$al M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF"
935 al="$al M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3"
936 al="$al M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen"
937 al="$al MATH_HAS_NO_SIDE_EFFECTS"
938 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040"
939 al="$al mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin"
940 al="$al mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT"
941 al="$al MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola"
942 al="$al mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr"
943 al="$al NetBSD news1500 news1700 news1800 news1900 news3700"
944 al="$al news700 news800 news900 NeXT NLS ns16000 ns32000"
945 al="$al ns32016 ns32332 ns32k nsc32000"
946 al="$al OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE"
947 al="$al pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc"
948 al="$al pc532 pdp11 PGC PIC plexus PORTAR posix"
949 al="$al POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE"
950 al="$al POSIX_C_SOURCE POSIX_SOURCE POWER"
951 al="$al PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000"
952 al="$al riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix"
953 al="$al SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE"
954 al="$al sony sony_news sonyrisc sparc sparclite spectrum"
955 al="$al stardent stdc STDC_EXT stratos sun sun3 sun386"
956 al="$al Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5"
957 al="$al SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44"
958 al="$al SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5"
959 al="$al sysV68 sysV88 Tek4132 Tek4300 titan"
960 al="$al tower tower32 tower32_200 tower32_600 tower32_700"
961 al="$al tower32_800 tower32_850 tss"
962 al="$al u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5"
963 al="$al ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK"
964 al="$al unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2"
965 al="$al Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286"
966 al="$al XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED"
967 al="$al XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED"
970 : set useposix=false in your hint file to disable the POSIX extension.
972 : set useopcode=false in your hint file to disable the Opcode extension.
974 : Trailing extension. Override this in a hint file, if needed.
976 : Extra object files, if any, needed on this platform.
978 : Possible local include directories to search.
979 : Set locincpth to "" in a hint file to defeat local include searches.
980 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
981 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
983 : no include file wanted by default
987 : change the next line if compiling for Xenix/286 on Xenix/386
988 xlibpth='/usr/lib/386 /lib/386'
990 : Possible local library directories to search.
991 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
992 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
994 : general looking path for locating libraries
995 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
996 glibpth="$glibpth /lib /usr/lib $xlibpth"
997 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
998 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1000 : Private path used by Configure to find libraries. Its value
1001 : is prepended to libpth. This variable takes care of special
1002 : machines, like the mips. Usually, it should be empty.
1005 : default library list
1007 : some systems want to use only the non-versioned libso:s
1008 ignore_versioned_solibs=''
1009 : set usemultiplicity on the Configure command line to enable multiplicity.
1010 : set usesocks on the Configure command line to enable socks.
1011 : set usethreads on the Configure command line to enable threads.
1012 : full support for void wanted by default
1015 : List of libraries we want.
1016 : If anyone needs -lnet, put it in a hint file.
1017 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
1018 libswanted="$libswanted dld ld sun m c cposix posix"
1019 libswanted="$libswanted ndir dir crypt sec"
1020 libswanted="$libswanted ucb bsd BSD PW x"
1021 : We probably want to search /usr/shlib before most other libraries.
1022 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1023 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1024 glibpth="/usr/shlib $glibpth"
1025 : Do not use vfork unless overridden by a hint file.
1028 : Find the basic shell for Bourne shell scripts
1032 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1035 if test -f "$xxx"; then
1038 : Build up a list and do a single loop so we can 'break' out.
1039 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1040 for xxx in sh bash ksh pdksh ash; do
1042 try="$try ${p}/${xxx}"
1046 if test -f "$xxx"; then
1049 elif test -f "$xxx.exe"; then
1060 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1062 Usually it's in /bin/sh. How did you even get this far?
1063 Please contact me (Perl Maintainers) at perlbug@perl.com and
1064 we'll try to straighten this all out.
1070 : see if sh knows # comments
1071 if `$sh -c '#' >/dev/null 2>&1`; then
1075 test -f $xcat || xcat=/usr/bin/cat
1080 if test -s today; then
1083 echo "#! $xcat" > try
1087 if test -s today; then
1095 echo "Your $sh doesn't grok # comments--I will strip them later on."
1098 echo "exec grep -v '^[ ]*#'" >spitshell
1100 $eunicefix spitshell
1101 spitshell=`pwd`/spitshell
1103 echo "I presume that if # doesn't work, #! won't work either!"
1108 : figure out how to guarantee sh startup
1110 '') startsh=${sharpbang}${sh} ;;
1122 : echo "Yup, it does."
1124 echo "Hmm... '$startsh' does not guarantee sh startup..."
1125 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1130 : Save command line options in file UU/cmdline.opt for later use in
1131 : generating config.sh.
1132 cat > cmdline.opt <<EOSH
1133 # Configure command line arguments.
1140 cat >>cmdline.opt <<EOSH
1141 config_arg$argn='$arg'
1143 argn=`expr $argn + 1`
1146 : produce awk script to parse command line options
1147 cat >options.awk <<'EOF'
1149 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1151 len = length(optstr);
1152 for (i = 1; i <= len; i++) {
1153 c = substr(optstr, i, 1);
1154 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1165 if (substr(str, 1, 1) != "-") {
1166 printf("'%s'\n", str);
1170 for (i = 2; i <= len; i++) {
1171 c = substr(str, i, 1);
1173 printf("-%s\n", substr(str, i));
1179 printf("'%s'\n", substr(str, i + 1));
1192 : process the command line options
1193 set X `for arg in "$@"; do echo "X$arg"; done |
1194 sed -e s/X// | awk -f options.awk`
1199 : set up default values
1209 rm -f optdef.sh posthint.sh
1210 cat >optdef.sh <<EOS
1216 while test $# -gt 0; do
1218 -d) shift; fastread=yes;;
1219 -e) shift; alldone=cont;;
1223 if test -r "$1"; then
1226 echo "$me: cannot read config file $1." >&2
1231 -h) shift; error=true;;
1232 -r) shift; reuseval=true;;
1233 -s) shift; silent=true; realsilent=true;;
1234 -E) shift; alldone=exit;;
1235 -K) shift; knowitall=true;;
1236 -O) shift; override=true;;
1237 -S) shift; silent=true; extractsh=true;;
1242 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1243 echo "$me: ignoring -D $1" >&2
1246 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1247 *) echo "$1='define'" >> optdef.sh;;
1254 *=) echo "$1" >> optdef.sh;;
1256 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1257 echo "$me: ignoring -U $1" >&2
1259 *) echo "$1='undef'" >> optdef.sh;;
1270 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1274 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1275 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1281 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1282 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1283 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1284 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1285 *) xxx=`echo $yyy|sed 's!:.*!!'`
1286 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1292 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1294 echo "$yyy=''" >> posthint.sh ;;
1299 echo "$yyy='$zzz'" >> posthint.sh ;;
1301 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1303 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1308 echo "$yyy=$zzz" >> posthint.sh ;;
1309 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1312 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1315 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1323 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1324 [-U symbol] [-U symbol=] [-A command:symbol...]
1325 -d : use defaults for all answers.
1326 -e : go on without questioning past the production of config.sh.
1327 -f : specify an alternate default configuration file.
1328 -h : print this help message and exit (with an error status).
1329 -r : reuse C symbols value if possible (skips costly nm extraction).
1330 -s : silent mode, only echoes questions and essential information.
1331 -D : define symbol to have some value:
1332 -D symbol symbol gets the value 'define'
1333 -D symbol=value symbol gets the value 'value'
1334 -E : stop at the end of questions, after having produced config.sh.
1335 -K : do not use unless you know what you are doing.
1336 -O : let -D and -U override definitions from loaded configuration file.
1337 -S : perform variable substitutions on all .SH files (can mix with -f)
1338 -U : undefine symbol:
1339 -U symbol symbol gets the value 'undef'
1340 -U symbol= symbol gets completely empty
1341 -A : manipulate symbol after the platform specific hints have been applied:
1342 -A symbol=value append " "value to symbol
1343 -A append:symbol=value append value to symbol
1344 -A define:symbol=value define symbol to have value
1345 -A clear:symbol define symbol to be ''
1346 -A define:symbol define symbol to be 'define'
1347 -A eval:symbol=value define symbol to be eval of value
1348 -A prepend:symbol=value prepend value to symbol
1349 -A undef:symbol define symbol to be 'undef'
1350 -A undef:symbol= define symbol to be ''
1351 -V : print version number and exit (with a zero status).
1358 case "$fastread$alldone" in
1361 if test ! -t 0; then
1362 echo "Say 'sh Configure', not 'sh <Configure'"
1370 true) exec 1>/dev/null;;
1373 : run the defines and the undefines, if any, but leave the file out there...
1376 : create the posthint manipulation script and leave the file out there...
1381 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1382 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1383 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1384 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1385 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1388 : Some greps do not return status, grrr.
1389 echo "grimblepritz" >grimble
1390 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1392 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1398 : the following should work in any shell
1402 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1403 cat >contains <<'EOSS'
1404 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1409 : Find the path to the source tree
1412 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1415 *) src=`cd ../$src && pwd` ;;
1428 if test -f $rsrc/Configure && \
1429 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1431 : found it, so we are ok.
1434 for src in . .. ../.. ../../.. ../../../..; do
1435 if test -f ../$src/Configure && \
1436 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1447 Sorry, I can't seem to locate the source dir for $package. Please start
1448 Configure with an explicit path -- i.e. /some/path/Configure.
1456 echo "Sources for $package found in \"$src\"." >&4
1460 : script used to extract .SH files with variable substitutions
1461 cat >extract <<'EOS'
1463 echo "Doing variable substitutions on .SH files..."
1464 if test -f $src/MANIFEST; then
1465 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1467 echo "(Looking for .SH files under the source directory.)"
1468 set x `(cd $src; find . -name "*.SH" -print)`
1472 0) set x `(cd $src; echo *.SH)`; shift;;
1474 if test ! -f $src/$1; then
1480 while test $name; do
1481 if test ! -d "$name"; then
1482 create="$name $create";
1483 name=`echo $name | sed -e "s|^[^/]*$||"`;
1484 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1489 for file in $create; do
1498 dir=`expr X$file : 'X\(.*\)/'`
1499 file=`expr X$file : 'X.*/\(.*\)'`
1500 (cd $dir && . ./$file)
1510 dir=`expr X$file : 'X\(.*\)/'`
1511 file=`expr X$file : 'X.*/\(.*\)'`
1512 (set x $dir; shift; eval $mkdir_p)
1522 if test -f $src/config_h.SH; then
1523 if test ! -f config.h; then
1524 : oops, they left it out of MANIFEST, probably, so do it anyway.
1530 : extract files and exit if asked to do so
1531 case "$extractsh" in
1533 case "$realsilent" in
1537 case "$config_sh" in
1538 '') config_sh='config.sh';;
1541 echo "Fetching answers from $config_sh..."
1544 test "$override" && . ./optdef.sh
1553 : Eunice requires " " instead of "", can you believe it
1556 echo "Beginning of configuration questions for $package."
1558 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1560 : first determine how to suppress newline on echo command
1562 echo "Checking echo to see how to suppress newlines..."
1563 (echo "hi there\c" ; echo " ") >.echotmp
1564 if $contains c .echotmp >/dev/null 2>&1 ; then
1575 echo $n "The star should be here-->$c"
1579 : Now test for existence of everything in MANIFEST
1581 if test -f $rsrc/MANIFEST; then
1582 echo "First let's make sure your kit is complete. Checking..." >&4
1583 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1586 for filelist in x??; do
1587 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1589 if test -s missing; then
1593 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1595 You have the option of continuing the configuration process, despite the
1596 distinct possibility that your kit is damaged, by typing 'y'es. If you
1597 do, don't blame me if something goes wrong. I advise you to type 'n'o
1598 and contact the author (perlbug@perl.com).
1601 echo $n "Continue? [n] $c" >&4
1605 echo "Continuing..." >&4
1609 echo "ABORTING..." >&4
1614 echo "Looks good..."
1617 echo "There is no MANIFEST file. I hope your kit is complete !"
1622 : Find the appropriate value for a newline for tr
1623 if test -n "$DJGPP"; then
1626 if test X"$trnl" = X; then
1627 case "`echo foo|tr '\n' x 2>/dev/null`" in
1631 if test X"$trnl" = X; then
1632 case "`echo foo|tr '\012' x 2>/dev/null`" in
1633 foox) trnl='\012' ;;
1636 if test X"$trnl" = X; then
1639 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1645 : compute the number of columns on the terminal for proper question formatting
1650 : set up the echo used in my read
1651 myecho="case \"\$xxxm\" in
1652 '') echo $n \"\$rp $c\" >&4;;
1654 '') echo $n \"[\$xxxm] $c\";;
1656 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1658 echo $n \"[\$xxxm] $c\" >&4
1660 echo $n \"\$rp [\$xxxm] $c\" >&4
1666 : now set up to do reads with possible shell escape and default assignment
1672 case "\$fastread" in
1673 yes) case "\$dflt" in
1676 case "\$silent-\$rp" in
1681 *) case "\$silent" in
1682 true) case "\$rp" in
1687 while expr "X\$ans" : "X!" >/dev/null; do
1691 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1699 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1708 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1713 echo "(OK, I'll run with -d after this question.)" >&4
1716 echo "*** Sorry, \$1 not supported yet." >&4
1726 echo "*** Substitution done -- please confirm."
1728 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1733 echo "*** Error -- try again."
1740 case "\$ans\$xxxm\$nostick" in
1752 : create .config dir to save info across Configure sessions
1753 test -d ../.config || mkdir ../.config
1754 cat >../.config/README <<EOF
1755 This directory created by Configure to save information that should
1756 persist across sessions for $package.
1758 You may safely delete it if you wish.
1761 : general instructions
1764 user=`(logname) 2>/dev/null`
1766 '') user=`whoami 2>&1`;;
1768 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1771 rp='Would you like to see the instructions?'
1782 This installation shell script will examine your system and ask you questions
1783 to determine how the perl5 package should be installed. If you get
1784 stuck on a question, you may use a ! shell escape to start a subshell or
1785 execute a command. Many of the questions will have default answers in square
1786 brackets; typing carriage return will give you the default.
1788 On some of the questions which ask for file or directory names you are allowed
1789 to use the ~name construct to specify the login directory belonging to "name",
1790 even if you don't have a shell which knows about that. Questions where this is
1791 allowed will be marked "(~name ok)".
1795 dflt='Type carriage return to continue'
1799 The prompter used in this script allows you to use shell variables and
1800 backticks in your answers. You may use $1, $2, etc... to refer to the words
1801 in the default answer, as if the default line was a set of arguments given to a
1802 script shell. This means you may also use $* to repeat the whole default line,
1803 so you do not have to re-type everything to add something to the default.
1805 Everytime there is a substitution, you will have to confirm. If there is an
1806 error (e.g. an unmatched backtick), the default answer will remain unchanged
1807 and you will be prompted again.
1809 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1810 the questions and use the computed defaults (or the previous answers if there
1811 was already a config.sh file). Type 'Configure -h' for a list of options.
1812 You may also start interactively and then answer '& -d' at any prompt to turn
1813 on the non-interactive behaviour for the remainder of the execution.
1819 Much effort has been expended to ensure that this shell script will run on any
1820 Unix system. If despite that it blows up on yours, your best bet is to edit
1821 Configure and run it again. If you can't run Configure for some reason,
1822 you'll have to generate a config.sh file by hand. Whatever problems you
1823 have, let me (perlbug@perl.com) know how I blew it.
1825 This installation script affects things in two ways:
1827 1) it may do direct variable substitutions on some of the files included
1829 2) it builds a config.h file for inclusion in C programs. You may edit
1830 any of these files as the need arises after running this script.
1832 If you make a mistake on a question, there is no easy way to back up to it
1833 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1834 files. Configure will offer to let you do this before it runs the SH files.
1837 dflt='Type carriage return to continue'
1839 case "$firsttime" in
1840 true) echo $user >>../.config/instruct;;
1844 : find out where common programs are
1846 echo "Locating common programs..." >&4
1859 if test -d \$dir/\$thing; then
1865 for thisthing in \$dir/\$thing; do
1866 : just loop through to pick last item
1868 if test -f \$thisthing; then
1871 elif test -f \$dir/\$thing.exe; then
1872 if test -n "$DJGPP"; then
1873 echo \$dir/\$thing.exe
1875 : on Eunice apparently
1926 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1927 pth="$pth /lib /usr/lib"
1928 for file in $loclist; do
1932 if test -f "$xxx"; then
1935 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1936 xxx=`./loc $file $file $pth`
1939 '') xxx=`./loc $file $file $pth`;;
1940 *) xxx=`./loc $xxx $xxx $pth`;;
1946 echo $file is in $xxx.
1949 echo $file is in $xxx.
1952 echo "I don't know where '$file' is, and my life depends on it." >&4
1953 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1959 echo "Don't worry if any of the following aren't found..."
1961 for file in $trylist; do
1965 if test -f "$xxx"; then
1968 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1969 xxx=`./loc $file $file $pth`
1972 '') xxx=`./loc $file $file $pth`;;
1973 *) xxx=`./loc $xxx $xxx $pth`;;
1979 echo $file is in $xxx.
1982 echo $file is in $xxx.
1985 echo "I don't see $file out there, $say."
1992 echo "Substituting grep for egrep."
1998 echo "Substituting cp for ln."
2004 echo "Hopefully test is built into your sh."
2007 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2008 echo "Using the test built into your sh."
2016 echo "Hopefully echo is built into your sh."
2021 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2022 $echo $n "hi there$c" >foo1
2023 echo $n "hi there$c" >foo2
2024 if cmp foo1 foo2 >/dev/null 2>&1; then
2025 echo "They are compatible. In fact, they may be identical."
2032 They are not compatible! You are probably running ksh on a non-USG system.
2033 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2034 have echo built in and we may have to run some Bourne shell scripts. That
2035 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2038 $echo $n "The star should be here-->$c"
2045 : determine whether symbolic links are supported
2048 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2049 echo "Symbolic links are supported." >&4
2052 echo "Symbolic links are NOT supported." >&4
2057 : see whether [:lower:] and [:upper:] are supported character classes
2059 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2061 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2065 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2066 # (0xc9 and 0xd1), therefore that is a nice testing point.
2067 if test "X$up" = X -o "X$low" = X; then
2068 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2074 if test "X$up" = X -o "X$low" = X; then
2075 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2081 if test "X$up" = X -o "X$low" = X; then
2082 case "`echo IJ | od -x 2>/dev/null`" in
2084 echo "Hey, this might be EBCDIC." >&4
2085 if test "X$up" = X -o "X$low" = X; then
2086 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2087 ij) up='[A-IJ-RS-Z]'
2092 if test "X$up" = X -o "X$low" = X; then
2093 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2103 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2105 echo "Using $up and $low to convert case." >&4
2108 echo "I don't know how to translate letters from upper to lower case." >&4
2109 echo "Your tr is not acting any way I know of." >&4
2113 : set up the translation script tr, must be called with ./tr of course
2117 '[A-Z][a-z]') exec $tr '$up' '$low';;
2118 '[a-z][A-Z]') exec $tr '$low' '$up';;
2125 : Try to determine whether config.sh was made on this system
2126 case "$config_sh" in
2128 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2129 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2130 # because the A-Z/a-z are not consecutive.
2131 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2132 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2133 newmyuname="$myuname"
2135 case "$knowitall" in
2137 if test -f ../config.sh; then
2138 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2139 eval "`grep myuname= ../config.sh`"
2141 if test "X$myuname" = "X$newmyuname"; then
2149 : Get old answers from old config file if Configure was run on the
2150 : same system, otherwise use the hints.
2153 if test -f config.sh; then
2155 rp="I see a config.sh file. Shall I use it to set the defaults?"
2158 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2159 *) echo "Fetching default answers from your old config.sh file..." >&4
2167 : Older versions did not always set $sh. Catch re-use of such
2176 if test ! -f config.sh; then
2179 First time through, eh? I have some defaults handy for some systems
2180 that need some extra help getting the Configure answers right:
2183 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2185 : Half the following guesses are probably wrong... If you have better
2186 : tests or hints, please send them to perlbug@perl.com
2187 : The metaconfig authors would also appreciate a copy...
2188 $test -f /irix && osname=irix
2189 $test -f /xenix && osname=sco_xenix
2190 $test -f /dynix && osname=dynix
2191 $test -f /dnix && osname=dnix
2192 $test -f /lynx.os && osname=lynxos
2193 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2194 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2195 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2196 $test -f /bin/mips && /bin/mips && osname=mips
2197 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2198 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2199 $test -d /usr/apollo/bin && osname=apollo
2200 $test -f /etc/saf/_sactab && osname=svr4
2201 $test -d /usr/include/minix && osname=minix
2202 if $test -d /MachTen -o -d /MachTen_Folder; then
2204 if $test -x /sbin/version; then
2205 osvers=`/sbin/version | $awk '{print $2}' |
2206 $sed -e 's/[A-Za-z]$//'`
2207 elif $test -x /usr/etc/version; then
2208 osvers=`/usr/etc/version | $awk '{print $2}' |
2209 $sed -e 's/[A-Za-z]$//'`
2215 $test -f /sys/posix.dll &&
2216 $test -f /usr/bin/what &&
2217 set X `/usr/bin/what /sys/posix.dll` &&
2218 $test "$3" = UWIN &&
2222 if $test -f $uname; then
2230 umips) osname=umips ;;
2233 [23]100) osname=mips ;;
2234 next*) osname=next ;;
2236 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2237 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2240 elif $test -f /etc/kconfig; then
2242 if test "$lns" = "$ln -s"; then
2244 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2246 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2253 if test -n "$DJGPP"; then
2262 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2264 'not found') osvers="$4"."$3" ;;
2265 '<3240'|'<>3240') osvers=3.2.0 ;;
2266 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2267 '=3250'|'>3250') osvers=3.2.5 ;;
2271 bsd386) osname=bsd386
2274 cygwin*) osname=cygwin
2277 *dc.osx) osname=dcosx
2283 domainos) osname=apollo
2289 dynixptx*) osname=dynixptx
2290 osvers=`echo "$4"|sed 's/^v//'`
2292 freebsd) osname=freebsd
2294 genix) osname=genix ;;
2296 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2312 netbsd*) osname=netbsd
2315 news-os) osvers="$3"
2317 4*) osname=newsos4 ;;
2321 next*) osname=next ;;
2322 POSIX-BC | posix-bc ) osname=posix-bc
2325 powerux | power_ux | powermax_os | powermaxos | \
2326 powerunix | power_unix) osname=powerux
2332 solaris) osname=solaris
2334 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2341 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2345 titanos) osname=titanos
2354 ultrix) osname=ultrix
2357 osf1|mls+) case "$5" in
2360 osvers=`echo "$3" | sed 's/^[xvt]//'`
2362 hp*) osname=hp_osf1 ;;
2363 mips) osname=mips_osf1 ;;
2366 unixware) osname=svr5
2372 $2) case "$osname" in
2376 : svr4.x or possibly later
2386 if test -f /stand/boot ; then
2387 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2388 if test -n "$INITPROG" -a -f "$INITPROG"; then
2389 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2390 if test -n "$isesix"; then
2398 *) if test -f /etc/systemid; then
2400 set `echo $3 | $sed 's/\./ /g'` $4
2401 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2403 elif $test -f $src/hints/sco_$1_$2.sh; then
2405 elif $test -f $src/hints/sco_$1.sh; then
2410 '') : Still unknown. Probably a generic Sys V.
2419 *) case "$osname" in
2420 '') : Still unknown. Probably a generic BSD.
2428 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2429 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2430 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2433 $rm -f UU/kernel.what
2434 elif test -d c:/.; then
2441 : Now look for a hint file osname_osvers, unless one has been
2442 : specified already.
2445 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2446 : Also try without trailing minor version numbers.
2447 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2448 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2449 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2450 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2453 *) case "$osvers" in
2456 *) if $test -f $src/hints/$file.sh ; then
2458 elif $test -f $src/hints/$xfile.sh ; then
2460 elif $test -f $src/hints/$xxfile.sh ; then
2462 elif $test -f $src/hints/$xxxfile.sh ; then
2464 elif $test -f $src/hints/$xxxxfile.sh ; then
2466 elif $test -f "$src/hints/${osname}.sh" ; then
2475 if $test -f Policy.sh ; then
2478 none) dflt="Policy" ;;
2479 *) dflt="Policy $dflt" ;;
2484 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2488 if $test -f Policy.sh ; then
2491 There's also a Policy hint file available, which should make the
2492 site-specific (policy) questions easier to answer.
2499 You may give one or more space-separated answers, or "none" if appropriate.
2500 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2501 is a good thing. DO NOT give a wrong version or a wrong OS.
2505 rp="Which of these apply, if any?"
2508 for file in $tans; do
2509 if $test X$file = XPolicy -a -f Policy.sh; then
2511 $cat Policy.sh >> UU/config.sh
2512 elif $test -f $src/hints/$file.sh; then
2513 . $src/hints/$file.sh
2514 $cat $src/hints/$file.sh >> UU/config.sh
2515 elif $test X$tans = X -o X$tans = Xnone ; then
2518 : Give one chance to correct a possible typo.
2519 echo "$file.sh does not exist"
2521 rp="hint to use instead?"
2523 for file in $ans; do
2524 if $test -f "$src/hints/$file.sh"; then
2525 . $src/hints/$file.sh
2526 $cat $src/hints/$file.sh >> UU/config.sh
2527 elif $test X$ans = X -o X$ans = Xnone ; then
2530 echo "$file.sh does not exist -- ignored."
2537 : Remember our hint file for later.
2538 if $test -f "$src/hints/$file.sh" ; then
2548 echo "Fetching default answers from $config_sh..." >&4
2552 cp $config_sh config.sh 2>/dev/null
2562 test "$override" && . ./optdef.sh
2563 myuname="$newmyuname"
2565 : Restore computed paths
2566 for file in $loclist $trylist; do
2567 eval $file="\$_$file"
2572 Configure uses the operating system name and version to set some defaults.
2573 The default value is probably right if the name rings a bell. Otherwise,
2574 since spelling matters for me, either accept the default or answer "none"
2581 ''|' '|none) dflt=none ;;
2582 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2585 *) dflt="$osname" ;;
2587 rp="Operating system name?"
2591 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2597 ''|' '|none) dflt=none ;;
2598 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2599 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2601 ''|' ') dflt=none ;;
2606 *) dflt="$osvers" ;;
2608 rp="Operating system version?"
2618 : who configured the system
2619 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2620 cf_by=`(logname) 2>/dev/null`
2623 cf_by=`(whoami) 2>/dev/null`
2625 "") cf_by=unknown ;;
2629 : set up the script used to warn in case of inconsistency
2636 echo "*** WHOA THERE!!! ***" >&4
2637 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2638 rp=" Keep the $hint value?"
2641 y) td=$was; tu=$was;;
2645 : function used to set $1 to $val
2646 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2648 $define$undef) . ./whoa; eval "$var=\$td";;
2649 $undef$define) . ./whoa; eval "$var=\$tu";;
2650 *) eval "$var=$val";;
2655 Perl can be built to take advantage of threads, on some systems.
2656 To do so, Configure must be run with -Dusethreads.
2658 Note that threading is a highly experimental feature, and
2659 some known race conditions still remain. If you choose to try
2660 it, be very sure to not actually deploy it for production
2661 purposes. README.threads has more details, and is required
2662 reading if you enable threads.
2664 case "$usethreads" in
2665 $define|true|[yY]*) dflt='y';;
2668 rp='Build a threading Perl?'
2671 y|Y) val="$define" ;;
2677 case "$usethreads" in
2681 As of 5.5.640, Perl has two different internal threading implementations,
2682 the 5.005 version (5005threads) and an interpreter-based version
2683 (ithreads) that has one interpreter per thread. Both are very
2684 experimental. This arrangement exists to help developers work out
2685 which one is better.
2687 : Default to ithreads unless overridden on command line or with
2690 case "$use5005threads" in
2691 $define|true|[yY]*) dflt='n';;
2693 case "$useithreads" in
2694 $undef|false|[nN]*) dflt='n';;
2696 rp='Use interpreter-based ithreads?'
2699 y|Y) val="$define" ;;
2704 : Now set use5005threads to the opposite value.
2705 case "$useithreads" in
2706 $define) val="$undef" ;;
2713 useithreads="$undef"
2714 use5005threads="$undef"
2718 case "$d_oldpthreads" in
2719 '') : Configure tests would be welcome here. For now, assume undef.
2721 *) val="$d_oldpthreads" ;;
2727 case "$usethreads" in
2728 "$define"|true|[yY]*)
2729 : Look for a hint-file generated 'call-back-unit'. If the
2730 : user has specified that a threading perl is to be built,
2731 : we may need to set or change some other defaults.
2732 if $test -f usethreads.cbu; then
2733 echo "Your platform has some specific hints for threaded builds, using them..."
2737 (Your platform doesn't have any specific hints for threaded builds.
2738 Assuming POSIX threads, then.)
2746 Perl can be built so that multiple Perl interpreters can coexist
2747 within the same Perl executable.
2750 case "$useithreads" in
2753 This multiple interpreter support is required for interpreter-based threads.
2758 echo 'Normally you do not need this and you should answer no.'
2759 case "$usemultiplicity" in
2760 $define|true|[yY]*) dflt='y';;
2763 rp='Build Perl for multiplicity?'
2766 y|Y) val="$define" ;;
2774 : determine where manual pages are on this system
2778 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2779 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2780 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2781 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2782 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2783 sysman=`./loc . /usr/man/man1 $syspath`
2786 if $test -d "$sysman"; then
2787 echo "System manual is in $sysman." >&4
2789 echo "Could not find manual pages in source form." >&4
2792 : see what memory models we can support
2795 $cat >pdp11.c <<'EOP'
2804 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2805 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2806 dflt='unsplit split'
2808 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2811 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2816 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2819 if $test -d /lib/large || $test -d /usr/lib/large; then
2822 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2831 Some systems have different model sizes. On most systems they are called
2832 small, medium, large, and huge. On the PDP11 they are called unsplit and
2833 split. If your system doesn't support different memory models, say "none".
2834 If you wish to force everything to one memory model, say "none" here and
2835 put the appropriate flags later when it asks you for other cc and ld flags.
2836 Venix systems may wish to put "none" and let the compiler figure things out.
2837 (In the following question multiple model names should be space separated.)
2839 The default for most systems is "none".
2842 rp="Which memory models are supported?"
2857 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2858 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2865 rp="What flag indicates separate I and D space?"
2873 *large*|*small*|*medium*|*huge*)
2880 rp="What flag indicates large model?"
2890 *huge*) case "$huge" in
2894 rp="What flag indicates huge model?"
2904 *medium*) case "$medium" in
2908 rp="What flag indicates medium model?"
2915 *) medium="$large";;
2918 *small*) case "$small" in
2922 rp="What flag indicates small model?"
2933 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2936 $rm -f pdp11.* pdp11
2938 : make some quick guesses about what we are up against
2940 $echo $n "Hmm... $c"
2950 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2951 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2953 echo "Looks kind of like an OSF/1 system, but we'll see..."
2955 elif test `echo abc | tr a-z A-Z` = Abc ; then
2956 xxx=`./loc addbib blurfl $pth`
2957 if $test -f $xxx; then
2958 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2962 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2963 echo "Looks kind of like an extended USG system, but we'll see..."
2965 echo "Looks kind of like a USG system, but we'll see..."
2969 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2970 echo "Looks kind of like a BSD system, but we'll see..."
2974 echo "Looks kind of like a Version 7 system, but we'll see..."
2977 case "$eunicefix" in
2980 There is, however, a strange, musty smell in the air that reminds me of
2981 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2985 : it so happens the Eunice I know will not run shell scripts in Unix format
2989 echo "Congratulations. You aren't running Eunice."
2993 : Detect OS2. The p_ variable is set above in the Head.U unit.
2998 I have the feeling something is not exactly right, however...don't tell me...
2999 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3004 if test -f /xenix; then
3005 echo "Actually, this looks more like a XENIX system..."
3010 echo "It's not Xenix..."
3015 if test -f /venix; then
3016 echo "Actually, this looks more like a VENIX system..."
3023 echo "Nor is it Venix..."
3026 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3027 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3030 : see if we need a special compiler
3038 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3039 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3053 On some older systems the default C compiler will not resolve multiple global
3054 references that happen to have the same name. On some such systems the "Mcc"
3055 command may be used to force these to be resolved. On other systems a "cc -M"
3056 command is required. (Note that the -M flag on other systems indicates a
3057 memory model to use!) If you have the Gnu C compiler, you might wish to use
3063 rp="Use which C compiler?"
3071 rp="Use which C compiler?"
3075 : Look for a hint-file generated 'call-back-unit'. Now that the
3076 : user has specified the compiler, we may need to set or change some
3078 if $test -f cc.cbu; then
3082 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3083 $cat >gccvers.c <<EOM
3088 printf("%s\n", __VERSION__);
3090 printf("%s\n", "1");
3096 if $cc -o gccvers gccvers.c; then
3097 gccversion=`./gccvers`
3098 case "$gccversion" in
3099 '') echo "You are not using GNU cc." ;;
3100 *) echo "You are using GNU cc $gccversion."
3105 echo "*** WHOA THERE!!! ***" >&4
3106 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3107 case "$knowitall" in
3109 echo " You'd better start hunting for one and let me know about it." >&4
3115 case "$gccversion" in
3116 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3119 : decide how portable to be. Allow command line overrides.
3120 case "$d_portable" in
3122 *) d_portable="$define" ;;
3125 : set up shell script to do ~ expansion
3131 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3134 if $test -f /bin/csh; then
3135 /bin/csh -f -c "glob \$1"
3140 name=\`$expr x\$1 : '..\([^/]*\)'\`
3141 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3142 if $test ! -d "\$dir"; then
3144 echo "\$me: can't locate home directory for: \$name" >&2
3149 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3165 : now set up to get a file name
3169 cat <<'EOSC' >>getfile
3185 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3186 fn=`echo $fn | sed 's/(.*)//'`
3192 loc_file=`expr $fn : '.*:\(.*\)'`
3193 fn=`expr $fn : '\(.*\):.*'`
3201 */*) fullpath=true;;
3210 *e*) exp_file=true;;
3213 *p*) nopath_ok=true;;
3218 *d*) type='Directory';;
3219 *l*) type='Locate';;
3224 Locate) what='File';;
3229 case "$d_portable" in
3237 while test "$type"; do
3242 true) rp="$rp (~name ok)";;
3245 if test -f UU/getfile.ok && \
3246 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3265 value=`UU/filexp $ans`
3268 if test "$ans" != "$value"; then
3269 echo "(That expands to $value on this system.)"
3283 /*) value="$ansexp" ;;
3288 echo "I shall only accept a full path name, as in /bin/ls." >&4
3289 echo "Use a ! shell escape if you wish to check pathnames." >&4
3292 echo "Please give a full path name, starting with slash." >&4
3295 echo "Note that using ~name is ok provided it expands well." >&4
3308 for fp in $gfpth; do
3309 if test "X$fp" = X.; then
3314 if test -f "$pf"; then
3316 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3318 echo "($value is not a plain file, but that's ok.)"
3321 if test X"$type" = X; then
3328 for fp in $gfpth; do
3329 if test "X$fp" = X.; then
3334 if test -d "$pf"; then
3342 if test -d "$ansexp"; then
3343 echo "(Looking for $loc_file in directory $value.)"
3344 value="$value/$loc_file"
3345 ansexp="$ansexp/$loc_file"
3347 if test -f "$ansexp"; then
3350 case "$nopath_ok" in
3351 true) case "$value" in
3353 *) echo "Assuming $value will be in people's path."
3369 if test "$fastread" = yes; then
3374 rp="$what $value doesn't exist. Use that name anyway?"
3393 test "X$gfpthkeep" != Xy && gfpth=""
3396 : What should the include directory be ?
3398 $echo $n "Hmm... $c"
3402 if $test -f /bin/mips && /bin/mips; then
3403 echo "Looks like a MIPS system..."
3404 $cat >usr.c <<'EOCP'
3405 #ifdef SYSTYPE_BSD43
3409 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3410 dflt='/bsd43/usr/include'
3414 mips_type='System V'
3416 $rm -f usr.c usr.out
3417 echo "and you're compiling with the $mips_type compiler and libraries."
3421 echo "Doesn't look like a MIPS system."
3431 case "$xxx_prompt" in
3434 rp='Where are the include files you want to use?'
3442 : see how we invoke the C preprocessor
3444 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3445 cat <<'EOT' >testcpp.c
3451 if test ! -f cppstdin; then
3452 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3453 # AIX cc -E doesn't show the absolute headerfile
3454 # locations but we'll cheat by using the -M flag.
3455 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
3457 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3460 echo "Keeping your $hint cppstdin wrapper."
3463 wrapper=`pwd`/cppstdin
3467 if $test "X$cppstdin" != "X" && \
3468 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3469 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3471 echo "You used to use $cppstdin $cppminus so we'll use that again."
3473 '') echo "But let's see if we can live without a wrapper..." ;;
3475 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3476 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3478 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3481 echo "(However, $cpprun $cpplast does not work, let's see...)"
3489 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3496 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3497 $cc -E <testcpp.c >testcpp.out 2>&1; \
3498 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3499 echo "Yup, it does."
3502 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3503 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3504 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3505 echo "Yup, it does."
3508 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3509 $cc -P <testcpp.c >testcpp.out 2>&1; \
3510 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3511 echo "Yipee, that works!"
3514 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3515 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3516 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3517 echo "At long last!"
3520 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3521 $cpp <testcpp.c >testcpp.out 2>&1; \
3522 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3526 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3527 $cpp - <testcpp.c >testcpp.out 2>&1; \
3528 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3529 echo "Hooray, it works! I was beginning to wonder."
3532 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3533 $wrapper <testcpp.c >testcpp.out 2>&1; \
3534 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3540 rp="No dice. I can't find a C preprocessor. Name one:"
3544 $x_cpp <testcpp.c >testcpp.out 2>&1
3545 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3546 echo "OK, that will do." >&4
3548 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3563 echo "Perhaps can we force $cc -E using a wrapper..."
3564 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3565 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3571 echo "Nope, we'll have to live without it..."
3585 "$wrapper"|'cppstdin') ;;
3586 *) $rm -f $wrapper;;
3588 $rm -f testcpp.c testcpp.out
3590 : Set private lib path
3593 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3598 '') dlist="$loclibpth $plibpth $glibpth";;
3599 *) dlist="$libpth";;
3602 : Now check and see which directories actually exist, avoiding duplicates
3606 if $test -d $xxx; then
3609 *) libpth="$libpth $xxx";;
3615 Some systems have incompatible or broken versions of libraries. Among
3616 the directories listed in the question below, please remove any you
3617 know not to be holding relevant libraries, and add any that are needed.
3618 Say "none" for none.
3629 rp="Directories to use for library searches?"
3636 : compute shared library extension
3639 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3649 On some systems, shared libraries may be available. Answer 'none' if
3650 you want to suppress searching of shared libraries for the remainder
3651 of this configuration.
3654 rp='What is the file extension used for shared libraries?'
3658 : Define several unixisms.
3659 : Hints files or command line option can be used to override them.
3660 : The convoluted testing is in case hints files set either the old
3663 '') case "$exe_ext" in
3665 *) _exe="$exe_ext" ;;
3670 '') case "$lib_ext" in
3677 '') case "$obj_ext" in
3684 '') case "$path_sep" in
3695 : Which makefile gets called first. This is used by make depend.
3696 case "$firstmakefile" in
3697 '') firstmakefile='makefile';;
3702 Perl can be built to use the SOCKS proxy protocol library. To do so,
3703 Configure must be run with -Dusesocks.
3705 Normally you do not need this and you should answer no.
3709 $define|true|[yY]*) dflt='y';;
3712 rp='Build Perl for SOCKS?'
3715 y|Y) val="$define" ;;
3721 : Looking for optional libraries
3723 echo "Checking for optional libraries..." >&4
3728 case "$libswanted" in
3729 '') libswanted='c_s';;
3733 libswanted="$libswanted socks5 socks5_sh"
3736 for thislib in $libswanted; do
3738 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3739 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3740 echo "Found -l$thislib (shared)."
3743 *) dflt="$dflt -l$thislib";;
3745 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3746 echo "Found -l$thislib (shared)."
3749 *) dflt="$dflt -l$thislib";;
3751 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3752 echo "Found -l$thislib."
3755 *) dflt="$dflt -l$thislib";;
3757 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3758 echo "Found -l$thislib."
3761 *) dflt="$dflt -l$thislib";;
3763 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3764 echo "Found -l${thislib}_s."
3767 *) dflt="$dflt -l${thislib}_s";;
3769 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3770 echo "Found -l$thislib."
3773 *) dflt="$dflt -l$thislib";;
3776 echo "No -l$thislib."
3787 ' '|'') dflt='none';;
3792 In order to compile $package on your machine, a number of libraries
3793 are usually needed. Include any other special libraries here as well.
3794 Say "none" for none. The default list is almost always right.
3798 rp="What libraries to use?"
3805 : determine optimization, if desired, or use for debug flag also
3807 ' '|$undef) dflt='none';;
3809 *) dflt="$optimize";;
3813 By default, $package compiles with the -O flag to use the optimizer.
3814 Alternately, you might want to use the symbolic debugger, which uses
3815 the -g flag (on traditional Unix systems). Either flag can be
3816 specified here. To use neither flag, specify the word "none".
3819 rp="What optimizer/debugger flag should be used?"
3823 'none') optimize=" ";;
3827 : We will not override a previous value, but we might want to
3828 : augment a hint file
3830 default|recommended)
3831 case "$gccversion" in
3832 1*) dflt='-fpcc-struct-return' ;;
3835 *-g*) dflt="$dflt -DDEBUGGING";;
3837 case "$gccversion" in
3838 2*) if test -d /etc/conf/kconfig.d &&
3839 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3845 case "$gccversion" in
3849 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3850 echo 'int main(void) { return 0; }' > gcctest.c
3851 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3852 echo "Yes, it does." 2>&1
3855 echo "Leaving current flags $ccflags alone." 2>&1
3857 *) dflt="$dflt -fno-strict-aliasing" ;;
3860 echo "Nope, it doesn't, but that's ok." 2>&1
3867 case "$mips_type" in
3868 *BSD*|'') inclwanted="$locincpth $usrinc";;
3869 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3871 for thisincl in $inclwanted; do
3872 if $test -d $thisincl; then
3873 if $test x$thisincl != x$usrinc; then
3876 *) dflt="$dflt -I$thisincl";;
3882 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3884 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3892 *) dflt="$dflt -D$2";;
3896 set signal.h LANGUAGE_C; eval $inctest
3900 ccflags="$ccflags -DSOCKS"
3905 default|recommended) dflt="$ccflags $dflt" ;;
3906 *) dflt="$ccflags";;
3914 Your C compiler may want other flags. For this question you should include
3915 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3916 but you should NOT include libraries or ld flags like -lwhatever. If you
3917 want $package to honor its debug switch, you should include -DDEBUGGING here.
3918 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3920 To use no flags, specify the word "none".
3926 rp="Any additional cc flags?"
3933 : the following weeds options from ccflags that are of no interest to cpp
3935 case "$gccversion" in
3936 1*) cppflags="$cppflags -D__GNUC__"
3938 case "$mips_type" in
3940 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3946 echo "Let me guess what the preprocessor flags are..." >&4
3960 *) ftry="$previous $flag";;
3962 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3963 >cpp1.out 2>/dev/null && \
3964 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3965 >cpp2.out 2>/dev/null && \
3966 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3967 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3969 cppflags="$cppflags $ftry"
3979 *-*) echo "They appear to be: $cppflags";;
3981 $rm -f cpp.c cpp?.out
3985 : flags used in final linking phase
3987 '') if ./venix; then
3993 *-posix*) dflt="$dflt -posix" ;;
3996 *) dflt="$ldflags";;
3999 : Try to guess additional flags to pick up local libraries.
4000 for thislibdir in $libpth; do
4001 case " $loclibpth " in
4004 *"-L$thislibdir "*) ;;
4005 *) dflt="$dflt -L$thislibdir" ;;
4017 Your C linker may need flags. For this question you should
4018 include -L/whatever and any other flags used by the C linker, but you
4019 should NOT include libraries like -lwhatever.
4021 Make sure you include the appropriate -L/path flags if your C linker
4022 does not normally search all of the directories you specified above,
4025 To use no flags, specify the word "none".
4029 rp="Any additional ld flags (NOT including libraries)?"
4035 rmlist="$rmlist pdp11"
4039 echo "Checking your choice of C compiler and flags for coherency..." >&4
4040 $cat > try.c <<'EOF'
4042 int main() { printf("Ok\n"); exit(0); }
4044 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4046 $cat >try.msg <<'EOM'
4047 I've tried to compile and run the following simple program:
4050 $cat try.c >> try.msg
4052 $cat >> try.msg <<EOM
4059 and I got the following output:
4063 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4064 if sh -c './try' >>try.msg 2>&1; then
4068 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4071 cat >> try.msg <<'EOQS'
4072 If $libs contains -lsfio, and sfio is mis-configured, then it
4073 sometimes (apparently) runs and exits with a 0 status, but with no
4074 output! It may have to do with sfio's use of _exit vs. exit.
4077 rp="You have a big problem. Shall I abort Configure"
4084 echo "The program compiled OK, but exited with status $?." >>try.msg
4085 rp="You have a problem. Shall I abort Configure"
4089 echo "I can't compile the test program." >>try.msg
4090 rp="You have a BIG problem. Shall I abort Configure"
4096 case "$knowitall" in
4098 echo "(The supplied flags or libraries might be incorrect.)"
4106 *) echo "Ok. Stopping Configure." >&4
4111 n) echo "OK, that should do.";;
4113 $rm -f try try.* core
4115 : define an is-a-typedef? function
4116 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4118 "") inclist="sys/types.h";;
4120 eval "varval=\$$var";
4124 for inc in $inclist; do
4125 echo "#include <$inc>" >>temp.c;
4127 echo "#ifdef $type" >> temp.c;
4128 echo "printf(\"We have $type\");" >> temp.c;
4129 echo "#endif" >> temp.c;
4130 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4131 if $contains $type temp.E >/dev/null 2>&1; then
4137 *) eval "$var=\$varval";;
4140 : define an is-a-typedef? function that prompts if the type is not available.
4141 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4143 "") inclist="sys/types.h";;
4145 eval "varval=\$$var";
4149 for inc in $inclist; do
4150 echo "#include <$inc>" >>temp.c;
4152 echo "#ifdef $type" >> temp.c;
4153 echo "printf(\"We have $type\");" >> temp.c;
4154 echo "#endif" >> temp.c;
4155 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4157 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4158 if $contains $type temp.E >/dev/null 2>&1; then
4159 echo "$type found." >&4;
4162 echo "$type NOT found." >&4;
4168 *) eval "$var=\$varval";;
4171 : define a shorthand compile call
4175 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4176 : define a shorthand compile call for compilations that should be ok.
4180 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4182 : check for lengths of integral types
4186 echo "Checking to see how big your integers are..." >&4
4187 $cat >intsize.c <<'EOCP'
4191 printf("intsize=%d;\n", (int)sizeof(int));
4192 printf("longsize=%d;\n", (int)sizeof(long));
4193 printf("shortsize=%d;\n", (int)sizeof(short));
4198 if eval $compile_ok && ./intsize > /dev/null; then
4200 echo "Your integers are $intsize bytes long."
4201 echo "Your long integers are $longsize bytes long."
4202 echo "Your short integers are $shortsize bytes long."
4206 Help! I can't compile and run the intsize test program: please enlighten me!
4207 (This is probably a misconfiguration in your system or libraries, and
4208 you really ought to fix it. Still, I'll try anyway.)
4212 rp="What is the size of an integer (in bytes)?"
4216 rp="What is the size of a long integer (in bytes)?"
4220 rp="What is the size of a short integer (in bytes)?"
4226 $rm -f intsize intsize.*
4228 : see what type lseek is declared as in the kernel
4229 rp="What is the type used for lseek's offset on this system?"
4230 set off_t lseektype long stdio.h sys/types.h
4234 $echo $n "Checking to see how big your file offsets are...$c" >&4
4236 #include <sys/types.h>
4240 printf("%d\n", (int)sizeof($lseektype));
4245 if eval $compile_ok; then
4247 $echo " $lseeksize bytes." >&4
4251 echo "(I can't seem to compile the test program. Guessing...)"
4252 rp="What is the size of your file offsets (in bytes)?"
4258 : see what type file positions are declared as in the library
4259 rp="What is the type for file position used by fsetpos()?"
4260 set fpos_t fpostype long stdio.h sys/types.h
4265 *_t) zzz="$fpostype" ;;
4268 $echo $n "Checking the size of $zzz...$c" >&4
4270 #include <sys/types.h>
4273 printf("%d\n", (int)sizeof($fpostype));
4278 if eval $compile_ok; then
4283 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4286 echo " $fpossize bytes."
4292 echo "(I can't compile the test program. Guessing...)" >&4
4293 rp="What is the size of your file positions (in bytes)?"
4300 case "$lseeksize:$fpossize" in
4303 You can have files larger than 2 gigabytes.
4308 Perl can be built to understand large files (files larger than 2 gigabytes)
4309 on some systems. To do so, Configure must be run with -Duselargefiles.
4311 If this doesn't make any sense to you, just accept the default 'y'.
4313 case "$uselargefiles" in
4314 "$undef"|false|[nN]*) dflt='n' ;;
4317 rp='Try to understand large files, if available?'
4320 y|Y) val="$define" ;;
4327 case "$uselargefiles" in
4329 : Look for a hint-file generated 'call-back-unit'. If the
4330 : user has specified that a large files perl is to be built,
4331 : we may need to set or change some other defaults.
4332 if $test -f uselfs.cbu; then
4333 echo "Your platform has some specific hints for large file builds, using them..."
4336 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4338 #include <sys/types.h>
4342 printf("%d\n", (int)sizeof($lseektype));
4347 if eval $compile_ok; then
4349 $echo " $lseeksize bytes." >&4
4353 echo "(I can't seem to compile the test program. Guessing...)"
4354 rp="What is the size of your file offsets (in bytes)?"
4359 *_t) zzz="$fpostype" ;;
4362 $echo $n "Rechecking the size of $zzz...$c" >&4
4364 #include <sys/types.h>
4367 printf("%d\n", (int)sizeof($fpostype));
4372 if eval $compile_ok; then
4377 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4380 echo " $fpossize bytes."
4386 echo "(I can't compile the test program. Guessing...)" >&4
4387 rp="What is the size of your file positions (in bytes)?"
4397 case "$usemorebits" in
4398 "$define"|true|[yY]*)
4400 uselongdouble="$define"
4401 usemorebits="$define"
4403 *) usemorebits="$undef"
4408 case "$intsize:$longsize" in
4411 You have natively 64-bit integers.
4416 Perl can be built to take advantage of 64-bit integer types
4417 on some systems. To do so, Configure must be run with -Duse64bits.
4419 If this doesn't make any sense to you, just accept the default.
4421 case "$use64bits" in
4422 $define|true|[yY]*) dflt='y';;
4425 rp='Try to use 64-bit integers, if available?'
4428 y|Y) val="$define" ;;
4436 case "$archname64" in
4437 '') archname64='' ;; # not a typo
4440 case "$use64bits" in
4441 "$define"|true|[yY]*)
4442 : Look for a hint-file generated 'call-back-unit'. If the
4443 : user has specified that a 64-bit perl is to be built,
4444 : we may need to set or change some other defaults.
4445 if $test -f use64bits.cbu; then
4446 echo "Your platform has some specific hints for 64-bit builds, using them..."
4450 (Your platform doesn't have any specific hints for 64-bit builds.)
4452 case "$intsize:$longsize" in
4454 (This is probably okay, as your system is a natively 64-bit system.)
4458 case "$gccversion" in
4460 *) case "$ccflags" in
4461 *-DUSE_LONG_LONG*) ;;
4463 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4464 to the compilation flags.
4466 ccflags="$ccflags -DUSE_LONG_LONG"
4475 : determine the architecture name
4477 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4478 tarch=`arch`"-$osname"
4479 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4480 if uname -m > tmparch 2>&1 ; then
4481 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4482 -e 's/$/'"-$osname/" tmparch`
4490 case "$myarchname" in
4493 echo "(Your architecture name used to be $myarchname.)"
4500 *) dflt="$archname";;
4502 rp='What is your architecture name'
4505 case "$usethreads" in
4507 echo "Threads selected." >&4
4509 *-thread*) echo "...and architecture name already has -thread." >&4
4511 *) archname="$archname-thread"
4512 echo "...setting architecture name to $archname." >&4
4517 case "$usemultiplicity" in
4519 echo "Multiplicity selected." >&4
4521 *-multi*) echo "...and architecture name already has -multi." >&4
4523 *) archname="$archname-multi"
4524 echo "...setting architecture name to $archname." >&4
4529 case "$use64bits" in
4531 case "$archname64" in
4536 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4538 *) archname="$archname-$archname64"
4539 echo "...setting architecture name to $archname." >&4
4546 : determine root of directory hierarchy where package will be installed.
4549 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4557 By default, $package will be installed in $dflt/bin, manual pages
4558 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4559 installation directories. Typically this is something like /usr/local.
4560 If you wish to have binaries under /usr/bin but other parts of the
4561 installation under /usr/local, that's ok: you will be prompted
4562 separately for each of the installation directories, the prefix being
4563 only used to set the defaults.
4567 rp='Installation prefix to use?'
4575 *) oldprefix="$prefix";;
4585 $define|true) afs=true ;;
4586 $undef|false) afs=false ;;
4587 *) if test -d /afs; then
4595 echo "AFS may be running... I'll be extra cautious then..." >&4
4597 echo "AFS does not seem to be running..." >&4
4600 : determine installation prefix for where package is to be installed.
4604 Since you are running AFS, I need to distinguish the directory in which
4605 files will reside from the directory in which they are installed (and from
4606 which they are presumably copied to the former directory by occult means).
4609 case "$installprefix" in
4610 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4611 *) dflt="$installprefix";;
4616 In some special cases, particularly when building $package for distribution,
4617 it is convenient to distinguish between the directory in which files should
4618 be installed from the directory ($prefix) in which they
4619 will eventually reside. For most users, these two directories are the same.
4622 case "$installprefix" in
4624 *) dflt=$installprefix;;
4628 rp='What installation prefix should I use for installing files?'
4630 installprefix="$ans"
4631 installprefixexp="$ansexp"
4633 : set the prefixit variable, to compute a suitable default value
4634 prefixit='case "$3" in
4636 case "$oldprefix" in
4637 "") eval "$1=\"\$$2\"";;
4644 ""|" ") eval "$1=\"\$$2\"";;
4650 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4652 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4653 /*-$oldprefix/*|\~*-$oldprefix/*)
4654 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4655 *) eval "$1=\"\$$2\"";;
4659 : set the base revision
4663 : get the patchlevel
4665 echo "Getting the current patchlevel..." >&4
4666 if $test -r $rsrc/patchlevel.h;then
4667 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4668 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4669 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4670 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4671 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4679 $echo $n "(You have $package" $c
4682 *) $echo $n " $baserev" $c ;;
4684 $echo $n " patchlevel $patchlevel" $c
4685 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4688 dos|cygwin|vms|win32)
4689 : XXX Should be a Configure test for double-dots in filenames.
4690 version=`echo $baserev $patchlevel $subversion | \
4691 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4692 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4693 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4696 version=`echo $baserev $patchlevel $subversion | \
4697 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4698 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4699 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4702 : Special case the 5.005_xx maintenance series, which used 5.005
4703 : without any subversion label as a subdirectory in $sitelib
4704 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4705 api_versionstring='5.005'
4708 : determine installation style
4709 : For now, try to deduce it from prefix unless it is already set.
4710 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4711 case "$installstyle" in
4712 '') case "$prefix" in
4713 *perl*) dflt='lib';;
4714 *) dflt='lib/perl5' ;;
4717 *) dflt='lib/perl5' ;;
4719 : Probably not worth prompting for this since we prompt for all
4720 : the directories individually, and the prompt would be too long and
4724 : determine where private library files go
4725 : Usual default is /usr/local/lib/perl5/$version.
4726 : Also allow things like /opt/perl/lib/$version, since
4727 : /opt/perl/lib/perl5... would be redundant.
4728 : The default "style" setting is made in installstyle.U
4729 case "$installstyle" in
4730 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4731 *) set dflt privlib lib/$version ;;
4736 There are some auxiliary files for $package that need to be put into a
4737 private library directory that is accessible by everyone.
4741 rp='Pathname where the private library files will reside?'
4744 privlibexp="$ansexp"
4745 : Change installation prefix, if necessary.
4746 if $test X"$prefix" != X"$installprefix"; then
4747 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4749 installprivlib="$privlibexp"
4752 : set the prefixup variable, to restore leading tilda escape
4753 prefixup='case "$prefixexp" in
4755 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4758 : determine where public architecture dependent libraries go
4761 : privlib default is /usr/local/lib/$package/$version
4762 : archlib default is /usr/local/lib/$package/$version/$archname
4763 : privlib may have an optional trailing /share.
4764 tdflt=`echo $privlib | $sed 's,/share$,,'`
4765 tdflt=$tdflt/$archname
4774 $spackage contains architecture-dependent library files. If you are
4775 sharing libraries in a heterogeneous environment, you might store
4776 these files in a separate location. Otherwise, you can just include
4777 them with the rest of the public library files.
4781 rp='Where do you want to put the public architecture-dependent libraries?'
4784 archlibexp="$ansexp"
4785 if $test X"$archlib" = X"$privlib"; then
4790 : Change installation prefix, if necessary.
4791 if $test X"$prefix" != X"$installprefix"; then
4792 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4794 installarchlib="$archlibexp"
4798 : Binary compatibility with 5.005 is not possible for builds
4799 : with advanced features
4800 case "$usethreads$usemultiplicity" in
4802 bincompat5005="$undef"
4803 d_bincompat5005="$undef"
4807 Perl 5.006 can be compiled for binary compatibility with 5.005.
4808 If you decide to do so, you will be able to continue using most
4809 of the extensions that were compiled for Perl 5.005.
4812 case "$bincompat5005$d_bincompat5005" in
4813 *"$undef"*) dflt=n ;;
4816 rp='Binary compatibility with Perl 5.005?'
4819 y*) val="$define" ;;
4824 case "$d_bincompat5005" in
4826 bincompat5005="$define"
4828 *) bincompat5005="$undef"
4829 d_bincompat5005="$undef"
4836 : see if setuid scripts can be secure
4839 Some kernels have a bug that prevents setuid #! scripts from being
4840 secure. Some sites have disabled setuid #! scripts because of this.
4842 First let's decide if your kernel supports secure setuid #! scripts.
4843 (If setuid #! scripts would be secure but have been disabled anyway,
4844 don't say that they are secure if asked.)
4849 if $test -d /dev/fd; then
4850 echo "#!$ls" >reflect
4851 chmod +x,u+s reflect
4852 ./reflect >flect 2>&1
4853 if $contains "/dev/fd" flect >/dev/null; then
4854 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4858 If you are not sure if they are secure, I can check but I'll need a
4859 username and password different from the one you are using right now.
4860 If you don't have such a username or don't want me to test, simply
4864 rp='Other username to test security of setuid scripts with?'
4869 case "$d_suidsafe" in
4870 '') echo "I'll assume setuid scripts are *not* secure." >&4
4873 echo "Well, the $hint value is *not* secure." >&4
4875 *) echo "Well, the $hint value *is* secure." >&4
4880 $rm -f reflect flect
4881 echo "#!$ls" >reflect
4882 chmod +x,u+s reflect
4885 echo '"su" will (probably) prompt you for '"$ans's password."
4886 su $ans -c './reflect >flect'
4887 if $contains "/dev/fd" flect >/dev/null; then
4888 echo "Okay, it looks like setuid scripts are secure." >&4
4891 echo "I don't think setuid scripts are secure." >&4
4896 rp='Does your kernel have *secure* setuid scripts?'
4899 [yY]*) val="$define";;
4904 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4905 echo "(That's for file descriptors, not floppy disks.)"
4911 $rm -f reflect flect
4913 : now see if they want to do setuid emulation
4916 case "$d_suidsafe" in
4919 echo "No need to emulate SUID scripts since they are secure here." >& 4
4923 Some systems have disabled setuid scripts, especially systems where
4924 setuid scripts cannot be secure. On systems where setuid scripts have
4925 been disabled, the setuid/setgid bits on scripts are currently
4926 useless. It is possible for $package to detect those bits and emulate
4927 setuid/setgid in a secure fashion. This emulation will only work if
4928 setuid scripts have been disabled in your kernel.
4932 "$define") dflt=y ;;
4935 rp="Do you want to do setuid/setgid emulation?"
4938 [yY]*) val="$define";;
4946 : determine filename position in cpp output
4948 echo "Computing filename position in cpp output for #include directives..." >&4
4949 echo '#include <stdio.h>' > foo.c
4952 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4953 $grep '^[ ]*#.*stdio\.h' | \
4954 while read cline; do
4957 while $test \$# -gt 0; do
4958 if $test -r \`echo \$1 | $tr -d '"'\`; then
4963 pos=\`expr \$pos + 1\`
4975 *) pos="${fieldn}th";;
4977 echo "Your cpp writes the filename in the $pos field of the line."
4979 : locate header file
4984 for usrincdir in $usrinc
4986 if test -f \$usrincdir/\$wanted; then
4987 echo "\$usrincdir/\$wanted"
4991 awkprg='{ print \$$fieldn }'
4992 echo "#include <\$wanted>" > foo\$\$.c
4993 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4994 $grep "^[ ]*#.*\$wanted" | \
4995 while read cline; do
4996 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4998 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4999 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5004 # status = 0: grep returned 0 lines, case statement not executed
5005 # status = 1: headerfile found
5006 # status = 2: while loop executed, no headerfile found
5010 if test \$status -eq 1; then
5017 : define an alternate in-header-list? function
5018 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5019 cont=true; xxf="echo \"<\$1> found.\" >&4";
5020 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5021 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5023 case $# in 4) instead=instead;; *) instead="at last";; esac;
5024 while $test "$cont"; do
5026 var=$2; eval "was=\$$2";
5027 if $test "$xxx" && $test -r "$xxx";
5029 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5032 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5033 set $yyy; shift; shift; yyy=$@;
5034 case $# in 0) cont="";;
5035 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5036 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5037 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5038 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5042 do set $yyy; var=$2; eval "was=\$$2";
5043 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5044 set $yyy; shift; shift; yyy=$@;
5047 : see if this is a malloc.h system
5048 set malloc.h i_malloc
5051 : see if stdlib is available
5052 set stdlib.h i_stdlib
5055 : determine which malloc to compile in
5057 case "$usemymalloc" in
5058 ''|[yY]*|true|$define) dflt='y' ;;
5061 rp="Do you wish to attempt to use the malloc that comes with $package?"
5067 mallocsrc='malloc.c'
5068 mallocobj="malloc$_o"
5069 d_mymalloc="$define"
5072 : Remove malloc from list of libraries to use
5073 echo "Removing unneeded -lmalloc from library list" >&4
5074 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5077 echo "libs = $libs" >&4
5089 : compute the return types of malloc and free
5091 $cat >malloc.c <<END
5095 #include <sys/types.h>
5109 case "$malloctype" in
5111 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5118 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5122 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5129 echo "Your system uses $freetype free(), it would seem." >&4
5133 The installation process will also create a directory for
5134 vendor-supplied add-ons. Vendors who supply perl with their system
5135 may find it convenient to place all vendor-supplied files in this
5136 directory rather than in the main distribution directory. This will
5137 ease upgrades between binary-compatible maintenance versions of perl.
5139 Of course you may also use these directories in whatever way you see
5140 fit. For example, you might use them to access modules shared over a
5141 company-wide network.
5143 The default answer should be fine for most people.
5144 This causes further questions about vendor add-ons to be skipped
5145 and no vendor-specific directories will be configured for perl.
5148 rp='Do you want to configure vendor-specific add-on directories?'
5149 case "$usevendorprefix" in
5150 define|true|[yY]*) dflt=y ;;
5156 rp='Installation prefix to use for vendor-supplied add-ons?'
5157 case "$vendorprefix" in
5159 *) dflt=$vendorprefix ;;
5163 case "$vendorprefix" in
5167 *) oldvendorprefix="$prefix";;
5171 usevendorprefix="$define"
5173 vendorprefixexp="$ansexp"
5175 *) usevendorprefix="$undef"
5181 case "$vendorprefix" in
5182 '') d_vendorlib="$undef"
5186 *) d_vendorlib="$define"
5187 : determine where vendor-supplied modules go.
5188 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5189 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5190 case "$installstyle" in
5191 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5192 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5195 rp='Pathname for the vendor-supplied library files?'
5198 vendorlibexp="$ansexp"
5199 : Change installation prefix, if necessary.
5200 if $test X"$prefix" != X"$installprefix"; then
5201 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5203 installvendorlib="$vendorlibexp"
5208 : Cruising for prototypes
5210 echo "Checking out function prototypes..." >&4
5211 $cat >prototype.c <<'EOCP'
5212 int main(int argc, char *argv[]) {
5215 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5216 echo "Your C compiler appears to support function prototypes."
5219 echo "Your C compiler doesn't seem to understand function prototypes."
5226 case "$prototype" in
5228 *) ansi2knr='ansi2knr'
5233 This version of $package can only be compiled by a compiler that
5234 understands function prototypes. Unfortunately, your C compiler
5236 doesn't seem to understand them. Sorry about that.
5238 If GNU cc is available for your system, perhaps you could try that instead.
5240 Eventually, we hope to support building Perl with pre-ANSI compilers.
5241 If you would like to help in that effort, please contact <perlbug@perl.org>.
5243 Aborting Configure now.
5249 : determine where public executables go
5254 rp='Pathname where the public executables will reside?'
5256 if $test "X$ansexp" != "X$binexp"; then
5261 : Change installation prefix, if necessary.
5262 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5263 if $test X"$prefix" != X"$installprefix"; then
5264 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5266 installbin="$binexp"
5271 After $package is installed, you may wish to install various
5272 add-on modules and utilities. Typically, these add-ons will
5273 be installed under $prefix with the rest
5274 of this package. However, you may wish to install such add-ons
5275 elsewhere under a different prefix.
5277 If you do not wish to put everything under a single prefix, that's
5278 ok. You will be prompted for the individual locations; this siteprefix
5279 is only used to suggest the defaults.
5281 The default should be fine for most people.
5285 rp='Installation prefix to use for add-on modules and utilities?'
5286 : XXX Here might be another good place for an installstyle setting.
5287 case "$siteprefix" in
5289 *) dflt=$siteprefix ;;
5293 case "$siteprefix" in
5298 *) oldsiteprefix="$prefix";;
5303 siteprefixexp="$ansexp"
5305 : determine where site specific libraries go.
5306 : Usual default is /usr/local/lib/perl5/site_perl/$version
5307 : The default "style" setting is made in installstyle.U
5308 : XXX No longer works with Prefixit stuff.
5309 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5310 case "$installstyle" in
5311 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5312 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5316 The installation process will create a directory for
5317 site-specific extensions and modules. Most users find it convenient
5318 to place all site-specific files in this directory rather than in the
5319 main distribution directory.
5323 rp='Pathname for the site-specific library files?'
5326 sitelibexp="$ansexp"
5327 : Change installation prefix, if necessary.
5328 if $test X"$prefix" != X"$installprefix"; then
5329 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5331 installsitelib="$sitelibexp"
5334 : Determine list of previous versions to include in @INC
5335 $cat > getverlist <<EOPL
5338 \$api_versionstring = "$api_versionstring";
5339 \$version = "$version";
5340 \$sitelib = "$sitelib";
5341 \$archname = "$archname";
5343 $cat >> getverlist <<'EOPL'
5344 # Can't have leading @ because metaconfig interprets it as a command!
5345 ;@inc_version_list=();
5346 $stem=dirname($sitelib);
5347 # Redo to do opendir/readdir?
5350 ;@candidates = glob("5.*");
5356 # XXX ToDo: These comparisons must be reworked when two-digit
5357 # subversions come along, so that 5.7.10 compares as greater than
5358 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5359 # widespread that we can use the built-in version vectors rather
5360 # than reinventing them here. For 5.6.0, however, we must
5361 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5362 foreach $d (@candidates) {
5363 if ($d lt $version) {
5364 if ($d ge $api_versionstring) {
5365 unshift(@inc_version_list, "$d/$archname", $d);
5367 elsif ($d ge "5.005") {
5368 unshift(@inc_version_list, $d);
5372 # Skip newer version. I.e. don't look in
5373 # 5.7.0 if we're installing 5.6.1.
5377 if (@inc_version_list) {
5378 print join(' ', @inc_version_list);
5381 # Blank space to preserve value for next Configure run.
5386 case "$inc_version_list" in
5387 '') if test -x $perl; then
5388 dflt=`$perl getverlist`
5393 $undef) dflt='none' ;;
5394 *) dflt="$inc_version_list" ;;
5398 In order to ease the process of upgrading, this version of perl
5399 can be configured to use modules built and installed with earlier
5400 versions of perl that were installed under $prefix. Specify here
5401 the list of earlier versions that this version of perl should check.
5402 If Configure detected no earlier versions of perl installed under
5403 $prefix, then the list will be empty. Answer 'none' to tell perl
5404 to not search earlier versions.
5406 The default should almost always be sensible, so if you're not sure,
5407 just accept the default.
5410 rp='List of earlier versions to include in @INC?'
5413 [Nn]one) inc_version_list=' ' ;;
5414 *) inc_version_list="$ans" ;;
5416 case "$inc_version_list" in
5418 inc_version_list_init='""';;
5419 *) inc_version_list_init=`echo $inc_version_list |
5420 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/"/'`
5425 : determine whether to install perl also as /usr/bin/perl
5428 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5430 Many scripts expect to perl to be installed as /usr/bin/perl.
5431 I can install the perl you are about to compile also as /usr/bin/perl
5432 (in addition to $installbin/perl).
5434 case "$installusrbinperl" in
5435 "$undef"|[nN]*) dflt='n';;
5438 rp="Do you want to install perl as /usr/bin/perl?"
5441 [yY]*) val="$define";;
5447 set installusrbinperl
5451 echo "Checking for GNU C Library..." >&4
5452 cat >gnulibc.c <<EOM
5464 if eval $compile_ok && ./gnulibc; then
5466 echo "You are using the GNU C Library"
5469 echo "You are not using the GNU C Library"
5475 : see if nm is to be used to determine whether a symbol is defined or not
5479 case "$d_gnulibc" in
5482 echo "nm probably won't work on the GNU C Library." >&4
5488 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5490 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5491 echo "'nm' won't be sufficient on this sytem." >&4
5497 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5498 if $test $dflt -gt 20; then
5508 true|$define) dflt=y;;
5515 I can use $nm to extract the symbols from your C libraries. This
5516 is a time consuming task which may generate huge output on the disk (up
5517 to 3 megabytes) but that should make the symbols extraction faster. The
5518 alternative is to skip the 'nm' extraction part and to compile a small
5519 test program instead to determine whether each symbol is present. If
5520 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5521 this may be the best solution.
5523 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5526 rp="Shall I use $nm to extract C symbols from the libraries?"
5529 [Nn]*) usenm=false;;
5538 : nm options which may be necessary
5540 '') if $test -f /mach_boot; then
5542 elif $test -d /usr/ccs/lib; then
5543 nm_opt='-p' # Solaris (and SunOS?)
5544 elif $test -f /dgux; then
5546 elif $test -f /lib64/rld; then
5547 nm_opt='-p' # 64-bit Irix
5553 : nm options which may be necessary for shared libraries but illegal
5554 : for archive libraries. Thank you, Linux.
5555 case "$nm_so_opt" in
5556 '') case "$myuname" in
5558 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5559 nm_so_opt='--dynamic'
5568 : get list of predefined functions in a handy place
5573 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5580 *) for thislib in $libs; do
5583 : Handle C library specially below.
5586 thislib=`echo $thislib | $sed -e 's/^-l//'`
5587 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5589 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5591 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5593 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5595 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5597 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5599 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5604 libnames="$libnames $try"
5606 *) libnames="$libnames $thislib" ;;
5615 for xxx in $libpth; do
5616 $test -r $1 || set $xxx/libc.$so
5617 : The messy sed command sorts on library version numbers.
5619 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5620 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5622 s/[0-9][0-9]*/0000&/g
5623 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5626 sort | $sed -e 's/^.* //'`
5629 $test -r $1 || set /usr/ccs/lib/libc.$so
5630 $test -r $1 || set /lib/libsys_s$_a
5636 if $test -r "$1"; then
5637 echo "Your (shared) C library seems to be in $1."
5639 elif $test -r /lib/libc && $test -r /lib/clib; then
5640 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5642 libc='/lib/clib /lib/libc'
5643 if $test -r /lib/syslib; then
5644 echo "(Your math library is in /lib/syslib.)"
5645 libc="$libc /lib/syslib"
5647 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5648 echo "Your C library seems to be in $libc, as you said before."
5649 elif $test -r $incpath/usr/lib/libc$_a; then
5650 libc=$incpath/usr/lib/libc$_a;
5651 echo "Your C library seems to be in $libc. That's fine."
5652 elif $test -r /lib/libc$_a; then
5654 echo "Your C library seems to be in $libc. You're normal."
5656 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5658 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5659 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5660 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5662 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5664 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5667 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5669 if $test -r "$tans"; then
5670 echo "Your C library seems to be in $tans, of all places."
5676 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5680 If the guess above is wrong (which it might be if you're using a strange
5681 compiler, or your machine supports multiple models), you can override it here.
5686 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5688 I can't seem to find your C library. I've looked in the following places:
5691 $sed 's/^/ /' libpath
5694 None of these seems to contain your C library. I need to get its name...
5699 rp='Where is your C library?'
5704 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5705 set X `cat libnames`
5708 case $# in 1) xxx=file; esac
5709 echo "Extracting names from the following $xxx for later perusal:" >&4
5711 $sed 's/^/ /' libnames >&4
5713 $echo $n "This may take a while...$c" >&4
5717 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5718 *) $nm $nm_opt $file 2>/dev/null;;
5723 $grep fprintf libc.tmp > libc.ptf
5724 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5725 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5727 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5729 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5731 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5733 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5735 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5737 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5741 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5743 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5745 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5749 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5752 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5754 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5756 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5758 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5760 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5762 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5764 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5766 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5768 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5770 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5772 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5774 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5776 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5778 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5780 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5782 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5785 $nm -p $* 2>/dev/null >libc.tmp
5786 $grep fprintf libc.tmp > libc.ptf
5787 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5788 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5794 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5796 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5797 for thisname in $libnames $libc; do
5798 $ar t $thisname >>libc.tmp
5800 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5802 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5803 # Repeat libc to extract forwarders to DLL entries too
5804 for thisname in $libnames $libc; do
5805 $ar tv $thisname >>libc.tmp
5806 # Revision 50 of EMX has bug in $ar.
5807 # it will not extract forwarders to DLL entries
5808 # Use emximp which will extract exactly them.
5809 emximp -o tmp.imp $thisname \
5811 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5812 < tmp.imp >>libc.tmp
5815 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5818 echo "$ar didn't seem to work right." >&4
5819 echo "Maybe this is a Cray...trying bld instead..." >&4
5820 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5822 for thisname in $libnames; do
5824 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5825 $ar t $thisname >>libc.tmp
5829 echo "That didn't work either. Giving up." >&4
5836 if $test -f /lib/syscalls.exp; then
5838 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5839 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5843 $rm -f libnames libpath
5845 : see if dld is available
5849 : is a C symbol defined?
5852 -v) tf=libc.tmp; tc=""; tdc="";;
5853 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5854 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5857 case "$reuseval-$4" in
5859 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5865 if $contains $tlook $tf >/dev/null 2>&1;
5870 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5871 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5879 $define) tval=true;;
5885 : define an is-in-libc? function
5886 inlibc='echo " "; td=$define; tu=$undef;
5887 sym=$1; var=$2; eval "was=\$$2";
5889 case "$reuseval$was" in
5899 echo "$sym() found." >&4;
5900 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5902 echo "$sym() NOT found." >&4;
5903 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5907 $define) echo "$sym() found." >&4;;
5908 *) echo "$sym() NOT found." >&4;;
5912 : see if dlopen exists
5919 : determine which dynamic loading, if any, to compile in
5921 dldir="ext/DynaLoader"
5934 $define) dflt='y' ;;
5937 $define) dflt='y' ;;
5939 : Does a dl_xxx.xs file exist for this operating system
5940 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5943 rp="Do you wish to use dynamic loading?"
5950 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5951 dflt="$dldir/dl_${osname}.xs"
5952 elif $test "$d_dlopen" = "$define" ; then
5953 dflt="$dldir/dl_dlopen.xs"
5954 elif $test "$i_dld" = "$define" ; then
5955 dflt="$dldir/dl_dld.xs"
5960 *) dflt="$dldir/$dlsrc"
5963 echo "The following dynamic loading files are available:"
5964 : Can not go over to $dldir because getfile has path hard-coded in.
5965 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5966 rp="Source file to use for dynamic loading"
5972 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5976 Some systems may require passing special flags to $cc -c to
5977 compile modules that will be used to create a shared library.
5978 To use no flags, say "none".
5981 case "$cccdlflags" in
5982 '') case "$gccversion" in
5983 '') case "$osname" in
5985 next) dflt='none' ;;
5986 irix*) dflt='-KPIC' ;;
5987 svr4*|esix*|solaris) dflt='-KPIC' ;;
5988 sunos) dflt='-pic' ;;
5992 *) case "$osname" in
5993 svr4*|esix*|solaris) dflt='-fPIC' ;;
5998 *) dflt="$cccdlflags" ;;
6000 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6003 none) cccdlflags=' ' ;;
6004 *) cccdlflags="$ans" ;;
6009 Some systems use ld to create libraries that can be dynamically loaded,
6010 while other systems (such as those using ELF) use $cc.
6014 '') $cat >try.c <<'EOM'
6015 /* Test for whether ELF binaries are produced */
6020 int i = open("a.out",O_RDONLY);
6023 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6024 exit(0); /* succeed (yes, it's ELF) */
6029 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6031 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6035 echo "I'll use ld to build dynamic libraries."
6044 rp="What command should be used to create dynamic libraries?"
6050 Some systems may require passing special flags to $ld to create a
6051 library that can be dynamically loaded. If your ld flags include
6052 -L/other/path options to locate libraries outside your loader's normal
6053 search path, you may need to specify those -L options here as well. To
6054 use no flags, say "none".
6057 case "$lddlflags" in
6058 '') case "$osname" in
6059 beos) dflt='-nostart' ;;
6061 linux|irix*) dflt='-shared' ;;
6062 next) dflt='none' ;;
6063 solaris) dflt='-G' ;;
6064 sunos) dflt='-assert nodefinitions' ;;
6065 svr4*|esix*) dflt="-G $ldflags" ;;
6069 *) dflt="$lddlflags" ;;
6072 : Try to guess additional flags to pick up local libraries.
6073 : Be careful not to append to a plain 'none'
6077 for thisflag in $ldflags; do
6082 *) dflt="$dflt $thisflag" ;;
6089 ''|' ') dflt='none' ;;
6092 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6095 none) lddlflags=' ' ;;
6096 *) lddlflags="$ans" ;;
6101 Some systems may require passing special flags to $cc to indicate that
6102 the resulting executable will use dynamic linking. To use no flags,
6106 case "$ccdlflags" in
6107 '') case "$osname" in
6108 hpux) dflt='-Wl,-E' ;;
6109 linux) dflt='-rdynamic' ;;
6110 next) dflt='none' ;;
6111 sunos) dflt='none' ;;
6115 *) dflt="$ccdlflags" ;;
6117 rp="Any special flags to pass to $cc to use dynamic linking?"
6120 none) ccdlflags=' ' ;;
6121 *) ccdlflags="$ans" ;;
6135 # No dynamic loading being used, so don't bother even to prompt.
6138 *) case "$useshrplib" in
6139 '') case "$osname" in
6140 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6142 also='Building a shared libperl is required for dynamic loading to work on your system.'
6147 also='Building a shared libperl is needed for MAB support.'
6165 The perl executable is normally obtained by linking perlmain.c with
6166 libperl${_a}, any static extensions (usually just DynaLoader), and
6167 any other libraries needed on this system (such as -lm, etc.). Since
6168 your system supports dynamic loading, it is probably possible to build
6169 a shared libperl.$so. If you will have more than one executable linked
6170 to libperl.$so, this will significantly reduce the size of each
6171 executable, but it may have a noticeable affect on performance. The
6172 default is probably sensible for your system.
6176 rp="Build a shared libperl.$so (y/n)"
6180 useshrplib='true' ;;
6181 *) useshrplib='false' ;;
6186 case "$useshrplib" in
6190 # Figure out a good name for libperl.so. Since it gets stored in
6191 # a version-specific architecture-dependent library, the version
6192 # number isn't really that important, except for making cc/ld happy.
6194 # A name such as libperl.so.3.1
6195 majmin="libperl.$so.$patchlevel.$subversion"
6196 # A name such as libperl.so.301
6197 majonly=`echo $patchlevel $subversion |
6198 $awk '{printf "%d%02d", $1, $2}'`
6199 majonly=libperl.$so.$majonly
6200 # I'd prefer to keep the os-specific stuff here to a minimum, and
6201 # rely on figuring it out from the naming of libc.
6202 case "${osname}${osvers}" in
6205 # XXX How handle the --version stuff for MAB?
6207 linux*) # ld won't link with a bare -lperl otherwise.
6210 cygwin*) # include version
6211 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6213 *) # Try to guess based on whether libc has major.minor.
6215 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6216 *libc.$so.[0-9]*) dflt=$majonly ;;
6217 *) dflt=libperl.$so ;;
6227 I need to select a good name for the shared libperl. If your system uses
6228 library names with major and minor numbers, then you might want something
6229 like $majmin. Alternatively, if your system uses a single version
6230 number for shared libraries, then you might want to use $majonly.
6231 Or, your system might be quite happy with a simple libperl.$so.
6233 Since the shared libperl will get installed into a version-specific
6234 architecture-dependent directory, the version number of the shared perl
6235 library probably isn't important, so the default should be o.k.
6238 rp='What name do you want to give to the shared libperl?'
6241 echo "Ok, I'll use $libperl"
6244 libperl="libperl${_a}"
6248 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6252 WARNING: Use of the shrpdir variable for the installation location of
6253 the shared $libperl is not supported. It was never documented and
6254 will not work in this version. Let me (perlbug@perl.com)
6255 know of any problems this may cause.
6261 But your current setting of $shrpdir is
6262 the default anyway, so it's harmless.
6267 Further, your current attempted setting of $shrpdir
6268 conflicts with the value of $archlibexp/CORE
6269 that installperl will use.
6276 # How will the perl executable find the installed shared $libperl?
6277 # Add $xxx to ccdlflags.
6278 # If we can't figure out a command-line option, use $shrpenv to
6279 # set env LD_RUN_PATH. The main perl makefile uses this.
6280 shrpdir=$archlibexp/CORE
6283 if "$useshrplib"; then
6286 # We'll set it in Makefile.SH...
6292 xxx="-Wl,-R$shrpdir"
6294 linux|irix*|dec_osf)
6295 xxx="-Wl,-rpath,$shrpdir"
6298 # next doesn't like the default...
6301 # beos doesn't like the default, either.
6304 # hpux doesn't like the default, either.
6305 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6308 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6314 # Only add $xxx if it isn't already in ccdlflags.
6315 case " $ccdlflags " in
6317 *) ccdlflags="$ccdlflags $xxx"
6320 Adding $xxx to the flags
6321 passed to $ld so that the perl executable will find the
6322 installed shared $libperl.
6330 # Fix ccdlflags in AIX for building external extensions.
6331 # (For building Perl itself bare -bE:perl.exp is needed,
6332 # Makefile.SH takes care of this.)
6334 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6336 # Respect a hint or command-line value.
6338 '') shrpenv="$tmp_shrpenv" ;;
6340 case "$ldlibpthname" in
6341 '') ldlibpthname=LD_LIBRARY_PATH ;;
6342 none) ldlibpthname='' ;;
6345 : determine where manual pages go
6346 set man1dir man1dir none
6350 $spackage has manual pages available in source form.
6354 echo "However, you don't have nroff, so they're probably useless to you."
6356 '') man1dir="none";;
6359 echo "If you don't want the manual sources installed, answer 'none'."
6364 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6365 lookpath="$lookpath $prefixexp/man/p_man/man1"
6366 lookpath="$lookpath $prefixexp/man/u_man/man1"
6367 lookpath="$lookpath $prefixexp/man/man.1"
6369 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6370 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6380 rp="Where do the main $spackage manual pages (source) go?"
6382 if $test "X$man1direxp" != "X$ansexp"; then
6386 man1direxp="$ansexp"
6392 : Change installation prefix, if necessary.
6393 if $test X"$prefix" != X"$installprefix"; then
6394 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6396 installman1dir="$man1direxp"
6399 : What suffix to use on installed man pages
6406 rp="What suffix should be used for the main $spackage man pages?"
6408 '') case "$man1dir" in
6422 *) dflt="$man1ext";;
6429 : see if we can have long filenames
6431 rmlist="$rmlist /tmp/cf$$"
6432 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6433 first=123456789abcdef
6434 second=/tmp/cf$$/$first
6435 $rm -f $first $second
6436 if (echo hi >$first) 2>/dev/null; then
6437 if $test -f 123456789abcde; then
6438 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6441 if (echo hi >$second) 2>/dev/null; then
6442 if $test -f /tmp/cf$$/123456789abcde; then
6444 That's peculiar... You can have filenames longer than 14 characters, but only
6445 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6446 I shall consider your system cannot support long filenames at all.
6450 echo 'You can have filenames longer than 14 characters.' >&4
6455 How confusing! Some of your filesystems are sane enough to allow filenames
6456 longer than 14 characters but some others like /tmp can't even think about them.
6457 So, for now on, I shall assume your kernel does not allow them at all.
6464 You can't have filenames longer than 14 chars. You can't even think about them!
6470 $rm -rf /tmp/cf$$ 123456789abcde*
6472 : determine where library module manual pages go
6473 set man3dir man3dir none
6477 $spackage has manual pages for many of the library modules.
6483 However, you don't have nroff, so they're probably useless to you.
6486 '') man3dir="none";;
6490 case "$d_flexfnam" in
6493 However, your system can't handle the long file names like File::Basename.3.
6496 '') man3dir="none";;
6500 echo "If you don't want the manual sources installed, answer 'none'."
6501 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6503 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6504 if $test -d "$privlib/man/man3"; then
6507 WARNING: Previous versions of perl installed man3 pages into
6508 $privlib/man/man3. This version will suggest a
6509 new default of $dflt.
6513 rp='Do you wish to preserve the old behavior?(y/n)'
6516 y*) dflt="$privlib/man/man3" ;;
6522 *) dflt="$man3dir" ;;
6526 rp="Where do the $package library man pages (source) go?"
6529 man3direxp="$ansexp"
6535 : Change installation prefix, if necessary.
6536 if $test X"$prefix" != X"$installprefix"; then
6537 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6539 installman3dir="$man3direxp"
6542 : What suffix to use on installed man pages
6548 rp="What suffix should be used for the $package library man pages?"
6550 '') case "$man3dir" in
6564 *) dflt="$man3ext";;
6571 : see if we have to deal with yellow pages, now NIS.
6572 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6573 if $test -f /usr/etc/nibindd; then
6575 echo "I'm fairly confident you're on a NeXT."
6577 rp='Do you get the hosts file via NetInfo?'
6586 y*) hostcat='nidump hosts .';;
6587 *) case "$hostcat" in
6588 nidump*) hostcat='';;
6598 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6606 rp='Are you getting the hosts file via yellow pages?'
6609 y*) hostcat='ypcat hosts';;
6610 *) hostcat='cat /etc/hosts';;
6616 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6619 '') test -f /etc/group && groupcat='cat /etc/group';;
6622 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6625 : now get the host name
6627 echo "Figuring out host name..." >&4
6628 case "$myhostname" in
6630 echo 'Maybe "hostname" will work...'
6631 if tans=`sh -c hostname 2>&1` ; then
6639 if $test "$cont"; then
6641 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6642 if tans=`cat /etc/systemid 2>&1` ; then
6644 phostname='cat /etc/systemid'
6645 echo "Whadyaknow. Xenix always was a bit strange..."
6648 elif $test -r /etc/systemid; then
6649 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6652 if $test "$cont"; then
6653 echo 'No, maybe "uuname -l" will work...'
6654 if tans=`sh -c 'uuname -l' 2>&1` ; then
6656 phostname='uuname -l'
6658 echo 'Strange. Maybe "uname -n" will work...'
6659 if tans=`sh -c 'uname -n' 2>&1` ; then
6661 phostname='uname -n'
6663 echo 'Oh well, maybe I can mine it out of whoami.h...'
6664 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6665 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6666 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6668 case "$myhostname" in
6669 '') echo "Does this machine have an identity crisis or something?"
6672 echo "Well, you said $myhostname before..."
6673 phostname='echo $myhostname';;
6679 : you do not want to know about this
6684 if $test "$myhostname" ; then
6686 rp='Your host name appears to be "'$myhostname'".'" Right?"
6694 : bad guess or no guess
6695 while $test "X$myhostname" = X ; do
6697 rp="Please type the (one word) name of your host:"
6702 : translate upper to lower if necessary
6703 case "$myhostname" in
6705 echo "(Normalizing case in your host name)"
6706 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6710 case "$myhostname" in
6712 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6713 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6714 echo "(Trimming domain name from host name--host name is now $myhostname)"
6716 *) case "$mydomain" in
6719 test "X$hostcat" = "Xypcat hosts" &&
6720 ypmatch "$myhostname" hosts 2>/dev/null |\
6721 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6724 test "X$hostcat" != "X" &&
6725 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6726 /[ ]$myhostname[ . ]/p" > hosts
6729 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6730 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6731 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6732 hosts | $sort | $uniq | \
6733 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6734 case `$echo X$dflt` in
6735 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6738 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6743 tans=`./loc resolv.conf X /etc /usr/etc`
6744 if $test -f "$tans"; then
6745 echo "(Attempting domain name extraction from $tans)"
6746 dflt=.`$sed -n -e 's/ / /g' \
6747 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6748 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6750 .) dflt=.`$sed -n -e 's/ / /g' \
6751 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6752 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6759 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6760 dflt=.`sh -c domainname 2>/dev/null`
6763 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6768 .) echo "(Lost all hope -- silly guess then)"
6774 *) dflt="$mydomain";;
6778 rp="What is your domain name?"
6788 : translate upper to lower if necessary
6791 echo "(Normalizing case in your domain name)"
6792 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6796 : a little sanity check here
6797 case "$phostname" in
6800 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6801 $myhostname$mydomain|$myhostname) ;;
6803 case "$phostname" in
6805 echo "(That doesn't agree with your whoami.h file, by the way.)"
6808 echo "(That doesn't agree with your $phostname command, by the way.)"
6818 I need to get your e-mail address in Internet format if possible, i.e.
6819 something like user@host.domain. Please answer accurately since I have
6820 no easy means to double check it. The default value provided below
6821 is most probably close to reality but may not be valid from outside
6822 your organization...
6826 while test "$cont"; do
6828 '') dflt="$cf_by@$myhostname$mydomain";;
6829 *) dflt="$cf_email";;
6831 rp='What is your e-mail address?'
6837 rp='Address does not look like an Internet one. Use it anyway?'
6853 If you or somebody else will be maintaining perl at your site, please
6854 fill in the correct e-mail address here so that they may be contacted
6855 if necessary. Currently, the "perlbug" program included with perl
6856 will send mail to this address in addition to perlbug@perl.com. You may
6857 enter "none" for no administrator.
6860 case "$perladmin" in
6861 '') dflt="$cf_email";;
6862 *) dflt="$perladmin";;
6864 rp='Perl administrator e-mail address'
6868 : figure out how to guarantee perl startup
6869 case "$startperl" in
6871 case "$sharpbang" in
6875 I can use the #! construct to start perl on your system. This will
6876 make startup of perl scripts faster, but may cause problems if you
6877 want to share those scripts and perl is not in a standard place
6878 ($binexp/perl) on all your platforms. The alternative is to force
6879 a shell by starting the script with a single ':' character.
6883 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6886 none) startperl=": # use perl";;
6887 *) startperl="#!$ans"
6888 if $test 30 -lt `echo "$ans" | wc -c`; then
6891 WARNING: Some systems limit the #! command to 32 characters.
6892 If you experience difficulty running Perl scripts with #!, try
6893 installing Perl in a directory with a shorter pathname.
6899 *) startperl=": # use perl"
6904 echo "I'll use $startperl to start perl scripts."
6906 : figure best path for perl in scripts
6909 perlpath="$binexp/perl"
6910 case "$startperl" in
6915 I will use the "eval 'exec'" idiom to start Perl on your system.
6916 I can use the full path of your Perl binary for this purpose, but
6917 doing so may cause problems if you want to share those scripts and
6918 Perl is not always in a standard place ($binexp/perl).
6922 rp="What path shall I use in \"eval 'exec'\"?"
6929 case "$startperl" in
6931 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6934 : determine where public executable scripts go
6935 set scriptdir scriptdir
6937 case "$scriptdir" in
6940 : guess some guesses
6941 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6942 $test -d /usr/share/bin && dflt=/usr/share/bin
6943 $test -d /usr/local/script && dflt=/usr/local/script
6944 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6945 $test -d $prefixexp/script && dflt=$prefixexp/script
6949 *) dflt="$scriptdir"
6954 Some installations have a separate directory just for executable scripts so
6955 that they can mount it across multiple architectures but keep the scripts in
6956 one spot. You might, for example, have a subdirectory of /usr/share for this.
6957 Or you might just lump your scripts in with all your other executables.
6961 rp='Where do you keep publicly executable scripts?'
6963 if $test "X$ansexp" != "X$scriptdirexp"; then
6967 scriptdirexp="$ansexp"
6968 : Change installation prefix, if necessary.
6969 if $test X"$prefix" != X"$installprefix"; then
6970 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6972 installscript="$scriptdirexp"
6975 : determine where site specific architecture-dependent libraries go.
6976 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6977 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6978 : sitelib may have an optional trailing /share.
6979 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6980 tdflt="$tdflt/$archname"
6981 set sitearch sitearch none
6984 '') dflt="$tdflt" ;;
6985 *) dflt="$sitearch" ;;
6989 The installation process will also create a directory for
6990 architecture-dependent site-specific extensions and modules.
6994 rp='Pathname for the site-specific architecture-dependent library files?'
6997 sitearchexp="$ansexp"
6998 : Change installation prefix, if necessary.
6999 if $test X"$prefix" != X"$installprefix"; then
7000 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7002 installsitearch="$sitearchexp"
7005 : determine where add-on public executables go
7007 '') dflt=$siteprefix/bin ;;
7011 rp='Pathname where the add-on public executables should be installed?'
7014 sitebinexp="$ansexp"
7015 : Change installation prefix, if necessary.
7016 if $test X"$prefix" != X"$installprefix"; then
7017 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7019 installsitebin="$sitebinexp"
7024 Perl can be built to take advantage of long doubles which
7025 (if available) may give more accuracy and range for floating point numbers.
7027 If this doesn't make any sense to you, just accept the default 'n'.
7031 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7034 case "$uselongdouble" in
7035 $define|true|[yY]*) dflt='y';;
7038 rp='Try to use long doubles if available?'
7041 y|Y) val="$define" ;;
7047 case "$uselongdouble" in
7048 true|[yY]*) uselongdouble="$define" ;;
7051 case "$uselongdouble" in
7053 : Look for a hint-file generated 'call-back-unit'. If the
7054 : user has specified that long doubles should be used,
7055 : we may need to set or change some other defaults.
7056 if $test -f uselongdouble.cbu; then
7057 echo "Your platform has some specific hints for long doubles, using them..."
7058 . ./uselongdouble.cbu
7061 (Your platform doesn't have any specific hints for long doubles.)
7069 Perl can be built to take advantage of long longs which
7070 (if available) may give more range for integer numbers.
7072 If this doesn't make any sense to you, just accept the default 'n'.
7076 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7079 case "$uselonglong" in
7080 $define|true|[yY]*) dflt='y';;
7083 rp='Try to use long longs if available?'
7086 y|Y) val="$define" ;;
7092 case "$uselonglong" in
7093 true|[yY]*) uselonglong="$define" ;;
7096 case "$uselonglong" in
7098 : Look for a hint-file generated 'call-back-unit'. If the
7099 : user has specified that long longs should be used,
7100 : we may need to set or change some other defaults.
7101 if $test -f uselonglong.cbu; then
7102 echo "Your platform has some specific hints for long longs, using them..."
7106 (Your platform doesn't have any specific hints for long longs.)
7114 Previous version of $package used the standard IO mechanisms as defined
7115 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7116 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7117 the default. This abstraction layer can use AT&T's sfio (if you already
7118 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7119 problems with some extension modules. Using PerlIO with stdio is safe,
7120 but it is slower than plain stdio and therefore is not the default.
7122 If this doesn't make any sense to you, just accept the default 'n'.
7124 case "$useperlio" in
7125 $define|true|[yY]*) dflt='y';;
7128 rp='Use the experimental PerlIO abstraction layer?'
7135 echo "Ok, doing things the stdio way"
7142 case "$vendorprefix" in
7143 '') d_vendorbin="$undef"
7147 *) d_vendorbin="$define"
7148 : determine where vendor-supplied executables go.
7149 dflt=$vendorprefix/bin
7151 rp='Pathname for the vendor-supplied executables directory?'
7154 vendorbinexp="$ansexp"
7155 : Change installation prefix, if necessary.
7156 if $test X"$prefix" != X"$installprefix"; then
7157 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7159 installvendorbin="$vendorbinexp"
7164 : check for length of double
7166 case "$doublesize" in
7168 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7169 $cat >try.c <<'EOCP'
7173 printf("%d\n", (int)sizeof(double));
7178 if eval $compile_ok; then
7180 $echo " $doublesize bytes." >&4
7183 echo "(I can't seem to compile the test program. Guessing...)"
7184 rp="What is the size of a double precision number (in bytes)?"
7192 : check for long doubles
7194 $echo $n "Checking to see if your system supports long double..." $c >&4
7195 echo 'int main() { long double x = 7.0; }' > try.c
7197 if eval $compile; then
7199 echo " Yes, it does." >&4
7202 echo " No, it doesn't." >&4
7208 : check for length of long double
7209 case "${d_longdbl}${longdblsize}" in
7212 $echo $n "Checking to see how big your long doubles are..." $c >&4
7213 $cat >try.c <<'EOCP'
7217 printf("%d\n", sizeof(long double));
7222 if eval $compile; then
7223 longdblsize=`./try$exe_ext`
7224 $echo " $longdblsize bytes." >&4
7228 echo "(I can't seem to compile the test program. Guessing...)" >&4
7229 rp="What is the size of a long double (in bytes)?"
7233 if $test "X$doublesize" = "X$longdblsize"; then
7234 echo "(That isn't any different from an ordinary double.)"
7240 : Check how to convert floats to strings.
7241 if test "X$d_Gconvert" = X; then
7243 echo "Checking for an efficient way to convert floats to strings."
7246 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7247 char *myname = "gconvert";
7250 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7251 char *myname = "gcvt";
7254 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7255 char *myname = "qgcvt";
7256 #define DOUBLETYPE long double
7259 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7260 char *myname = "sprintf";
7264 #define DOUBLETYPE double
7274 checkit(expect, got)
7278 if (strcmp(expect, got)) {
7279 printf("%s oddity: Expected %s, got %s\n",
7280 myname, expect, got);
7290 /* This must be 1st test on (which?) platform */
7291 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7292 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7293 checkit("0.1", buf);
7295 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7298 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7301 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7304 /* Some Linux gcvt's give 1.e+5 here. */
7305 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7306 checkit("100000", buf);
7308 /* Some Linux gcvt's give -1.e+5 here. */
7309 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7310 checkit("-100000", buf);
7315 case "$d_Gconvert" in
7316 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7317 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7318 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7319 *) xxx_list='gconvert gcvt sprintf' ;;
7322 case "$d_longdbl$uselongdouble" in
7323 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7326 for xxx_convert in $xxx_list; do
7327 echo "Trying $xxx_convert..."
7329 set try -DTRY_$xxx_convert
7330 if eval $compile; then
7331 echo "$xxx_convert() found." >&4
7333 echo "I'll use $xxx_convert to convert floats into a string." >&4
7336 echo "...But $xxx_convert didn't work as I expected."
7339 echo "$xxx_convert NOT found." >&4
7343 case "$xxx_convert" in
7344 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7345 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7346 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7347 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7353 if $test X"$d_longdbl" = X"$define"; then
7355 echo "Checking how to print long doubles..." >&4
7357 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7358 $cat >try.c <<'EOCP'
7359 #include <sys/types.h>
7363 printf("%.3f\n", d);
7367 if eval $compile; then
7371 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7372 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7373 echo "We will use %f."
7379 if $test X"$sPRIfldbl" = X; then
7380 $cat >try.c <<'EOCP'
7381 #include <sys/types.h>
7384 long double d = 123.456;
7385 printf("%.3llf\n", d);
7389 if eval $compile; then
7393 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7394 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7395 echo "We will use %llf."
7401 if $test X"$sPRIfldbl" = X; then
7402 $cat >try.c <<'EOCP'
7403 #include <sys/types.h>
7406 long double d = 123.456;
7407 printf("%.3Lf\n", d);
7411 if eval $compile; then
7415 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7416 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7417 echo "We will use %Lf."
7423 if $test X"$sPRIfldbl" = X; then
7424 $cat >try.c <<'EOCP'
7425 #include <sys/types.h>
7428 long double d = 123.456;
7429 printf("%.3lf\n", d);
7433 if eval $compile; then
7437 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7438 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7439 echo "We will use %lf."
7445 if $test X"$sPRIfldbl" = X; then
7446 echo "Cannot figure out how to print long doubles." >&4
7453 case "$sPRIfldbl" in
7454 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7455 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7457 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7458 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7462 : Initialize h_fcntl
7465 : Initialize h_sysfile
7468 : access call always available on UNIX
7472 : locate the flags for 'access()'
7476 $cat >access.c <<'EOCP'
7477 #include <sys/types.h>
7482 #include <sys/file.h>
7491 : check sys/file.h first, no particular reason here
7492 if $test `./findhdr sys/file.h` && \
7493 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7495 echo "<sys/file.h> defines the *_OK access constants." >&4
7496 elif $test `./findhdr fcntl.h` && \
7497 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7499 echo "<fcntl.h> defines the *_OK access constants." >&4
7500 elif $test `./findhdr unistd.h` && \
7501 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7502 echo "<unistd.h> defines the *_OK access constants." >&4
7504 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7510 : see if accessx exists
7511 set accessx d_accessx
7514 : see if alarm exists
7518 : see if atolf exists
7522 : see if atoll exists
7526 : Look for GNU-cc style attribute checking
7528 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7529 $cat >attrib.c <<'EOCP'
7531 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7533 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7534 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7535 echo "Your C compiler doesn't fully support __attribute__."
7538 echo "Your C compiler supports __attribute__."
7542 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7549 : see if bcmp exists
7553 : see if bcopy exists
7557 : see if this is a unistd.h system
7558 set unistd.h i_unistd
7561 : see if getpgrp exists
7562 set getpgrp d_getpgrp
7565 case "$d_getpgrp" in
7568 echo "Checking to see which flavor of getpgrp is in use..."
7571 #include <sys/types.h>
7573 # include <unistd.h>
7577 if (getuid() == 0) {
7578 printf("(I see you are running Configure as super-user...)\n");
7582 if (getpgrp(1) == 0)
7591 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7592 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7594 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7595 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7598 echo "I can't seem to compile and run the test program."
7600 xxx="a USG one, i.e. you use getpgrp()."
7602 # SVR4 systems can appear rather BSD-ish.
7605 xxx="a BSD one, i.e. you use getpgrp(pid)."
7609 xxx="probably a USG one, i.e. you use getpgrp()."
7614 echo "Assuming your getpgrp is $xxx" >&4
7623 : see if setpgrp exists
7624 set setpgrp d_setpgrp
7627 case "$d_setpgrp" in
7630 echo "Checking to see which flavor of setpgrp is in use..."
7633 #include <sys/types.h>
7635 # include <unistd.h>
7639 if (getuid() == 0) {
7640 printf("(I see you are running Configure as super-user...)\n");
7644 if (-1 == setpgrp(1, 1))
7647 if (setpgrp() != -1)
7653 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7654 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7656 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7657 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7660 echo "(I can't seem to compile and run the test program.)"
7662 xxx="a USG one, i.e. you use setpgrp()."
7664 # SVR4 systems can appear rather BSD-ish.
7667 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7671 xxx="probably a USG one, i.e. you use setpgrp()."
7676 echo "Assuming your setpgrp is $xxx" >&4
7684 : see if bzero exists
7688 : see if signal is declared as pointer to function returning int or void
7690 xxx=`./findhdr signal.h`
7691 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7692 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7693 echo "You have int (*signal())() instead of void." >&4
7695 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7696 echo "You have void (*signal())()." >&4
7698 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7699 echo "You have int (*signal())() instead of void." >&4
7701 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7702 echo "You have void (*signal())()." >&4
7705 case "$d_voidsig" in
7707 echo "I can't determine whether signal handler returns void or int..." >&4
7709 rp="What type does your signal handler return?"
7716 echo "As you already told me, signal handler returns void." >&4
7719 *) echo "As you already told me, signal handler returns int." >&4
7726 case "$d_voidsig" in
7727 "$define") signal_t="void";;
7732 : check for ability to cast large floats to 32-bit ints.
7734 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7735 if $test "$intsize" -ge 4; then
7742 #include <sys/types.h>
7744 $signal_t blech(s) int s; { exit(3); }
7751 signal(SIGFPE, blech);
7753 /* Don't let compiler optimize the test away. Store the number
7754 in a writable string for gcc to pass to sscanf under HP/UX.
7756 sprintf(str, "2147483647");
7757 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7761 /* x86 processors will probably give 0x8000 0000, which is a
7762 sign change. We don't want that. We want to mimic SPARC
7763 behavior here, which is to preserve the sign and give
7766 if (i32 != ($xxx) f)
7772 if eval $compile_ok; then
7776 echo "(I can't seem to compile the test program--assuming it can't)"
7784 echo "Nope, it can't."
7791 : check for ability to cast negative floats to unsigned
7793 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7796 #include <sys/types.h>
7798 $signal_t blech(s) int s; { exit(7); }
7799 $signal_t blech_in_list(s) int s; { exit(4); }
7800 unsigned long dummy_long(p) unsigned long p; { return p; }
7801 unsigned int dummy_int(p) unsigned int p; { return p; }
7802 unsigned short dummy_short(p) unsigned short p; { return p; }
7806 unsigned long along;
7808 unsigned short ashort;
7812 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7813 a direct f = -123. assignment. gcc-2.8.0 reportedly
7814 optimized the whole file away
7816 /* Store the number in a writable string for gcc to pass to
7819 sprintf(str, "-123");
7820 sscanf(str, "%lf", &f); /* f = -123.; */
7822 signal(SIGFPE, blech);
7823 along = (unsigned long)f;
7824 aint = (unsigned int)f;
7825 ashort = (unsigned short)f;
7826 if (along != (unsigned long)-123)
7828 if (aint != (unsigned int)-123)
7830 if (ashort != (unsigned short)-123)
7832 sprintf(str, "1073741824.");
7833 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7836 along = (unsigned long)f;
7837 if (along != 0x80000000)
7841 along = (unsigned long)f;
7842 if (along != 0x7fffffff)
7846 along = (unsigned long)f;
7847 if (along != 0x80000001)
7851 signal(SIGFPE, blech_in_list);
7852 sprintf(str, "123.");
7853 sscanf(str, "%lf", &f); /* f = 123.; */
7854 along = dummy_long((unsigned long)f);
7855 aint = dummy_int((unsigned int)f);
7856 ashort = dummy_short((unsigned short)f);
7857 if (along != (unsigned long)123)
7859 if (aint != (unsigned int)123)
7861 if (ashort != (unsigned short)123)
7868 if eval $compile_ok; then
7872 echo "(I can't seem to compile the test program--assuming it can't)"
7875 case "$castflags" in
7880 echo "Nope, it can't."
7887 : see if vprintf exists
7889 if set vprintf val -f d_vprintf; eval $csym; $val; then
7890 echo 'vprintf() found.' >&4
7892 $cat >vprintf.c <<'EOF'
7893 #include <varargs.h>
7895 int main() { xxx("foo"); }
7904 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7908 if eval $compile && ./vprintf; then
7909 echo "Your vsprintf() returns (int)." >&4
7912 echo "Your vsprintf() returns (char*)." >&4
7916 echo 'vprintf() NOT found.' >&4
7926 : see if chown exists
7930 : see if chroot exists
7934 : see if chsize exists
7938 : check for const keyword
7940 echo 'Checking to see if your C compiler knows about "const"...' >&4
7941 $cat >const.c <<'EOCP'
7942 typedef struct spug { int drokk; } spug;
7949 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7951 echo "Yup, it does."
7954 echo "Nope, it doesn't."
7959 : see if crypt exists
7961 if set crypt val -f d_crypt; eval $csym; $val; then
7962 echo 'crypt() found.' >&4
7966 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7967 if $test -z "$cryptlib"; then
7968 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7972 if $test -z "$cryptlib"; then
7973 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7977 if $test -z "$cryptlib"; then
7978 cryptlib=`./loc libcrypt$_a "" $libpth`
7982 if $test -z "$cryptlib"; then
7983 echo 'crypt() NOT found.' >&4
7992 : get csh whereabouts
7994 'csh') val="$undef" ;;
7999 : Respect a hint or command line value for full_csh.
8001 '') full_csh=$csh ;;
8004 : see if cuserid exists
8005 set cuserid d_cuserid
8008 : see if this is a limits.h system
8009 set limits.h i_limits
8012 : see if this is a float.h system
8016 : See if number of significant digits in a double precision number is known
8018 $cat >dbl_dig.c <<EOM
8028 printf("Contains DBL_DIG");
8031 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8032 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8033 echo "DBL_DIG found." >&4
8036 echo "DBL_DIG NOT found." >&4
8043 : see if difftime exists
8044 set difftime d_difftime
8047 : see if this is a dirent system
8049 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8051 echo "<dirent.h> found." >&4
8054 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8055 echo "<sys/dir.h> found." >&4
8058 xinc=`./findhdr sys/ndir.h`
8060 echo "<dirent.h> NOT found." >&4
8065 : Look for type of directory structure.
8067 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8069 case "$direntrytype" in
8072 $define) guess1='struct dirent' ;;
8073 *) guess1='struct direct' ;;
8076 *) guess1="$direntrytype"
8081 'struct dirent') guess2='struct direct' ;;
8082 *) guess2='struct dirent' ;;
8085 if $contains "$guess1" try.c >/dev/null 2>&1; then
8086 direntrytype="$guess1"
8087 echo "Your directory entries are $direntrytype." >&4
8088 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8089 direntrytype="$guess2"
8090 echo "Your directory entries seem to be $direntrytype." >&4
8092 echo "I don't recognize your system's directory entries." >&4
8093 rp="What type is used for directory entries on this system?"
8101 : see if the directory entry stores field length
8103 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8104 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8105 echo "Good, your directory entry keeps length information in d_namlen." >&4
8108 echo "Your directory entry does not know about the d_namlen field." >&4
8115 : see if dlerror exists
8118 set dlerror d_dlerror
8122 : see if dlfcn is available
8130 On a few systems, the dynamically loaded modules that perl generates and uses
8131 will need a different extension than shared libs. The default will probably
8139 rp='What is the extension of dynamically loaded modules'
8148 : Check if dlsym need a leading underscore
8154 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8155 $cat >dyna.c <<'EOM'
8164 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8166 #include <sys/types.h>
8180 int mode = RTLD_LAZY ;
8182 handle = dlopen("./dyna.$dlext", mode) ;
8183 if (handle == NULL) {
8188 symbol = dlsym(handle, "fred") ;
8189 if (symbol == NULL) {
8190 /* try putting a leading underscore */
8191 symbol = dlsym(handle, "_fred") ;
8192 if (symbol == NULL) {
8205 : Call the object file tmp-dyna.o in case dlext=o.
8206 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8207 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8208 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8209 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8212 1) echo "Test program failed using dlopen." >&4
8213 echo "Perhaps you should not use dynamic loading." >&4;;
8214 2) echo "Test program failed using dlsym." >&4
8215 echo "Perhaps you should not use dynamic loading." >&4;;
8216 3) echo "dlsym needs a leading underscore" >&4
8218 4) echo "dlsym doesn't need a leading underscore." >&4;;
8221 echo "I can't compile and run the test program." >&4
8222 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8227 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8232 hasproto='varname=$1; func=$2; shift; shift;
8233 while $test $# -ge 2; do
8235 $define) echo "#include <$2>";;
8239 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8240 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8241 echo "$func() prototype found.";
8244 echo "$func() prototype NOT found.";
8249 $rm -f try.c tryout.c'
8251 : see if prototype for drand48 is available
8253 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8256 : see if dup2 exists
8260 : see if eaccess exists
8261 set eaccess d_eaccess
8264 : see if endgrent exists
8265 set endgrent d_endgrent
8268 : see if endhostent exists
8269 set endhostent d_endhent
8272 : see if endnetent exists
8273 set endnetent d_endnent
8276 : see if endprotoent exists
8277 set endprotoent d_endpent
8280 : see if endpwent exists
8281 set endpwent d_endpwent
8284 : see if endservent exists
8285 set endservent d_endsent
8288 : see if endspent exists
8289 set endspent d_endspent
8292 : Locate the flags for 'open()'
8294 $cat >open3.c <<'EOCP'
8295 #include <sys/types.h>
8300 #include <sys/file.h>
8311 : check sys/file.h first to get FREAD on Sun
8312 if $test `./findhdr sys/file.h` && \
8313 set open3 -DI_SYS_FILE && eval $compile; then
8315 echo "<sys/file.h> defines the O_* constants..." >&4
8317 echo "and you have the 3 argument form of open()." >&4
8320 echo "but not the 3 argument form of open(). Oh, well." >&4
8323 elif $test `./findhdr fcntl.h` && \
8324 set open3 -DI_FCNTL && eval $compile; then
8326 echo "<fcntl.h> defines the O_* constants..." >&4
8328 echo "and you have the 3 argument form of open()." >&4
8331 echo "but not the 3 argument form of open(). Oh, well." >&4
8336 echo "I can't find the O_* constant definitions! You got problems." >&4
8342 : see which of string.h or strings.h is needed
8344 strings=`./findhdr string.h`
8345 if $test "$strings" && $test -r "$strings"; then
8346 echo "Using <string.h> instead of <strings.h>." >&4
8350 strings=`./findhdr strings.h`
8351 if $test "$strings" && $test -r "$strings"; then
8352 echo "Using <strings.h> instead of <string.h>." >&4
8354 echo "No string header found -- You'll surely have problems." >&4
8360 "$undef") strings=`./findhdr strings.h`;;
8361 *) strings=`./findhdr string.h`;;
8364 : check for non-blocking I/O stuff
8365 case "$h_sysfile" in
8366 true) echo "#include <sys/file.h>" > head.c;;
8369 true) echo "#include <fcntl.h>" > head.c;;
8370 *) echo "#include <sys/fcntl.h>" > head.c;;
8375 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8376 case "$o_nonblock" in
8379 $cat >>try.c <<'EOCP'
8383 printf("O_NONBLOCK\n");
8387 printf("O_NDELAY\n");
8391 printf("FNDELAY\n");
8398 if eval $compile_ok; then
8400 case "$o_nonblock" in
8401 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8402 *) echo "Seems like we can use $o_nonblock.";;
8405 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8408 *) echo "Using $hint value $o_nonblock.";;
8410 $rm -f try try.* .out core
8413 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8419 #include <sys/types.h>
8422 #define MY_O_NONBLOCK $o_nonblock
8423 #ifndef errno /* XXX need better Configure test */
8433 #include <strings.h>
8435 $signal_t blech(x) int x; { exit(3); }
8437 $cat >> try.c <<'EOCP'
8445 pipe(pd); /* Down: child -> parent */
8446 pipe(pu); /* Up: parent -> child */
8449 close(pd[1]); /* Parent reads from pd[0] */
8450 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8451 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8453 signal(SIGALRM, blech);
8455 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8457 sprintf(string, "%d\n", ret);
8458 write(2, string, strlen(string));
8461 if (errno == EAGAIN) {
8467 if (errno == EWOULDBLOCK)
8468 printf("EWOULDBLOCK\n");
8471 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8472 sleep(2); /* Give it time to close our pipe */
8474 ret = read(pd[0], buf, 1); /* Should read EOF */
8476 sprintf(string, "%d\n", ret);
8477 write(3, string, strlen(string));
8481 close(pd[0]); /* We write to pd[1] */
8482 close(pu[1]); /* We read from pu[0] */
8483 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8484 close(pd[1]); /* Pipe pd is now fully closed! */
8485 exit(0); /* Bye bye, thank you for playing! */
8489 if eval $compile_ok; then
8490 echo "$startsh" >mtry
8491 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8493 ./mtry >/dev/null 2>&1
8495 0) eagain=`$cat try.out`;;
8496 1) echo "Could not perform non-blocking setting!";;
8497 2) echo "I did a successful read() for something that was not there!";;
8498 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8499 *) echo "Something terribly wrong happened during testing.";;
8501 rd_nodata=`$cat try.ret`
8502 echo "A read() system call with no data present returns $rd_nodata."
8503 case "$rd_nodata" in
8506 echo "(That's peculiar, fixing that to be -1.)"
8512 echo "Forcing errno EAGAIN on read() with no data available."
8516 echo "Your read() sets errno to $eagain when no data is available."
8519 status=`$cat try.err`
8521 0) echo "And it correctly returns 0 to signal EOF.";;
8522 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8523 *) echo "However, your read() returns '$status' on EOF??";;
8526 if test "$status" = "$rd_nodata"; then
8527 echo "WARNING: you can't distinguish between EOF and no data!"
8531 echo "I can't compile the test program--assuming errno EAGAIN will do."
8538 echo "Using $hint value $eagain."
8539 echo "Your read() returns $rd_nodata when no data is present."
8540 case "$d_eofnblk" in
8541 "$define") echo "And you can see EOF because read() returns 0.";;
8542 "$undef") echo "But you can't see EOF status from read() returned value.";;
8544 echo "(Assuming you can't see EOF status from read anyway.)"
8550 $rm -f try try.* .out core head.c mtry
8552 : see if fchmod exists
8556 : see if fchown exists
8560 : see if this is an fcntl system
8564 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8565 while $test $# -ge 2; do
8567 $define) echo "#include <$2>";;
8571 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8573 if eval $compile; then
8584 : see whether socket exists
8586 $echo $n "Hmm... $c" >&4
8587 if set socket val -f d_socket; eval $csym; $val; then
8588 echo "Looks like you have Berkeley networking support." >&4
8590 if set setsockopt val -f; eval $csym; $val; then
8593 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8597 if $contains socklib libc.list >/dev/null 2>&1; then
8598 echo "Looks like you have Berkeley networking support." >&4
8600 : we will have to assume that it supports the 4.2 BSD interface
8603 echo "You don't have Berkeley networking in libc$_a..." >&4
8604 if test "X$d_socket" = "X$define"; then
8605 echo "...but you seem to believe that you have sockets." >&4
8607 for net in net socket
8609 if test -f /usr/lib/lib$net$_a; then
8610 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8611 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8612 if $contains socket libc.list >/dev/null 2>&1; then
8617 echo "...but the Wollongong group seems to have hacked it in." >&4
8618 sockethdr="-I/usr/netinclude"
8621 echo "Found Berkeley sockets interface in lib$net." >& 4
8622 if $contains setsockopt libc.list >/dev/null 2>&1; then
8625 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8632 if test "X$d_socket" != "X$define"; then
8633 echo "or anywhere else I see." >&4
8641 : see if socketpair exists
8642 set socketpair d_sockpair
8647 echo "Checking the availability of certain socket constants..." >& 4
8648 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8649 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8651 #include <sys/types.h>
8652 #include <sys/socket.h>
8658 set try; if eval $compile; then
8661 set d_${enum}; eval $setvar
8665 : see if sys/select.h has to be included
8666 set sys/select.h i_sysselct
8669 : see if we should include time.h, sys/time.h, or both
8671 if test "X$timeincl" = X; then
8672 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8673 $echo $n "I'm now running the test program...$c"
8674 $cat >try.c <<'EOCP'
8675 #include <sys/types.h>
8680 #ifdef SYSTIMEKERNEL
8683 #include <sys/time.h>
8686 #include <sys/select.h>
8695 struct timezone tzp;
8697 if (foo.tm_sec == foo.tm_sec)
8700 if (bar.tv_sec == bar.tv_sec)
8707 for s_timezone in '-DS_TIMEZONE' ''; do
8709 for s_timeval in '-DS_TIMEVAL' ''; do
8710 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8711 for i_time in '' '-DI_TIME'; do
8712 for i_systime in '-DI_SYSTIME' ''; do
8715 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8716 if eval $compile; then
8717 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8721 $echo $n "Succeeded with $flags$c"
8733 *SYSTIMEKERNEL*) i_systimek="$define"
8734 timeincl=`./findhdr sys/time.h`
8735 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8736 *) i_systimek="$undef";;
8739 *I_TIME*) i_time="$define"
8740 timeincl=`./findhdr time.h`" $timeincl"
8741 echo "We'll include <time.h>." >&4;;
8742 *) i_time="$undef";;
8745 *I_SYSTIME*) i_systime="$define"
8746 timeincl=`./findhdr sys/time.h`" $timeincl"
8747 echo "We'll include <sys/time.h>." >&4;;
8748 *) i_systime="$undef";;
8753 : check for fd_set items
8756 Checking to see how well your C compiler handles fd_set and friends ...
8758 $cat >fd_set.c <<EOCP
8759 #$i_systime I_SYS_TIME
8760 #$i_sysselct I_SYS_SELECT
8761 #$d_socket HAS_SOCKET
8762 #include <sys/types.h>
8764 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8767 #include <sys/time.h>
8770 #include <sys/select.h>
8779 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8786 set fd_set -DTRYBITS
8787 if eval $compile; then
8788 d_fds_bits="$define"
8790 echo "Well, your system knows about the normal fd_set typedef..." >&4
8792 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8793 d_fd_macros="$define"
8796 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8798 d_fd_macros="$undef"
8802 Hmm, your compiler has some difficulty with fd_set. Checking further...
8805 if eval $compile; then
8808 echo "Well, your system has some sort of fd_set available..." >&4
8810 echo "and you have the normal fd_set macros." >&4
8811 d_fd_macros="$define"
8814 but not the normal fd_set macros! Gross! More work for me...
8816 d_fd_macros="$undef"
8819 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8822 d_fd_macros="$undef"
8827 : see if fgetpos exists
8828 set fgetpos d_fgetpos
8831 : see if flock exists
8835 : see if fork exists
8839 : see if pathconf exists
8840 set pathconf d_pathconf
8843 : see if fpathconf exists
8844 set fpathconf d_fpathconf
8850 echo "Checking to see if your system supports off64_t..." >&4
8852 #include <sys/types.h>
8854 int main() { off64_t x = 7; }'
8857 if eval $compile; then
8859 echo "Yes, it does."
8862 echo "No, it doesn't."
8863 case "$lseeksize" in
8864 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8871 : check for fpos64_t
8873 echo "Checking to see if your system supports fpos64_t..." >&4
8875 #include <sys/stdio.h>
8876 int main() { fpos64_t x x = 7; }'
8879 if eval $compile; then
8881 echo "Yes, it does."
8884 echo "No, it doesn't."
8886 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8893 hasstruct='varname=$1; struct=$2; shift; shift;
8894 while $test $# -ge 2; do
8896 $define) echo "#include <$2>";;
8900 echo "int main () { struct $struct foo; }" >> try.c;
8902 if eval $compile; then
8911 : see if this is a sys/param system
8912 set sys/param.h i_sysparam
8915 : see if this is a sys/mount.h system
8916 set sys/mount.h i_sysmount
8919 : see if sys/types.h has to be included
8920 set sys/types.h i_systypes
8925 echo "Checking to see if your system supports struct fs_data..." >&4
8926 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8928 case "$d_fs_data_s" in
8929 "$define") echo "Yes, it does." ;;
8930 *) echo "No, it doesn't." ;;
8933 : see if fseeko exists
8937 8) echo "(Your long is 64 bits, so in a pinch you could use fseek.)" ;;
8940 : see if fsetpos exists
8941 set fsetpos d_fsetpos
8945 : see if fstatfs exists
8946 set fstatfs d_fstatfs
8950 : see if statvfs exists
8951 set statvfs d_statvfs
8954 : see if fstatvfs exists
8955 set fstatvfs d_fstatvfs
8959 : see if ftello exists
8963 8) echo "(Your long is 64 bits, so in a pinch you could use ftell.)" ;;
8966 : see if getgrent exists
8967 set getgrent d_getgrent
8970 : see if gethostbyaddr exists
8971 set gethostbyaddr d_gethbyaddr
8974 : see if gethostbyname exists
8975 set gethostbyname d_gethbyname
8978 : see if gethostent exists
8979 set gethostent d_gethent
8982 : see how we will look up host name
8985 if set gethostname val -f d_gethname; eval $csym; $val; then
8986 echo 'gethostname() found.' >&4
8987 d_gethname="$define"
8990 if set uname val -f d_uname; eval $csym; $val; then
8993 uname() was found, but you're running xenix, and older versions of xenix
8994 have a broken uname(). If you don't really know whether your xenix is old
8995 enough to have a broken system call, use the default answer.
9002 rp='Is your uname() broken?'
9005 n*) d_uname="$define"; call=uname;;
9008 echo 'uname() found.' >&4
9015 case "$d_gethname" in
9016 '') d_gethname="$undef";;
9019 '') d_uname="$undef";;
9021 case "$d_uname$d_gethname" in
9026 Every now and then someone has a $call() that lies about the hostname
9027 but can't be fixed for political or economic reasons. If you wish, I can
9028 pretend $call() isn't there and maybe compute hostname at run-time
9029 thanks to the '$phostname' command.
9032 rp="Shall I ignore $call() from now on?"
9035 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9038 case "$phostname" in
9040 *) case "$aphostname" in
9046 file=`./loc $file $file $pth`
9047 aphostname=`echo $file $*`
9052 case "$d_uname$d_gethname" in
9055 case "$phostname" in
9057 echo "There will be no way for $package to get your hostname." >&4;;
9059 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9063 case "$d_phostname" in
9064 '') d_phostname="$undef";;
9067 : see if this is a netdb.h system
9071 : see if prototypes for various gethostxxx netdb.h functions are available
9073 set d_gethostprotos gethostent $i_netdb netdb.h
9076 : see if getlogin exists
9077 set getlogin d_getlogin
9080 : see if getmnt exists
9084 : see if getmntent exists
9085 set getmntent d_getmntent
9088 : see if getnetbyaddr exists
9089 set getnetbyaddr d_getnbyaddr
9092 : see if getnetbyname exists
9093 set getnetbyname d_getnbyname
9096 : see if getnetent exists
9097 set getnetent d_getnent
9100 : see if prototypes for various getnetxxx netdb.h functions are available
9102 set d_getnetprotos getnetent $i_netdb netdb.h
9106 : see if getprotobyname exists
9107 set getprotobyname d_getpbyname
9110 : see if getprotobynumber exists
9111 set getprotobynumber d_getpbynumber
9114 : see if getprotoent exists
9115 set getprotoent d_getpent
9118 : see if getpgid exists
9119 set getpgid d_getpgid
9122 : see if getpgrp2 exists
9123 set getpgrp2 d_getpgrp2
9126 : see if getppid exists
9127 set getppid d_getppid
9130 : see if getpriority exists
9131 set getpriority d_getprior
9134 : see if prototypes for various getprotoxxx netdb.h functions are available
9136 set d_getprotoprotos getprotoent $i_netdb netdb.h
9139 : see if getpwent exists
9140 set getpwent d_getpwent
9144 : see if getservbyname exists
9145 set getservbyname d_getsbyname
9148 : see if getservbyport exists
9149 set getservbyport d_getsbyport
9152 : see if getservent exists
9153 set getservent d_getsent
9156 : see if prototypes for various getservxxx netdb.h functions are available
9158 set d_getservprotos getservent $i_netdb netdb.h
9161 : see if getspent exists
9162 set getspent d_getspent
9165 : see if getspnam exists
9166 set getspnam d_getspnam
9169 : see if gettimeofday or ftime exists
9170 set gettimeofday d_gettimeod
9172 case "$d_gettimeod" in
9178 val="$undef"; set d_ftime; eval $setvar
9181 case "$d_gettimeod$d_ftime" in
9184 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9188 : see if this is an grp system
9194 xxx=`./findhdr grp.h`
9195 $cppstdin $cppflags $cppminus < $xxx >$$.h
9197 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9209 set d_grpasswd; eval $setvar
9213 : see if hasmntopt exists
9214 set hasmntopt d_hasmntopt
9217 : see if this is a netinet/in.h or sys/in.h system
9218 set netinet/in.h i_niin sys/in.h i_sysin
9221 : see if arpa/inet.h has to be included
9222 set arpa/inet.h i_arpainet
9225 : see if htonl --and friends-- exists
9230 : Maybe they are macros.
9235 #include <sys/types.h>
9236 #$i_niin I_NETINET_IN
9238 #$i_arpainet I_ARPA_INET
9240 #include <netinet/in.h>
9246 #include <arpa/inet.h>
9249 printf("Defined as a macro.");
9252 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9253 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9255 echo "But it seems to be defined as a macro." >&4
9265 if set index val -f; eval $csym; $val; then
9266 if set strchr val -f d_strchr; eval $csym; $val; then
9267 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9270 echo "strchr() found." >&4
9274 echo "index() found." >&4
9279 echo "index() found." >&4
9282 if set strchr val -f d_strchr; eval $csym; $val; then
9285 echo "strchr() found." >&4
9287 echo "No index() or strchr() found!" >&4
9292 set d_strchr; eval $setvar
9294 set d_index; eval $setvar
9296 : check whether inet_aton exists
9297 set inet_aton d_inetaton
9302 $cat >isascii.c <<'EOCP'
9314 if eval $compile; then
9315 echo "isascii() found." >&4
9318 echo "isascii() NOT found." >&4
9325 : see if killpg exists
9329 : see if lchown exists
9331 $cat > try.c <<'EOCP'
9332 /* System header to define __stub macros and hopefully few prototypes,
9333 which can conflict with char lchown(); below. */
9335 /* Override any gcc2 internal prototype to avoid an error. */
9336 /* We use char because int might match the return type of a gcc2
9337 builtin and then its argument prototype would still apply. */
9340 /* The GNU C library defines this for functions which it implements
9341 to always fail with ENOSYS. Some functions are actually named
9342 something starting with __ and the normal name is an alias. */
9343 #if defined (__stub_lchown) || defined (__stub___lchown)
9351 if eval $compile; then
9352 $echo "lchown() found." >&4
9355 $echo "lchown() NOT found." >&4
9361 : See if number of significant digits in a double precision number is known
9363 $cat >ldbl_dig.c <<EOM
9373 printf("Contains LDBL_DIG");
9376 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9377 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9378 echo "LDBL_DIG found." >&4
9381 echo "LDBL_DIG NOT found." >&4
9388 : see if link exists
9392 : see if localeconv exists
9393 set localeconv d_locconv
9396 : see if lockf exists
9400 : check for long long
9402 $echo $n "Checking to see if your system supports long long..." $c >&4
9403 echo 'int main() { long long x = 7; return 0; }' > try.c
9405 if eval $compile; then
9407 echo " Yes, it does." >&4
9410 echo " No, it doesn't." >&4
9416 : check for length of long long
9417 case "${d_longlong}${longlongsize}" in
9420 $echo $n "Checking to see how big your long longs are..." $c >&4
9421 $cat >try.c <<'EOCP'
9425 printf("%d\n", (int)sizeof(long long));
9430 if eval $compile_ok; then
9431 longlongsize=`./try$exe_ext`
9432 $echo " $longlongsize bytes." >&4
9436 echo "(I can't seem to compile the test program. Guessing...)"
9437 rp="What is the size of a long long (in bytes)?"
9441 if $test "X$longsize" = "X$longlongsize"; then
9442 echo "(That isn't any different from an ordinary long.)"
9448 : see if lstat exists
9452 : see if mblen exists
9456 : see if mbstowcs exists
9457 set mbstowcs d_mbstowcs
9460 : see if mbtowc exists
9464 : see if memchr exists
9468 : see if memcmp exists
9472 : see if memcpy exists
9476 : see if memmove exists
9477 set memmove d_memmove
9480 : see if memset exists
9484 : see if mkdir exists
9488 : see if mkfifo exists
9492 : see if mktime exists
9496 : see if msgctl exists
9500 : see if msgget exists
9504 : see if msgsnd exists
9508 : see if msgrcv exists
9512 : see how much of the 'msg*(2)' library is present.
9515 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9516 *"$undef"*) h_msg=false;;
9520 case "`ipcs 2>&1`" in
9521 "SVID messages"*"not configured"*)
9522 echo "Your $osname does not have the msg*(2) configured." >&4
9537 : we could also check for sys/ipc.h ...
9538 if $h_msg && $test `./findhdr sys/msg.h`; then
9539 echo "You have the full msg*(2) library." >&4
9542 echo "You don't have the full msg*(2) library." >&4
9548 : see if nice exists
9552 : see if inttypes.h is available
9553 : we want a real compile instead of Inhdr because some systems
9554 : have an inttypes.h which includes non-existent headers
9557 #include <inttypes.h>
9559 static int32_t foo32 = 0x12345678;
9563 if eval $compile; then
9564 echo "<inttypes.h> found." >&4
9567 echo "<inttypes.h> NOT found." >&4
9576 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9578 #include <sys/types.h>
9579 #$i_inttypes I_INTTYPES
9581 #include <inttypes.h>
9583 int main() { int64_t x = 7; }
9586 if eval $compile; then
9588 echo " Yes, it does." >&4
9591 echo " No, it doesn't." >&4
9599 echo "Checking which 64-bit integer type we could use..." >&4
9605 val='"unsigned int"'
9610 *) case "$longsize" in
9614 val='"unsigned long"'
9619 *) case "$uselonglong:$d_longlong:$longlongsize" in
9624 val='"unsigned long long"'
9629 *) case "$d_int64t" in
9648 '') case "$uselonglong:$d_longlong:$longlongsize" in
9650 echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9651 *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9655 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9660 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9665 : check for length of character
9669 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9670 $cat >try.c <<'EOCP'
9674 printf("%d\n", (int)sizeof(char));
9679 if eval $compile_ok; then
9683 echo "(I can't seem to compile the test program. Guessing...)"
9690 rp="What is the size of a character (in bytes)?"
9697 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9699 case "$use64bits:$d_quad:$quadtype" in
9707 uvtype="unsigned long"
9713 case "$uselongdouble:$d_longdbl" in
9715 nvtype="long double"
9723 $echo "(IV will be "$ivtype", $ivsize bytes)"
9724 $echo "(UV will be "$uvtype", $uvsize bytes)"
9725 $echo "(NV will be "$nvtype", $nvsize bytes)"
9728 #$i_inttypes I_INTTYPES
9730 #include <inttypes.h>
9735 int8_t i = INT8_MAX;
9736 uint8_t u = UINT8_MAX;
9740 int16_t i = INT16_MAX;
9741 uint16_t i = UINT16_MAX;
9742 printf("int16_t\n");
9745 int32_t i = INT32_MAX;
9746 uint32_t u = UINT32_MAX;
9747 printf("int32_t\n");
9753 '') case "$charsize" in
9755 u8type="unsigned char"
9764 if eval $compile; then
9765 case "`./try$exe_ext`" in
9766 int8_t) i8type=int8_t
9776 '') if $test $charsize -ge 1; then
9778 u8type="unsigned char"
9786 '') case "$shortsize" in
9788 u16type="unsigned short"
9797 if eval $compile; then
9798 case "`./try$exe_ext`" in
9810 '') if $test $shortsize -ge 2; then
9812 u16type="unsigned short"
9820 '') case "$longsize" in
9822 u32type="unsigned long"
9826 *) case "$intsize" in
9828 u32type="unsigned int"
9839 if eval $compile; then
9840 case "`./try$exe_ext`" in
9852 '') if $test $intsize -ge 4; then
9854 u32type="unsigned int"
9862 '') case "$d_quad:$quadtype" in
9865 u64type="$uquadtype"
9873 $echo "Checking whether your NVs can preserve your UVs..." >&4
9877 $uvtype k = ($uvtype)~0, l;
9883 printf("preserve\n");
9888 if eval $compile; then
9889 case "`./try$exe_ext`" in
9890 preserve) d_nv_preserves_uv="$define" ;;
9893 case "$d_nv_preserves_uv" in
9894 $define) $echo "Yes, they can." 2>&1 ;;
9895 *) $echo "No, they can't." 2>&1
9896 d_nv_preserves_uv="$undef"
9902 : see if POSIX threads are available
9903 set pthread.h i_pthread
9909 : how to create joinable pthreads
9910 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9912 echo "Checking what constant to use for creating joinable pthreads..." >&4
9913 $cat >try.c <<'EOCP'
9914 #include <pthread.h>
9916 int detachstate = JOINABLE;
9919 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9920 if eval $compile; then
9921 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9922 val="$undef" # Yes, undef.
9923 set d_old_pthread_create_joinable
9926 set old_pthread_create_joinable
9929 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9930 if eval $compile; then
9931 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9933 set d_old_pthread_create_joinable
9935 val=PTHREAD_CREATE_UNDETACHED
9936 set old_pthread_create_joinable
9939 set try -DJOINABLE=__UNDETACHED
9940 if eval $compile; then
9941 echo "You seem to use __UNDETACHED." >&4
9943 set d_old_pthread_create_joinable
9946 set old_pthread_create_joinable
9949 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9951 set d_old_pthread_create_joinable
9954 set old_pthread_create_joinable
9961 d_old_pthread_create_joinable="$undef"
9962 old_pthread_create_joinable=""
9965 : see if pause exists
9969 : see if pipe exists
9973 : see if poll exists
9978 : see whether the various POSIXish _yields exist
9980 #include <pthread.h>
9986 #ifdef PTHREAD_YIELD
9989 #ifdef PTHREAD_YIELD_NULL
9990 pthread_yield(NULL);
9996 : see if sched_yield exists
9997 set try -DSCHED_YIELD
9998 if eval $compile; then
10000 sched_yield='sched_yield()'
10004 case "$usethreads" in
10007 $define) echo 'sched_yield() found.' >&4 ;;
10008 *) echo 'sched_yield() NOT found.' >&4 ;;
10014 : see if pthread_yield exists
10015 set try -DPTHREAD_YIELD
10016 if eval $compile; then
10018 case "$sched_yield" in
10019 '') sched_yield='pthread_yield()' ;;
10022 set try -DPTHREAD_YIELD_NULL
10023 if eval $compile; then
10025 case "$sched_yield" in
10026 '') sched_yield='pthread_yield(NULL)' ;;
10032 case "$usethreads" in
10035 $define) echo 'pthread_yield() found.' >&4 ;;
10036 *) echo 'pthread_yield() NOT found.' >&4 ;;
10040 set d_pthread_yield
10043 case "$sched_yield" in
10044 '') sched_yield=undef ;;
10049 : see if this is a pwd.h system
10055 xxx=`./findhdr pwd.h`
10056 $cppstdin $cppflags $cppminus < $xxx >$$.h
10058 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10066 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10074 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10082 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10090 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10098 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10106 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10114 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10126 set d_pwquota; eval $setvar
10127 set d_pwage; eval $setvar
10128 set d_pwchange; eval $setvar
10129 set d_pwclass; eval $setvar
10130 set d_pwexpire; eval $setvar
10131 set d_pwcomment; eval $setvar
10132 set d_pwgecos; eval $setvar
10133 set d_pwpasswd; eval $setvar
10137 : see if readdir and friends exist
10138 set readdir d_readdir
10140 set seekdir d_seekdir
10142 set telldir d_telldir
10144 set rewinddir d_rewinddir
10147 : see if readlink exists
10148 set readlink d_readlink
10151 : see if rename exists
10152 set rename d_rename
10155 : see if rmdir exists
10159 : see if memory.h is available.
10164 : See if it conflicts with string.h
10170 $cppstdin $cppflags $cppminus < $strings > mem.h
10171 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10173 echo "We won't be including <memory.h>."
10183 : can bcopy handle overlapping blocks?
10188 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10190 #$i_memory I_MEMORY
10191 #$i_stdlib I_STDLIB
10192 #$i_string I_STRING
10193 #$i_unistd I_UNISTD
10195 $cat >>try.c <<'EOCP'
10198 # include <memory.h>
10201 # include <stdlib.h>
10204 # include <string.h>
10206 # include <strings.h>
10209 # include <unistd.h> /* Needed for NetBSD */
10213 char buf[128], abc[128];
10219 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10221 for (align = 7; align >= 0; align--) {
10222 for (len = 36; len; len--) {
10224 bcopy(abc, b, len);
10225 for (off = 1; off <= len; off++) {
10226 bcopy(b, b+off, len);
10227 bcopy(b+off, b, len);
10228 if (bcmp(b, abc, len))
10237 if eval $compile_ok; then
10238 if ./try 2>/dev/null; then
10239 echo "Yes, it can."
10242 echo "It can't, sorry."
10243 case "$d_memmove" in
10244 "$define") echo "But that's Ok since you have memmove()." ;;
10248 echo "(I can't compile the test program, so we'll assume not...)"
10249 case "$d_memmove" in
10250 "$define") echo "But that's Ok since you have memmove()." ;;
10255 $rm -f try.* try core
10259 : can memcpy handle overlapping blocks?
10261 case "$d_memcpy" in
10264 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10266 #$i_memory I_MEMORY
10267 #$i_stdlib I_STDLIB
10268 #$i_string I_STRING
10269 #$i_unistd I_UNISTD
10271 $cat >>try.c <<'EOCP'
10274 # include <memory.h>
10277 # include <stdlib.h>
10280 # include <string.h>
10282 # include <strings.h>
10285 # include <unistd.h> /* Needed for NetBSD */
10289 char buf[128], abc[128];
10295 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10296 try to store the string in read-only memory. */
10297 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10299 for (align = 7; align >= 0; align--) {
10300 for (len = 36; len; len--) {
10302 memcpy(b, abc, len);
10303 for (off = 1; off <= len; off++) {
10304 memcpy(b+off, b, len);
10305 memcpy(b, b+off, len);
10306 if (memcmp(b, abc, len))
10315 if eval $compile_ok; then
10316 if ./try 2>/dev/null; then
10317 echo "Yes, it can."
10320 echo "It can't, sorry."
10321 case "$d_memmove" in
10322 "$define") echo "But that's Ok since you have memmove()." ;;
10326 echo "(I can't compile the test program, so we'll assume not...)"
10327 case "$d_memmove" in
10328 "$define") echo "But that's Ok since you have memmove()." ;;
10333 $rm -f try.* try core
10337 : can memcmp be trusted to compare relative magnitude?
10339 case "$d_memcmp" in
10342 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10344 #$i_memory I_MEMORY
10345 #$i_stdlib I_STDLIB
10346 #$i_string I_STRING
10347 #$i_unistd I_UNISTD
10349 $cat >>try.c <<'EOCP'
10352 # include <memory.h>
10355 # include <stdlib.h>
10358 # include <string.h>
10360 # include <strings.h>
10363 # include <unistd.h> /* Needed for NetBSD */
10369 if ((a < b) && memcmp(&a, &b, 1) < 0)
10375 if eval $compile_ok; then
10376 if ./try 2>/dev/null; then
10377 echo "Yes, it can."
10380 echo "No, it can't (it uses signed chars)."
10383 echo "(I can't compile the test program, so we'll assume not...)"
10387 $rm -f try.* try core
10391 : see if select exists
10392 set select d_select
10395 : see if semctl exists
10396 set semctl d_semctl
10399 : see if semget exists
10400 set semget d_semget
10403 : see if semop exists
10407 : see how much of the 'sem*(2)' library is present.
10410 case "$d_semctl$d_semget$d_semop" in
10411 *"$undef"*) h_sem=false;;
10415 case "`ipcs 2>&1`" in
10416 "SVID messages"*"not configured"*)
10417 echo "Your $osname does not have the sem*(2) configured." >&4
10420 set semctl d_semctl
10422 set semget d_semget
10430 : we could also check for sys/ipc.h ...
10431 if $h_sem && $test `./findhdr sys/sem.h`; then
10432 echo "You have the full sem*(2) library." >&4
10435 echo "You don't have the full sem*(2) library." >&4
10441 : see whether sys/sem.h defines union semun
10443 $cat > try.c <<'END'
10444 #include <sys/types.h>
10445 #include <sys/ipc.h>
10446 #include <sys/sem.h>
10447 int main () { union semun semun; semun.buf = 0; }
10450 if eval $compile; then
10451 echo "You have union semun in <sys/sem.h>." >&4
10454 echo "You do not have union semun in <sys/sem.h>." >&4
10457 $rm -f try try.c try.h
10461 : see how to do semctl IPC_STAT
10464 : see whether semctl IPC_STAT can use union semun
10469 # define S_IRUSR S_IREAD
10470 # define S_IWUSR S_IWRITE
10471 # define S_IXUSR S_IEXEC
10473 # define S_IRUSR 0400
10474 # define S_IWUSR 0200
10475 # define S_IXUSR 0100
10477 # define S_IRGRP (S_IRUSR>>3)
10478 # define S_IWGRP (S_IWUSR>>3)
10479 # define S_IXGRP (S_IXUSR>>3)
10480 # define S_IROTH (S_IRUSR>>6)
10481 # define S_IWOTH (S_IWUSR>>6)
10482 # define S_IXOTH (S_IXUSR>>6)
10485 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10486 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10487 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10492 #include <sys/types.h>
10493 #include <sys/ipc.h>
10494 #include <sys/sem.h>
10495 #include <sys/stat.h>
10502 #$d_union_semun HAS_UNION_SEMUN
10505 #ifndef HAS_UNION_SEMUN
10508 struct semid_ds *buf;
10509 unsigned short *array;
10515 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10516 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10518 struct semid_ds argbuf;
10521 st = semctl(sem, 0, IPC_STAT, arg);
10525 # endif /* IPC_STAT */
10526 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10528 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10529 # endif /* IPC_RMID */
10530 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10532 #endif /* IPC_PRIVATE && ... */
10533 printf("semget failed: errno = %d\n", errno);
10539 if eval $compile; then
10542 semun) val="$define" ;;
10548 case "$d_semctl_semun" in
10550 echo "You can use union semun for semctl IPC_STAT." >&4
10553 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10558 : see whether semctl IPC_STAT can use struct semid_ds pointer
10559 $cat > try.c <<'END'
10560 #include <sys/types.h>
10561 #include <sys/ipc.h>
10562 #include <sys/sem.h>
10563 #include <sys/stat.h>
10571 struct semid_ds arg;
10574 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10575 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10578 st = semctl(sem, 0, IPC_STAT, &arg);
10580 printf("semid_ds\n");
10582 # endif /* IPC_STAT */
10583 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10585 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10586 # endif /* IPC_RMID */
10587 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10589 #endif /* IPC_PRIVATE && ... */
10590 printf("semget failed: errno = %d\n", errno);
10597 if eval $compile; then
10600 semid_ds) val="$define" ;;
10604 set d_semctl_semid_ds
10606 case "$d_semctl_semid_ds" in
10608 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10610 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10617 # We do not have the full sem*(2) library, so assume we can not
10623 set d_semctl_semid_ds
10628 : see if setegid exists
10629 set setegid d_setegid
10632 : see if seteuid exists
10633 set seteuid d_seteuid
10636 : see if setgrent exists
10637 set setgrent d_setgrent
10640 : see if sethostent exists
10641 set sethostent d_sethent
10644 : see if setlinebuf exists
10645 set setlinebuf d_setlinebuf
10648 : see if setlocale exists
10649 set setlocale d_setlocale
10652 : see if setnetent exists
10653 set setnetent d_setnent
10656 : see if setprotoent exists
10657 set setprotoent d_setpent
10660 : see if setpgid exists
10661 set setpgid d_setpgid
10664 : see if setpgrp2 exists
10665 set setpgrp2 d_setpgrp2
10668 : see if setpriority exists
10669 set setpriority d_setprior
10672 : see if setpwent exists
10673 set setpwent d_setpwent
10676 : see if setregid exists
10677 set setregid d_setregid
10679 set setresgid d_setresgid
10682 : see if setreuid exists
10683 set setreuid d_setreuid
10685 set setresuid d_setresuid
10688 : see if setrgid exists
10689 set setrgid d_setrgid
10692 : see if setruid exists
10693 set setruid d_setruid
10696 : see if setservent exists
10697 set setservent d_setsent
10700 : see if setsid exists
10701 set setsid d_setsid
10704 : see if setspent exists
10705 set setspent d_setspent
10708 : see if setvbuf exists
10709 set setvbuf d_setvbuf
10712 : see if sfio.h is available
10717 : see if sfio library is available
10728 : Ok, but do we want to use it.
10732 true|$define|[yY]*) dflt='y';;
10735 echo "$package can use the sfio library, but it is experimental."
10736 rp="You seem to have sfio available, do you want to try using it?"
10740 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10742 : Remove sfio from list of libraries to use
10743 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10746 echo "libs = $libs" >&4
10750 *) case "$usesfio" in
10751 true|$define|[yY]*)
10752 echo "Sorry, cannot find sfio on this machine" >&4
10753 echo "Ignoring your setting of usesfio=$usesfio" >&4
10761 $define) usesfio='true';;
10762 *) usesfio='false';;
10765 : see if shmctl exists
10766 set shmctl d_shmctl
10769 : see if shmget exists
10770 set shmget d_shmget
10773 : see if shmat exists
10776 : see what shmat returns
10779 $cat >shmat.c <<'END'
10780 #include <sys/shm.h>
10783 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10788 echo "and it returns ($shmattype)." >&4
10789 : see if a prototype for shmat is available
10790 xxx=`./findhdr sys/shm.h`
10791 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10792 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10803 set d_shmatprototype
10806 : see if shmdt exists
10810 : see how much of the 'shm*(2)' library is present.
10813 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10814 *"$undef"*) h_shm=false;;
10818 case "`ipcs 2>&1`" in
10819 "SVID shared memory"*"not configured"*)
10820 echo "Your $osname does not have the shm*(2) configured." >&4
10823 set shmctl d_shmctl
10825 set shmget d_shmget
10835 : we could also check for sys/ipc.h ...
10836 if $h_shm && $test `./findhdr sys/shm.h`; then
10837 echo "You have the full shm*(2) library." >&4
10840 echo "You don't have the full shm*(2) library." >&4
10847 : see if we have sigaction
10848 if set sigaction val -f d_sigaction; eval $csym; $val; then
10849 echo 'sigaction() found.' >&4
10850 $cat > try.c <<'EOP'
10852 #include <sys/types.h>
10853 #include <signal.h>
10856 struct sigaction act, oact;
10858 oact.sa_handler = 0;
10859 /* so that act and oact are used */
10860 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10864 if eval $compile_ok; then
10867 echo "But you don't seem to have a useable struct sigaction." >&4
10871 echo 'sigaction NOT found.' >&4
10874 set d_sigaction; eval $setvar
10875 $rm -f try try$_o try.c
10877 : see if sigsetjmp exists
10879 case "$d_sigsetjmp" in
10881 $cat >try.c <<'EOP'
10882 #include <setjmp.h>
10887 if (sigsetjmp(env,1))
10890 siglongjmp(env, 1);
10895 if eval $compile; then
10896 if ./try >/dev/null 2>&1; then
10897 echo "POSIX sigsetjmp found." >&4
10901 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10907 echo "sigsetjmp not found." >&4
10911 *) val="$d_sigsetjmp"
10912 case "$d_sigsetjmp" in
10913 $define) echo "POSIX sigsetjmp found." >&4;;
10914 $undef) echo "sigsetjmp not found." >&4;;
10922 : see if sqrtl exists
10926 : see if sys/stat.h is available
10927 set sys/stat.h i_sysstat
10931 : see if stat knows about block sizes
10933 echo "Checking to see if your struct stat has st_blocks field..." >&4
10934 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10938 : see if this is a sys/vfs.h system
10939 set sys/vfs.h i_sysvfs
10943 : see if this is a sys/statfs.h system
10944 set sys/statfs.h i_sysstatfs
10949 echo "Checking to see if your system supports struct statfs..." >&4
10950 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
10952 case "$d_statfs_s" in
10953 "$define") echo "Yes, it does." ;;
10954 *) echo "No, it doesn't." ;;
10959 : see if struct statfs knows about f_flags
10960 case "$d_statfs_s" in
10963 echo "Checking to see if your struct statfs has f_flags field..." >&4
10964 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
10968 set d_statfs_f_flags
10972 case "$d_statfs_f_flags" in
10973 "$define") echo "Yes, it does." ;;
10974 *) echo "No, it doesn't." ;;
10977 : see if _ptr and _cnt from stdio act std
10979 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10980 echo "(Looks like you have stdio.h from Linux.)"
10981 case "$stdio_ptr" in
10982 '') stdio_ptr='((fp)->_IO_read_ptr)'
10985 *) ptr_lval=$d_stdio_ptr_lval;;
10987 case "$stdio_cnt" in
10988 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10991 *) cnt_lval=$d_stdio_cnt_lval;;
10993 case "$stdio_base" in
10994 '') stdio_base='((fp)->_IO_read_base)';;
10996 case "$stdio_bufsiz" in
10997 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11000 case "$stdio_ptr" in
11001 '') stdio_ptr='((fp)->_ptr)'
11004 *) ptr_lval=$d_stdio_ptr_lval;;
11006 case "$stdio_cnt" in
11007 '') stdio_cnt='((fp)->_cnt)'
11010 *) cnt_lval=$d_stdio_cnt_lval;;
11012 case "$stdio_base" in
11013 '') stdio_base='((fp)->_base)';;
11015 case "$stdio_bufsiz" in
11016 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11019 : test whether _ptr and _cnt really work
11020 echo "Checking how std your stdio is..." >&4
11023 #define FILE_ptr(fp) $stdio_ptr
11024 #define FILE_cnt(fp) $stdio_cnt
11026 FILE *fp = fopen("try.c", "r");
11029 18 <= FILE_cnt(fp) &&
11030 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11038 if eval $compile; then
11040 echo "Your stdio acts pretty std."
11043 echo "Your stdio isn't very std."
11046 echo "Your stdio doesn't appear very std."
11052 : Can _ptr be used as an lvalue?
11053 case "$d_stdstdio$ptr_lval" in
11054 $define$define) val=$define ;;
11057 set d_stdio_ptr_lval
11060 : Can _cnt be used as an lvalue?
11061 case "$d_stdstdio$cnt_lval" in
11062 $define$define) val=$define ;;
11065 set d_stdio_cnt_lval
11068 : see if _base is also standard
11070 case "$d_stdstdio" in
11074 #define FILE_base(fp) $stdio_base
11075 #define FILE_bufsiz(fp) $stdio_bufsiz
11077 FILE *fp = fopen("try.c", "r");
11080 19 <= FILE_bufsiz(fp) &&
11081 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11088 if eval $compile; then
11090 echo "And its _base field acts std."
11093 echo "But its _base field isn't std."
11096 echo "However, it seems to be lacking the _base field."
11105 Checking how to access stdio streams by file descriptor number...
11107 case "$stdio_stream_array" in
11108 '') $cat >try.c <<EOCP
11111 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11115 for s in _iob __iob __sF
11117 set try -DSTDIO_STREAM_ARRAY=$s
11118 if eval $compile; then
11119 case "`./try$exe_ext`" in
11120 yes) stdio_stream_array=$s; break ;;
11124 $rm -f try.* try$exe_ext
11126 case "$stdio_stream_array" in
11128 I can't figure out how to access stdio streams by file descriptor number.
11130 d_stdio_stream_array="$undef"
11133 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11135 d_stdio_stream_array="$define"
11139 : see if strcoll exists
11140 set strcoll d_strcoll
11143 : check for structure copying
11145 echo "Checking to see if your C compiler can copy structs..." >&4
11146 $cat >try.c <<'EOCP'
11156 if $cc -c try.c >/dev/null 2>&1 ; then
11158 echo "Yup, it can."
11161 echo "Nope, it can't."
11167 : see if strerror and/or sys_errlist[] exist
11169 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11170 if set strerror val -f d_strerror; eval $csym; $val; then
11171 echo 'strerror() found.' >&4
11172 d_strerror="$define"
11173 d_strerrm='strerror(e)'
11174 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11175 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11176 d_syserrlst="$define"
11178 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11179 d_syserrlst="$undef"
11181 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11182 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11183 echo 'strerror() found in string header.' >&4
11184 d_strerror="$define"
11185 d_strerrm='strerror(e)'
11186 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11187 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11188 d_syserrlst="$define"
11190 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11191 d_syserrlst="$undef"
11193 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11194 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11195 d_strerror="$undef"
11196 d_syserrlst="$define"
11197 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11199 echo 'strerror() and sys_errlist[] NOT found.' >&4
11200 d_strerror="$undef"
11201 d_syserrlst="$undef"
11202 d_strerrm='"unknown"'
11206 : see if strtod exists
11207 set strtod d_strtod
11210 : see if strtol exists
11211 set strtol d_strtol
11214 : see if strtold exists
11215 set strtold d_strtold
11218 : see if strtoll exists
11219 set strtoll d_strtoll
11222 : see if strtoul exists
11223 set strtoul d_strtoul
11226 : see if strtoull exists
11227 set strtoull d_strtoull
11230 : see if strtouq exists
11231 set strtouq d_strtouq
11234 : see if strxfrm exists
11235 set strxfrm d_strxfrm
11238 : see if symlink exists
11239 set symlink d_symlink
11242 : see if syscall exists
11243 set syscall d_syscall
11246 : see if sysconf exists
11247 set sysconf d_sysconf
11250 : see if system exists
11251 set system d_system
11254 : see if tcgetpgrp exists
11255 set tcgetpgrp d_tcgetpgrp
11258 : see if tcsetpgrp exists
11259 set tcsetpgrp d_tcsetpgrp
11262 : see if prototype for telldir is available
11264 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11267 : see if this is a sys/times.h system
11268 set sys/times.h i_systimes
11271 : see if times exists
11273 if set times val -f d_times; eval $csym; $val; then
11274 echo 'times() found.' >&4
11277 case "$i_systimes" in
11278 "$define") inc='sys/times.h';;
11280 rp="What is the type returned by times() on this system?"
11281 set clock_t clocktype long stdio.h sys/types.h $inc
11284 echo 'times() NOT found, hope that will do.' >&4
11289 : see if truncate exists
11290 set truncate d_truncate
11293 : see if tzname[] exists
11295 if set tzname val -a d_tzname; eval $csym; $val; then
11297 echo 'tzname[] found.' >&4
11300 echo 'tzname[] NOT found.' >&4
11305 : see if umask exists
11309 : see if ustat exists
11313 : backward compatibility for d_hvfork
11314 if test X$d_hvfork != X; then
11315 d_vfork="$d_hvfork"
11318 : see if there is a vfork
11323 : Ok, but do we want to use it. vfork is reportedly unreliable in
11324 : perl on Solaris 2.x, and probably elsewhere.
11328 case "$usevfork" in
11334 Perl can only use a vfork() that doesn't suffer from strict
11335 restrictions on calling functions or modifying global data in
11336 the child. For example, glibc-2.1 contains such a vfork()
11337 that is unsuitable. If your system provides a proper fork()
11338 call, chances are that you do NOT want perl to use vfork().
11341 rp="Do you still want to use vfork()?"
11346 echo "Ok, we won't use vfork()."
11355 $define) usevfork='true';;
11356 *) usevfork='false';;
11359 : see if this is an sysdir system
11360 set sys/dir.h i_sysdir
11363 : see if this is an sysndir system
11364 set sys/ndir.h i_sysndir
11367 : see if closedir exists
11368 set closedir d_closedir
11371 case "$d_closedir" in
11374 echo "Checking whether closedir() returns a status..." >&4
11375 cat > closedir.c <<EOM
11376 #$i_dirent I_DIRENT /**/
11377 #$i_sysdir I_SYS_DIR /**/
11378 #$i_sysndir I_SYS_NDIR /**/
11379 #$i_systypes I_SYS_TYPES /**/
11381 #if defined(I_SYS_TYPES)
11382 #include <sys/types.h>
11384 #if defined(I_DIRENT)
11385 #include <dirent.h>
11386 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11387 #include <sys/dir.h>
11391 #include <sys/ndir.h>
11395 #include <ndir.h> /* may be wrong in the future */
11397 #include <sys/dir.h>
11402 int main() { return closedir(opendir(".")); }
11405 if eval $compile_ok; then
11406 if ./closedir > /dev/null 2>&1 ; then
11407 echo "Yes, it does."
11410 echo "No, it doesn't."
11414 echo "(I can't seem to compile the test program--assuming it doesn't)"
11422 set d_void_closedir
11425 : check for volatile keyword
11427 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11428 $cat >try.c <<'EOCP'
11431 typedef struct _goo_struct goo_struct;
11432 goo_struct * volatile goo = ((goo_struct *)0);
11433 struct _goo_struct {
11438 typedef unsigned short foo_t;
11439 char *volatile foo;
11441 volatile foo_t blech;
11445 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11447 echo "Yup, it does."
11450 echo "Nope, it doesn't."
11456 : see if there is a wait4
11460 : see if waitpid exists
11461 set waitpid d_waitpid
11464 : see if wcstombs exists
11465 set wcstombs d_wcstombs
11468 : see if wctomb exists
11469 set wctomb d_wctomb
11472 : preserve RCS keywords in files with variable substitution, grrr
11477 Revision='$Revision'
11479 case "$crosscompile" in
11480 ''|[nN]*) crosscompile="$undef" ;;
11484 next|rhapsody) multiarch="$define" ;;
11486 case "$multiarch" in
11487 ''|[nN]*) multiarch="$undef" ;;
11490 : check for alignment requirements
11492 case "$crosscompile$multiarch" in
11495 You seem to be either cross-compiling or doing a multiarchitecture build,
11496 skipping the memory alignment check.
11499 case "$alignbytes" in
11500 '') alignbytes=8 ;;
11504 case "$alignbytes" in
11505 '') echo "Checking alignment constraints..." >&4
11506 $cat >try.c <<'EOCP'
11514 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11519 if eval $compile_ok; then
11523 echo "(I can't seem to compile the test program...)"
11526 *) dflt="$alignbytes"
11529 rp="Doubles must be aligned on a how-many-byte boundary?"
11537 : check for ordering of bytes in a long
11539 case "$crosscompile$multiarch" in
11542 You seem to be either cross-compiling or doing a multiarchitecture build,
11543 skipping the byteorder check.
11549 case "$byteorder" in
11552 In the following, larger digits indicate more significance. A big-endian
11553 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11554 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11555 machines may have weird orders like 3412. A Cray will report 87654321,
11556 an Alpha will report 12345678. If the test program works the default is
11558 I'm now running the test program...
11560 $cat >try.c <<'EOCP'
11567 char c[sizeof(long)];
11570 if (sizeof(long) > 4)
11571 u.l = (0x08070605L << 32) | 0x04030201L;
11574 for (i = 0; i < sizeof(long); i++)
11575 printf("%c", u.c[i]+'0');
11582 if eval $compile && ./try > /dev/null; then
11585 [1-4][1-4][1-4][1-4]|12345678|87654321)
11586 echo "(The test program ran ok.)"
11587 echo "byteorder=$dflt"
11590 ????|????????) echo "(The test program ran ok.)" ;;
11591 *) echo "(The test program didn't run right for some reason.)" ;;
11596 (I can't seem to compile the test program. Guessing big-endian...)
11599 case "$xxx_prompt" in
11601 rp="What is the order of bytes in a long?"
11615 : how do we catenate cpp tokens here?
11617 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11618 $cat >cpp_stuff.c <<'EOCP'
11619 #define RCAT(a,b)a/**/b
11620 #define ACAT(a,b)a ## b
11624 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11625 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11626 echo "Oh! Smells like ANSI's been here." >&4
11627 echo "We can catify or stringify, separately or together!"
11629 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11630 echo "Ah, yes! The good old days!" >&4
11631 echo "However, in the good old days we don't know how to stringify and"
11632 echo "catify at the same time."
11636 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11637 to have to edit the values of CAT[2-5] in config.h...
11639 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11643 : see if this is a db.h system
11649 : Check db version.
11651 echo "Checking Berkeley DB version ..." >&4
11657 #include <sys/types.h>
11662 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11663 int Major, Minor, Patch ;
11664 unsigned long Version ;
11665 (void)db_version(&Major, &Minor, &Patch) ;
11666 printf("You have Berkeley DB Version 2 or greater\n");
11668 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11669 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11670 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11671 Major, Minor, Patch) ;
11673 /* check that db.h & libdb are compatible */
11674 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11675 printf("db.h and libdb are incompatible\n") ;
11679 printf("db.h and libdb are compatible\n") ;
11681 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11682 + DB_VERSION_PATCH ;
11684 /* needs to be >= 2.3.4 */
11685 if (Version < 2003004) {
11686 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11687 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11693 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11694 printf("You have Berkeley DB Version 1\n");
11695 exit(0); /* DB version < 2: the coast is clear. */
11697 exit(1); /* <db.h> not Berkeley DB? */
11703 if eval $compile_ok && ./try; then
11704 echo 'Looks OK.' >&4
11706 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11710 : Remove db from list of libraries to use
11711 echo "Removing unusable -ldb from library list" >&4
11712 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11715 echo "libs = $libs" >&4
11725 : Check the return type needed for hash
11727 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11733 #include <sys/types.h>
11736 #ifndef DB_VERSION_MAJOR
11737 u_int32_t hash_cb (ptr, size)
11745 info.hash = hash_cb;
11749 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11750 if $contains warning try.out >>/dev/null 2>&1 ; then
11753 db_hashtype='u_int32_t'
11756 : XXX Maybe we should just give up here.
11757 db_hashtype=u_int32_t
11759 echo "Help: I can't seem to compile the db test program." >&4
11760 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11763 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11765 *) db_hashtype=u_int32_t
11770 : Check the return type needed for prefix
11772 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11778 #include <sys/types.h>
11781 #ifndef DB_VERSION_MAJOR
11782 size_t prefix_cb (key1, key2)
11790 info.prefix = prefix_cb;
11794 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11795 if $contains warning try.out >>/dev/null 2>&1 ; then
11796 db_prefixtype='int'
11798 db_prefixtype='size_t'
11801 db_prefixtype='size_t'
11802 : XXX Maybe we should just give up here.
11804 echo "Help: I can't seem to compile the db test program." >&4
11805 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11808 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11810 *) db_prefixtype='size_t'
11814 : check for void type
11816 echo "Checking to see how well your C compiler groks the void type..." >&4
11817 case "$voidflags" in
11819 $cat >try.c <<'EOCP'
11825 extern void moo(); /* function returning void */
11826 void (*goo)(); /* ptr to func returning void */
11828 void *hue; /* generic ptr */
11841 int main() { sub(); }
11843 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11844 voidflags=$defvoidused
11845 echo "Good. It appears to support void to the level $package wants.">&4
11846 if $contains warning .out >/dev/null 2>&1; then
11847 echo "However, you might get some warnings that look like this:"
11851 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11852 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11853 echo "It supports 1..."
11854 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11855 echo "It also supports 2..."
11856 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11858 echo "And it supports 4 but not 8 definitely."
11860 echo "It doesn't support 4..."
11861 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11863 echo "But it supports 8."
11866 echo "Neither does it support 8."
11870 echo "It does not support 2..."
11871 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11873 echo "But it supports 4 and 8."
11875 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11877 echo "And it supports 4 but has not heard about 8."
11879 echo "However it supports 8 but not 4."
11884 echo "There is no support at all for void."
11889 case "$voidflags" in
11891 *) $cat >&4 <<'EOM'
11892 Support flag bits are:
11893 1: basic void declarations.
11894 2: arrays of pointers to functions returning void.
11895 4: operations between pointers to and addresses of void functions.
11896 8: generic void pointers.
11899 rp="Your void support flags add up to what?"
11907 : How can we generate normalized random numbers ?
11909 echo "Looking for a random number function..." >&4
11910 case "$randfunc" in
11912 if set drand48 val -f; eval $csym; $val; then
11914 echo "Good, found drand48()." >&4
11915 elif set random val -f; eval $csym; $val; then
11917 echo "OK, found random()." >&4
11920 echo "Yick, looks like I have to use rand()." >&4
11931 *-Dmy_rand=*|*-Dmy_srand=*)
11932 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11933 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11934 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11935 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11939 while $test "$cont"; do
11940 rp="Use which function to generate random numbers?"
11942 if $test "$ans" = "$dflt"; then
11948 if set $ans val -f; eval $csym; $val; then
11952 rp="I cannot find function $ans. Use that name anyway?"
11961 case "$randfunc" in
11963 drand01="drand48()"
11969 case "$randbits" in
11971 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11973 #$i_unistd I_UNISTD
11974 #$i_stdlib I_STDLIB
11977 # include <unistd.h>
11980 # include <stdlib.h>
11985 register unsigned long tmp;
11986 register unsigned long max = 0L;
11988 for (i = 1000; i; i--) {
11989 tmp = (unsigned long) $randfunc();
11990 if (tmp > max) max = tmp;
11992 for (i = 0; max; i++)
11998 if eval $compile_ok; then
12002 echo "(I can't seem to compile the test program...)"
12009 rp="How many bits does your $randfunc() function produce?"
12013 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12014 seedfunc="s$randfunc"
12015 randseedtype=unsigned
12019 rp="How many bits does your $randfunc() function produce?"
12022 seedfunc="s$randfunc"
12023 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12024 if set $seedfunc val -f; eval $csym; $val; then
12025 echo "(Using $seedfunc() to seed random generator)"
12027 echo "(Warning: no $seedfunc() to seed random generator)"
12030 randseedtype=unsigned
12038 echo "Determining whether or not we are on an EBCDIC system..." >&4
12039 $cat >tebcdic.c <<'EOM'
12042 if ('M'==0xd4) return 0;
12049 if eval $compile_ok; then
12051 echo "You have EBCDIC." >&4
12054 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12057 echo "I'm unable to compile the test program." >&4
12058 echo "I'll assume ASCII or some ISO Latin." >&4
12060 $rm -f tebcdic.c tebcdic
12066 Checking how to flush all pending stdio output...
12068 # I only know how to find the first 32 possibly open files on SunOS.
12069 # See also hints/sunos_4_1.sh and util.c --AD
12071 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12073 $cat >>try.c <<EOCP
12075 #$i_unistd I_UNISTD
12077 # include <unistd.h>
12079 #$d_sysconf HAS_SYSCONF
12080 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12081 #ifdef HAS_STDIO_STREAM_ARRAY
12082 # define STDIO_STREAM_ARRAY $stdio_stream_array
12085 FILE* p = fopen("try.out", "w");
12089 # ifdef TRY_FPRINTF
12093 #ifdef TRY_FFLUSH_NULL
12096 #ifdef TRY_FFLUSH_ALL
12098 long open_max = -1;
12099 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12100 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12102 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12103 open_max = sysconf(_SC_OPEN_MAX);
12106 open_max = FOPEN_MAX;
12109 open_max = OPEN_MAX;
12118 # ifdef HAS_STDIO_STREAM_ARRAY
12119 if (open_max > 0) {
12121 for (i = 0; i < open_max; i++)
12122 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12123 STDIO_STREAM_ARRAY[i]._file < open_max &&
12124 STDIO_STREAM_ARRAY[i]._flag)
12125 fflush(&STDIO_STREAM_ARRAY[i]);
12133 : first we have to find out how _not_ to flush
12134 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12136 set try -DTRY_FPUTC
12137 if eval $compile; then
12139 ./try$exe_ext 2>/dev/null
12140 if $test ! -s try.out -a "X$?" = X42; then
12146 set try -DTRY_FPRINTF
12148 if eval $compile; then
12150 ./try$exe_ext 2>/dev/null
12151 if $test ! -s try.out -a "X$?" = X42; then
12152 output=-DTRY_FPRINTF
12158 : check for fflush NULL behaviour
12159 case "$fflushNULL" in
12160 '') set try -DTRY_FFLUSH_NULL $output
12161 if eval $compile; then
12163 ./try$exe_ext 2>/dev/null
12165 if $test -s try.out -a "X$code" = X42; then
12166 fflushNULL="`$cat try.out`"
12168 if $test "X$code" != X42; then
12170 (If this test failed, don't worry, we'll try another method shortly.)
12175 $rm -f core try.core core.try.*
12176 case "$fflushNULL" in
12178 Your fflush(NULL) works okay.
12180 fflushNULL="$define"
12183 Your fflush(NULL) isn't working (contrary to ANSI C).
12185 fflushNULL="$undef"
12188 Cannot figure out whether your fflush(NULL) works or not.
12189 I'm assuming it doesn't (contrary to ANSI C).
12191 fflushNULL="$undef"
12195 $define|true|[yY]*)
12196 fflushNULL="$define"
12199 fflushNULL="$undef"
12202 : check explicit looping only if NULL did not work
12203 case "$fflushNULL" in
12205 : check for fflush all behaviour
12206 case "$fflushall" in
12207 '') set try -DTRY_FFLUSH_ALL $output
12208 if eval $compile; then
12210 (Now testing the other method--but note that also this may fail.)
12213 ./try$exe_ext 2>/dev/null
12214 if $test -s try.out -a "X$?" = X42; then
12215 fflushall="`$cat try.out`"
12218 $rm -f core try.core core.try.*
12219 case "$fflushall" in
12221 Whew. Flushing explicitly all the stdio streams works.
12223 fflushall="$define"
12226 Sigh. Flushing explicitly all the stdio streams doesn't work.
12231 Cannot figure out whether flushing stdio streams explicitly works or not.
12232 I'm assuming it doesn't.
12238 "$define"|true|[yY]*)
12239 fflushall="$define"
12246 *) fflushall="$undef"
12249 case "$fflushNULL$fflushall" in
12252 I cannot figure out how to flush pending stdio output.
12256 $rm -f try.* try$exe_ext
12258 : Store the full pathname to the ar program for use in the C program
12259 : Respect a hint or command line value for full_ar.
12264 : Store the full pathname to the sed program for use in the C program
12267 : see what type gids are declared as in the kernel
12269 echo "Looking for the type for group ids returned by getgid()."
12270 set gid_t gidtype xxx stdio.h sys/types.h
12274 xxx=`./findhdr sys/user.h`
12275 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12277 unsigned) dflt="$1 $2" ;;
12281 *) dflt="$gidtype";;
12284 gid_t) echo "gid_t found." ;;
12285 *) rp="What is the type for group ids returned by getgid()?"
12293 *_t) zzz="$gidtype" ;;
12296 echo "Checking the size of $zzz..." >&4
12298 #include <sys/types.h>
12301 printf("%d\n", (int)sizeof($gidtype));
12306 if eval $compile_ok; then
12310 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12313 echo "Your $zzz size is $gidsize bytes."
12318 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12324 *_t) zzz="$gidtype" ;;
12327 echo "Checking the sign of $zzz..." >&4
12329 #include <sys/types.h>
12340 if eval $compile; then
12344 echo "(I can't execute the test program--guessing unsigned.)" >&4
12348 1) echo "Your $zzz is unsigned." ;;
12349 -1) echo "Your $zzz is signed." ;;
12355 echo "(I can't compile the test program--guessing unsigned.)" >&4
12361 if $test X"$quadtype" != X; then
12363 echo "Checking how to print 64-bit integers..." >&4
12365 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12366 $cat >try.c <<'EOCP'
12367 #include <sys/types.h>
12370 int q = 12345678901;
12371 printf("%ld\n", q);
12375 if eval $compile; then
12376 yyy=`./try$exe_ext`
12379 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12380 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12381 echo "We will use %d."
12387 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12388 $cat >try.c <<'EOCP'
12389 #include <sys/types.h>
12392 long q = 12345678901;
12393 printf("%ld\n", q);
12397 if eval $compile; then
12398 yyy=`./try$exe_ext`
12401 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12402 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12403 echo "We will use %ld."
12409 if $test X"$sPRId64" = X -a X"$i_inttypes.h" = X"$define" -a X"$quadtype" = Xint64_t; then
12410 $cat >try.c <<'EOCP'
12411 #include <sys/types.h>
12412 #include <inttypes.h>
12415 int64_t q = 12345678901;
12416 printf("%" PRId64 "\n", q);
12420 if eval $compile; then
12421 yyy=`./try$exe_ext`
12424 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12425 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12426 echo "We will use the C9X style."
12432 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12433 $cat >try.c <<'EOCP'
12434 #include <sys/types.h>
12437 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12438 printf("%lld\n", q);
12442 if eval $compile; then
12443 yyy=`./try$exe_ext`
12446 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12447 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12448 echo "We will use the %lld style."
12454 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12456 #include <sys/types.h>
12459 $quadtype q = 12345678901;
12460 printf("%Ld\n", q);
12464 if eval $compile; then
12465 yyy=`./try$exe_ext`
12468 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12469 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12470 echo "We will use %Ld."
12476 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12478 #include <sys/types.h>
12481 $quadtype q = 12345678901;
12482 printf("%qd\n", q);
12486 if eval $compile; then
12487 yyy=`./try$exe_ext`
12490 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12491 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12492 echo "We will use %qd."
12498 if $test X"$sPRId64" = X; then
12499 echo "Cannot figure out how to print 64-bit integers." >&4
12507 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12508 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12510 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12511 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12517 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12519 if $test X"$ivsize" = X8; then
12520 ivdformat="$sPRId64"
12521 uvuformat="$sPRIu64"
12522 uvoformat="$sPRIo64"
12523 uvxformat="$sPRIx64"
12525 if $test X"$ivsize" = X"$longsize"; then
12531 if $test X"$ivsize" = X"$intsize"; then
12538 if $test X"$ivsize" = X"$shortsize"; then
12548 case "$ivdformat" in
12549 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12556 $echo "Checking the format string to be used for gids..." >&4
12559 -1) if $test X"$gidsize" = X"$ivsize"; then
12560 gidformat="$ivdformat"
12562 if $test X"$gidsize" = X"$longsize"; then
12565 if $test X"$gidsize" = X"$intsize"; then
12568 if $test X"$gidsize" = X"$shortsize"; then
12575 *) if $test X"$gidsize" = X"$uvsize"; then
12576 gidformat="$uvuformat"
12578 if $test X"$gidsize" = X"$longsize"; then
12581 if $test X"$gidsize" = X"$intsize"; then
12584 if $test X"$gidsize" = X"$shortsize"; then
12593 : see if getgroups exists
12594 set getgroups d_getgrps
12597 : see if setgroups exists
12598 set setgroups d_setgrps
12602 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12604 case "$d_getgrps$d_setgrps" in
12606 case "$groupstype" in
12607 '') dflt="$gidtype" ;;
12608 *) dflt="$groupstype" ;;
12611 What type of pointer is the second argument to getgroups() and setgroups()?
12612 Usually this is the same as group ids, $gidtype, but not always.
12615 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12619 *) groupstype="$gidtype";;
12623 echo "Checking if your $make program sets \$(MAKE)..." >&4
12624 case "$make_set_make" in
12626 $sed 's/^X //' > testmake.mak << 'EOF'
12628 X @echo 'maketemp="$(MAKE)"'
12630 case "`$make -f testmake.mak 2>/dev/null`" in
12631 *maketemp=*) make_set_make='#' ;;
12632 *) make_set_make="MAKE=$make" ;;
12634 $rm -f testmake.mak
12637 case "$make_set_make" in
12638 '#') echo "Yup, it does.";;
12639 *) echo "Nope, it doesn't.";;
12642 : see what type is used for mode_t
12643 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12644 set mode_t modetype int stdio.h sys/types.h
12647 : define a fucntion to check prototypes
12648 $cat > protochk <<EOSH
12651 optimize="$optimize"
12653 prototype="$prototype"
12658 $cat >> protochk <<'EOSH'
12663 while test $# -ge 2; do
12665 $define) echo "#include <$2>" >> try.c ;;
12666 literal) echo "$2" >> try.c ;;
12670 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12671 cat >> try.c <<'EOCP'
12672 #ifdef CAN_PROTOTYPE
12673 #define _(args) args
12678 echo "$foo" >> try.c
12679 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12680 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12686 $eunicefix protochk
12688 : see what type is used for size_t
12689 rp="What is the type used for the length parameter for string functions?"
12690 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12693 : check for type of arguments to gethostbyaddr.
12694 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12695 case "$d_gethbyaddr" in
12699 Checking to see what type of arguments are accepted by gethostbyaddr().
12701 hdrs="$define sys/types.h
12702 $d_socket sys/socket.h
12703 $i_niin netinet/in.h
12705 $i_unistd unistd.h"
12706 : The first arg can 'char *' or 'void *'
12707 : The second arg is some of integral type
12708 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12709 for yyy in size_t long int; do
12710 case "$netdb_host_type" in
12711 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12712 if ./protochk "$try" $hdrs; then
12713 echo "Your system accepts $xxx for the first arg."
12714 echo "...and $yyy for the second arg."
12715 netdb_host_type="$xxx"
12716 netdb_hlen_type="$yyy"
12722 : In case none of those worked, prompt the user.
12723 case "$netdb_host_type" in
12724 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12727 netdb_host_type=$ans
12728 rp='What is the type for the 2nd argument to gethostbyaddr?'
12731 netdb_hlen_type=$ans
12735 *) : no gethostbyaddr, so pick harmless defaults
12736 netdb_host_type='char *'
12737 netdb_hlen_type="$sizetype"
12740 # Remove the "const" if needed. -- but then we'll have a
12742 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12745 : check for type of argument to gethostbyname.
12746 if test "X$netdb_name_type" = X ; then
12747 case "$d_gethbyname" in
12751 Checking to see what type of argument is accepted by gethostbyname().
12753 hdrs="$define sys/types.h
12754 $d_socket sys/socket.h
12755 $i_niin netinet/in.h
12757 $i_unistd unistd.h"
12758 for xxx in "const char *" "char *"; do
12759 case "$netdb_name_type" in
12760 '') try="extern struct hostent *gethostbyname($xxx);"
12761 if ./protochk "$try" $hdrs; then
12762 echo "Your system accepts $xxx."
12763 netdb_name_type="$xxx"
12768 : In case none of those worked, prompt the user.
12769 case "$netdb_name_type" in
12770 '') rp='What is the type for the 1st argument to gethostbyname?'
12773 netdb_name_type=$ans
12777 *) : no gethostbyname, so pick harmless default
12778 netdb_name_type='char *'
12783 : check for type of 1st argument to getnetbyaddr.
12784 if test "X$netdb_net_type" = X ; then
12785 case "$d_getnbyaddr" in
12789 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12791 hdrs="$define sys/types.h
12792 $d_socket sys/socket.h
12793 $i_niin netinet/in.h
12795 $i_unistd unistd.h"
12796 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12797 case "$netdb_net_type" in
12798 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12799 if ./protochk "$try" $hdrs; then
12800 echo "Your system accepts $xxx."
12801 netdb_net_type="$xxx"
12806 : In case none of those worked, prompt the user.
12807 case "$netdb_net_type" in
12808 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12811 netdb_net_type=$ans
12815 *) : no getnetbyaddr, so pick harmless default
12816 netdb_net_type='long'
12820 : locate the preferred pager for this system
12834 '') dflt=/usr/ucb/more;;
12841 rp='What pager is used on your system?'
12845 : see what type pids are declared as in the kernel
12846 rp="What is the type of process ids on this system?"
12847 set pid_t pidtype int stdio.h sys/types.h
12850 : check for length of pointer
12854 $echo $n "Checking to see how big your pointers are...$c" >&4
12855 if test "$voidflags" -gt 7; then
12856 echo '#define VOID_PTR char *' > try.c
12858 echo '#define VOID_PTR void *' > try.c
12860 $cat >>try.c <<'EOCP'
12864 printf("%d\n", (int)sizeof(VOID_PTR));
12869 if eval $compile_ok; then
12871 $echo " $ptrsize bytes." >&4
12874 echo "(I can't seem to compile the test program. Guessing...)" >&4
12875 rp="What is the size of a pointer (in bytes)?"
12883 : see if ar generates random libraries by itself
12885 echo "Checking how to generate random libraries on your machine..." >&4
12886 echo 'int bar1() { return bar2(); }' > bar1.c
12887 echo 'int bar2() { return 2; }' > bar2.c
12888 $cat > foo.c <<'EOP'
12889 int main() { printf("%d\n", bar1()); exit(0); }
12891 $cc $ccflags -c bar1.c >/dev/null 2>&1
12892 $cc $ccflags -c bar2.c >/dev/null 2>&1
12893 $cc $ccflags -c foo.c >/dev/null 2>&1
12894 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12895 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12896 ./foobar >/dev/null 2>&1; then
12897 echo "$ar appears to generate random libraries itself."
12900 elif $ar ts bar$_a >/dev/null 2>&1 &&
12901 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12902 ./foobar >/dev/null 2>&1; then
12903 echo "a table of contents needs to be added with '$ar ts'."
12910 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12911 $test -f $ranlib || ranlib=''
12914 if $test -n "$ranlib"; then
12915 echo "your system has '$ranlib'; we'll use that."
12918 echo "your system doesn't seem to support random libraries"
12919 echo "so we'll use lorder and tsort to order the libraries."
12926 : check for type of arguments to select.
12927 case "$selecttype" in
12928 '') case "$d_select" in
12932 Checking to see what type of arguments are accepted by select().
12934 hdrs="$define sys/types.h
12935 $i_systime sys/time.h
12936 $i_sysselct sys/select.h
12937 $d_socket sys/socket.h"
12938 : The first arg can be int, unsigned, or size_t
12939 : The last arg may or may not be 'const'
12941 : void pointer has been seen but using that
12942 : breaks the selectminbits test
12943 for xxx in 'fd_set *' 'int *'; do
12944 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12945 for tmo in 'struct timeval *' 'const struct timeval *'; do
12947 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12948 if ./protochk "$try" $hdrs; then
12949 echo "Your system accepts $xxx."
12958 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12959 case "$d_fd_set" in
12960 $define) dflt="fd_set *" ;;
12969 *) : no select, so pick a harmless default
12976 : check for the select 'width'
12977 case "$selectminbits" in
12978 '') case "$d_select" in
12982 Checking to see on how many bits at a time your select() operates...
12985 #include <sys/types.h>
12987 #$i_systime I_SYS_TIME
12988 #$i_systimek I_SYS_TIME_KERNEL
12993 # ifdef I_SYS_TIME_KERNEL
12996 # include <sys/time.h>
12997 # ifdef I_SYS_TIME_KERNEL
13001 #$i_sysselct I_SYS_SELECT
13002 #ifdef I_SYS_SELECT
13003 #include <sys/select.h>
13005 #$d_socket HAS_SOCKET
13007 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13011 #define S sizeof(*(b))
13013 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13014 #define NBITS (NBYTES * 8)
13023 fp = fopen("try.c", "r");
13029 b = ($selecttype)s;
13030 for (i = 0; i < NBITS; i++)
13034 select(fd + 1, b, 0, 0, &t);
13035 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13036 printf("%d\n", i + 1);
13041 if eval $compile_ok; then
13042 selectminbits=`./try`
13043 case "$selectminbits" in
13045 Cannot figure out on how many bits at a time your select() operates.
13046 I'll play safe and guess it is 32 bits.
13052 *) bits="$selectminbits bits" ;;
13054 echo "Your select() operates on $bits at a time." >&4
13056 rp='What is the minimum number of bits your select() operates on?'
13057 case "$byteorder" in
13058 1234|12345678) dflt=32 ;;
13063 selectminbits="$val"
13067 *) : no select, so pick a harmless default
13074 : Trace out the files included by signal.h, then look for SIGxxx names.
13075 : Remove SIGARRAYSIZE used by HPUX.
13076 : Remove SIGSTKSIZE used by Linux.
13077 : Remove SIGSTKSZ used by Posix.
13078 : Remove SIGTYP void lines used by OS2.
13079 : Some cpps, like os390, dont give the file name anywhere
13080 if [ "X$fieldn" = X ]; then
13081 : Just make some guesses. We check them later.
13082 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13084 xxx=`echo '#include <signal.h>' |
13085 $cppstdin $cppminus $cppflags 2>/dev/null |
13086 $grep '^[ ]*#.*include' |
13087 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13089 : Check this list of files to be sure we have parsed the cpp output ok.
13090 : This will also avoid potentially non-existent files, such
13093 for xx in $xxx /dev/null ; do
13094 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13096 : If we have found no files, at least try signal.h
13097 case "$xxxfiles" in
13098 '') xxxfiles=`./findhdr signal.h` ;;
13101 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13102 print substr($2, 4, 20)
13104 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13105 print substr($3, 4, 20)
13107 : Append some common names just in case the awk scan failed.
13108 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13109 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13110 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13111 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13112 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13114 : generate a few handy files for later
13115 $cat > signal.c <<'EOCP'
13116 #include <sys/types.h>
13117 #include <signal.h>
13121 /* Strange style to avoid deeply-nested #if/#else/#endif */
13124 # define NSIG (_NSIG)
13130 # define NSIG (SIGMAX+1)
13136 # define NSIG (SIG_MAX+1)
13142 # define NSIG (MAXSIG+1)
13148 # define NSIG (MAX_SIG+1)
13153 # ifdef SIGARRAYSIZE
13154 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13160 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13164 /* Default to some arbitrary number that's big enough to get most
13165 of the common signals.
13171 printf("NSIG %d\n", NSIG);
13177 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13179 printf "#ifdef SIG"; printf $1; printf "\n"
13180 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13181 printf $1; printf ");\n"
13185 printf "#endif /* JUST_NSIG */\n";
13186 printf "exit(0);\n}\n";
13189 $cat >signal.awk <<'EOP'
13190 BEGIN { ndups = 0 }
13191 $1 ~ /^NSIG$/ { nsig = $2 }
13192 ($1 !~ /^NSIG$/) && (NF == 2) {
13193 if ($2 > maxsig) { maxsig = $2 }
13194 if (sig_name[$2]) {
13195 dup_name[ndups] = $1
13196 dup_num[ndups] = $2
13208 printf("NSIG %d\n", nsig);
13209 for (n = 1; n < nsig; n++) {
13211 printf("%s %d\n", sig_name[n], sig_num[n])
13214 printf("NUM%d %d\n", n, n)
13217 for (n = 0; n < ndups; n++) {
13218 printf("%s %d\n", dup_name[n], dup_num[n])
13222 $cat >signal_cmd <<EOS
13224 if $test -s signal.lst; then
13225 echo "Using your existing signal.lst file"
13230 $cat >>signal_cmd <<'EOS'
13233 if eval $compile_ok; then
13234 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13236 echo "(I can't seem be able to compile the whole test program)" >&4
13237 echo "(I'll try it in little pieces.)" >&4
13238 set signal -DJUST_NSIG
13239 if eval $compile_ok; then
13240 ./signal$_exe > signal.nsg
13243 echo "I can't seem to figure out how many signals you have." >&4
13244 echo "Guessing 50." >&4
13245 echo 'NSIG 50' > signal.nsg
13247 : Now look at all the signal names, one at a time.
13248 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13249 $cat > signal.c <<EOCP
13250 #include <sys/types.h>
13251 #include <signal.h>
13254 printf("$xx %d\n", SIG${xx});
13259 if eval $compile; then
13260 echo "SIG${xx} found."
13261 ./signal$_exe >> signal.ls1
13263 echo "SIG${xx} NOT found."
13266 if $test -s signal.ls1; then
13267 $cat signal.nsg signal.ls1 |
13268 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13272 if $test -s signal.lst; then
13275 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13276 echo 'kill -l' >signal
13277 set X `csh -f <signal`
13281 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13283 echo $@ | $tr ' ' $trnl | \
13284 $awk '{ printf "%s %d\n", $1, ++s; }
13285 END { printf "NSIG %d\n", ++s }' >signal.lst
13287 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13289 chmod a+x signal_cmd
13290 $eunicefix signal_cmd
13292 : generate list of signal names
13294 case "$sig_name_init" in
13296 *) case "$sig_num_init" in
13297 ''|*,*) doinit=yes ;;
13302 echo "Generating a list of signal names and numbers..." >&4
13304 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13305 sig_name=`$awk 'BEGIN { printf "ZERO " }
13306 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13307 sig_num=`$awk 'BEGIN { printf "0 " }
13308 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13309 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13310 !/^NSIG/ { printf "\"%s\", ", $1 }
13311 END { printf "0\n" }' signal.lst`
13312 sig_num_init=`$awk 'BEGIN { printf "0, " }
13313 !/^NSIG/ { printf "%d, ", $2}
13314 END { printf "0\n"}' signal.lst`
13317 echo "The following $sig_count signals are available:"
13319 echo $sig_name | $awk \
13320 'BEGIN { linelen = 0 }
13322 for (i = 1; i <= NF; i++) {
13323 name = "SIG" $i " "
13324 linelen = linelen + length(name)
13325 if (linelen > 70) {
13327 linelen = length(name)
13333 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13335 : see what type is used for signed size_t
13336 set ssize_t ssizetype int stdio.h sys/types.h
13339 $cat > ssize.c <<EOM
13341 #include <sys/types.h>
13342 #define Size_t $sizetype
13343 #define SSize_t $dflt
13346 if (sizeof(Size_t) == sizeof(SSize_t))
13348 else if (sizeof(Size_t) == sizeof(int))
13357 if eval $compile_ok && ./ssize > /dev/null; then
13358 ssizetype=`./ssize`
13359 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13362 Help! I can't compile and run the ssize_t test program: please enlighten me!
13363 (This is probably a misconfiguration in your system or libraries, and
13364 you really ought to fix it. Still, I'll try anyway.)
13366 I need a type that is the same size as $sizetype, but is guaranteed to
13367 be signed. Common values are ssize_t, int and long.
13370 rp="What signed type is the same size as $sizetype?"
13374 $rm -f ssize ssize.*
13376 : see what type of char stdio uses.
13378 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13379 echo "Your stdio uses unsigned chars." >&4
13380 stdchar="unsigned char"
13382 echo "Your stdio uses signed chars." >&4
13386 : see if time exists
13388 if test "X$d_time" = X -o X"$timetype" = X; then
13389 if set time val -f d_time; eval $csym; $val; then
13390 echo 'time() found.' >&4
13392 rp="What is the type returned by time() on this system?"
13393 set time_t timetype long stdio.h sys/types.h
13396 echo 'time() not found, hope that will do.' >&4
13404 : see what type uids are declared as in the kernel
13406 echo "Looking for the type for user ids returned by getuid()."
13407 set uid_t uidtype xxx stdio.h sys/types.h
13411 xxx=`./findhdr sys/user.h`
13412 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13414 unsigned) dflt="$1 $2" ;;
13418 *) dflt="$uidtype";;
13421 uid_t) echo "uid_t found." ;;
13422 *) rp="What is the type for user ids returned by getuid()?"
13430 *_t) zzz="$uidtype" ;;
13433 echo "Checking the size of $zzz..." >&4
13435 #include <sys/types.h>
13438 printf("%d\n", (int)sizeof($uidtype));
13443 if eval $compile_ok; then
13447 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13450 echo "Your $zzz size is $uidsize bytes."
13455 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13460 *_t) zzz="$uidtype" ;;
13463 echo "Checking the sign of $zzz..." >&4
13465 #include <sys/types.h>
13476 if eval $compile; then
13480 echo "(I can't execute the test program--guessing unsigned.)" >&4
13484 1) echo "Your $zzz is unsigned." ;;
13485 -1) echo "Your $zzz is signed." ;;
13491 echo "(I can't compile the test program--guessing unsigned.)" >&4
13497 $echo "Checking the format string to be used for uids..." >&4
13500 -1) if $test X"$uidsize" = X"$ivsize"; then
13501 uidformat="$ivdformat"
13503 if $test X"$uidsize" = X"$longsize"; then
13506 if $test X"$uidsize" = X"$intsize"; then
13509 if $test X"$uidsize" = X"$shortsize"; then
13516 *) if $test X"$uidsize" = X"$uvsize"; then
13517 uidformat="$uvuformat"
13519 if $test X"$uidsize" = X"$longsize"; then
13522 if $test X"$uidsize" = X"$intsize"; then
13525 if $test X"$uidsize" = X"$shortsize"; then
13534 : see if dbm.h is available
13535 : see if dbmclose exists
13536 set dbmclose d_dbmclose
13539 case "$d_dbmclose" in
13549 *) set rpcsvc/dbm.h i_rpcsvcdbm
13554 *) echo "We won't be including <dbm.h>"
13564 : see if this is a sys/file.h system
13569 : do we need to include sys/file.h ?
13573 if $h_sysfile; then
13575 echo "We'll be including <sys/file.h>." >&4
13578 echo "We won't be including <sys/file.h>." >&4
13588 : see if fcntl.h is there
13593 : see if we can include fcntl.h
13599 echo "We'll be including <fcntl.h>." >&4
13602 if $h_sysfile; then
13603 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13605 echo "We won't be including <fcntl.h>." >&4
13617 : see if locale.h is available
13618 set locale.h i_locale
13621 : see if mach cthreads are available
13622 if test "X$usethreads" = "X$define"; then
13623 set mach/cthreads.h i_machcthr
13626 i_machcthr="$undef"
13631 : see if this is a math.h system
13635 : see if this is a mntent.h system
13636 set mntent.h i_mntent
13639 : see if ndbm.h is available
13644 : see if dbm_open exists
13645 set dbm_open d_dbm_open
13647 case "$d_dbm_open" in
13650 echo "We won't be including <ndbm.h>"
13659 : see if net/errno.h is available
13661 set net/errno.h val
13664 : Unfortunately, it causes problems on some systems. Arrgh.
13667 cat > try.c <<'EOM'
13670 #include <net/errno.h>
13676 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13677 echo "We'll be including <net/errno.h>." >&4
13679 echo "We won't be including <net/errno.h>." >&4
13688 : see if netinet/tcp.h is available
13689 set netinet/tcp.h i_netinettcp
13692 : see if this is a poll.h system
13696 : get C preprocessor symbols handy
13698 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13699 echo $al $osname | $tr ' ' $trnl >Cppsym.know
13700 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13701 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13702 cat Cppsym.a Cppsym.b >> Cppsym.know
13703 $sed 's/^/_/' < Cppsym.know > Cppsym.a
13704 $sed 's/^/__/' < Cppsym.know > Cppsym.b
13705 $sed 's/\(.*\)/__\1__/' < Cppsym.know > Cppsym.c
13706 $cat Cppsym.know Cppsym.a Cppsym.b Cppsym.c | sort | uniq > Cppsym.d
13707 mv Cppsym.d Cppsym.know
13709 $cat <<EOSS >Cppsym
13717 case "\$list\$#" in
13720 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
13722 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
13725 unknown="\$unknown \$sym"
13735 echo \$* | $tr ' ' '$trnl' | $sed -e 's/\(.*\)/\\
13737 exit 0; _ _ _ _\1\\ \1\\
13740 echo "exit 1; _ _ _" >>Cppsym\$\$
13741 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _' >Cppsym2\$\$
13743 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
13749 $rm -f Cppsym\$\$ Cppsym2\$\$
13754 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
13756 : now check the C compiler for additional symbols
13757 postprocess_cc_v=''
13759 aix) postprocess_cc_v="|$tr , ' '" ;;
13766 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13769 -D*) echo "\$i" | $sed 's/^-D//';;
13770 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13775 postprocess_cc_v=''
13778 ./ccsym > ccsym1.raw
13779 if $test -s ccsym1.raw; then
13780 $sort ccsym1.raw | $uniq >ccsym.raw
13782 mv ccsym1.raw ccsym.raw
13785 $awk '/\=/ { print $0; next }
13786 { print $0"=1" }' ccsym.raw >ccsym.list
13787 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
13788 $comm -13 ccsym.true ccsym.list >ccsym.own
13789 $comm -12 ccsym.true ccsym.list >ccsym.com
13790 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13792 if $test -z ccsym.raw; then
13793 echo "Your C compiler doesn't seem to define any symbols!" >&4
13795 echo "However, your C preprocessor defines the following symbols:"
13798 cppsymbols=`$cat Cppsym.true`
13799 cppsymbols=`echo $cppsymbols`
13800 cppccsymbols="$cppsymbols"
13802 if $test -s ccsym.com; then
13803 echo "Your C compiler and pre-processor define these symbols:"
13804 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13807 cppccsymbols=`$cat ccsym.com`
13808 cppccsymbols=`echo $cppccsymbols`
13809 $test "$silent" || sleep 1
13811 if $test -s ccsym.cpp; then
13812 $test "$also" && echo " "
13813 echo "Your C pre-processor ${also}defines the following symbols:"
13814 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13816 cppsymbols=`$cat ccsym.cpp`
13817 cppsymbols=`echo $cppsymbols`
13818 $test "$silent" || sleep 1
13820 if $test -s ccsym.own; then
13821 $test "$also" && echo " "
13822 echo "Your C compiler ${also}defines the following cpp symbols:"
13823 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13824 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13825 ccsymbols=`$cat ccsym.own`
13826 ccsymbols=`echo $ccsymbols`
13827 $test "$silent" || sleep 1
13832 : see if this is a termio system
13836 if $test `./findhdr termios.h`; then
13837 set tcsetattr i_termios
13843 "$define") echo "You have POSIX termios.h... good!" >&4;;
13844 *) if ./Cppsym pyr; then
13845 case "`/bin/universe`" in
13846 ucb) if $test `./findhdr sgtty.h`; then
13848 echo "<sgtty.h> found." >&4
13850 echo "System is pyramid with BSD universe."
13851 echo "<sgtty.h> not found--you could have problems." >&4
13853 *) if $test `./findhdr termio.h`; then
13855 echo "<termio.h> found." >&4
13857 echo "System is pyramid with USG universe."
13858 echo "<termio.h> not found--you could have problems." >&4
13862 if $test `./findhdr termio.h`; then
13863 echo "<termio.h> found." >&4
13865 elif $test `./findhdr sgtty.h`; then
13866 echo "<sgtty.h> found." >&4
13869 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13872 if $test `./findhdr sgtty.h`; then
13873 echo "<sgtty.h> found." >&4
13875 elif $test `./findhdr termio.h`; then
13876 echo "<termio.h> found." >&4
13879 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13883 set i_termio; eval $setvar
13884 val=$val2; set i_sgtty; eval $setvar
13885 val=$val3; set i_termios; eval $setvar
13887 : see if this is a shadow.h system
13888 set shadow.h i_shadow
13891 : see if this is a socks.h system
13892 set socks.h i_socks
13895 : see if stdarg is available
13897 if $test `./findhdr stdarg.h`; then
13898 echo "<stdarg.h> found." >&4
13901 echo "<stdarg.h> NOT found." >&4
13905 : see if varags is available
13907 if $test `./findhdr varargs.h`; then
13908 echo "<varargs.h> found." >&4
13910 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13913 : set up the varargs testing programs
13914 $cat > varargs.c <<EOP
13916 #include <stdarg.h>
13919 #include <varargs.h>
13923 int f(char *p, ...)
13937 p = va_arg(ap, char *);
13942 $cat > varargs <<EOP
13944 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13953 : now check which varargs header should be included
13958 if `./varargs I_STDARG`; then
13960 elif `./varargs I_VARARGS`; then
13965 if `./varargs I_VARARGS`; then
13972 echo "I could not find the definition for va_dcl... You have problems..." >&4
13973 val="$undef"; set i_stdarg; eval $setvar
13974 val="$undef"; set i_varargs; eval $setvar
13979 case "$i_varhdr" in
13981 val="$define"; set i_stdarg; eval $setvar
13982 val="$undef"; set i_varargs; eval $setvar
13985 val="$undef"; set i_stdarg; eval $setvar
13986 val="$define"; set i_varargs; eval $setvar
13989 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13993 : see if stddef is available
13994 set stddef.h i_stddef
13997 : see if sys/access.h is available
13998 set sys/access.h i_sysaccess
14001 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14002 set sys/filio.h i_sysfilio
14005 if $test `./findhdr sys/ioctl.h`; then
14007 echo '<sys/ioctl.h> found.' >&4
14010 if $test $i_sysfilio = "$define"; then
14011 echo '<sys/ioctl.h> NOT found.' >&4
14013 $test $i_sgtty = "$define" && xxx="sgtty.h"
14014 $test $i_termio = "$define" && xxx="termio.h"
14015 $test $i_termios = "$define" && xxx="termios.h"
14016 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14022 : see if sys/resource.h has to be included
14023 set sys/resource.h i_sysresrc
14026 : see if sys/security.h is available
14027 set sys/security.h i_syssecrt
14030 : see if this is a sys/statvfs.h system
14031 set sys/statvfs.h i_sysstatvfs
14034 : see if this is a sys/uio.h system
14035 set sys/uio.h i_sysuio
14038 : see if this is a sys/un.h system
14039 set sys/un.h i_sysun
14042 : see if this is a syswait system
14043 set sys/wait.h i_syswait
14046 : see if this is a ustat.h system
14047 set ustat.h i_ustat
14050 : see if this is an utime system
14051 set utime.h i_utime
14054 : see if this is a values.h system
14055 set values.h i_values
14058 : see if this is a vfork system
14061 set vfork.h i_vfork
14069 : see if gdbm.h is available
14074 : see if gdbm_open exists
14075 set gdbm_open d_gdbm_open
14077 case "$d_gdbm_open" in
14080 echo "We won't be including <gdbm.h>"
14090 echo "Looking for extensions..." >&4
14091 : If we are using the old config.sh, known_extensions may contain
14092 : old or inaccurate or duplicate values.
14093 known_extensions=''
14094 nonxs_extensions=''
14095 : We do not use find because it might not be available.
14096 : We do not just use MANIFEST because the user may have dropped
14097 : some additional extensions into the source tree and expect them
14100 : Function to recursively find available extensions, ignoring DynaLoader
14101 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14105 DynaLoader|dynaload) ;;
14107 if $test -f $xxx/$xxx.xs; then
14108 known_extensions="$known_extensions $1$xxx";
14109 elif $test -f $xxx/Makefile.PL; then
14110 nonxs_extensions="$nonxs_extensions $1$xxx";
14112 if $test -d $xxx -a $# -lt 10; then
14115 eval $find_extensions;
14127 eval $find_extensions
14128 set X $nonxs_extensions
14130 nonxs_extensions="$*"
14131 set X $known_extensions
14133 known_extensions="$*"
14136 : Now see which are supported on this system.
14138 for xxx in $known_extensions ; do
14142 $define) avail_ext="$avail_ext $xxx" ;;
14145 GDBM_File|gdbm_fil)
14147 $define) avail_ext="$avail_ext $xxx" ;;
14150 NDBM_File|ndbm_fil)
14152 $define) avail_ext="$avail_ext $xxx" ;;
14155 ODBM_File|odbm_fil)
14156 case "${i_dbm}${i_rpcsvcdbm}" in
14157 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14161 case "$useposix" in
14162 true|define|y) avail_ext="$avail_ext $xxx" ;;
14166 case "$useopcode" in
14167 true|define|y) avail_ext="$avail_ext $xxx" ;;
14171 case "$d_socket" in
14172 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14176 case "$usethreads" in
14177 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14181 : XXX Do we need a useipcsysv variable here
14182 case "${d_msg}${d_sem}${d_shm}" in
14183 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14186 *) avail_ext="$avail_ext $xxx"
14195 : Now see which nonxs extensions are supported on this system.
14196 : For now assume all are.
14198 for xxx in $nonxs_extensions ; do
14200 *) nonxs_ext="$nonxs_ext $xxx"
14212 A number of extensions are supplied with $package. You may choose to
14213 compile these extensions for dynamic loading (the default), compile
14214 them into the $package executable (static loading), or not include
14215 them at all. Answer "none" to include no extensions.
14216 Note that DynaLoader is always built and need not be mentioned here.
14219 case "$dynamic_ext" in
14220 '') dflt="$avail_ext" ;;
14221 *) dflt="$dynamic_ext"
14222 # Perhaps we are reusing an old out-of-date config.sh.
14225 if test X"$dynamic_ext" != X"$avail_ext"; then
14227 NOTICE: Your previous config.sh list may be incorrect.
14228 The extensions now available to you are
14230 but the default list from your previous config.sh is
14242 rp="What extensions do you wish to load dynamically?"
14245 none) dynamic_ext=' ' ;;
14246 *) dynamic_ext="$ans" ;;
14249 case "$static_ext" in
14251 : Exclude those already listed in dynamic linking
14253 for xxx in $avail_ext; do
14254 case " $dynamic_ext " in
14256 *) dflt="$dflt $xxx" ;;
14263 *) dflt="$static_ext"
14270 rp="What extensions do you wish to load statically?"
14273 none) static_ext=' ' ;;
14274 *) static_ext="$ans" ;;
14279 A number of extensions are supplied with $package. Answer "none"
14280 to include no extensions.
14281 Note that DynaLoader is always built and need not be mentioned here.
14284 case "$static_ext" in
14285 '') dflt="$avail_ext" ;;
14286 *) dflt="$static_ext"
14287 # Perhaps we are reusing an old out-of-date config.sh.
14290 if test X"$static_ext" != X"$avail_ext"; then
14292 NOTICE: Your previous config.sh list may be incorrect.
14293 The extensions now available to you are
14295 but the default list from your previous config.sh is
14304 : Exclude those that are not xs extensions
14308 rp="What extensions do you wish to include?"
14311 none) static_ext=' ' ;;
14312 *) static_ext="$ans" ;;
14317 set X $dynamic_ext $static_ext $nonxs_ext
14321 : Remove build directory name from cppstdin so it can be used from
14322 : either the present location or the final installed location.
14324 : Get out of the UU directory to get correct path name.
14326 case "$cppstdin" in
14328 echo "Stripping down cppstdin path name"
14334 : end of configuration questions
14336 echo "End of configuration questions."
14339 : back to where it started
14340 if test -d ../UU; then
14344 : configuration may be patched via a 'config.over' file
14345 if $test -f config.over; then
14348 rp='I see a config.over file. Do you wish to load it?'
14351 n*) echo "OK, I'll ignore it.";;
14353 echo "Configuration override changes have been loaded."
14358 : in case they want portability, strip down executable paths
14359 case "$d_portable" in
14362 echo "Stripping down executable paths..." >&4
14363 for file in $loclist $trylist; do
14365 eval $file=`basename $temp`
14370 : create config.sh file
14372 echo "Creating config.sh..." >&4
14373 $spitshell <<EOT >config.sh
14376 # This file was produced by running the Configure script. It holds all the
14377 # definitions figured out by Configure. Should you modify one of these values,
14378 # do not forget to propagate your changes by running "Configure -der". You may
14379 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14382 # Package name : $package
14383 # Source directory : $src
14384 # Configuration time: $cf_time
14385 # Configured by : $cf_by
14386 # Target system : $myuname
14396 Revision='$Revision'
14403 alignbytes='$alignbytes'
14404 ansi2knr='$ansi2knr'
14405 aphostname='$aphostname'
14406 api_revision='$api_revision'
14407 api_subversion='$api_subversion'
14408 api_version='$api_version'
14409 api_versionstring='$api_versionstring'
14412 archlibexp='$archlibexp'
14413 archname64='$archname64'
14414 archname='$archname'
14415 archobjs='$archobjs'
14420 bincompat5005='$bincompat5005'
14424 byteorder='$byteorder'
14426 castflags='$castflags'
14429 cccdlflags='$cccdlflags'
14430 ccdlflags='$ccdlflags'
14432 ccsymbols='$ccsymbols'
14434 cf_email='$cf_email'
14436 charsize='$charsize'
14440 clocktype='$clocktype'
14442 compress='$compress'
14443 contains='$contains'
14447 cpp_stuff='$cpp_stuff'
14448 cppccsymbols='$cppccsymbols'
14449 cppflags='$cppflags'
14451 cppminus='$cppminus'
14453 cppstdin='$cppstdin'
14454 cppsymbols='$cppsymbols'
14455 crosscompile='$crosscompile'
14456 cryptlib='$cryptlib'
14458 d_Gconvert='$d_Gconvert'
14459 d_PRIEldbl='$d_PRIEldbl'
14460 d_PRIFldbl='$d_PRIFldbl'
14461 d_PRIGldbl='$d_PRIGldbl'
14462 d_PRIX64='$d_PRIX64'
14463 d_PRId64='$d_PRId64'
14464 d_PRIeldbl='$d_PRIeldbl'
14465 d_PRIfldbl='$d_PRIfldbl'
14466 d_PRIgldbl='$d_PRIgldbl'
14467 d_PRIi64='$d_PRIi64'
14468 d_PRIo64='$d_PRIo64'
14469 d_PRIu64='$d_PRIu64'
14470 d_PRIx64='$d_PRIx64'
14471 d_access='$d_access'
14472 d_accessx='$d_accessx'
14474 d_archlib='$d_archlib'
14477 d_attribut='$d_attribut'
14480 d_bincompat5005='$d_bincompat5005'
14482 d_bsdgetpgrp='$d_bsdgetpgrp'
14483 d_bsdsetpgrp='$d_bsdsetpgrp'
14485 d_casti32='$d_casti32'
14486 d_castneg='$d_castneg'
14487 d_charvspr='$d_charvspr'
14489 d_chroot='$d_chroot'
14490 d_chsize='$d_chsize'
14491 d_closedir='$d_closedir'
14495 d_cuserid='$d_cuserid'
14496 d_dbl_dig='$d_dbl_dig'
14497 d_difftime='$d_difftime'
14498 d_dirnamlen='$d_dirnamlen'
14499 d_dlerror='$d_dlerror'
14500 d_dlopen='$d_dlopen'
14501 d_dlsymun='$d_dlsymun'
14502 d_dosuid='$d_dosuid'
14503 d_drand48proto='$d_drand48proto'
14505 d_eaccess='$d_eaccess'
14506 d_endgrent='$d_endgrent'
14507 d_endhent='$d_endhent'
14508 d_endnent='$d_endnent'
14509 d_endpent='$d_endpent'
14510 d_endpwent='$d_endpwent'
14511 d_endsent='$d_endsent'
14512 d_endspent='$d_endspent'
14513 d_eofnblk='$d_eofnblk'
14514 d_eunice='$d_eunice'
14515 d_fchmod='$d_fchmod'
14516 d_fchown='$d_fchown'
14518 d_fd_macros='$d_fd_macros'
14519 d_fd_set='$d_fd_set'
14520 d_fds_bits='$d_fds_bits'
14521 d_fgetpos='$d_fgetpos'
14522 d_flexfnam='$d_flexfnam'
14525 d_fpathconf='$d_fpathconf'
14526 d_fpos64_t='$d_fpos64_t'
14527 d_fs_data_s='$d_fs_data_s'
14528 d_fseeko='$d_fseeko'
14529 d_fsetpos='$d_fsetpos'
14530 d_fstatfs='$d_fstatfs'
14531 d_fstatvfs='$d_fstatvfs'
14532 d_ftello='$d_ftello'
14534 d_getgrent='$d_getgrent'
14535 d_getgrps='$d_getgrps'
14536 d_gethbyaddr='$d_gethbyaddr'
14537 d_gethbyname='$d_gethbyname'
14538 d_gethent='$d_gethent'
14539 d_gethname='$d_gethname'
14540 d_gethostprotos='$d_gethostprotos'
14541 d_getlogin='$d_getlogin'
14542 d_getmnt='$d_getmnt'
14543 d_getmntent='$d_getmntent'
14544 d_getnbyaddr='$d_getnbyaddr'
14545 d_getnbyname='$d_getnbyname'
14546 d_getnent='$d_getnent'
14547 d_getnetprotos='$d_getnetprotos'
14548 d_getpbyname='$d_getpbyname'
14549 d_getpbynumber='$d_getpbynumber'
14550 d_getpent='$d_getpent'
14551 d_getpgid='$d_getpgid'
14552 d_getpgrp2='$d_getpgrp2'
14553 d_getpgrp='$d_getpgrp'
14554 d_getppid='$d_getppid'
14555 d_getprior='$d_getprior'
14556 d_getprotoprotos='$d_getprotoprotos'
14557 d_getpwent='$d_getpwent'
14558 d_getsbyname='$d_getsbyname'
14559 d_getsbyport='$d_getsbyport'
14560 d_getsent='$d_getsent'
14561 d_getservprotos='$d_getservprotos'
14562 d_getspent='$d_getspent'
14563 d_getspnam='$d_getspnam'
14564 d_gettimeod='$d_gettimeod'
14565 d_gnulibc='$d_gnulibc'
14566 d_grpasswd='$d_grpasswd'
14567 d_hasmntopt='$d_hasmntopt'
14570 d_inetaton='$d_inetaton'
14571 d_int64t='$d_int64t'
14572 d_isascii='$d_isascii'
14573 d_killpg='$d_killpg'
14574 d_lchown='$d_lchown'
14575 d_ldbl_dig='$d_ldbl_dig'
14577 d_locconv='$d_locconv'
14579 d_longdbl='$d_longdbl'
14580 d_longlong='$d_longlong'
14583 d_mbstowcs='$d_mbstowcs'
14584 d_mbtowc='$d_mbtowc'
14585 d_memchr='$d_memchr'
14586 d_memcmp='$d_memcmp'
14587 d_memcpy='$d_memcpy'
14588 d_memmove='$d_memmove'
14589 d_memset='$d_memset'
14591 d_mkfifo='$d_mkfifo'
14592 d_mktime='$d_mktime'
14594 d_msg_ctrunc='$d_msg_ctrunc'
14595 d_msg_dontroute='$d_msg_dontroute'
14596 d_msg_oob='$d_msg_oob'
14597 d_msg_peek='$d_msg_peek'
14598 d_msg_proxy='$d_msg_proxy'
14599 d_msgctl='$d_msgctl'
14600 d_msgget='$d_msgget'
14601 d_msgrcv='$d_msgrcv'
14602 d_msgsnd='$d_msgsnd'
14603 d_mymalloc='$d_mymalloc'
14605 d_nv_preserves_uv='$d_nv_preserves_uv'
14606 d_off64_t='$d_off64_t'
14607 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14608 d_oldpthreads='$d_oldpthreads'
14609 d_oldsock='$d_oldsock'
14611 d_pathconf='$d_pathconf'
14613 d_phostname='$d_phostname'
14616 d_portable='$d_portable'
14617 d_pthread_yield='$d_pthread_yield'
14619 d_pwchange='$d_pwchange'
14620 d_pwclass='$d_pwclass'
14621 d_pwcomment='$d_pwcomment'
14622 d_pwexpire='$d_pwexpire'
14623 d_pwgecos='$d_pwgecos'
14624 d_pwpasswd='$d_pwpasswd'
14625 d_pwquota='$d_pwquota'
14627 d_readdir='$d_readdir'
14628 d_readlink='$d_readlink'
14629 d_rename='$d_rename'
14630 d_rewinddir='$d_rewinddir'
14632 d_safebcpy='$d_safebcpy'
14633 d_safemcpy='$d_safemcpy'
14634 d_sanemcmp='$d_sanemcmp'
14635 d_sched_yield='$d_sched_yield'
14636 d_scm_rights='$d_scm_rights'
14637 d_seekdir='$d_seekdir'
14638 d_select='$d_select'
14640 d_semctl='$d_semctl'
14641 d_semctl_semid_ds='$d_semctl_semid_ds'
14642 d_semctl_semun='$d_semctl_semun'
14643 d_semget='$d_semget'
14645 d_setegid='$d_setegid'
14646 d_seteuid='$d_seteuid'
14647 d_setgrent='$d_setgrent'
14648 d_setgrps='$d_setgrps'
14649 d_sethent='$d_sethent'
14650 d_setlinebuf='$d_setlinebuf'
14651 d_setlocale='$d_setlocale'
14652 d_setnent='$d_setnent'
14653 d_setpent='$d_setpent'
14654 d_setpgid='$d_setpgid'
14655 d_setpgrp2='$d_setpgrp2'
14656 d_setpgrp='$d_setpgrp'
14657 d_setprior='$d_setprior'
14658 d_setpwent='$d_setpwent'
14659 d_setregid='$d_setregid'
14660 d_setresgid='$d_setresgid'
14661 d_setresuid='$d_setresuid'
14662 d_setreuid='$d_setreuid'
14663 d_setrgid='$d_setrgid'
14664 d_setruid='$d_setruid'
14665 d_setsent='$d_setsent'
14666 d_setsid='$d_setsid'
14667 d_setspent='$d_setspent'
14668 d_setvbuf='$d_setvbuf'
14672 d_shmatprototype='$d_shmatprototype'
14673 d_shmctl='$d_shmctl'
14675 d_shmget='$d_shmget'
14676 d_sigaction='$d_sigaction'
14677 d_sigsetjmp='$d_sigsetjmp'
14678 d_socket='$d_socket'
14679 d_sockpair='$d_sockpair'
14681 d_statblks='$d_statblks'
14682 d_statfs_f_flags='$d_statfs_f_flags'
14683 d_statfs_s='$d_statfs_s'
14684 d_statvfs='$d_statvfs'
14685 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14686 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14687 d_stdio_stream_array='$d_stdio_stream_array'
14688 d_stdiobase='$d_stdiobase'
14689 d_stdstdio='$d_stdstdio'
14690 d_strchr='$d_strchr'
14691 d_strcoll='$d_strcoll'
14692 d_strctcpy='$d_strctcpy'
14693 d_strerrm='$d_strerrm'
14694 d_strerror='$d_strerror'
14695 d_strtod='$d_strtod'
14696 d_strtol='$d_strtol'
14697 d_strtold='$d_strtold'
14698 d_strtoll='$d_strtoll'
14699 d_strtoul='$d_strtoul'
14700 d_strtoull='$d_strtoull'
14701 d_strtouq='$d_strtouq'
14702 d_strxfrm='$d_strxfrm'
14703 d_suidsafe='$d_suidsafe'
14704 d_symlink='$d_symlink'
14705 d_syscall='$d_syscall'
14706 d_sysconf='$d_sysconf'
14707 d_sysernlst='$d_sysernlst'
14708 d_syserrlst='$d_syserrlst'
14709 d_system='$d_system'
14710 d_tcgetpgrp='$d_tcgetpgrp'
14711 d_tcsetpgrp='$d_tcsetpgrp'
14712 d_telldir='$d_telldir'
14713 d_telldirproto='$d_telldirproto'
14716 d_truncate='$d_truncate'
14717 d_tzname='$d_tzname'
14720 d_union_semun='$d_union_semun'
14722 d_vendorbin='$d_vendorbin'
14723 d_vendorlib='$d_vendorlib'
14725 d_void_closedir='$d_void_closedir'
14726 d_voidsig='$d_voidsig'
14727 d_voidtty='$d_voidtty'
14728 d_volatile='$d_volatile'
14729 d_vprintf='$d_vprintf'
14731 d_waitpid='$d_waitpid'
14732 d_wcstombs='$d_wcstombs'
14733 d_wctomb='$d_wctomb'
14736 db_hashtype='$db_hashtype'
14737 db_prefixtype='$db_prefixtype'
14738 defvoidused='$defvoidused'
14739 direntrytype='$direntrytype'
14742 doublesize='$doublesize'
14744 dynamic_ext='$dynamic_ext'
14750 eunicefix='$eunicefix'
14753 extensions='$extensions'
14754 fflushNULL='$fflushNULL'
14755 fflushall='$fflushall'
14757 firstmakefile='$firstmakefile'
14759 fpossize='$fpossize'
14760 fpostype='$fpostype'
14761 freetype='$freetype'
14763 full_csh='$full_csh'
14764 full_sed='$full_sed'
14765 gccversion='$gccversion'
14766 gidformat='$gidformat'
14772 groupcat='$groupcat'
14773 groupstype='$groupstype'
14776 h_sysfile='$h_sysfile'
14788 i_arpainet='$i_arpainet'
14789 i_bsdioctl='$i_bsdioctl'
14792 i_dirent='$i_dirent'
14799 i_inttypes='$i_inttypes'
14800 i_limits='$i_limits'
14801 i_locale='$i_locale'
14802 i_machcthr='$i_machcthr'
14803 i_malloc='$i_malloc'
14805 i_memory='$i_memory'
14806 i_mntent='$i_mntent'
14809 i_neterrno='$i_neterrno'
14810 i_netinettcp='$i_netinettcp'
14813 i_pthread='$i_pthread'
14815 i_rpcsvcdbm='$i_rpcsvcdbm'
14818 i_shadow='$i_shadow'
14820 i_stdarg='$i_stdarg'
14821 i_stddef='$i_stddef'
14822 i_stdlib='$i_stdlib'
14823 i_string='$i_string'
14824 i_sysaccess='$i_sysaccess'
14825 i_sysdir='$i_sysdir'
14826 i_sysfile='$i_sysfile'
14827 i_sysfilio='$i_sysfilio'
14829 i_sysioctl='$i_sysioctl'
14830 i_sysmount='$i_sysmount'
14831 i_sysndir='$i_sysndir'
14832 i_sysparam='$i_sysparam'
14833 i_sysresrc='$i_sysresrc'
14834 i_syssecrt='$i_syssecrt'
14835 i_sysselct='$i_sysselct'
14836 i_syssockio='$i_syssockio'
14837 i_sysstat='$i_sysstat'
14838 i_sysstatfs='$i_sysstatfs'
14839 i_sysstatvfs='$i_sysstatvfs'
14840 i_systime='$i_systime'
14841 i_systimek='$i_systimek'
14842 i_systimes='$i_systimes'
14843 i_systypes='$i_systypes'
14844 i_sysuio='$i_sysuio'
14846 i_sysvfs='$i_sysvfs'
14847 i_syswait='$i_syswait'
14848 i_termio='$i_termio'
14849 i_termios='$i_termios'
14851 i_unistd='$i_unistd'
14854 i_values='$i_values'
14855 i_varargs='$i_varargs'
14856 i_varhdr='$i_varhdr'
14858 ignore_versioned_solibs='$ignore_versioned_solibs'
14859 inc_version_list='$inc_version_list'
14860 inc_version_list_init='$inc_version_list_init'
14863 installarchlib='$installarchlib'
14864 installbin='$installbin'
14865 installman1dir='$installman1dir'
14866 installman3dir='$installman3dir'
14867 installprefix='$installprefix'
14868 installprefixexp='$installprefixexp'
14869 installprivlib='$installprivlib'
14870 installscript='$installscript'
14871 installsitearch='$installsitearch'
14872 installsitebin='$installsitebin'
14873 installsitelib='$installsitelib'
14874 installstyle='$installstyle'
14875 installusrbinperl='$installusrbinperl'
14876 installvendorbin='$installvendorbin'
14877 installvendorlib='$installvendorlib'
14879 ivdformat='$ivdformat'
14882 known_extensions='$known_extensions'
14886 lddlflags='$lddlflags'
14888 ldlibpthname='$ldlibpthname'
14895 libswanted='$libswanted'
14901 locincpth='$locincpth'
14902 loclibpth='$loclibpth'
14903 longdblsize='$longdblsize'
14904 longlongsize='$longlongsize'
14905 longsize='$longsize'
14909 lseeksize='$lseeksize'
14910 lseektype='$lseektype'
14914 make_set_make='$make_set_make'
14915 mallocobj='$mallocobj'
14916 mallocsrc='$mallocsrc'
14917 malloctype='$malloctype'
14919 man1direxp='$man1direxp'
14922 man3direxp='$man3direxp'
14925 mips_type='$mips_type'
14928 modetype='$modetype'
14930 multiarch='$multiarch'
14932 myarchname='$myarchname'
14933 mydomain='$mydomain'
14934 myhostname='$myhostname'
14937 netdb_hlen_type='$netdb_hlen_type'
14938 netdb_host_type='$netdb_host_type'
14939 netdb_name_type='$netdb_name_type'
14940 netdb_net_type='$netdb_net_type'
14943 nm_so_opt='$nm_so_opt'
14944 nonxs_ext='$nonxs_ext'
14948 o_nonblock='$o_nonblock'
14950 old_pthread_create_joinable='$old_pthread_create_joinable'
14951 optimize='$optimize'
14952 orderlib='$orderlib'
14958 patchlevel='$patchlevel'
14959 path_sep='$path_sep'
14961 perladmin='$perladmin'
14962 perlpath='$perlpath'
14964 phostname='$phostname'
14970 prefixexp='$prefixexp'
14972 privlibexp='$privlibexp'
14973 prototype='$prototype'
14975 quadkind='$quadkind'
14976 quadtype='$quadtype'
14977 randbits='$randbits'
14978 randfunc='$randfunc'
14979 randseedtype='$randseedtype'
14981 rd_nodata='$rd_nodata'
14985 sPRIEldbl='$sPRIEldbl'
14986 sPRIFldbl='$sPRIFldbl'
14987 sPRIGldbl='$sPRIGldbl'
14990 sPRIeldbl='$sPRIeldbl'
14991 sPRIfldbl='$sPRIfldbl'
14992 sPRIgldbl='$sPRIgldbl'
14997 sched_yield='$sched_yield'
14998 scriptdir='$scriptdir'
14999 scriptdirexp='$scriptdirexp'
15001 seedfunc='$seedfunc'
15002 selectminbits='$selectminbits'
15003 selecttype='$selecttype'
15004 sendmail='$sendmail'
15007 sharpbang='$sharpbang'
15008 shmattype='$shmattype'
15009 shortsize='$shortsize'
15012 sig_count='$sig_count'
15013 sig_name='$sig_name'
15014 sig_name_init='$sig_name_init'
15016 sig_num_init='$sig_num_init'
15017 signal_t='$signal_t'
15018 sitearch='$sitearch'
15019 sitearchexp='$sitearchexp'
15021 sitebinexp='$sitebinexp'
15023 sitelibexp='$sitelibexp'
15024 siteprefix='$siteprefix'
15025 siteprefixexp='$siteprefixexp'
15026 sizetype='$sizetype'
15031 sockethdr='$sockethdr'
15032 socketlib='$socketlib'
15034 spackage='$spackage'
15035 spitshell='$spitshell'
15038 ssizetype='$ssizetype'
15039 startperl='$startperl'
15041 static_ext='$static_ext'
15043 stdio_base='$stdio_base'
15044 stdio_bufsiz='$stdio_bufsiz'
15045 stdio_cnt='$stdio_cnt'
15046 stdio_filbuf='$stdio_filbuf'
15047 stdio_ptr='$stdio_ptr'
15048 stdio_stream_array='$stdio_stream_array'
15051 subversion='$subversion'
15058 timeincl='$timeincl'
15059 timetype='$timetype'
15072 uidformat='$uidformat'
15078 uquadtype='$uquadtype'
15079 use5005threads='$use5005threads'
15080 use64bits='$use64bits'
15082 useithreads='$useithreads'
15083 uselargefiles='$uselargefiles'
15084 uselongdouble='$uselongdouble'
15085 uselonglong='$uselonglong'
15086 usemorebits='$usemorebits'
15087 usemultiplicity='$usemultiplicity'
15088 usemymalloc='$usemymalloc'
15090 useopcode='$useopcode'
15091 useperlio='$useperlio'
15092 useposix='$useposix'
15094 useshrplib='$useshrplib'
15095 usesocks='$usesocks'
15096 usethreads='$usethreads'
15097 usevendorprefix='$usevendorprefix'
15098 usevfork='$usevfork'
15101 uvoformat='$uvoformat'
15104 uvuformat='$uvuformat'
15105 uvxformat='$uvxformat'
15106 vendorbin='$vendorbin'
15107 vendorbinexp='$vendorbinexp'
15108 vendorlib='$vendorlib'
15109 vendorlibexp='$vendorlibexp'
15110 vendorprefix='$vendorprefix'
15111 vendorprefixexp='$vendorprefixexp'
15114 voidflags='$voidflags'
15120 : Add in command line options if available
15121 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15123 : add special variables
15124 $test -f $src/patchlevel.h && \
15125 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15126 echo "CONFIGDOTSH=true" >>config.sh
15128 : propagate old symbols
15129 if $test -f UU/config.sh; then
15130 <UU/config.sh sort | uniq >UU/oldconfig.sh
15131 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15132 sort | uniq -u >UU/oldsyms
15133 set X `cat UU/oldsyms`
15139 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15141 echo "# Variables propagated from previous config.sh file." >>config.sh
15142 for sym in `cat UU/oldsyms`; do
15143 echo " Propagating $hint variable "'$'"$sym..."
15144 eval 'tmp="$'"${sym}"'"'
15146 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15152 : Finish up by extracting the .SH files
15166 If you'd like to make any changes to the config.sh file before I begin
15167 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15170 rp="Press return or use a shell escape to edit config.sh:"
15175 *) : in case they cannot read
15176 sh 1>&4 -c "$ans";;
15181 : if this fails, just run all the .SH files by hand
15188 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15195 Now you need to generate make dependencies by running "$make depend".
15196 You might prefer to run it in background: "$make depend > makedepend.out &"
15197 It can take a while, so you might not want to run it right now.
15202 rp="Run $make depend now?"
15206 $make depend && echo "Now you must run a $make."
15209 echo "You must run '$make depend' then '$make'."
15212 elif test -f [Mm]akefile; then
15214 echo "Now you must run a $make."
15219 if $test -f Policy.sh; then
15222 If you compile $package on a different machine or from a different object
15223 directory, copy the Policy.sh file from this object directory to the
15224 new one before you run Configure -- this will help you with most of
15225 the policy defaults.
15229 if $test -f config.msg; then
15230 echo "Hmm. I also noted the following information while running:"
15232 $cat config.msg >&4
15235 $rm -f kit*isdone ark*isdone