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:40:23 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"
3033 Perl can be built to understand large files (files larger than 2 gigabytes)
3034 on some systems. To do so, Configure must be run with -Duselfs.
3036 If this doesn't make any sense to you, just accept the default.
3039 "$define"|true|[yY]*) dflt='y' ;;
3042 rp='Try to understand large files?'
3045 y|Y) val="$define" ;;
3051 "$define") use64bits="$define" ;;
3056 Perl can be built to take advantage of explicit 64-bit interfaces,
3057 on some systems. To do so, Configure must be run with -Duse64bits.
3059 If this doesn't make any sense to you, just accept the default.
3061 case "$use64bits" in
3062 $define|true|[yY]*) dflt='y';;
3065 rp='Try to use explicit 64-bit interfaces, if available?'
3078 case "$archname64" in
3079 '') archname64='' ;; # not a typo
3082 case "$use64bits" in
3083 "$define"|true|[yY]*)
3084 : Look for a hint-file generated 'call-back-unit'. If the
3085 : user has specified that a 64 bit perl is to be built,
3086 : we may need to set or change some other defaults.
3087 if $test -f use64bits.cbu; then
3088 echo "Your platform has some specific hints for 64-bit builds, using them..."
3092 (Your platform doesn't have any specific hints for 64-bit builds.
3093 This is probably okay, especially if your system is a true 64-bit system.)
3095 case "$gccversion" in
3098 But since you seem to be using gcc,
3099 I will now add -DUSE_LONG_LONG to the compilation flags.
3101 ccflags="$ccflags -DUSE_LONG_LONG"
3108 : determine the architecture name
3110 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3111 tarch=`arch`"-$osname"
3112 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3113 if uname -m > tmparch 2>&1 ; then
3114 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
3115 -e 's/$/'"-$osname/" tmparch`
3123 case "$myarchname" in
3126 echo "(Your architecture name used to be $myarchname.)"
3133 *) dflt="$archname";;
3135 rp='What is your architecture name'
3138 case "$usethreads" in
3140 echo "Threads selected." >&4
3142 *-thread*) echo "...and architecture name already has -thread." >&4
3144 *) archname="$archname-thread"
3145 echo "...setting architecture name to $archname." >&4
3150 case "$usemultiplicity" in
3152 echo "Multiplicity selected." >&4
3154 *-multi*) echo "...and architecture name already has -multi." >&4
3156 *) archname="$archname-multi"
3157 echo "...setting architecture name to $archname." >&4
3162 case "$use64bits" in
3164 echo "Explicit 64-bitness selected." >&4
3165 case "$archname64" in
3170 *-$archname64*) echo "...and architecture name already has $archname64." >&4
3172 *) archname="$archname-$archname64"
3173 echo "...setting architecture name to $archname." >&4
3180 : decide how portable to be. Allow command line overrides.
3181 case "$d_portable" in
3183 *) d_portable="$define" ;;
3186 : set up shell script to do ~ expansion
3192 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3195 if $test -f /bin/csh; then
3196 /bin/csh -f -c "glob \$1"
3201 name=\`$expr x\$1 : '..\([^/]*\)'\`
3202 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3203 if $test ! -d "\$dir"; then
3205 echo "\$me: can't locate home directory for: \$name" >&2
3210 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3226 : now set up to get a file name
3230 cat <<'EOSC' >>getfile
3246 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3247 fn=`echo $fn | sed 's/(.*)//'`
3253 loc_file=`expr $fn : '.*:\(.*\)'`
3254 fn=`expr $fn : '\(.*\):.*'`
3262 */*) fullpath=true;;
3271 *e*) exp_file=true;;
3274 *p*) nopath_ok=true;;
3279 *d*) type='Directory';;
3280 *l*) type='Locate';;
3285 Locate) what='File';;
3290 case "$d_portable" in
3298 while test "$type"; do
3303 true) rp="$rp (~name ok)";;
3306 if test -f UU/getfile.ok && \
3307 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3326 value=`UU/filexp $ans`
3329 if test "$ans" != "$value"; then
3330 echo "(That expands to $value on this system.)"
3344 /*) value="$ansexp" ;;
3349 echo "I shall only accept a full path name, as in /bin/ls." >&4
3350 echo "Use a ! shell escape if you wish to check pathnames." >&4
3353 echo "Please give a full path name, starting with slash." >&4
3356 echo "Note that using ~name is ok provided it expands well." >&4
3369 for fp in $gfpth; do
3370 if test "X$fp" = X.; then
3375 if test -f "$pf"; then
3377 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3379 echo "($value is not a plain file, but that's ok.)"
3382 if test X"$type" = X; then
3389 for fp in $gfpth; do
3390 if test "X$fp" = X.; then
3395 if test -d "$pf"; then
3403 if test -d "$ansexp"; then
3404 echo "(Looking for $loc_file in directory $value.)"
3405 value="$value/$loc_file"
3406 ansexp="$ansexp/$loc_file"
3408 if test -f "$ansexp"; then
3411 case "$nopath_ok" in
3412 true) case "$value" in
3414 *) echo "Assuming $value will be in people's path."
3430 if test "$fastread" = yes; then
3435 rp="$what $value doesn't exist. Use that name anyway?"
3454 test "X$gfpthkeep" != Xy && gfpth=""
3457 : determine root of directory hierarchy where package will be installed.
3460 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3468 By default, $package will be installed in $dflt/bin, manual pages
3469 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3470 installation directories. Typically this is something like /usr/local.
3471 If you wish to have binaries under /usr/bin but other parts of the
3472 installation under /usr/local, that's ok: you will be prompted
3473 separately for each of the installation directories, the prefix being
3474 only used to set the defaults.
3478 rp='Installation prefix to use?'
3486 *) oldprefix="$prefix";;
3496 $define|true) afs=true ;;
3497 $undef|false) afs=false ;;
3498 *) if test -d /afs; then
3506 echo "AFS may be running... I'll be extra cautious then..." >&4
3508 echo "AFS does not seem to be running..." >&4
3511 : determine installation prefix for where package is to be installed.
3515 Since you are running AFS, I need to distinguish the directory in which
3516 files will reside from the directory in which they are installed (and from
3517 which they are presumably copied to the former directory by occult means).
3520 case "$installprefix" in
3521 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3522 *) dflt="$installprefix";;
3527 In some special cases, particularly when building $package for distribution,
3528 it is convenient to distinguish between the directory in which files should
3529 be installed from the directory ($prefix) in which they
3530 will eventually reside. For most users, these two directories are the same.
3533 case "$installprefix" in
3535 *) dflt=$installprefix;;
3539 rp='What installation prefix should I use for installing files?'
3541 installprefix="$ans"
3542 installprefixexp="$ansexp"
3544 : set the prefixit variable, to compute a suitable default value
3545 prefixit='case "$3" in
3547 case "$oldprefix" in
3548 "") eval "$1=\"\$$2\"";;
3555 ""|" ") eval "$1=\"\$$2\"";;
3561 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3563 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3564 /*-$oldprefix/*|\~*-$oldprefix/*)
3565 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3566 *) eval "$1=\"\$$2\"";;
3570 : set the base revision
3573 : get the patchlevel
3575 echo "Getting the current patchlevel..." >&4
3576 if $test -r $rsrc/patchlevel.h;then
3577 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
3578 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
3583 $echo $n "(You have $package" $c
3586 *) $echo $n " $baserev" $c ;;
3588 $echo $n " patchlevel $patchlevel" $c
3589 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
3592 if test 0 -eq "$subversion"; then
3593 version=`LC_ALL=C; export LC_ALL; \
3594 echo $baserev $patchlevel | \
3595 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3597 version=`LC_ALL=C; export LC_ALL; \
3598 echo $baserev $patchlevel $subversion | \
3599 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
3601 : Figure out perl API version. Perhaps this should be in patchlevel.h
3602 if test "$subversion" -lt 50; then
3603 apiversion=`LC_ALL=C; export LC_ALL; \
3604 LANGUAGE=C; export LANGUAGE; \
3605 echo $baserev $patchlevel | \
3606 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
3608 apiversion="$version"
3611 : determine installation style
3612 : For now, try to deduce it from prefix unless it is already set.
3613 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
3614 case "$installstyle" in
3615 '') case "$prefix" in
3616 *perl*) dflt='lib';;
3617 *) dflt='lib/perl5' ;;
3620 *) dflt='lib/perl5' ;;
3622 : Probably not worth prompting for this since we prompt for all
3623 : the directories individually, and the prompt would be too long and
3627 : determine where private library files go
3628 : Usual default is /usr/local/lib/perl5/$version.
3629 : Also allow things like /opt/perl/lib/$version, since
3630 : /opt/perl/lib/perl5... would be redundant.
3631 : The default "style" setting is made in installstyle.U
3632 case "$installstyle" in
3633 *lib/perl5*) set dflt privlib lib/$package/$version ;;
3634 *) set dflt privlib lib/$version ;;
3639 There are some auxiliary files for $package that need to be put into a
3640 private library directory that is accessible by everyone.
3644 rp='Pathname where the private library files will reside?'
3647 privlibexp="$ansexp"
3648 : Change installation prefix, if necessary.
3649 if $test X"$prefix" != X"$installprefix"; then
3650 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
3652 installprivlib="$privlibexp"
3655 : set the prefixup variable, to restore leading tilda escape
3656 prefixup='case "$prefixexp" in
3658 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3661 : determine where public architecture dependent libraries go
3664 : privlib default is /usr/local/lib/$package/$version
3665 : archlib default is /usr/local/lib/$package/$version/$archname
3666 : privlib may have an optional trailing /share.
3667 tdflt=`echo $privlib | $sed 's,/share$,,'`
3668 tdflt=$tdflt/$archname
3677 $spackage contains architecture-dependent library files. If you are
3678 sharing libraries in a heterogeneous environment, you might store
3679 these files in a separate location. Otherwise, you can just include
3680 them with the rest of the public library files.
3684 rp='Where do you want to put the public architecture-dependent libraries?'
3687 archlibexp="$ansexp"
3688 if $test X"$archlib" = X"$privlib"; then
3693 : Change installation prefix, if necessary.
3694 if $test X"$prefix" != X"$installprefix"; then
3695 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
3697 installarchlib="$archlibexp"
3701 : Binary compatibility with 5.005 is not possible for builds
3702 : with advanced features
3703 case "$usethreads$usemultiplicity" in
3705 bincompat5005="$undef"
3706 d_bincompat5005="$undef"
3710 Perl 5.006 can be compiled for binary compatibility with 5.005.
3711 If you decide to do so, you will be able to continue using most
3712 of the extensions that were compiled for Perl 5.005.
3715 case "$bincompat5005$d_bincompat5005" in
3716 *"$undef"*) dflt=n ;;
3719 rp='Binary compatibility with Perl 5.005?'
3722 y*) val="$define" ;;
3727 case "$d_bincompat5005" in
3729 bincompat5005="$define"
3731 *) bincompat5005="$undef"
3732 d_bincompat5005="$undef"
3739 : see if setuid scripts can be secure
3742 Some kernels have a bug that prevents setuid #! scripts from being
3743 secure. Some sites have disabled setuid #! scripts because of this.
3745 First let's decide if your kernel supports secure setuid #! scripts.
3746 (If setuid #! scripts would be secure but have been disabled anyway,
3747 don't say that they are secure if asked.)
3752 if $test -d /dev/fd; then
3753 echo "#!$ls" >reflect
3754 chmod +x,u+s reflect
3755 ./reflect >flect 2>&1
3756 if $contains "/dev/fd" flect >/dev/null; then
3757 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3761 If you are not sure if they are secure, I can check but I'll need a
3762 username and password different from the one you are using right now.
3763 If you don't have such a username or don't want me to test, simply
3767 rp='Other username to test security of setuid scripts with?'
3772 case "$d_suidsafe" in
3773 '') echo "I'll assume setuid scripts are *not* secure." >&4
3776 echo "Well, the $hint value is *not* secure." >&4
3778 *) echo "Well, the $hint value *is* secure." >&4
3783 $rm -f reflect flect
3784 echo "#!$ls" >reflect
3785 chmod +x,u+s reflect
3788 echo '"su" will (probably) prompt you for '"$ans's password."
3789 su $ans -c './reflect >flect'
3790 if $contains "/dev/fd" flect >/dev/null; then
3791 echo "Okay, it looks like setuid scripts are secure." >&4
3794 echo "I don't think setuid scripts are secure." >&4
3799 rp='Does your kernel have *secure* setuid scripts?'
3802 [yY]*) val="$define";;
3807 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3808 echo "(That's for file descriptors, not floppy disks.)"
3814 $rm -f reflect flect
3816 : now see if they want to do setuid emulation
3819 case "$d_suidsafe" in
3822 echo "No need to emulate SUID scripts since they are secure here." >& 4
3826 Some systems have disabled setuid scripts, especially systems where
3827 setuid scripts cannot be secure. On systems where setuid scripts have
3828 been disabled, the setuid/setgid bits on scripts are currently
3829 useless. It is possible for $package to detect those bits and emulate
3830 setuid/setgid in a secure fashion. This emulation will only work if
3831 setuid scripts have been disabled in your kernel.
3835 "$define") dflt=y ;;
3838 rp="Do you want to do setuid/setgid emulation?"
3841 [yY]*) val="$define";;
3849 : What should the include directory be ?
3851 $echo $n "Hmm... $c"
3855 if $test -f /bin/mips && /bin/mips; then
3856 echo "Looks like a MIPS system..."
3857 $cat >usr.c <<'EOCP'
3858 #ifdef SYSTYPE_BSD43
3862 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3863 dflt='/bsd43/usr/include'
3867 mips_type='System V'
3869 $rm -f usr.c usr.out
3870 echo "and you're compiling with the $mips_type compiler and libraries."
3874 echo "Doesn't look like a MIPS system."
3884 case "$xxx_prompt" in
3887 rp='Where are the include files you want to use?'
3895 : see how we invoke the C preprocessor
3897 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3898 cat <<'EOT' >testcpp.c
3904 if test ! -f cppstdin; then
3905 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3906 # AIX cc -E doesn't show the absolute headerfile
3907 # locations but we'll cheat by using the -M flag.
3908 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
3910 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3913 echo "Keeping your $hint cppstdin wrapper."
3916 wrapper=`pwd`/cppstdin
3920 if $test "X$cppstdin" != "X" && \
3921 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3922 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3924 echo "You used to use $cppstdin $cppminus so we'll use that again."
3926 '') echo "But let's see if we can live without a wrapper..." ;;
3928 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3929 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3931 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3934 echo "(However, $cpprun $cpplast does not work, let's see...)"
3942 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3949 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3950 $cc -E <testcpp.c >testcpp.out 2>&1; \
3951 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3952 echo "Yup, it does."
3955 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3956 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3957 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3958 echo "Yup, it does."
3961 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3962 $cc -P <testcpp.c >testcpp.out 2>&1; \
3963 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3964 echo "Yipee, that works!"
3967 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3968 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3969 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3970 echo "At long last!"
3973 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3974 $cpp <testcpp.c >testcpp.out 2>&1; \
3975 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3979 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3980 $cpp - <testcpp.c >testcpp.out 2>&1; \
3981 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3982 echo "Hooray, it works! I was beginning to wonder."
3985 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3986 $wrapper <testcpp.c >testcpp.out 2>&1; \
3987 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3993 rp="No dice. I can't find a C preprocessor. Name one:"
3997 $x_cpp <testcpp.c >testcpp.out 2>&1
3998 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3999 echo "OK, that will do." >&4
4001 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4016 echo "Perhaps can we force $cc -E using a wrapper..."
4017 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4018 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4024 echo "Nope, we'll have to live without it..."
4038 "$wrapper"|'cppstdin') ;;
4039 *) $rm -f $wrapper;;
4041 $rm -f testcpp.c testcpp.out
4043 : Set private lib path
4046 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4051 '') dlist="$loclibpth $plibpth $glibpth";;
4052 *) dlist="$libpth";;
4055 : Now check and see which directories actually exist, avoiding duplicates
4059 if $test -d $xxx; then
4062 *) libpth="$libpth $xxx";;
4068 Some systems have incompatible or broken versions of libraries. Among
4069 the directories listed in the question below, please remove any you
4070 know not to be holding relevant libraries, and add any that are needed.
4071 Say "none" for none.
4082 rp="Directories to use for library searches?"
4089 : compute shared library extension
4092 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4102 On some systems, shared libraries may be available. Answer 'none' if
4103 you want to suppress searching of shared libraries for the remaining
4104 of this configuration.
4107 rp='What is the file extension used for shared libraries?'
4111 : Define several unixisms.
4112 : Hints files or command line option can be used to override them.
4113 : The convoluted testing is in case hints files set either the old
4116 '') case "$exe_ext" in
4118 *) _exe="$exe_ext" ;;
4123 '') case "$lib_ext" in
4130 '') case "$obj_ext" in
4137 '') case "$path_sep" in
4148 : Which makefile gets called first. This is used by make depend.
4149 case "$firstmakefile" in
4150 '') firstmakefile='makefile';;
4155 Perl can be built to use the SOCKS proxy protocol library. To do so,
4156 Configure must be run with -Dusesocks.
4158 Normally you do not need this and you should answer no.
4162 $define|true|[yY]*) dflt='y';;
4165 rp='Build Perl for SOCKS?'
4168 y|Y) val="$define" ;;
4174 : Looking for optional libraries
4176 echo "Checking for optional libraries..." >&4
4181 case "$libswanted" in
4182 '') libswanted='c_s';;
4186 libswanted="$libswanted socks5 socks5_sh"
4189 for thislib in $libswanted; do
4191 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
4192 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4193 echo "Found -l$thislib (shared)."
4196 *) dflt="$dflt -l$thislib";;
4198 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
4199 echo "Found -l$thislib (shared)."
4202 *) dflt="$dflt -l$thislib";;
4204 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
4205 echo "Found -l$thislib."
4208 *) dflt="$dflt -l$thislib";;
4210 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
4211 echo "Found -l$thislib."
4214 *) dflt="$dflt -l$thislib";;
4216 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
4217 echo "Found -l${thislib}_s."
4220 *) dflt="$dflt -l${thislib}_s";;
4222 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
4223 echo "Found -l$thislib."
4226 *) dflt="$dflt -l$thislib";;
4229 echo "No -l$thislib."
4240 ' '|'') dflt='none';;
4245 In order to compile $package on your machine, a number of libraries
4246 are usually needed. Include any other special libraries here as well.
4247 Say "none" for none. The default list is almost always right.
4251 rp="What libraries to use?"
4258 : determine optimization, if desired, or use for debug flag also
4260 ' '|$undef) dflt='none';;
4262 *) dflt="$optimize";;
4266 By default, $package compiles with the -O flag to use the optimizer.
4267 Alternately, you might want to use the symbolic debugger, which uses
4268 the -g flag (on traditional Unix systems). Either flag can be
4269 specified here. To use neither flag, specify the word "none".
4272 rp="What optimizer/debugger flag should be used?"
4276 'none') optimize=" ";;
4280 : We will not override a previous value, but we might want to
4281 : augment a hint file
4283 default|recommended)
4284 case "$gccversion" in
4285 1*) dflt='-fpcc-struct-return' ;;
4288 *-g*) dflt="$dflt -DDEBUGGING";;
4290 case "$gccversion" in
4291 2*) if test -d /etc/conf/kconfig.d &&
4292 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4298 case "$gccversion" in
4302 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4303 echo 'int main(void) { return 0; }' > gcctest.c
4304 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4305 echo "Yes, it does." 2>&1
4308 echo "Leaving current flags $ccflags alone." 2>&1
4310 *) dflt="$dflt -fno-strict-aliasing" ;;
4313 echo "Nope, it doesn't, but that's ok." 2>&1
4320 case "$mips_type" in
4321 *BSD*|'') inclwanted="$locincpth $usrinc";;
4322 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4324 for thisincl in $inclwanted; do
4325 if $test -d $thisincl; then
4326 if $test x$thisincl != x$usrinc; then
4329 *) dflt="$dflt -I$thisincl";;
4335 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4337 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4345 *) dflt="$dflt -D$2";;
4349 set signal.h LANGUAGE_C; eval $inctest
4353 ccflags="$ccflags -DSOCKS"
4358 default|recommended) dflt="$ccflags $dflt" ;;
4359 *) dflt="$ccflags";;
4367 Your C compiler may want other flags. For this question you should include
4368 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4369 but you should NOT include libraries or ld flags like -lwhatever. If you
4370 want $package to honor its debug switch, you should include -DDEBUGGING here.
4371 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4373 To use no flags, specify the word "none".
4379 rp="Any additional cc flags?"
4386 : the following weeds options from ccflags that are of no interest to cpp
4388 case "$gccversion" in
4389 1*) cppflags="$cppflags -D__GNUC__"
4391 case "$mips_type" in
4393 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4399 echo "Let me guess what the preprocessor flags are..." >&4
4413 *) ftry="$previous $flag";;
4415 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4416 >cpp1.out 2>/dev/null && \
4417 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4418 >cpp2.out 2>/dev/null && \
4419 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4420 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4422 cppflags="$cppflags $ftry"
4432 *-*) echo "They appear to be: $cppflags";;
4434 $rm -f cpp.c cpp?.out
4438 : flags used in final linking phase
4440 '') if ./venix; then
4446 *-posix*) dflt="$dflt -posix" ;;
4449 *) dflt="$ldflags";;
4452 : Try to guess additional flags to pick up local libraries.
4453 for thislibdir in $libpth; do
4454 case " $loclibpth " in
4457 *"-L$thislibdir "*) ;;
4458 *) dflt="$dflt -L$thislibdir" ;;
4470 Your C linker may need flags. For this question you should
4471 include -L/whatever and any other flags used by the C linker, but you
4472 should NOT include libraries like -lwhatever.
4474 Make sure you include the appropriate -L/path flags if your C linker
4475 does not normally search all of the directories you specified above,
4478 To use no flags, specify the word "none".
4482 rp="Any additional ld flags (NOT including libraries)?"
4488 rmlist="$rmlist pdp11"
4492 echo "Checking your choice of C compiler and flags for coherency..." >&4
4493 $cat > try.c <<'EOF'
4495 int main() { printf("Ok\n"); exit(0); }
4497 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4499 $cat >try.msg <<'EOM'
4500 I've tried to compile and run the following simple program:
4503 $cat try.c >> try.msg
4505 $cat >> try.msg <<EOM
4512 and I got the following output:
4516 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4517 if sh -c './try' >>try.msg 2>&1; then
4521 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4524 cat >> try.msg <<'EOQS'
4525 If $libs contains -lsfio, and sfio is mis-configured, then it
4526 sometimes (apparently) runs and exits with a 0 status, but with no
4527 output! It may have to do with sfio's use of _exit vs. exit.
4530 rp="You have a big problem. Shall I abort Configure"
4537 echo "The program compiled OK, but exited with status $?." >>try.msg
4538 rp="You have a problem. Shall I abort Configure"
4542 echo "I can't compile the test program." >>try.msg
4543 rp="You have a BIG problem. Shall I abort Configure"
4549 case "$knowitall" in
4551 echo "(The supplied flags or libraries might be incorrect.)"
4559 *) echo "Ok. Stopping Configure." >&4
4564 n) echo "OK, that should do.";;
4566 $rm -f try try.* core
4568 : determine filename position in cpp output
4570 echo "Computing filename position in cpp output for #include directives..." >&4
4571 echo '#include <stdio.h>' > foo.c
4574 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4575 $grep '^[ ]*#.*stdio\.h' | \
4576 while read cline; do
4579 while $test \$# -gt 0; do
4580 if $test -r \`echo \$1 | $tr -d '"'\`; then
4585 pos=\`expr \$pos + 1\`
4597 *) pos="${fieldn}th";;
4599 echo "Your cpp writes the filename in the $pos field of the line."
4601 : locate header file
4606 for usrincdir in $usrinc
4608 if test -f \$usrincdir/\$wanted; then
4609 echo "\$usrincdir/\$wanted"
4613 awkprg='{ print \$$fieldn }'
4614 echo "#include <\$wanted>" > foo\$\$.c
4615 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4616 $grep "^[ ]*#.*\$wanted" | \
4617 while read cline; do
4618 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4620 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4621 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4626 # status = 0: grep returned 0 lines, case statement not executed
4627 # status = 1: headerfile found
4628 # status = 2: while loop executed, no headerfile found
4632 if test \$status -eq 1; then
4639 : define an alternate in-header-list? function
4640 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4641 cont=true; xxf="echo \"<\$1> found.\" >&4";
4642 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4643 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4645 case $# in 4) instead=instead;; *) instead="at last";; esac;
4646 while $test "$cont"; do
4648 var=$2; eval "was=\$$2";
4649 if $test "$xxx" && $test -r "$xxx";
4651 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4654 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4655 set $yyy; shift; shift; yyy=$@;
4656 case $# in 0) cont="";;
4657 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4658 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4659 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4660 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4664 do set $yyy; var=$2; eval "was=\$$2";
4665 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4666 set $yyy; shift; shift; yyy=$@;
4669 : see if this is a malloc.h system
4670 set malloc.h i_malloc
4673 : see if stdlib is available
4674 set stdlib.h i_stdlib
4677 : determine which malloc to compile in
4679 case "$usemymalloc" in
4680 ''|[yY]*|true|$define) dflt='y' ;;
4683 rp="Do you wish to attempt to use the malloc that comes with $package?"
4689 mallocsrc='malloc.c'
4690 mallocobj="malloc$_o"
4691 d_mymalloc="$define"
4694 : Remove malloc from list of libraries to use
4695 echo "Removing unneeded -lmalloc from library list" >&4
4696 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4699 echo "libs = $libs" >&4
4711 : compute the return types of malloc and free
4713 $cat >malloc.c <<END
4717 #include <sys/types.h>
4731 case "$malloctype" in
4733 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4740 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4744 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4751 echo "Your system uses $freetype free(), it would seem." >&4
4755 The installation process will also create a directory for
4756 vendor-supplied add-ons. Vendors who supply perl with their system
4757 may find it convenient to place all vendor-supplied files in this
4758 directory rather than in the main distribution directory. This will
4759 ease upgrades between binary-compatible maintenance versions of perl.
4761 Of course you may also use these directories in whatever way you see
4762 fit. For example, you might use them to access modules shared over a
4763 company-wide network.