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 Mon Sep 20 12:12:09 EET DST 1999 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 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
441 d_old_pthread_create_joinable=''
442 old_pthread_create_joinable=''
691 ignore_versioned_solibs=''
812 d_stdio_stream_array=''
813 stdio_stream_array=''
849 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
852 : We must find out about Eunice early
854 if test -f /etc/unixtovms; then
855 eunicefix=/etc/unixtovms
857 if test -f /etc/unixtovms.exe; then
858 eunicefix=/etc/unixtovms.exe
862 : Possible local include directories to search.
863 : Set locincpth to "" in a hint file to defeat local include searches.
864 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
865 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
867 : no include file wanted by default
870 : list of known cpp symbols, sorted alphabetically
871 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
872 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
873 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
874 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
875 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
876 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
877 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
878 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
879 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
880 al="$al VMS Xenix286"
881 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
882 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
883 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
884 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
885 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
886 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
887 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
888 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
889 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
890 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
891 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
892 al="$al __SVR4_2__ __UMAXV__"
893 al="$al ____386BSD____ __alpha __alpha__ __amiga"
894 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
895 al="$al __host_mips__"
896 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
897 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
898 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
899 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
900 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
901 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
902 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
903 al="$al __mc88100 __mc88100__ __mips __mips__"
904 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
905 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
906 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
907 al="$al _host_mips _mips _unix"
908 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
909 al="$al apollo ardent att386 att3b"
910 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
911 al="$al cadmus clipper concurrent convex cray ctix"
912 al="$al dmert encore gcos gcx gimpel gould"
913 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
914 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
915 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
916 al="$al i186 i286 i386 i486 i8086"
917 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
918 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
919 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
920 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
921 al="$al mc88000 mc88100 merlin mert mips mvs n16"
922 al="$al ncl_el ncl_mr"
923 al="$al news1500 news1700 news1800 news1900 news3700"
924 al="$al news700 news800 news900 ns16000 ns32000"
925 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
926 al="$al parisc pc532 pdp11 plexus posix pyr"
927 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
928 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
929 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
930 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
931 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
932 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
935 : Trailing extension. Override this in a hint file, if needed.
937 : Extra object files, if any, needed on this platform.
940 : change the next line if compiling for Xenix/286 on Xenix/386
941 xlibpth='/usr/lib/386 /lib/386'
943 : Possible local library directories to search.
944 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
945 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
947 : general looking path for locating libraries
948 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
949 glibpth="$glibpth /lib /usr/lib $xlibpth"
950 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
951 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
953 : Private path used by Configure to find libraries. Its value
954 : is prepended to libpth. This variable takes care of special
955 : machines, like the mips. Usually, it should be empty.
958 : default library list
960 : some systems want to use only the non-versioned libso:s
961 ignore_versioned_solibs=''
962 : full support for void wanted by default
965 : set useposix=false in your hint file to disable the POSIX extension.
967 : set useopcode=false in your hint file to disable the Opcode extension.
969 : set usemultiplicity on the Configure command line to enable multiplicity.
970 : set usesocks on the Configure command line to enable socks.
971 : set usethreads on the Configure command line to enable threads.
972 : List of libraries we want.
973 : If anyone needs -lnet, put it in a hint file.
974 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
975 libswanted="$libswanted dld ld sun m c cposix posix"
976 libswanted="$libswanted ndir dir crypt sec"
977 libswanted="$libswanted ucb bsd BSD PW x"
978 : We probably want to search /usr/shlib before most other libraries.
979 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
980 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
981 glibpth="/usr/shlib $glibpth"
982 : Do not use vfork unless overridden by a hint file.
985 : Find the basic shell for Bourne shell scripts
989 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
992 if test -f "$xxx"; then
995 : Build up a list and do a single loop so we can 'break' out.
996 pth=`echo $PATH | sed -e "s/$p_/ /g"`
997 for xxx in sh bash ksh pdksh ash; do
999 try="$try ${p}/${xxx}"
1003 if test -f "$xxx"; then
1006 elif test -f "$xxx.exe"; then
1017 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1019 Usually it's in /bin/sh. How did you even get this far?
1020 Please contact me (Perl Maintainers) at perlbug@perl.com and
1021 we'll try to straighten this all out.
1027 : see if sh knows # comments
1028 if `$sh -c '#' >/dev/null 2>&1`; then
1032 test -f $xcat || xcat=/usr/bin/cat
1037 if test -s today; then
1040 echo "#! $xcat" > try
1044 if test -s today; then
1052 echo "Your $sh doesn't grok # comments--I will strip them later on."
1055 echo "exec grep -v '^[ ]*#'" >spitshell
1057 $eunicefix spitshell
1058 spitshell=`pwd`/spitshell
1060 echo "I presume that if # doesn't work, #! won't work either!"
1065 : figure out how to guarantee sh startup
1067 '') startsh=${sharpbang}${sh} ;;
1079 : echo "Yup, it does."
1081 echo "Hmm... '$startsh' does not guarantee sh startup..."
1082 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1087 : Save command line options in file UU/cmdline.opt for later use in
1088 : generating config.sh.
1089 cat > cmdline.opt <<EOSH
1090 # Configure command line arguments.
1097 cat >>cmdline.opt <<EOSH
1098 config_arg$argn='$arg'
1100 argn=`expr $argn + 1`
1103 : produce awk script to parse command line options
1104 cat >options.awk <<'EOF'
1106 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1108 len = length(optstr);
1109 for (i = 1; i <= len; i++) {
1110 c = substr(optstr, i, 1);
1111 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1122 if (substr(str, 1, 1) != "-") {
1123 printf("'%s'\n", str);
1127 for (i = 2; i <= len; i++) {
1128 c = substr(str, i, 1);
1130 printf("-%s\n", substr(str, i));
1136 printf("'%s'\n", substr(str, i + 1));
1149 : process the command line options
1150 set X `for arg in "$@"; do echo "X$arg"; done |
1151 sed -e s/X// | awk -f options.awk`
1156 : set up default values
1166 rm -f optdef.sh posthint.sh
1167 cat >optdef.sh <<EOS
1173 while test $# -gt 0; do
1175 -d) shift; fastread=yes;;
1176 -e) shift; alldone=cont;;
1180 if test -r "$1"; then
1183 echo "$me: cannot read config file $1." >&2
1188 -h) shift; error=true;;
1189 -r) shift; reuseval=true;;
1190 -s) shift; silent=true; realsilent=true;;
1191 -E) shift; alldone=exit;;
1192 -K) shift; knowitall=true;;
1193 -O) shift; override=true;;
1194 -S) shift; silent=true; extractsh=true;;
1199 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1200 echo "$me: ignoring -D $1" >&2
1203 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1204 *) echo "$1='define'" >> optdef.sh;;
1211 *=) echo "$1" >> optdef.sh;;
1213 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1214 echo "$me: ignoring -U $1" >&2
1216 *) echo "$1='undef'" >> optdef.sh;;
1225 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1226 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1235 *=*) zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1236 yyy=`echo $yyy|sed 's!=.*!!'`
1244 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh
1247 echo "$yyy=''" >> posthint.sh
1253 echo "$yyy='$zzz'" >> posthint.sh
1256 echo "eval \"$yyy=$zzz\"" >> posthint.sh
1259 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh
1265 echo "$yyy=$zzz" >> posthint.sh
1267 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2
1271 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1274 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1282 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1283 [-U symbol] [-U symbol=] [-A command:symbol...]
1284 -d : use defaults for all answers.
1285 -e : go on without questioning past the production of config.sh.
1286 -f : specify an alternate default configuration file.
1287 -h : print this help message and exit (with an error status).
1288 -r : reuse C symbols value if possible (skips costly nm extraction).
1289 -s : silent mode, only echoes questions and essential information.
1290 -D : define symbol to have some value:
1291 -D symbol symbol gets the value 'define'
1292 -D symbol=value symbol gets the value 'value'
1293 -E : stop at the end of questions, after having produced config.sh.
1294 -K : do not use unless you know what you are doing.
1295 -O : let -D and -U override definitions from loaded configuration file.
1296 -S : perform variable substitutions on all .SH files (can mix with -f)
1297 -U : undefine symbol:
1298 -U symbol symbol gets the value 'undef'
1299 -U symbol= symbol gets completely empty
1300 -A : manipulate symbol after the platform specific hints have been applied:
1301 -A append:symbol=value append value to symbol
1302 -A define:symbol=value define symbol to have value
1303 -A symbol=value define symbol to have value
1304 -A clear:symbol define symbol to be ''
1305 -A define:symbol define symbol to be 'define'
1306 -A eval:symbol=value define symbol to be eval of value
1307 -A prepend:symbol=value prepend value to symbol
1308 -A undef:symbol define symbol to be 'undef'
1309 -A undef:symbol= define symbol to be ''
1310 -V : print version number and exit (with a zero status).
1317 case "$fastread$alldone" in
1320 if test ! -t 0; then
1321 echo "Say 'sh Configure', not 'sh <Configure'"
1329 true) exec 1>/dev/null;;
1332 : run the defines and the undefines, if any, but leave the file out there...
1335 : create the posthint manipulation script and leave the file out there...
1341 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1342 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1343 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1344 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1345 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1348 : Some greps do not return status, grrr.
1349 echo "grimblepritz" >grimble
1350 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1352 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1358 : the following should work in any shell
1362 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1363 cat >contains <<'EOSS'
1364 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1369 : Find the path to the source tree
1372 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1375 *) src=`cd ../$src && pwd` ;;
1388 if test -f $rsrc/Configure && \
1389 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1391 : found it, so we are ok.
1394 for src in . .. ../.. ../../.. ../../../..; do
1395 if test -f ../$src/Configure && \
1396 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1407 Sorry, I can't seem to locate the source dir for $package. Please start
1408 Configure with an explicit path -- i.e. /some/path/Configure.
1416 echo "Sources for $package found in \"$src\"." >&4
1420 : script used to extract .SH files with variable substitutions
1421 cat >extract <<'EOS'
1423 echo "Doing variable substitutions on .SH files..."
1424 if test -f $src/MANIFEST; then
1425 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1427 echo "(Looking for .SH files under the source directory.)"
1428 set x `(cd $src; find . -name "*.SH" -print)`
1432 0) set x `(cd $src; echo *.SH)`; shift;;
1434 if test ! -f $src/$1; then
1440 while test $name; do
1441 if test ! -d "$name"; then
1442 create="$name $create";
1443 name=`echo $name | sed -e "s|^[^/]*$||"`;
1444 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1449 for file in $create; do
1458 dir=`expr X$file : 'X\(.*\)/'`
1459 file=`expr X$file : 'X.*/\(.*\)'`
1460 (cd $dir && . ./$file)
1470 dir=`expr X$file : 'X\(.*\)/'`
1471 file=`expr X$file : 'X.*/\(.*\)'`
1472 (set x $dir; shift; eval $mkdir_p)
1482 if test -f $src/config_h.SH; then
1483 if test ! -f config.h; then
1484 : oops, they left it out of MANIFEST, probably, so do it anyway.
1490 : extract files and exit if asked to do so
1491 case "$extractsh" in
1493 case "$realsilent" in
1497 case "$config_sh" in
1498 '') config_sh='config.sh';;
1501 echo "Fetching answers from $config_sh..."
1504 test "$override" && . ./optdef.sh
1513 : Eunice requires " " instead of "", can you believe it
1516 echo "Beginning of configuration questions for $package."
1518 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1520 : first determine how to suppress newline on echo command
1522 echo "Checking echo to see how to suppress newlines..."
1523 (echo "hi there\c" ; echo " ") >.echotmp
1524 if $contains c .echotmp >/dev/null 2>&1 ; then
1535 echo $n "The star should be here-->$c"
1539 : Now test for existence of everything in MANIFEST
1541 if test -f $rsrc/MANIFEST; then
1542 echo "First let's make sure your kit is complete. Checking..." >&4
1543 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1546 for filelist in x??; do
1547 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1549 if test -s missing; then
1553 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1555 You have the option of continuing the configuration process, despite the
1556 distinct possibility that your kit is damaged, by typing 'y'es. If you
1557 do, don't blame me if something goes wrong. I advise you to type 'n'o
1558 and contact the author (perlbug@perl.com).
1561 echo $n "Continue? [n] $c" >&4
1565 echo "Continuing..." >&4
1569 echo "ABORTING..." >&4
1574 echo "Looks good..."
1577 echo "There is no MANIFEST file. I hope your kit is complete !"
1582 : Find the appropriate value for a newline for tr
1583 if test -n "$DJGPP"; then
1586 if test X"$trnl" = X; then
1587 case "`echo foo|tr '\n' x 2>/dev/null`" in
1591 if test X"$trnl" = X; then
1592 case "`echo foo|tr '\012' x 2>/dev/null`" in
1593 foox) trnl='\012' ;;
1596 if test X"$trnl" = X; then
1599 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1605 : compute the number of columns on the terminal for proper question formatting
1610 : set up the echo used in my read
1611 myecho="case \"\$xxxm\" in
1612 '') echo $n \"\$rp $c\" >&4;;
1614 '') echo $n \"[\$xxxm] $c\";;
1616 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1618 echo $n \"[\$xxxm] $c\" >&4
1620 echo $n \"\$rp [\$xxxm] $c\" >&4
1626 : now set up to do reads with possible shell escape and default assignment
1632 case "\$fastread" in
1633 yes) case "\$dflt" in
1636 case "\$silent-\$rp" in
1641 *) case "\$silent" in
1642 true) case "\$rp" in
1647 while expr "X\$ans" : "X!" >/dev/null; do
1651 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1659 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1668 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1673 echo "(OK, I'll run with -d after this question.)" >&4
1676 echo "*** Sorry, \$1 not supported yet." >&4
1686 echo "*** Substitution done -- please confirm."
1688 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1693 echo "*** Error -- try again."
1700 case "\$ans\$xxxm\$nostick" in
1712 : create .config dir to save info across Configure sessions
1713 test -d ../.config || mkdir ../.config
1714 cat >../.config/README <<EOF
1715 This directory created by Configure to save information that should
1716 persist across sessions for $package.
1718 You may safely delete it if you wish.
1721 : general instructions
1724 user=`(logname) 2>/dev/null`
1726 '') user=`whoami 2>&1`;;
1728 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1731 rp='Would you like to see the instructions?'
1742 This installation shell script will examine your system and ask you questions
1743 to determine how the perl5 package should be installed. If you get
1744 stuck on a question, you may use a ! shell escape to start a subshell or
1745 execute a command. Many of the questions will have default answers in square
1746 brackets; typing carriage return will give you the default.
1748 On some of the questions which ask for file or directory names you are allowed
1749 to use the ~name construct to specify the login directory belonging to "name",
1750 even if you don't have a shell which knows about that. Questions where this is
1751 allowed will be marked "(~name ok)".
1755 dflt='Type carriage return to continue'
1759 The prompter used in this script allows you to use shell variables and
1760 backticks in your answers. You may use $1, $2, etc... to refer to the words
1761 in the default answer, as if the default line was a set of arguments given to a
1762 script shell. This means you may also use $* to repeat the whole default line,
1763 so you do not have to re-type everything to add something to the default.
1765 Everytime there is a substitution, you will have to confirm. If there is an
1766 error (e.g. an unmatched backtick), the default answer will remain unchanged
1767 and you will be prompted again.
1769 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1770 the questions and use the computed defaults (or the previous answers if there
1771 was already a config.sh file). Type 'Configure -h' for a list of options.
1772 You may also start interactively and then answer '& -d' at any prompt to turn
1773 on the non-interactive behaviour for the remainder of the execution.
1779 Much effort has been expended to ensure that this shell script will run on any
1780 Unix system. If despite that it blows up on yours, your best bet is to edit
1781 Configure and run it again. If you can't run Configure for some reason,
1782 you'll have to generate a config.sh file by hand. Whatever problems you
1783 have, let me (perlbug@perl.com) know how I blew it.
1785 This installation script affects things in two ways:
1787 1) it may do direct variable substitutions on some of the files included
1789 2) it builds a config.h file for inclusion in C programs. You may edit
1790 any of these files as the need arises after running this script.
1792 If you make a mistake on a question, there is no easy way to back up to it
1793 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1794 files. Configure will offer to let you do this before it runs the SH files.
1797 dflt='Type carriage return to continue'
1799 case "$firsttime" in
1800 true) echo $user >>../.config/instruct;;
1804 : find out where common programs are
1806 echo "Locating common programs..." >&4
1819 if test -d \$dir/\$thing; then
1825 for thisthing in \$dir/\$thing; do
1826 : just loop through to pick last item
1828 if test -f \$thisthing; then
1831 elif test -f \$dir/\$thing.exe; then
1832 if test -n "$DJGPP"; then
1833 echo \$dir/\$thing.exe
1835 : on Eunice apparently
1885 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1886 pth="$pth /lib /usr/lib"
1887 for file in $loclist; do
1891 if test -f "$xxx"; then
1894 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1895 xxx=`./loc $file $file $pth`
1898 '') xxx=`./loc $file $file $pth`;;
1899 *) xxx=`./loc $xxx $xxx $pth`;;
1905 echo $file is in $xxx.
1908 echo $file is in $xxx.
1911 echo "I don't know where '$file' is, and my life depends on it." >&4
1912 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1918 echo "Don't worry if any of the following aren't found..."
1920 for file in $trylist; do
1924 if test -f "$xxx"; then
1927 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1928 xxx=`./loc $file $file $pth`
1931 '') xxx=`./loc $file $file $pth`;;
1932 *) xxx=`./loc $xxx $xxx $pth`;;
1938 echo $file is in $xxx.
1941 echo $file is in $xxx.
1944 echo "I don't see $file out there, $say."
1951 echo "Substituting grep for egrep."
1957 echo "Substituting cp for ln."
1963 echo "Hopefully test is built into your sh."
1966 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1967 echo "Using the test built into your sh."
1975 echo "Hopefully echo is built into your sh."
1980 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1981 $echo $n "hi there$c" >foo1
1982 echo $n "hi there$c" >foo2
1983 if cmp foo1 foo2 >/dev/null 2>&1; then
1984 echo "They are compatible. In fact, they may be identical."
1991 They are not compatible! You are probably running ksh on a non-USG system.
1992 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1993 have echo built in and we may have to run some Bourne shell scripts. That
1994 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1997 $echo $n "The star should be here-->$c"
2004 : determine whether symbolic links are supported
2007 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2008 echo "Symbolic links are supported." >&4
2011 echo "Symbolic links are NOT supported." >&4
2016 : see whether [:lower:] and [:upper:] are supported character classes
2018 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2020 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2024 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2025 # (0xc9 and 0xd1), therefore that is a nice testing point.
2026 if test "X$up" = X -o "X$low" = X; then
2027 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2033 if test "X$up" = X -o "X$low" = X; then
2034 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2040 if test "X$up" = X -o "X$low" = X; then
2041 case "`echo IJ | od -x 2>/dev/null`" in
2043 echo "Hey, this might be EBCDIC." >&4
2044 if test "X$up" = X -o "X$low" = X; then
2045 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2046 ij) up='[A-IJ-RS-Z]'
2051 if test "X$up" = X -o "X$low" = X; then
2052 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2062 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2064 echo "Using $up and $low to convert case." >&4
2067 echo "I don't know how to translate letters from upper to lower case." >&4
2068 echo "Your tr is not acting any way I know of." >&4
2072 : set up the translation script tr, must be called with ./tr of course
2076 '[A-Z][a-z]') exec $tr '$up' '$low';;
2077 '[a-z][A-Z]') exec $tr '$low' '$up';;
2084 : Try to determine whether config.sh was made on this system
2085 case "$config_sh" in
2087 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
2088 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2089 # because the A-Z/a-z are not consecutive.
2090 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2091 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2092 newmyuname="$myuname"
2094 case "$knowitall" in
2096 if test -f ../config.sh; then
2097 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2098 eval "`grep myuname= ../config.sh`"
2100 if test "X$myuname" = "X$newmyuname"; then
2108 : Get old answers from old config file if Configure was run on the
2109 : same system, otherwise use the hints.
2112 if test -f config.sh; then
2114 rp="I see a config.sh file. Shall I use it to set the defaults?"
2117 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2118 *) echo "Fetching default answers from your old config.sh file..." >&4
2126 : Older versions did not always set $sh. Catch re-use of such
2135 if test ! -f config.sh; then
2138 First time through, eh? I have some defaults handy for some systems
2139 that need some extra help getting the Configure answers right:
2142 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2144 : Half the following guesses are probably wrong... If you have better
2145 : tests or hints, please send them to perlbug@perl.com
2146 : The metaconfig authors would also appreciate a copy...
2147 $test -f /irix && osname=irix
2148 $test -f /xenix && osname=sco_xenix
2149 $test -f /dynix && osname=dynix
2150 $test -f /dnix && osname=dnix
2151 $test -f /lynx.os && osname=lynxos
2152 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2153 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2154 $test -f /bin/mips && /bin/mips && osname=mips
2155 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2156 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2157 $test -d /usr/apollo/bin && osname=apollo
2158 $test -f /etc/saf/_sactab && osname=svr4
2159 $test -d /usr/include/minix && osname=minix
2160 if $test -d /MachTen -o -d /MachTen_Folder; then
2162 if $test -x /sbin/version; then
2163 osvers=`/sbin/version | $awk '{print $2}' |
2164 $sed -e 's/[A-Za-z]$//'`
2165 elif $test -x /usr/etc/version; then
2166 osvers=`/usr/etc/version | $awk '{print $2}' |
2167 $sed -e 's/[A-Za-z]$//'`
2172 $test -f /sys/posix.dll &&
2173 $test -f /usr/bin/what &&
2174 set X `/usr/bin/what /sys/posix.dll` &&
2175 $test "$3" = UWIN &&
2178 if $test -f $uname; then
2186 umips) osname=umips ;;
2189 [23]100) osname=mips ;;
2190 next*) osname=next ;;
2192 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2193 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2196 elif $test -f /etc/kconfig; then
2198 if test "$lns" = "$ln -s"; then
2200 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2202 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2209 if test -n "$DJGPP"; then
2218 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2220 'not found') osvers="$4"."$3" ;;
2221 '<3240'|'<>3240') osvers=3.2.0 ;;
2222 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2223 '=3250'|'>3250') osvers=3.2.5 ;;
2227 *dc.osx) osname=dcosx
2233 domainos) osname=apollo
2239 dynixptx*) osname=dynixptx
2240 osvers=`echo "$4"|sed 's/^v//'`
2242 freebsd) osname=freebsd
2244 genix) osname=genix ;;
2246 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2262 netbsd*) osname=netbsd
2265 news-os) osvers="$3"
2267 4*) osname=newsos4 ;;
2271 bsd386) osname=bsd386
2274 POSIX-BC | posix-bc ) osname=posix-bc
2277 powerux | power_ux | powermax_os | powermaxos | \
2278 powerunix | power_unix) osname=powerux
2281 next*) osname=next ;;
2282 solaris) osname=solaris
2284 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2291 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2295 titanos) osname=titanos
2304 ultrix) osname=ultrix
2307 osf1|mls+) case "$5" in
2310 osvers=`echo "$3" | sed 's/^[xvt]//'`
2312 hp*) osname=hp_osf1 ;;
2313 mips) osname=mips_osf1 ;;
2322 $2) case "$osname" in
2326 : svr4.x or possibly later
2336 if test -f /stand/boot ; then
2337 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2338 if test -n "$INITPROG" -a -f "$INITPROG"; then
2339 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2340 if test -n "$isesix"; then
2348 *) if test -f /etc/systemid; then
2350 set `echo $3 | $sed 's/\./ /g'` $4
2351 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2353 elif $test -f $src/hints/sco_$1_$2.sh; then
2355 elif $test -f $src/hints/sco_$1.sh; then
2360 '') : Still unknown. Probably a generic Sys V.
2369 *) case "$osname" in
2370 '') : Still unknown. Probably a generic BSD.
2378 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2379 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2380 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2383 $rm -f UU/kernel.what
2384 elif test -d c:/.; then
2391 : Now look for a hint file osname_osvers, unless one has been
2392 : specified already.
2395 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2396 : Also try without trailing minor version numbers.
2397 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2398 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2399 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2400 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2403 *) case "$osvers" in
2406 *) if $test -f $src/hints/$file.sh ; then
2408 elif $test -f $src/hints/$xfile.sh ; then
2410 elif $test -f $src/hints/$xxfile.sh ; then
2412 elif $test -f $src/hints/$xxxfile.sh ; then
2414 elif $test -f $src/hints/$xxxxfile.sh ; then
2416 elif $test -f "$src/hints/${osname}.sh" ; then
2425 if $test -f Policy.sh ; then
2428 none) dflt="Policy" ;;
2429 *) dflt="Policy $dflt" ;;
2434 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2438 if $test -f Policy.sh ; then
2441 There's also a Policy hint file available, which should make the
2442 site-specific (policy) questions easier to answer.
2449 You may give one or more space-separated answers, or "none" if appropriate.
2450 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2451 is a good thing. DO NOT give a wrong version or a wrong OS.
2455 rp="Which of these apply, if any?"
2458 for file in $tans; do
2459 if $test X$file = XPolicy -a -f Policy.sh; then
2461 $cat Policy.sh >> UU/config.sh
2462 elif $test -f $src/hints/$file.sh; then
2463 . $src/hints/$file.sh
2464 $cat $src/hints/$file.sh >> UU/config.sh
2465 elif $test X$tans = X -o X$tans = Xnone ; then
2468 : Give one chance to correct a possible typo.
2469 echo "$file.sh does not exist"
2471 rp="hint to use instead?"
2473 for file in $ans; do
2474 if $test -f "$src/hints/$file.sh"; then
2475 . $src/hints/$file.sh
2476 $cat $src/hints/$file.sh >> UU/config.sh
2477 elif $test X$ans = X -o X$ans = Xnone ; then
2480 echo "$file.sh does not exist -- ignored."
2487 : Remember our hint file for later.
2488 if $test -f "$src/hints/$file.sh" ; then
2498 echo "Fetching default answers from $config_sh..." >&4
2502 cp $config_sh config.sh 2>/dev/null
2512 test "$override" && . ./optdef.sh
2513 myuname="$newmyuname"
2515 : Restore computed paths
2516 for file in $loclist $trylist; do
2517 eval $file="\$_$file"
2522 Configure uses the operating system name and version to set some defaults.
2523 The default value is probably right if the name rings a bell. Otherwise,
2524 since spelling matters for me, either accept the default or answer "none"
2531 ''|' '|none) dflt=none ;;
2532 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2535 *) dflt="$osname" ;;
2537 rp="Operating system name?"
2541 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2547 ''|' '|none) dflt=none ;;
2548 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2549 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2551 ''|' ') dflt=none ;;
2556 *) dflt="$osvers" ;;
2558 rp="Operating system version?"
2568 : who configured the system
2569 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2570 cf_by=`(logname) 2>/dev/null`
2573 cf_by=`(whoami) 2>/dev/null`
2575 "") cf_by=unknown ;;
2579 : set up the script used to warn in case of inconsistency
2586 echo "*** WHOA THERE!!! ***" >&4
2587 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2588 rp=" Keep the $hint value?"
2591 y) td=$was; tu=$was;;
2595 : function used to set $1 to $val
2596 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2598 $define$undef) . ./whoa; eval "$var=\$td";;
2599 $undef$define) . ./whoa; eval "$var=\$tu";;
2600 *) eval "$var=$val";;
2605 Perl can be built to take advantage of threads, on some systems.
2606 To do so, Configure must be run with -Dusethreads.
2608 Note that threading is a highly experimental feature, and
2609 some known race conditions still remain. If you choose to try
2610 it, be very sure to not actually deploy it for production
2611 purposes. README.threads has more details, and is required
2612 reading if you enable threads.
2614 case "$usethreads" in
2615 $define|true|[yY]*) dflt='y';;
2618 rp='Build a threading Perl?'
2621 y|Y) val="$define" ;;
2627 case "$d_oldpthreads" in
2628 '') : Configure tests would be welcome here. For now, assume undef.
2630 *) val="$d_oldpthreads" ;;
2636 case "$usethreads" in
2637 "$define"|true|[yY]*)
2638 : Look for a hint-file generated 'call-back-unit'. If the
2639 : user has specified that a threading perl is to be built,
2640 : we may need to set or change some other defaults.
2641 if $test -f usethreads.cbu; then
2642 echo "Your platform has some specific hints for threaded builds, using them..."
2646 (Your platform doesn't have any specific hints for threaded builds.
2647 Assuming POSIX threads, then.)
2655 Perl can be built so that multiple Perl interpreters can coexist
2656 within the same Perl executable. To do so, Configure must be run with
2659 Normally you do not need this and you should answer no.
2662 case "$usemultiplicity" in
2663 $define|true|[yY]*) dflt='y';;
2666 rp='Build Perl for multiplicity?'
2669 y|Y) val="$define" ;;
2675 : determine where manual pages are on this system
2679 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2680 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2681 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2682 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2683 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2684 sysman=`./loc . /usr/man/man1 $syspath`
2687 if $test -d "$sysman"; then
2688 echo "System manual is in $sysman." >&4
2690 echo "Could not find manual pages in source form." >&4
2693 : see what memory models we can support
2696 $cat >pdp11.c <<'EOP'
2705 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2706 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2707 dflt='unsplit split'
2709 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2712 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2717 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2720 if $test -d /lib/large || $test -d /usr/lib/large; then
2723 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2732 Some systems have different model sizes. On most systems they are called
2733 small, medium, large, and huge. On the PDP11 they are called unsplit and
2734 split. If your system doesn't support different memory models, say "none".
2735 If you wish to force everything to one memory model, say "none" here and
2736 put the appropriate flags later when it asks you for other cc and ld flags.
2737 Venix systems may wish to put "none" and let the compiler figure things out.
2738 (In the following question multiple model names should be space separated.)
2740 The default for most systems is "none".
2743 rp="Which memory models are supported?"
2758 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2759 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2766 rp="What flag indicates separate I and D space?"
2774 *large*|*small*|*medium*|*huge*)
2781 rp="What flag indicates large model?"
2791 *huge*) case "$huge" in
2795 rp="What flag indicates huge model?"
2805 *medium*) case "$medium" in
2809 rp="What flag indicates medium model?"
2816 *) medium="$large";;
2819 *small*) case "$small" in
2823 rp="What flag indicates small model?"
2834 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2837 $rm -f pdp11.* pdp11
2839 : make some quick guesses about what we are up against
2841 $echo $n "Hmm... $c"
2851 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2852 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2854 echo "Looks kind of like an OSF/1 system, but we'll see..."
2856 elif test `echo abc | tr a-z A-Z` = Abc ; then
2857 xxx=`./loc addbib blurfl $pth`
2858 if $test -f $xxx; then
2859 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2863 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2864 echo "Looks kind of like an extended USG system, but we'll see..."
2866 echo "Looks kind of like a USG system, but we'll see..."
2870 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2871 echo "Looks kind of like a BSD system, but we'll see..."
2875 echo "Looks kind of like a Version 7 system, but we'll see..."
2878 case "$eunicefix" in
2881 There is, however, a strange, musty smell in the air that reminds me of
2882 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2886 : it so happens the Eunice I know will not run shell scripts in Unix format
2890 echo "Congratulations. You aren't running Eunice."
2894 : Detect OS2. The p_ variable is set above in the Head.U unit.
2899 I have the feeling something is not exactly right, however...don't tell me...
2900 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2905 if test -f /xenix; then
2906 echo "Actually, this looks more like a XENIX system..."
2911 echo "It's not Xenix..."
2916 if test -f /venix; then
2917 echo "Actually, this looks more like a VENIX system..."
2924 echo "Nor is it Venix..."
2927 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2928 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2931 : see if we need a special compiler
2939 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2940 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2954 On some older systems the default C compiler will not resolve multiple global
2955 references that happen to have the same name. On some such systems the "Mcc"
2956 command may be used to force these to be resolved. On other systems a "cc -M"
2957 command is required. (Note that the -M flag on other systems indicates a
2958 memory model to use!) If you have the Gnu C compiler, you might wish to use
2964 rp="Use which C compiler?"
2972 rp="Use which C compiler?"
2976 : Look for a hint-file generated 'call-back-unit'. Now that the
2977 : user has specified the compiler, we may need to set or change some
2979 if $test -f cc.cbu; then
2983 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2984 $cat >gccvers.c <<EOM
2989 printf("%s\n", __VERSION__);
2991 printf("%s\n", "1");
2997 if $cc -o gccvers gccvers.c; then
2998 gccversion=`./gccvers`
2999 case "$gccversion" in
3000 '') echo "You are not using GNU cc." ;;
3001 *) echo "You are using GNU cc $gccversion." ;;
3005 echo "*** WHOA THERE!!! ***" >&4
3006 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3007 case "$knowitall" in
3009 echo " You'd better start hunting for one and let me know about it." >&4
3015 case "$gccversion" in
3016 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3020 case "$usemorebits" in
3021 "$define"|true|[yY]*)
3023 uselongdouble="$define"
3024 usemorebits="$define"
3026 *) usemorebits="$undef"
3032 Perl can be built to take advantage of explicit 64-bit interfaces,
3033 on some systems. To do so, Configure must be run with -Duse64bits.
3035 If this doesn't make any sense to you, just accept the default 'n'.
3037 case "$use64bits" in
3038 $define|true|[yY]*) dflt='y';;
3041 rp='Try to use explicit 64-bit interfaces, if available?'
3054 case "$archname64" in
3055 '') archname64='' ;; # not a typo
3058 case "$use64bits" in
3059 "$define"|true|[yY]*)
3060 : Look for a hint-file generated 'call-back-unit'. If the
3061 : user has specified that a 64 bit perl is to be built,
3062 : we may need to set or change some other defaults.
3063 if $test -f use64bits.cbu; then
3064 echo "Your platform has some specific hints for 64-bit builds, using them..."
3068 (Your platform doesn't have any specific hints for 64-bit builds.
3069 This is probably okay, especially if your system is a true 64-bit system.)
3071 case "$gccversion" in
3074 But since you seem to be using gcc,
3075 I will now add -DUSE_LONG_LONG to the compilation flags.
3077 ccflags="$ccflags -DUSE_LONG_LONG"
3084 : determine the architecture name
3086 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3087 tarch=`arch`"-$osname"
3088 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3089 if uname -m > tmparch 2>&1 ; then
3090 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
3091 -e 's/$/'"-$osname/" tmparch`
3099 case "$myarchname" in
3102 echo "(Your architecture name used to be $myarchname.)"
3109 *) dflt="$archname";;
3111 rp='What is your architecture name'
3114 case "$usethreads" in
3116 echo "Threads selected." >&4
3118 *-thread*) echo "...and architecture name already has -thread." >&4
3120 *) archname="$archname-thread"
3121 echo "...setting architecture name to $archname." >&4
3126 case "$usemultiplicity" in
3128 echo "Multiplicity selected." >&4
3130 *-multi*) echo "...and architecture name already has -multi." >&4
3132 *) archname="$archname-multi"
3133 echo "...setting architecture name to $archname." >&4
3138 case "$use64bits" in
3140 echo "Explicit 64-bitness selected." >&4
3141 case "$archname64" in
3146 *-$archname64*) echo "...and architecture name already has $archname64." >&4
3148 *) archname="$archname-$archname64"
3149 echo "...setting architecture name to $archname." >&4
3156 : decide how portable to be. Allow command line overrides.
3157 case "$d_portable" in
3159 *) d_portable="$define" ;;
3162 : set up shell script to do ~ expansion
3168 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3171 if $test -f /bin/csh; then
3172 /bin/csh -f -c "glob \$1"
3177 name=\`$expr x\$1 : '..\([^/]*\)'\`
3178 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3179 if $test ! -d "\$dir"; then
3181 echo "\$me: can't locate home directory for: \$name" >&2
3186 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3202 : now set up to get a file name
3206 cat <<'EOSC' >>getfile
3222 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3223 fn=`echo $fn | sed 's/(.*)//'`
3229 loc_file=`expr $fn : '.*:\(.*\)'`
3230 fn=`expr $fn : '\(.*\):.*'`
3238 */*) fullpath=true;;
3247 *e*) exp_file=true;;
3250 *p*) nopath_ok=true;;
3255 *d*) type='Directory';;
3256 *l*) type='Locate';;
3261 Locate) what='File';;
3266 case "$d_portable" in
3274 while test "$type"; do
3279 true) rp="$rp (~name ok)";;
3282 if test -f UU/getfile.ok && \
3283 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3302 value=`UU/filexp $ans`
3305 if test "$ans" != "$value"; then
3306 echo "(That expands to $value on this system.)"
3320 /*) value="$ansexp" ;;
3325 echo "I shall only accept a full path name, as in /bin/ls." >&4
3326 echo "Use a ! shell escape if you wish to check pathnames." >&4
3329 echo "Please give a full path name, starting with slash." >&4
3332 echo "Note that using ~name is ok provided it expands well." >&4
3345 for fp in $gfpth; do
3346 if test "X$fp" = X.; then
3351 if test -f "$pf"; then
3353 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3355 echo "($value is not a plain file, but that's ok.)"
3358 if test X"$type" = X; then
3365 for fp in $gfpth; do
3366 if test "X$fp" = X.; then
3371 if test -d "$pf"; then
3379 if test -d "$ansexp"; then
3380 echo "(Looking for $loc_file in directory $value.)"
3381 value="$value/$loc_file"
3382 ansexp="$ansexp/$loc_file"
3384 if test -f "$ansexp"; then
3387 case "$nopath_ok" in
3388 true) case "$value" in
3390 *) echo "Assuming $value will be in people's path."
3406 if test "$fastread" = yes; then
3411 rp="$what $value doesn't exist. Use that name anyway?"
3430 test "X$gfpthkeep" != Xy && gfpth=""
3433 : determine root of directory hierarchy where package will be installed.
3436 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3444 By default, $package will be installed in $dflt/bin, manual pages
3445 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3446 installation directories. Typically this is something like /usr/local.
3447 If you wish to have binaries under /usr/bin but other parts of the
3448 installation under /usr/local, that's ok: you will be prompted
3449 separately for each of the installation directories, the prefix being
3450 only used to set the defaults.
3454 rp='Installation prefix to use?'
3462 *) oldprefix="$prefix";;
3472 $define|true) afs=true ;;
3473 $undef|false) afs=false ;;
3474 *) if test -d /afs; then
3482 echo "AFS may be running... I'll be extra cautious then..." >&4
3484 echo "AFS does not seem to be running..." >&4
3487 : determine installation prefix for where package is to be installed.
3491 Since you are running AFS, I need to distinguish the directory in which
3492 files will reside from the directory in which they are installed (and from
3493 which they are presumably copied to the former directory by occult means).
3496 case "$installprefix" in
3497 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3498 *) dflt="$installprefix";;
3503 In some special cases, particularly when building $package for distribution,
3504 it is convenient to distinguish between the directory in which files should
3505 be installed from the directory ($prefix) in which they
3506 will eventually reside. For most users, these two directories are the same.
3509 case "$installprefix" in
3511 *) dflt=$installprefix;;
3515 rp='What installation prefix should I use for installing files?'
3517 installprefix="$ans"
3518 installprefixexp="$ansexp"
3520 : set the prefixit variable, to compute a suitable default value
3521 prefixit='case "$3" in
3523 case "$oldprefix" in
3524 "") eval "$1=\"\$$2\"";;
3531 ""|" ") eval "$1=\"\$$2\"";;
3537 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3539 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3540 /*-$oldprefix/*|\~*-$oldprefix/*)
3541 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3542 *) eval "$1=\"\$$2\"";;
3546 : set the base revision
3549 : get the patchlevel
3551 echo "Getting the current patchlevel..." >&4
3552 if $test -r $rsrc/patchlevel.h;then
3553 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3554 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3559 $echo $n "(You have $package" $c
3562 *) $echo $n " $baserev" $c ;;
3564 $echo $n " patchlevel $patchlevel" $c
3565 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3568 if test 0 -eq "$subversion"; then
3569 version=`LC_ALL=C; export LC_ALL; \
3570 echo $baserev $patchlevel | \
3571 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3573 version=`LC_ALL=C; export LC_ALL; \
3574 echo $baserev $patchlevel $subversion | \
3575 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3577 : Figure out perl API version. Perhaps this should be in patchlevel.h
3578 if test "$subversion" -lt 50; then
3579 apiversion=`LC_ALL=C; export LC_ALL; \
3580 LANGUAGE=C; export LANGUAGE; \
3581 echo $baserev $patchlevel | \
3582 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3584 apiversion="$version"
3587 : determine installation style
3588 : For now, try to deduce it from prefix unless it is already set.
3589 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3590 case "$installstyle" in
3591 '') case "$prefix" in
3592 *perl*) dflt='lib';;
3593 *) dflt='lib/perl5' ;;
3596 *) dflt='lib/perl5' ;;
3598 : Probably not worth prompting for this since we prompt for all
3599 : the directories individually, and the prompt would be too long and
3603 : determine where private library files go
3604 : Usual default is /usr/local/lib/perl5/$version.
3605 : Also allow things like /opt/perl/lib/$version, since
3606 : /opt/perl/lib/perl5... would be redundant.
3607 : The default "style" setting is made in installstyle.U
3608 case "$installstyle" in
3609 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3610 *) set dflt privlib lib/$version ;;
3615 There are some auxiliary files for $package that need to be put into a
3616 private library directory that is accessible by everyone.
3620 rp='Pathname where the private library files will reside?'
3623 privlibexp="$ansexp"
3624 : Change installation prefix, if necessary.
3625 if $test X"$prefix" != X"$installprefix"; then
3626 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
3628 installprivlib="$privlibexp"
3631 : set the prefixup variable, to restore leading tilda escape
3632 prefixup='case "$prefixexp" in
3634 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3637 : determine where public architecture dependent libraries go
3640 : privlib default is /usr/local/lib/$package/$version
3641 : archlib default is /usr/local/lib/$package/$version/$archname
3642 : privlib may have an optional trailing /share.
3643 tdflt=`echo $privlib | $sed 's,/share$,,'`
3644 tdflt=$tdflt/$archname
3653 $spackage contains architecture-dependent library files. If you are
3654 sharing libraries in a heterogeneous environment, you might store
3655 these files in a separate location. Otherwise, you can just include
3656 them with the rest of the public library files.
3660 rp='Where do you want to put the public architecture-dependent libraries?'
3663 archlibexp="$ansexp"
3664 if $test X"$archlib" = X"$privlib"; then
3669 : Change installation prefix, if necessary.
3670 if $test X"$prefix" != X"$installprefix"; then
3671 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
3673 installarchlib="$archlibexp"
3677 : Binary compatibility with 5.005 is not possible for builds
3678 : with advanced features
3679 case "$usethreads$usemultiplicity" in
3681 bincompat5005="$undef"
3682 d_bincompat5005="$undef"
3686 Perl 5.006 can be compiled for binary compatibility with 5.005.
3687 If you decide to do so, you will be able to continue using most
3688 of the extensions that were compiled for Perl 5.005.
3691 case "$bincompat5005$d_bincompat5005" in
3692 *"$undef"*) dflt=n ;;
3695 rp='Binary compatibility with Perl 5.005?'
3698 y*) val="$define" ;;
3703 case "$d_bincompat5005" in
3705 bincompat5005="$define"
3707 *) bincompat5005="$undef"
3708 d_bincompat5005="$undef"
3715 : see if setuid scripts can be secure
3718 Some kernels have a bug that prevents setuid #! scripts from being
3719 secure. Some sites have disabled setuid #! scripts because of this.
3721 First let's decide if your kernel supports secure setuid #! scripts.
3722 (If setuid #! scripts would be secure but have been disabled anyway,
3723 don't say that they are secure if asked.)
3728 if $test -d /dev/fd; then
3729 echo "#!$ls" >reflect
3730 chmod +x,u+s reflect
3731 ./reflect >flect 2>&1
3732 if $contains "/dev/fd" flect >/dev/null; then
3733 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3737 If you are not sure if they are secure, I can check but I'll need a
3738 username and password different from the one you are using right now.
3739 If you don't have such a username or don't want me to test, simply
3743 rp='Other username to test security of setuid scripts with?'
3748 case "$d_suidsafe" in
3749 '') echo "I'll assume setuid scripts are *not* secure." >&4
3752 echo "Well, the $hint value is *not* secure." >&4
3754 *) echo "Well, the $hint value *is* secure." >&4
3759 $rm -f reflect flect
3760 echo "#!$ls" >reflect
3761 chmod +x,u+s reflect
3764 echo '"su" will (probably) prompt you for '"$ans's password."
3765 su $ans -c './reflect >flect'
3766 if $contains "/dev/fd" flect >/dev/null; then
3767 echo "Okay, it looks like setuid scripts are secure." >&4
3770 echo "I don't think setuid scripts are secure." >&4
3775 rp='Does your kernel have *secure* setuid scripts?'
3778 [yY]*) val="$define";;
3783 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3784 echo "(That's for file descriptors, not floppy disks.)"
3790 $rm -f reflect flect
3792 : now see if they want to do setuid emulation
3795 case "$d_suidsafe" in
3798 echo "No need to emulate SUID scripts since they are secure here." >& 4
3802 Some systems have disabled setuid scripts, especially systems where
3803 setuid scripts cannot be secure. On systems where setuid scripts have
3804 been disabled, the setuid/setgid bits on scripts are currently
3805 useless. It is possible for $package to detect those bits and emulate
3806 setuid/setgid in a secure fashion. This emulation will only work if
3807 setuid scripts have been disabled in your kernel.
3811 "$define") dflt=y ;;
3814 rp="Do you want to do setuid/setgid emulation?"
3817 [yY]*) val="$define";;
3825 : What should the include directory be ?
3827 $echo $n "Hmm... $c"
3831 if $test -f /bin/mips && /bin/mips; then
3832 echo "Looks like a MIPS system..."
3833 $cat >usr.c <<'EOCP'
3834 #ifdef SYSTYPE_BSD43
3838 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3839 dflt='/bsd43/usr/include'
3843 mips_type='System V'
3845 $rm -f usr.c usr.out
3846 echo "and you're compiling with the $mips_type compiler and libraries."
3850 echo "Doesn't look like a MIPS system."
3860 case "$xxx_prompt" in
3863 rp='Where are the include files you want to use?'
3871 : see how we invoke the C preprocessor
3873 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3874 cat <<'EOT' >testcpp.c
3880 if test ! -f cppstdin; then
3881 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3882 # AIX cc -E doesn't show the absolute headerfile
3883 # locations but we'll cheat by using the -M flag.
3884 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
3886 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3889 echo "Keeping your $hint cppstdin wrapper."
3892 wrapper=`pwd`/cppstdin
3896 if $test "X$cppstdin" != "X" && \
3897 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3898 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3900 echo "You used to use $cppstdin $cppminus so we'll use that again."
3902 '') echo "But let's see if we can live without a wrapper..." ;;
3904 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3905 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3907 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3910 echo "(However, $cpprun $cpplast does not work, let's see...)"
3918 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3925 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3926 $cc -E <testcpp.c >testcpp.out 2>&1; \
3927 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3928 echo "Yup, it does."
3931 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3932 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3933 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3934 echo "Yup, it does."
3937 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3938 $cc -P <testcpp.c >testcpp.out 2>&1; \
3939 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3940 echo "Yipee, that works!"
3943 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3944 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3945 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3946 echo "At long last!"
3949 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3950 $cpp <testcpp.c >testcpp.out 2>&1; \
3951 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3955 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3956 $cpp - <testcpp.c >testcpp.out 2>&1; \
3957 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958 echo "Hooray, it works! I was beginning to wonder."
3961 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3962 $wrapper <testcpp.c >testcpp.out 2>&1; \
3963 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3969 rp="No dice. I can't find a C preprocessor. Name one:"
3973 $x_cpp <testcpp.c >testcpp.out 2>&1
3974 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3975 echo "OK, that will do." >&4
3977 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3992 echo "Perhaps can we force $cc -E using a wrapper..."
3993 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3994 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4000 echo "Nope, we'll have to live without it..."
4014 "$wrapper"|'cppstdin') ;;
4015 *) $rm -f $wrapper;;
4017 $rm -f testcpp.c testcpp.out
4019 : Set private lib path
4022 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4027 '') dlist="$loclibpth $plibpth $glibpth";;
4028 *) dlist="$libpth";;
4031 : Now check and see which directories actually exist, avoiding duplicates
4035 if $test -d $xxx; then
4038 *) libpth="$libpth $xxx";;
4044 Some systems have incompatible or broken versions of libraries. Among
4045 the directories listed in the question below, please remove any you
4046 know not to be holding relevant libraries, and add any that are needed.
4047 Say "none" for none.
4058 rp="Directories to use for library searches?"
4065 : compute shared library extension
4068 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4078 On some systems, shared libraries may be available. Answer 'none' if
4079 you want to suppress searching of shared libraries for the remaining
4080 of this configuration.
4083 rp='What is the file extension used for shared libraries?'
4087 : Define several unixisms.
4088 : Hints files or command line option can be used to override them.
4089 : The convoluted testing is in case hints files set either the old
4092 '') case "$exe_ext" in
4094 *) _exe="$exe_ext" ;;
4099 '') case "$lib_ext" in
4106 '') case "$obj_ext" in
4113 '') case "$path_sep" in
4124 : Which makefile gets called first. This is used by make depend.
4125 case "$firstmakefile" in
4126 '') firstmakefile='makefile';;
4131 Perl can be built to use the SOCKS proxy protocol library. To do so,
4132 Configure must be run with -Dusesocks.
4134 Normally you do not need this and you should answer no.
4138 $define|true|[yY]*) dflt='y';;
4141 rp='Build Perl for SOCKS?'
4144 y|Y) val="$define" ;;
4150 : Looking for optional libraries
4152 echo "Checking for optional libraries..." >&4
4157 case "$libswanted" in
4158 '') libswanted='c_s';;
4162 libswanted="$libswanted socks5 socks5_sh"
4165 for thislib in $libswanted; do
4167 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4168 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4169 echo "Found -l$thislib (shared)."
4172 *) dflt="$dflt -l$thislib";;
4174 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4175 echo "Found -l$thislib (shared)."
4178 *) dflt="$dflt -l$thislib";;
4180 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4181 echo "Found -l$thislib."
4184 *) dflt="$dflt -l$thislib";;
4186 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4187 echo "Found -l$thislib."
4190 *) dflt="$dflt -l$thislib";;
4192 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4193 echo "Found -l${thislib}_s."
4196 *) dflt="$dflt -l${thislib}_s";;
4198 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4199 echo "Found -l$thislib."
4202 *) dflt="$dflt -l$thislib";;
4205 echo "No -l$thislib."
4216 ' '|'') dflt='none';;
4221 In order to compile $package on your machine, a number of libraries
4222 are usually needed. Include any other special libraries here as well.
4223 Say "none" for none. The default list is almost always right.
4227 rp="What libraries to use?"
4234 : determine optimization, if desired, or use for debug flag also
4236 ' '|$undef) dflt='none';;
4238 *) dflt="$optimize";;
4242 By default, $package compiles with the -O flag to use the optimizer.
4243 Alternately, you might want to use the symbolic debugger, which uses
4244 the -g flag (on traditional Unix systems). Either flag can be
4245 specified here. To use neither flag, specify the word "none".
4248 rp="What optimizer/debugger flag should be used?"
4252 'none') optimize=" ";;
4256 : We will not override a previous value, but we might want to
4257 : augment a hint file
4259 default|recommended)
4260 case "$gccversion" in
4261 1*) dflt='-fpcc-struct-return' ;;
4264 *-g*) dflt="$dflt -DDEBUGGING";;
4266 case "$gccversion" in
4267 2*) if test -d /etc/conf/kconfig.d &&
4268 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4274 case "$gccversion" in
4278 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4279 echo 'int main(void) { return 0; }' > gcctest.c
4280 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4281 echo "Yes, it does." 2>&1
4284 echo "Leaving current flags $ccflags alone." 2>&1
4286 *) dflt="$dflt -fno-strict-aliasing" ;;
4289 echo "Nope, it doesn't, but that's ok." 2>&1
4296 case "$mips_type" in
4297 *BSD*|'') inclwanted="$locincpth $usrinc";;
4298 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4300 for thisincl in $inclwanted; do
4301 if $test -d $thisincl; then
4302 if $test x$thisincl != x$usrinc; then
4305 *) dflt="$dflt -I$thisincl";;
4311 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4313 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4321 *) dflt="$dflt -D$2";;
4325 set signal.h LANGUAGE_C; eval $inctest
4329 ccflags="$ccflags -DSOCKS"
4334 default|recommended) dflt="$ccflags $dflt" ;;
4335 *) dflt="$ccflags";;
4343 Your C compiler may want other flags. For this question you should include
4344 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4345 but you should NOT include libraries or ld flags like -lwhatever. If you
4346 want $package to honor its debug switch, you should include -DDEBUGGING here.
4347 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4349 To use no flags, specify the word "none".
4355 rp="Any additional cc flags?"
4362 : the following weeds options from ccflags that are of no interest to cpp
4364 case "$gccversion" in
4365 1*) cppflags="$cppflags -D__GNUC__"
4367 case "$mips_type" in
4369 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4375 echo "Let me guess what the preprocessor flags are..." >&4
4389 *) ftry="$previous $flag";;
4391 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4392 >cpp1.out 2>/dev/null && \
4393 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4394 >cpp2.out 2>/dev/null && \
4395 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4396 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4398 cppflags="$cppflags $ftry"
4408 *-*) echo "They appear to be: $cppflags";;
4410 $rm -f cpp.c cpp?.out
4414 : flags used in final linking phase
4416 '') if ./venix; then
4422 *-posix*) dflt="$dflt -posix" ;;
4425 *) dflt="$ldflags";;
4428 : Try to guess additional flags to pick up local libraries.
4429 for thislibdir in $libpth; do
4430 case " $loclibpth " in
4433 *"-L$thislibdir "*) ;;
4434 *) dflt="$dflt -L$thislibdir" ;;
4446 Your C linker may need flags. For this question you should
4447 include -L/whatever and any other flags used by the C linker, but you
4448 should NOT include libraries like -lwhatever.
4450 Make sure you include the appropriate -L/path flags if your C linker
4451 does not normally search all of the directories you specified above,
4454 To use no flags, specify the word "none".
4458 rp="Any additional ld flags (NOT including libraries)?"
4464 rmlist="$rmlist pdp11"
4468 echo "Checking your choice of C compiler and flags for coherency..." >&4
4469 $cat > try.c <<'EOF'
4471 int main() { printf("Ok\n"); exit(0); }
4473 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4475 $cat >try.msg <<'EOM'
4476 I've tried to compile and run the following simple program:
4479 $cat try.c >> try.msg
4481 $cat >> try.msg <<EOM
4488 and I got the following output:
4492 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4493 if sh -c './try' >>try.msg 2>&1; then
4497 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4500 cat >> try.msg <<'EOQS'
4501 If $libs contains -lsfio, and sfio is mis-configured, then it
4502 sometimes (apparently) runs and exits with a 0 status, but with no
4503 output! It may have to do with sfio's use of _exit vs. exit.
4506 rp="You have a big problem. Shall I abort Configure"
4513 echo "The program compiled OK, but exited with status $?." >>try.msg
4514 rp="You have a problem. Shall I abort Configure"
4518 echo "I can't compile the test program." >>try.msg
4519 rp="You have a BIG problem. Shall I abort Configure"
4525 case "$knowitall" in
4527 echo "(The supplied flags or libraries might be incorrect.)"
4535 *) echo "Ok. Stopping Configure." >&4
4540 n) echo "OK, that should do.";;
4542 $rm -f try try.* core
4544 : determine filename position in cpp output
4546 echo "Computing filename position in cpp output for #include directives..." >&4
4547 echo '#include <stdio.h>' > foo.c
4550 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4551 $grep '^[ ]*#.*stdio\.h' | \
4552 while read cline; do
4555 while $test \$# -gt 0; do
4556 if $test -r \`echo \$1 | $tr -d '"'\`; then
4561 pos=\`expr \$pos + 1\`
4573 *) pos="${fieldn}th";;
4575 echo "Your cpp writes the filename in the $pos field of the line."
4577 : locate header file
4582 for usrincdir in $usrinc
4584 if test -f \$usrincdir/\$wanted; then
4585 echo "\$usrincdir/\$wanted"
4589 awkprg='{ print \$$fieldn }'
4590 echo "#include <\$wanted>" > foo\$\$.c
4591 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4592 $grep "^[ ]*#.*\$wanted" | \
4593 while read cline; do
4594 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4596 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4597 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4602 # status = 0: grep returned 0 lines, case statement not executed
4603 # status = 1: headerfile found
4604 # status = 2: while loop executed, no headerfile found
4608 if test \$status -eq 1; then
4615 : define an alternate in-header-list? function
4616 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4617 cont=true; xxf="echo \"<\$1> found.\" >&4";
4618 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4619 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4621 case $# in 4) instead=instead;; *) instead="at last";; esac;
4622 while $test "$cont"; do
4624 var=$2; eval "was=\$$2";
4625 if $test "$xxx" && $test -r "$xxx";
4627 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4630 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4631 set $yyy; shift; shift; yyy=$@;
4632 case $# in 0) cont="";;
4633 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4634 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4635 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4636 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4640 do set $yyy; var=$2; eval "was=\$$2";
4641 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4642 set $yyy; shift; shift; yyy=$@;
4645 : see if this is a malloc.h system
4646 set malloc.h i_malloc
4649 : see if stdlib is available
4650 set stdlib.h i_stdlib
4653 : determine which malloc to compile in
4655 case "$usemymalloc" in
4656 ''|[yY]*|true|$define) dflt='y' ;;
4659 rp="Do you wish to attempt to use the malloc that comes with $package?"
4665 mallocsrc='malloc.c'
4666 mallocobj="malloc$_o"
4667 d_mymalloc="$define"
4670 : Remove malloc from list of libraries to use
4671 echo "Removing unneeded -lmalloc from library list" >&4
4672 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4675 echo "libs = $libs" >&4
4687 : compute the return types of malloc and free
4689 $cat >malloc.c <<END
4693 #include <sys/types.h>
4707 case "$malloctype" in
4709 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4716 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4720 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4727 echo "Your system uses $freetype free(), it would seem." >&4
4731 The installation process will also create a directory for
4732 vendor-supplied add-ons. Vendors who supply perl with their system
4733 may find it convenient to place all vendor-supplied files in this
4734 directory rather than in the main distribution directory. This will
4735 ease upgrades between binary-compatible maintenance versions of perl.
4737 Of course you may also use these directories in whatever way you see
4738 fit. For example, you might use them to access modules shared over a
4739 company-wide network.
4741 The default answer should be fine for most people.
4742 This causes further questions about vendor add-ons to be skipped
4743 and no vendor-specific directories will be configured for perl.
4746 rp='Do you want to configure vendor-specific add-on directories?'
4747 case "$usevendorprefix" in
4748 define|true|[yY]*) dflt=y ;;
4754 rp='Installation prefix to use for vendor-supplied add-ons?'
4755 case "$vendorprefix" in
4757 *) dflt=$vendorprefix ;;
4761 case "$vendorprefix" in