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 # Though this script was generated by metaconfig, it is OK to send
22 # patches against it. It's up to the Configure pumpkin to backport
23 # the patch to the metaunits if it is accepted.
24 # See Porting/pumpkin.pod for more information on metaconfig.
27 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
29 # Generated on Mon Dec 4 12:24:11 CET 2006 [metaconfig 3.0 PL70]
30 # (with additional metaconfig patches by perlbug@perl.org)
35 SCO csh still thinks true is false. Write to SCO today and tell them that next
36 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
38 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
39 we'd have to do is go in and swap the && and || tokens, wherever they are.)
41 [End of diatribe. We now return you to your regularly scheduled programming...]
45 OOPS! You naughty creature! You didn't run Configure with sh!
46 I will attempt to remedy the situation by running sh for you...
50 true || exec sh $0 $argv:q
52 (exit $?0) || cat c2$$
53 (exit $?0) || exec sh $0 $argv:q
56 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
59 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
60 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
61 *** Please read the README.plan9 for further instructions.
62 *** Cannot continue, aborting.
68 if test ! -c /dev/null ; then
71 *** I'm sorry, but /dev/null appears to be a file rather than a device.
72 *** Please consult your operating sytem's notes for making a device
74 *** Cannot continue, aborting.
80 : compute my invocation name
84 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
89 : Proper separator for the PATH environment variable
91 : On OS/2 this directory should exist if this is not floppy only system :-]
92 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
93 if test -n "$OS2_SHELL"; then
95 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
96 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
98 elif test -n "$DJGPP"; then
99 case "X${MACHTYPE:-nonesuchmach}" in
106 : Proper PATH setting
107 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
108 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
109 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
110 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
111 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
112 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
113 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
114 paths="$paths /sbin /usr/sbin /usr/libexec"
115 paths="$paths /system/gnu_library/bin"
119 case "$p_$PATH$p_" in
121 *) test -d $p && PATH=$PATH$p_$p ;;
128 : shall we be using ksh?
134 if (PATH=.; alias -x) >/dev/null 2>&1; then
137 if test -f /hp-ux -a -f /bin/ksh; then
138 needksh='to avoid sh bug in "here document" expansion'
140 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
141 if test X`/usr/bin/uname -v` = X4; then
142 avoidksh="to avoid AIX 4's /bin/sh"
146 if test -f /osf_boot -a -f /usr/sbin/setld; then
147 if test X`/usr/bin/uname -s` = XOSF1; then
148 avoidksh="to avoid Digital UNIX' ksh"
150 unset BIN_SH # if this is 'xpg4' sh will start up ksh
153 case "$inksh/$needksh" in
160 case "$inksh/$avoidksh" in
166 case "$inksh/$needksh-$avoidksh-" in
169 (I see you are using the Korn shell. Some ksh's blow up on $me,
170 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
177 echo "(Feeding myself to $newsh $reason.)"
179 Configure|*/Configure) exec $newsh $0 "$@";;
180 *) exec $newsh Configure "$@";;
185 : if needed set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
190 *bash*) CDPATH='.' ;;
195 : Configure runs within the UU subdirectory
196 test -d UU || mkdir UU
334 initialinstalllocation=''
362 d_attribute_format=''
363 d_attribute_malloc=''
364 d_attribute_nonnull=''
365 d_attribute_noreturn=''
367 d_attribute_unused=''
368 d_attribute_warn_unused_result=''
369 d_printf_format_null=''
372 d_builtin_choose_expr=''
375 d_c99_variadic_macros=''
422 endhostent_r_proto=''
428 endprotoent_r_proto=''
434 endservent_r_proto=''
486 gethostbyaddr_r_proto=''
488 gethostbyname_r_proto=''
490 gethostent_r_proto=''
502 getnetbyaddr_r_proto=''
504 getnetbyname_r_proto=''
518 d_getprotobyname_r=''
519 getprotobyname_r_proto=''
520 d_getprotobynumber_r=''
521 getprotobynumber_r_proto=''
523 getprotoent_r_proto=''
535 getservbyname_r_proto=''
537 getservbyport_r_proto=''
539 getservent_r_proto=''
563 d_libm_lib_version=''
566 d_localtime_r_needs_tzset=''
577 d_malloc_good_size=''
619 d_old_pthread_create_joinable=''
620 old_pthread_create_joinable=''
622 d_pthread_attr_setscope=''
661 sethostent_r_proto=''
678 setprotoent_r_proto=''
690 setservent_r_proto=''
723 d_sprintf_returns_strlen=''
738 d_stdio_ptr_lval_nochange_cnt=''
739 d_stdio_ptr_lval_sets_cnt=''
942 d_inc_version_list=''
944 inc_version_list_init=''
963 ignore_versioned_solibs=''
1027 d_perl_otherlibdirs=''
1035 api_versionstring=''
1041 version_patchlevel_string=''
1045 d_nv_preserves_uv=''
1046 d_nv_zero_is_allbits_zero=''
1057 nv_preserves_uv_bits=''
1129 installsitehtml1dir=''
1132 installsitehtml3dir=''
1139 installsiteman1dir=''
1142 installsiteman3dir=''
1147 installsitescript=''
1162 d_stdio_stream_array=''
1163 stdio_stream_array=''
1174 ccflags_uselargefiles=''
1175 ldflags_uselargefiles=''
1176 libswanted_uselargefiles=''
1196 installvendorarch=''
1203 installvendorhtml1dir=''
1205 vendorhtml1direxp=''
1206 installvendorhtml3dir=''
1208 vendorhtml3direxp=''
1214 installvendorman1dir=''
1217 installvendorman3dir=''
1224 installvendorscript=''
1236 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1239 : We must find out about Eunice early
1241 if test -f /etc/unixtovms; then
1242 eunicefix=/etc/unixtovms
1244 if test -f /etc/unixtovms.exe; then
1245 eunicefix=/etc/unixtovms.exe
1248 : Set executable suffix now -- needed before hints available
1249 if test -f "/libs/version.library"; then
1252 elif test -f "/system/gnu_library/bin/ar.pm"; then
1255 elif test -n "$DJGPP"; then
1258 elif test -d c:/. -o -n "$is_os2" ; then
1267 : set useposix=false in your hint file to disable the POSIX extension.
1269 : set useopcode=false in your hint file to disable the Opcode extension.
1271 : Trailing extension. Override this in a hint file, if needed.
1272 : Extra object files, if any, needed on this platform.
1275 : Possible local include directories to search.
1276 : Set locincpth to "" in a hint file to defeat local include searches.
1277 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1278 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1280 : no include file wanted by default
1283 : Enable -DEBUGGING and -DDEBUGGING from the command line
1289 : change the next line if compiling for Xenix/286 on Xenix/386
1290 xlibpth='/usr/lib/386 /lib/386'
1291 : Possible local library directories to search.
1292 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1293 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1295 : general looking path for locating libraries
1296 glibpth="/lib /usr/lib $xlibpth"
1297 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1298 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1299 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1301 : Private path used by Configure to find libraries. Its value
1302 : is prepended to libpth. This variable takes care of special
1303 : machines, like the mips. Usually, it should be empty.
1306 : default library list
1308 : some systems want to use only the non-versioned libso:s
1309 ignore_versioned_solibs=''
1314 ccflags_uselargefiles=''
1315 ldflags_uselargefiles=''
1316 libswanted_uselargefiles=''
1317 : set usemultiplicity on the Configure command line to enable multiplicity.
1318 : set usesocks on the Configure command line to enable socks.
1319 : set usethreads on the Configure command line to enable threads.
1320 usereentrant='undef'
1321 : full support for void wanted by default
1324 : List of libraries we want.
1325 : If anyone needs extra -lxxx, put those in a hint file.
1326 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1327 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1328 : We probably want to search /usr/shlib before most other libraries.
1329 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1330 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1331 glibpth="/usr/shlib $glibpth"
1332 : Do not use vfork unless overridden by a hint file.
1335 : Find the basic shell for Bourne shell scripts
1339 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1342 if test -f "$xxx"; then
1345 : Build up a list and do a single loop so we can 'break' out.
1346 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1347 for xxx in sh bash ksh pdksh ash; do
1349 try="$try ${p}/${xxx}"
1353 if test -f "$xxx"; then
1356 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1359 elif test -f "$xxx.exe"; then
1370 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1372 Usually it's in /bin/sh. How did you even get this far?
1373 Please contact me (Perl Maintainers) at perlbug@perl.org and
1374 we'll try to straighten this all out.
1380 : see if sh knows # comments
1381 if `$sh -c '#' >/dev/null 2>&1`; then
1385 test -f $xcat$_exe || xcat=/usr/bin/cat
1386 if test ! -f $xcat$_exe; then
1387 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1388 if test -f $p/cat$_exe; then
1393 if test ! -f $xcat$_exe; then
1394 echo "Can't find cat anywhere!"
1398 echo "#!$xcat" >sharp
1402 if test -s today; then
1405 echo "#! $xcat" > sharp
1409 if test -s today; then
1417 echo "Your $sh doesn't grok # comments--I will strip them later on."
1420 echo "exec grep -v '^[ ]*#'" >spitshell
1422 $eunicefix spitshell
1423 spitshell=`pwd`/spitshell
1425 echo "I presume that if # doesn't work, #! won't work either!"
1430 : figure out how to guarantee sh startup
1432 '') startsh=${sharpbang}${sh} ;;
1444 : echo "Yup, it does."
1446 echo "Hmm... '$startsh' does not guarantee sh startup..."
1447 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1452 : Save command line options in file UU/cmdline.opt for later use in
1453 : generating config.sh.
1454 cat > cmdline.opt <<EOSH
1455 # Configure command line arguments.
1464 cat >>cmdline.opt <<EOSH
1465 config_arg$argn='$arg'
1467 # Extreme backslashitis: replace each ' by '"'"'
1468 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1471 arg_exp=`cat cmdl.opt`
1472 args_exp="$args_exp$args_sep'$arg_exp'"
1473 argn=`expr $argn + 1`
1476 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1477 # used by ./hints/os2.sh
1480 : produce awk script to parse command line options
1481 cat >options.awk <<'EOF'
1483 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1485 len = length(optstr);
1486 for (i = 1; i <= len; i++) {
1487 c = substr(optstr, i, 1);
1488 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1499 if (substr(str, 1, 1) != "-") {
1500 printf("'%s'\n", str);
1504 for (i = 2; i <= len; i++) {
1505 c = substr(str, i, 1);
1507 printf("-%s\n", substr(str, i));
1513 printf("'%s'\n", substr(str, i + 1));
1526 : process the command line options
1527 set X `for arg in "$@"; do echo "X$arg"; done |
1528 sed -e s/X// | awk -f options.awk`
1533 : set up default values
1543 rm -f optdef.sh posthint.sh
1544 cat >optdef.sh <<EOS
1550 while test $# -gt 0; do
1552 -d) shift; fastread=yes;;
1553 -e) shift; alldone=cont;;
1557 if test -r "$1"; then
1560 echo "$me: cannot read config file $1." >&2
1565 -h) shift; error=true;;
1566 -r) shift; reuseval=true;;
1567 -s) shift; silent=true; realsilent=true;;
1568 -E) shift; alldone=exit;;
1569 -K) shift; knowitall=true;;
1570 -O) shift; override=true;;
1571 -S) shift; silent=true; extractsh=true;;
1576 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1577 echo "$me: ignoring -D $1" >&2
1580 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1581 *) echo "$1='define'" >> optdef.sh;;
1588 *=) echo "$1" >> optdef.sh;;
1590 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1591 echo "$me: ignoring -U $1" >&2
1593 *) echo "$1='undef'" >> optdef.sh;;
1604 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1608 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1609 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1615 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1616 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1617 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1618 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1619 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1620 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1626 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1628 echo "$yyy=''" >> posthint.sh ;;
1633 echo "$yyy='$zzz'" >> posthint.sh ;;
1635 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1637 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1642 echo "$yyy=$zzz" >> posthint.sh ;;
1643 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1647 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1650 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1658 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1659 [-U symbol] [-U symbol=] [-A command:symbol...]
1660 -d : use defaults for all answers.
1661 -e : go on without questioning past the production of config.sh.
1662 -f : specify an alternate default configuration file.
1663 -h : print this help message and exit (with an error status).
1664 -r : reuse C symbols value if possible (skips costly nm extraction).
1665 -s : silent mode, only echoes questions and essential information.
1666 -D : define symbol to have some value:
1667 -D symbol symbol gets the value 'define'
1668 -D symbol=value symbol gets the value 'value'
1669 -E : stop at the end of questions, after having produced config.sh.
1670 -K : do not use unless you know what you are doing.
1671 -O : let -D and -U override definitions from loaded configuration file.
1672 -S : perform variable substitutions on all .SH files (can mix with -f)
1673 -U : undefine symbol:
1674 -U symbol symbol gets the value 'undef'
1675 -U symbol= symbol gets completely empty
1676 -A : manipulate symbol after the platform specific hints have been applied:
1677 -A symbol=value append " "value to symbol
1678 -A append:symbol=value append value to symbol
1679 -A define:symbol=value define symbol to have value
1680 -A clear:symbol define symbol to be ''
1681 -A define:symbol define symbol to be 'define'
1682 -A eval:symbol=value define symbol to be eval of value
1683 -A prepend:symbol=value prepend value to symbol
1684 -A undef:symbol define symbol to be 'undef'
1685 -A undef:symbol= define symbol to be ''
1686 -V : print version number and exit (with a zero status).
1693 case "$fastread$alldone" in
1696 case "$extractsh" in
1699 if test ! -t 0; then
1700 echo "Say 'sh Configure', not 'sh <Configure'"
1710 true) exec 1>/dev/null;;
1713 : run the defines and the undefines, if any, but leave the file out there...
1716 : create the posthint manipulation script and leave the file out there...
1721 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1722 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1723 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1724 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1725 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1728 : Some greps do not return status, grrr.
1729 echo "grimblepritz" >grimble
1730 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1732 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1738 : the following should work in any shell
1742 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1743 cat >contains <<'EOSS'
1744 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1749 : Find the path to the source tree
1752 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1756 *) src=`cd ../$src && pwd` ;;
1769 if test -f $rsrc/Configure && \
1770 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1772 : found it, so we are ok.
1775 for src in . .. ../.. ../../.. ../../../..; do
1776 if test -f ../$src/Configure && \
1777 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1788 Sorry, I can't seem to locate the source dir for $package. Please start
1789 Configure with an explicit path -- i.e. /some/path/Configure.
1797 echo "Sources for $package found in \"$src\"." >&4
1801 : script used to extract .SH files with variable substitutions
1802 cat >extract <<'EOS'
1804 echo "Doing variable substitutions on .SH files..."
1805 if test -f MANIFEST; then
1806 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1808 echo "(Looking for .SH files under the source directory.)"
1809 set x `(cd "$src"; find . -name "*.SH" -print)`
1813 0) set x `(cd "$src"; echo *.SH)`; shift;;
1815 if test ! -f "$src/$1"; then
1821 while test $name; do
1822 if test ! -d "$name"; then
1823 create="$name $create";
1824 name=`echo $name | sed -e "s|^[^/]*$||"`;
1825 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1830 for file in $create; do
1839 dir=`expr X$file : 'X\(.*\)/'`
1840 file=`expr X$file : 'X.*/\(.*\)'`
1841 (cd "$dir" && . ./$file)
1851 dir=`expr X$file : 'X\(.*\)/'`
1852 file=`expr X$file : 'X.*/\(.*\)'`
1853 (set x $dir; shift; eval $mkdir_p)
1854 sh <"$src/$dir/$file"
1863 if test -f "$src/config_h.SH"; then
1864 if test ! -f config.h; then
1865 : oops, they left it out of MANIFEST, probably, so do it anyway.
1866 . "$src/config_h.SH"
1871 : extract files and exit if asked to do so
1872 case "$extractsh" in
1874 case "$realsilent" in
1878 case "$config_sh" in
1879 '') config_sh='config.sh';;
1882 echo "Fetching answers from $config_sh..."
1885 test "$override" && . ./optdef.sh
1889 echo "Extraction done."
1894 : Eunice requires " " instead of "", can you believe it
1897 echo "Beginning of configuration questions for $package."
1899 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1901 : first determine how to suppress newline on echo command
1903 echo "Checking echo to see how to suppress newlines..."
1904 (echo "hi there\c" ; echo " ") >.echotmp
1905 if $contains c .echotmp >/dev/null 2>&1 ; then
1916 echo $n "The star should be here-->$c"
1920 : Now test for existence of everything in MANIFEST
1922 if test -f "$rsrc/MANIFEST"; then
1923 echo "First let's make sure your kit is complete. Checking..." >&4
1924 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1927 for filelist in x??; do
1928 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1930 if test -s missing; then
1934 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1936 You have the option of continuing the configuration process, despite the
1937 distinct possibility that your kit is damaged, by typing 'y'es. If you
1938 do, don't blame me if something goes wrong. I advise you to type 'n'o
1939 and contact the author (perlbug@perl.org).
1942 echo $n "Continue? [n] $c" >&4
1946 echo "Continuing..." >&4
1950 echo "ABORTING..." >&4
1955 echo "Looks good..."
1958 echo "There is no MANIFEST file. I hope your kit is complete !"
1963 : Find the appropriate value for a newline for tr
1964 if test -n "$DJGPP"; then
1967 if test X"$trnl" = X; then
1968 case "`echo foo|tr '\n' x 2>/dev/null`" in
1972 if test X"$trnl" = X; then
1973 case "`echo foo|tr '\012' x 2>/dev/null`" in
1974 foox) trnl='\012' ;;
1977 if test X"$trnl" = X; then
1978 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1979 fooxy) trnl='\n\r' ;;
1982 if test X"$trnl" = X; then
1985 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1991 : compute the number of columns on the terminal for proper question formatting
1996 : set up the echo used in my read
1997 myecho="case \"\$xxxm\" in
1998 '') echo $n \"\$rp $c\" >&4;;
2000 '') echo $n \"[\$xxxm] $c\";;
2002 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2004 echo $n \"[\$xxxm] $c\" >&4
2006 echo $n \"\$rp [\$xxxm] $c\" >&4
2012 : now set up to do reads with possible shell escape and default assignment
2018 case "\$fastread" in
2019 yes) case "\$dflt" in
2022 case "\$silent-\$rp" in
2027 *) case "\$silent" in
2028 true) case "\$rp" in
2033 while expr "X\$ans" : "X!" >/dev/null; do
2037 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2045 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2054 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2059 echo "(OK, I'll run with -d after this question.)" >&4
2062 echo "*** Sorry, \$1 not supported yet." >&4
2072 echo "*** Substitution done -- please confirm."
2074 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2079 echo "*** Error -- try again."
2086 case "\$ans\$xxxm\$nostick" in
2098 : create .config dir to save info across Configure sessions
2099 test -d ../.config || mkdir ../.config
2100 cat >../.config/README <<EOF
2101 This directory created by Configure to save information that should
2102 persist across sessions for $package.
2104 You may safely delete it if you wish.
2107 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2109 $define|true|[yY]*) ;;
2110 *) case "$xversion" in
2113 *** WHOA THERE!!! ***
2115 This is an UNSTABLE DEVELOPMENT release.
2116 The version of this $package distribution is $xversion, that is, odd,
2117 (as opposed to even) and that signifies a development release.
2118 If you want a maintenance release, you want an even-numbered version.
2120 Do ***NOT*** install this into production use.
2121 Data corruption and crashes are possible.
2123 It is most seriously suggested that you do not continue any further
2124 unless you want to help in developing and debugging Perl.
2126 If you *still* want to build perl, you can answer 'y' now,
2127 or pass -Dusedevel to Configure.
2130 rp='Do you really want to continue?'
2134 [yY]) echo >&4 "Okay, continuing."
2135 usedevel="$define" ;;
2136 *) echo >&4 "Okay, bye."
2146 case "$versiononly" in
2147 '') versiononly="$define" ;;
2149 case "$installusrbinperl" in
2150 '') installusrbinperl="$undef" ;;
2155 : general instructions
2158 user=`(logname) 2>/dev/null`
2160 '') user=`whoami 2>&1`;;
2162 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2165 rp='Would you like to see the instructions?'
2176 This installation shell script will examine your system and ask you questions
2177 to determine how the perl5 package should be installed. If you get
2178 stuck on a question, you may use a ! shell escape to start a subshell or
2179 execute a command. Many of the questions will have default answers in square
2180 brackets; typing carriage return will give you the default.
2182 On some of the questions which ask for file or directory names you are allowed
2183 to use the ~name construct to specify the login directory belonging to "name",
2184 even if you don't have a shell which knows about that. Questions where this is
2185 allowed will be marked "(~name ok)".
2189 dflt='Type carriage return to continue'
2193 The prompter used in this script allows you to use shell variables and
2194 backticks in your answers. You may use $1, $2, etc... to refer to the words
2195 in the default answer, as if the default line was a set of arguments given to a
2196 script shell. This means you may also use $* to repeat the whole default line,
2197 so you do not have to re-type everything to add something to the default.
2199 Everytime there is a substitution, you will have to confirm. If there is an
2200 error (e.g. an unmatched backtick), the default answer will remain unchanged
2201 and you will be prompted again.
2203 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2204 the questions and use the computed defaults (or the previous answers if there
2205 was already a config.sh file). Type 'Configure -h' for a list of options.
2206 You may also start interactively and then answer '& -d' at any prompt to turn
2207 on the non-interactive behaviour for the remainder of the execution.
2213 Much effort has been expended to ensure that this shell script will run on any
2214 Unix system. If despite that it blows up on yours, your best bet is to edit
2215 Configure and run it again. If you can't run Configure for some reason,
2216 you'll have to generate a config.sh file by hand. Whatever problems you
2217 have, let me (perlbug@perl.org) know how I blew it.
2219 This installation script affects things in two ways:
2221 1) it may do direct variable substitutions on some of the files included
2223 2) it builds a config.h file for inclusion in C programs. You may edit
2224 any of these files as the need arises after running this script.
2226 If you make a mistake on a question, there is no easy way to back up to it
2227 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2228 files. Configure will offer to let you do this before it runs the SH files.
2231 dflt='Type carriage return to continue'
2233 case "$firsttime" in
2234 true) echo $user >>../.config/instruct;;
2238 : find out where common programs are
2240 echo "Locating common programs..." >&4
2253 if test -d \$dir/\$thing; then
2259 for thisthing in \$dir/\$thing; do
2260 : just loop through to pick last item
2262 if test -f \$thisthing; then
2265 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2268 elif test -f \$dir/\$thing.exe; then
2269 if test -n "$DJGPP"; then
2270 echo \$dir/\$thing.exe
2271 elif test "$eunicefix" != ":"; then
2272 : on Eunice apparently
2326 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2327 pth="$pth /lib /usr/lib"
2328 for file in $loclist; do
2332 if test -f "$xxx"; then
2335 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2336 xxx=`./loc $file $file $pth`
2339 '') xxx=`./loc $file $file $pth`;;
2340 *) xxx=`./loc $xxx $xxx $pth`;;
2342 eval $file=$xxx$_exe
2346 echo $file is in $xxx.
2349 echo $file is in $xxx.
2352 echo "I don't know where '$file' is, and my life depends on it." >&4
2353 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2359 echo "Don't worry if any of the following aren't found..."
2361 for file in $trylist; do
2365 if test -f "$xxx"; then
2368 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2369 xxx=`./loc $file $file $pth`
2372 '') xxx=`./loc $file $file $pth`;;
2373 *) xxx=`./loc $xxx $xxx $pth`;;
2375 eval $file=$xxx$_exe
2379 echo $file is in $xxx.
2382 echo $file is in $xxx.
2385 echo "I don't see $file out there, $say."
2392 echo "Substituting grep for egrep."
2399 echo "Substituting cp for ln."
2408 echo "I can't find make or gmake, and my life depends on it." >&4
2409 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2417 *) # We can't have osname yet.
2418 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2419 # Assume that gmake, if found, is definitely GNU make
2420 # and prefer it over the system make.
2421 echo "Substituting gmake for make."
2429 echo "Hopefully test is built into your sh."
2432 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2433 echo "Using the test built into your sh."
2441 echo "Hopefully echo is built into your sh."
2446 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2447 $echo $n "hi there$c" >foo1
2448 echo $n "hi there$c" >foo2
2449 if cmp foo1 foo2 >/dev/null 2>&1; then
2450 echo "They are compatible. In fact, they may be identical."
2457 They are not compatible! You are probably running ksh on a non-USG system.
2458 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2459 have echo built in and we may have to run some Bourne shell scripts. That
2460 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2463 $echo $n "The star should be here-->$c"
2473 cat <<'EOSC' >>trygcc
2478 int main(int argc, char *argv[]) {
2482 if $cc -o try $ccflags $ldflags try.c; then
2485 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2491 case "`$cc -v -c try.c 2>&1`" in
2494 if $test X"$trygcc" = Xyes; then
2495 if gcc -o try -c try.c; then
2497 echo "You seem to have a working gcc, though." >&4
2498 rp="Would you like to use it?"
2500 if $test -f myread; then
2503 if $test -f UU/myread; then
2506 echo "Cannot find myread, sorry. Aborting." >&2
2511 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2512 if $test -f usethreads.cbu; then
2515 *** However, any setting of the C compiler flags (e.g. for thread support)
2516 *** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2517 *** (together with e.g. -Dusethreads).
2533 cat <<'EOSC' >>checkcc
2538 int main(int argc, char *argv[]) {
2542 if $cc -o try $ccflags $ldflags try.c; then
2545 if $test X"$despair" = Xyes; then
2546 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2549 You need to find a working C compiler.
2550 Either (purchase and) install the C compiler supplied by your OS vendor,
2551 or for a free C compiler try http://gcc.gnu.org/
2552 I cannot continue any further, aborting.
2561 : determine whether symbolic links are supported
2564 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2565 echo "Symbolic links are supported." >&4
2568 echo "Symbolic links are NOT supported." >&4
2573 : determine whether symbolic links are supported
2577 echo "Checking how to test for symbolic links..." >&4
2579 if $test "X$issymlink" = X; then
2581 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2582 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2584 if test $? = 0; then
2587 echo "Your builtin 'test -h' may be broken." >&4
2590 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2593 if test -f "$p/$test"; then
2602 echo "Trying external '$test -h'." >&4
2603 issymlink="$test -h"
2604 if $test ! -h sym >/dev/null 2>&1; then
2605 echo "External '$test -h' is broken, too." >&4
2613 if $test "X$issymlink" = X; then
2614 if $test -L sym 2>/dev/null; then
2615 issymlink="$test -L"
2616 echo "The builtin '$test -L' worked." >&4
2619 if $test "X$issymlink" != X; then
2620 echo "You can test for symbolic links with '$issymlink'." >&4
2622 echo "I do not know how you can test for symbolic links." >&4
2626 *) echo "No symbolic links, so not testing for their testing..." >&4
2632 case "$mksymlinks" in
2635 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2638 *) case "$lns:$issymlink" in
2639 *"ln"*" -s:"*"test -"?)
2640 echo "Creating the symbolic links..." >&4
2641 echo "(First creating the subdirectories...)" >&4
2643 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2645 test -z "$directory" && break
2649 if test ! -d t/base; then
2650 echo "Failed to create the subdirectories. Aborting." >&4
2653 echo "(Then creating the symlinks...)" >&4
2654 awk '{print $1}' $src/MANIFEST | while true; do
2656 test -z "$filename" && break
2657 if test -f $filename; then
2658 if $issymlink $filename; then
2662 if test -f $filename; then
2663 echo "$filename already exists, not symlinking."
2665 ln -s $src/$filename $filename
2669 if test ! -f t/base/lex.t; then
2670 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2675 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2684 case "$usecrosscompile" in
2686 $echo "Cross-compiling..."
2689 *-*-gcc) # A cross-compiling gcc, probably.
2690 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2692 # leave out ld, choosing it is more complex
2694 ranlib=$targetarch-ranlib
2695 $echo 'extern int foo;' > try.c
2696 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2698 if $test $# -gt 0; then
2700 incpth="`$echo $incpth|$sed 's/^ //'`"
2701 echo "Guessing incpth '$incpth'." >&4
2703 j="`$echo $i|$sed 's,/include$,/lib,'`"
2704 if $test -d $j; then
2708 libpth="`$echo $libpth|$sed 's/^ //'`"
2709 echo "Guessing libpth '$libpth'." >&4
2714 case "$targetarch" in
2715 '') echo "Targetarch not defined." >&4; croak=y ;;
2716 *) echo "Using targetarch $targetarch." >&4 ;;
2719 '') echo "Incpth not defined." >&4; croak=y ;;
2720 *) echo "Using incpth '$incpth'." >&4 ;;
2723 '') echo "Libpth not defined." >&4; croak=y ;;
2724 *) echo "Using libpth '$libpth'." >&4 ;;
2727 '') for i in $incpth; do
2728 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2730 echo "Guessing usrinc $usrinc." >&4
2735 '') echo "Usrinc not defined." >&4; croak=y ;;
2738 *) echo "Using usrinc $usrinc." >&4 ;;
2740 case "$targethost" in
2741 '') echo "Targethost not defined." >&4; croak=y ;;
2742 *) echo "Using targethost $targethost." >&4
2747 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2750 /*) run=$src/Cross/run
2751 targetmkdir=$src/Cross/mkdir
2753 from=$src/Cross/from
2755 *) pwd=`$test -f ../Configure & cd ..; pwd`
2757 targetmkdir=$pwd/Cross/mkdir
2759 from=$pwd/Cross/from
2762 case "$targetrun" in
2763 '') targetrun=ssh ;;
2768 case "$targetfrom" in
2769 '') targetfrom=scp ;;
2773 from=$from-$targetfrom
2774 case "$targetdir" in
2776 echo "Guessing targetdir $targetdir." >&4
2779 case "$targetuser" in
2781 echo "Guessing targetuser $targetuser." >&4
2784 case "$targetfrom" in
2788 case "$targetrun" in
2800 '') cwd=$targetdir ;;
2804 if $test ! -f \$exe.xok; then
2808 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2811 *) echo "Unknown targetrun '$targetrun'" >&4
2815 case "$targetmkdir" in
2817 cat >$targetmkdir <<EOF
2819 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2821 $chmod a+rx $targetmkdir
2823 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2835 $targetmkdir \`dirname \$f\`
2836 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2839 $targetmkdir $targetdir/\`dirname \$f\`
2840 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2853 $mkdir -p $targetdir/\`dirname \$f\`
2854 $cp \$f $targetdir/\$f || exit 1
2857 $targetmkdir $targetdir/\`dirname \$f\`
2858 $cp \$f $targetdir/\$f || exit 1
2865 *) echo "Unknown targetto '$targetto'" >&4
2869 case "$targetfrom" in
2876 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2881 cp) cat >$from <<EOF
2886 cp $targetdir/\$f . || exit 1
2891 *) echo "Unknown targetfrom '$targetfrom'" >&4
2895 if $test ! -f $run; then
2896 echo "Target 'run' script '$run' not found." >&4
2900 if $test ! -f $to; then
2901 echo "Target 'to' script '$to' not found." >&4
2905 if $test ! -f $from; then
2906 echo "Target 'from' script '$from' not found." >&4
2910 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2914 Using '$run' for remote execution,
2915 and '$from' and '$to'
2916 for remote file transfer.
2922 usecrosscompile='undef'
2927 : see whether [:lower:] and [:upper:] are supported character classes
2929 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2931 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2935 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2936 # (0xd9 and 0xe2), therefore that is a nice testing point.
2937 if test "X$up" = X -o "X$low" = X; then
2938 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2944 if test "X$up" = X -o "X$low" = X; then
2945 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2951 if test "X$up" = X -o "X$low" = X; then
2952 case "`echo RS | od -x 2>/dev/null`" in
2954 echo "Hey, this might be EBCDIC." >&4
2955 if test "X$up" = X -o "X$low" = X; then
2956 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2957 rs) up='[A-IJ-RS-Z]'
2962 if test "X$up" = X -o "X$low" = X; then
2963 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2973 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2975 echo "Using $up and $low to convert case." >&4
2978 echo "I don't know how to translate letters from upper to lower case." >&4
2979 echo "Your tr is not acting any way I know of." >&4
2983 : set up the translation script tr, must be called with ./tr of course
2987 '[A-Z][a-z]') exec $tr '$up' '$low';;
2988 '[a-z][A-Z]') exec $tr '$low' '$up';;
2995 : Try to determine whether config.sh was made on this system
2996 case "$config_sh" in
2998 myuname=`$uname -a 2>/dev/null`
2999 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3000 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3001 # because the A-Z/a-z are not consecutive.
3002 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
3003 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3004 newmyuname="$myuname"
3006 case "$knowitall" in
3008 if test -f ../config.sh; then
3009 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3010 eval "`grep myuname= ../config.sh`"
3012 if test "X$myuname" = "X$newmyuname"; then
3020 : Get old answers from old config file if Configure was run on the
3021 : same system, otherwise use the hints.
3024 if test -f config.sh; then
3026 rp="I see a config.sh file. Shall I use it to set the defaults?"
3029 n*|N*) echo "OK, I'll ignore it."
3030 mv config.sh config.sh.old
3031 myuname="$newmyuname"
3033 *) echo "Fetching default answers from your old config.sh file..." >&4
3041 : Older versions did not always set $sh. Catch re-use of such
3051 if test ! -f config.sh; then
3054 First time through, eh? I have some defaults handy for some systems
3055 that need some extra help getting the Configure answers right:
3058 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3060 : Half the following guesses are probably wrong... If you have better
3061 : tests or hints, please send them to perlbug@perl.org
3062 : The metaconfig authors would also appreciate a copy...
3063 $test -f /irix && osname=irix
3064 $test -f /xenix && osname=sco_xenix
3065 $test -f /dynix && osname=dynix
3066 $test -f /dnix && osname=dnix
3067 $test -f /lynx.os && osname=lynxos
3068 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3069 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3070 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3071 $test -f /bin/mips && /bin/mips && osname=mips
3072 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3073 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3074 $test -d /usr/apollo/bin && osname=apollo
3075 $test -f /etc/saf/_sactab && osname=svr4
3076 $test -d /usr/include/minix && osname=minix
3077 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3078 if $test -d /MachTen -o -d /MachTen_Folder; then
3080 if $test -x /sbin/version; then
3081 osvers=`/sbin/version | $awk '{print $2}' |
3082 $sed -e 's/[A-Za-z]$//'`
3083 elif $test -x /usr/etc/version; then
3084 osvers=`/usr/etc/version | $awk '{print $2}' |
3085 $sed -e 's/[A-Za-z]$//'`
3091 $test -f /sys/posix.dll &&
3092 $test -f /usr/bin/what &&
3093 set X `/usr/bin/what /sys/posix.dll` &&
3094 $test "$3" = UWIN &&
3098 if $test -f $uname; then
3106 umips) osname=umips ;;
3109 [23]100) osname=mips ;;
3110 next*) osname=next ;;
3112 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3113 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3116 elif $test -f /etc/kconfig; then
3118 if test "$lns" = "$ln -s"; then
3120 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3122 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3129 if test -n "$DJGPP"; then
3138 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3140 # oslevel can fail with:
3141 # oslevel: Unable to acquire lock.
3142 *not\ found) osvers="$4"."$3" ;;
3143 '<3240'|'<>3240') osvers=3.2.0 ;;
3144 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3145 '=3250'|'>3250') osvers=3.2.5 ;;
3149 bsd386) osname=bsd386
3152 cygwin*) osname=cygwin
3155 *dc.osx) osname=dcosx
3161 domainos) osname=apollo
3167 dragonfly) osname=dragonfly
3170 dynixptx*) osname=dynixptx
3171 osvers=`echo "$4"|sed 's/^v//'`
3173 freebsd) osname=freebsd
3175 genix) osname=genix ;;
3179 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3195 netbsd*) osname=netbsd
3198 news-os) osvers="$3"
3200 4*) osname=newsos4 ;;
3204 next*) osname=next ;;
3205 nonstop-ux) osname=nonstopux ;;
3206 openbsd) osname=openbsd
3212 POSIX-BC | posix-bc ) osname=posix-bc
3215 powerux | power_ux | powermax_os | powermaxos | \
3216 powerunix | power_unix) osname=powerux
3222 solaris) osname=solaris
3224 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3231 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3235 titanos) osname=titanos
3244 ultrix) osname=ultrix
3247 osf1|mls+) case "$5" in
3250 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3253 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3256 hp*) osname=hp_osf1 ;;
3257 mips) osname=mips_osf1 ;;
3260 # UnixWare 7.1.2 is known as Open UNIX 8
3261 openunix|unixware) osname=svr5
3269 $2) case "$osname" in
3273 : svr4.x or possibly later
3283 if test -f /stand/boot ; then
3284 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3285 if test -n "$INITPROG" -a -f "$INITPROG"; then
3286 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3287 if test -n "$isesix"; then
3295 *) if test -f /etc/systemid; then
3297 set `echo $3 | $sed 's/\./ /g'` $4
3298 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3300 elif $test -f $src/hints/sco_$1_$2.sh; then
3302 elif $test -f $src/hints/sco_$1.sh; then
3307 '') : Still unknown. Probably a generic Sys V.
3316 *) case "$osname" in
3317 '') : Still unknown. Probably a generic BSD.
3325 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3326 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3327 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3330 $rm -f UU/kernel.what
3331 elif test -d c:/. -o -n "$is_os2" ; then
3338 case "$targetarch" in
3341 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3346 : Now look for a hint file osname_osvers, unless one has been
3347 : specified already.
3350 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3351 : Also try without trailing minor version numbers.
3352 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3353 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3354 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3355 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3358 *) case "$osvers" in
3361 *) if $test -f $src/hints/$file.sh ; then
3363 elif $test -f $src/hints/$xfile.sh ; then
3365 elif $test -f $src/hints/$xxfile.sh ; then
3367 elif $test -f $src/hints/$xxxfile.sh ; then
3369 elif $test -f $src/hints/$xxxxfile.sh ; then
3371 elif $test -f "$src/hints/${osname}.sh" ; then
3380 if $test -f Policy.sh ; then
3383 none) dflt="Policy" ;;
3384 *) dflt="Policy $dflt" ;;
3389 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3393 if $test -f Policy.sh ; then
3396 There's also a Policy hint file available, which should make the
3397 site-specific (policy) questions easier to answer.
3404 You may give one or more space-separated answers, or "none" if appropriate.
3405 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3406 previous run of Configure, you may specify it as well as or instead of
3407 OS-specific hints. If hints are provided for your OS, you should use them:
3408 although Perl can probably be built without hints on many platforms, using
3409 hints often improve performance and may enable features that Configure can't
3410 set up on its own. If there are no hints that match your OS, specify "none";
3411 DO NOT give a wrong version or a wrong OS.
3415 rp="Which of these apply, if any?"
3418 for file in $tans; do
3419 if $test X$file = XPolicy -a -f Policy.sh; then
3421 $cat Policy.sh >> UU/config.sh
3422 elif $test -f $src/hints/$file.sh; then
3423 . $src/hints/$file.sh
3424 $cat $src/hints/$file.sh >> UU/config.sh
3425 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3428 : Give one chance to correct a possible typo.
3429 echo "$file.sh does not exist"
3431 rp="hint to use instead?"
3433 for file in $ans; do
3434 if $test -f "$src/hints/$file.sh"; then
3435 . $src/hints/$file.sh
3436 $cat $src/hints/$file.sh >> UU/config.sh
3437 elif $test X$ans = X -o X$ans = Xnone ; then
3440 echo "$file.sh does not exist -- ignored."
3447 : Remember our hint file for later.
3448 if $test -f "$src/hints/$file.sh" ; then
3458 echo "Fetching default answers from $config_sh..." >&4
3462 cp $config_sh config.sh 2>/dev/null
3472 test "$override" && . ./optdef.sh
3474 : Restore computed paths
3475 for file in $loclist $trylist; do
3476 eval $file="\$_$file"
3481 Configure uses the operating system name and version to set some defaults.
3482 The default value is probably right if the name rings a bell. Otherwise,
3483 since spelling matters for me, either accept the default or answer "none"
3490 ''|' '|none) dflt=none ;;
3491 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3494 *) dflt="$osname" ;;
3496 rp="Operating system name?"
3500 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3506 ''|' '|none) dflt=none ;;
3507 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3508 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3510 ''|' ') dflt=none ;;
3515 *) dflt="$osvers" ;;
3517 rp="Operating system version?"
3527 : who configured the system
3528 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3531 cf_by=`(logname) 2>/dev/null`
3534 cf_by=`(whoami) 2>/dev/null`
3536 "") cf_by=unknown ;;
3541 : decide how portable to be. Allow command line overrides.
3542 case "$d_portable" in
3544 *) d_portable="$define" ;;
3547 : set up shell script to do ~ expansion
3553 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3556 if $test -f /bin/csh; then
3557 /bin/csh -f -c "glob \$1"
3562 name=\`$expr x\$1 : '..\([^/]*\)'\`
3563 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3564 if $test ! -d "\$dir"; then
3566 echo "\$me: can't locate home directory for: \$name" >&2
3571 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3587 : now set up to get a file name
3591 cat <<'EOSC' >>getfile
3607 : getfile will accept an answer from the comma-separated list
3608 : enclosed in parentheses even if it does not meet other criteria.
3609 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3610 fn=`echo $fn | sed 's/(.*)//'`
3616 loc_file=`expr $fn : '.*:\(.*\)'`
3617 fn=`expr $fn : '\(.*\):.*'`
3625 */*) fullpath=true;;
3634 *e*) exp_file=true;;
3637 *p*) nopath_ok=true;;
3642 *d*) type='Directory';;
3643 *l*) type='Locate';;
3648 Locate) what='File';;
3653 case "$d_portable" in
3661 while test "$type"; do
3666 true) rp="$rp (~name ok)";;
3669 if test -f UU/getfile.ok && \
3670 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3689 value=`UU/filexp $ans`
3692 if test "$ans" != "$value"; then
3693 echo "(That expands to $value on this system.)"
3707 /*) value="$ansexp" ;;
3708 [a-zA-Z]:/*) value="$ansexp" ;;
3713 echo "I shall only accept a full path name, as in /bin/ls." >&4
3714 echo "Use a ! shell escape if you wish to check pathnames." >&4
3717 echo "Please give a full path name, starting with slash." >&4
3720 echo "Note that using ~name is ok provided it expands well." >&4
3733 for fp in $gfpth; do
3734 if test "X$fp" = X.; then
3739 if test -f "$pf"; then
3741 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3743 echo "($value is not a plain file, but that's ok.)"
3746 if test X"$type" = X; then
3753 for fp in $gfpth; do
3754 if test "X$fp" = X.; then
3759 direxp="$fp/$ansexp"
3761 if test -d "$direxp"; then
3769 if test -d "$ansexp"; then
3770 echo "(Looking for $loc_file in directory $value.)"
3771 value="$value/$loc_file"
3772 ansexp="$ansexp/$loc_file"
3774 if test -f "$ansexp"; then
3777 case "$nopath_ok" in
3778 true) case "$value" in
3780 *) echo "Assuming $value will be in people's path."
3796 if test "$fastread" = yes; then
3801 rp="$what $value doesn't exist. Use that name anyway?"
3820 test "X$gfpthkeep" != Xy && gfpth=""
3823 : determine root of directory hierarchy where package will be installed.
3826 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3829 dflt=`echo "$prefix" | sed 's/.$//'`
3837 By default, $package will be installed in $dflt/bin, manual pages
3838 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3839 installation directories. Typically this is something like /usr/local.
3840 If you wish to have binaries under /usr/bin but other parts of the
3841 installation under /usr/local, that's ok: you will be prompted
3842 separately for each of the installation directories, the prefix being
3843 only used to set the defaults.
3847 rp='Installation prefix to use?'
3855 *) oldprefix="$prefix";;
3864 *) afsroot=$afsroot ;;
3870 $define|true) afs=true ;;
3871 $undef|false) afs=false ;;
3872 *) if test -d $afsroot; then
3880 echo "AFS may be running... I'll be extra cautious then..." >&4
3882 echo "AFS does not seem to be running..." >&4
3885 : determine installation prefix for where package is to be installed.
3889 Since you are running AFS, I need to distinguish the directory in which
3890 files will reside from the directory in which they are installed (and from
3891 which they are presumably copied to the former directory by occult means).
3894 case "$installprefix" in
3895 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3896 *) dflt="$installprefix";;
3901 In some special cases, particularly when building $package for distribution,
3902 it is convenient to distinguish the directory in which files should be
3903 installed from the directory ($prefix) in which they will
3904 eventually reside. For most users, these two directories are the same.
3907 case "$installprefix" in
3909 *) dflt=$installprefix;;
3913 rp='What installation prefix should I use for installing files?'
3915 installprefix="$ans"
3916 installprefixexp="$ansexp"
3918 : Perform the prefixexp/installprefixexp correction if necessary
3919 cat <<EOS >installprefix
3922 cat <<'EOSC' >>installprefix
3923 : Change installation prefix, if necessary.
3924 if $test X"$prefix" != X"$installprefix"; then
3925 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3927 eval "install${prefixvar}=\"\$${prefixvar}exp\""
3930 chmod +x installprefix
3931 $eunicefix installprefix
3933 : Set variables such as privlib and privlibexp from the output of ./getfile
3934 : performing the prefixexp/installprefixexp correction if necessary.
3935 cat <<EOS >setprefixvar
3938 cat <<'EOSC' >>setprefixvar
3939 eval "${prefixvar}=\"\$ans\""
3940 eval "${prefixvar}exp=\"\$ansexp\""
3943 chmod +x setprefixvar
3944 $eunicefix setprefixvar
3946 : set up the script used to warn in case of inconsistency
3955 '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3957 *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
3958 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3963 echo "*** WHOA THERE!!! ***" >&4
3964 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3967 rp=" Keep the $hint value?"
3970 y) td=$was; tu=$was;;
3974 : function used to set $1 to $val
3975 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3977 $define$undef) . ./whoa; eval "$var=\$td";;
3978 $undef$define) . ./whoa; eval "$var=\$tu";;
3979 *) eval "$var=$val";;
3983 $define|true|[yY]*) dflt='y';;
3988 Perl can be built to use the SOCKS proxy protocol library. To do so,
3989 Configure must be run with -Dusesocks. If you use SOCKS you also need
3990 to use the PerlIO abstraction layer, this will be implicitly selected.
3992 If this doesn't make any sense to you, just accept the default '$dflt'.
3994 rp='Build Perl for SOCKS?'
3997 y|Y) val="$define" ;;
4004 $define|true|[yY]*) useperlio="$define";;
4007 case "$useperlio" in
4008 $define|true|[yY]*|'') dflt='y';;
4013 Previous version of $package used the standard IO mechanisms as
4014 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
4015 alternate IO mechanisms via the PerlIO abstraction layer, but the
4016 stdio mechanism is still available if needed. The abstraction layer
4017 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4018 Using PerlIO with sfio may cause problems with some extension modules.
4020 If this doesn't make any sense to you, just accept the default '$dflt'.
4022 rp='Use the PerlIO abstraction layer?'
4029 echo "Ok, doing things the stdio way."
4038 case "$useperlio" in
4039 $define|true|[yY]*) ;;
4042 You are using the SOCKS proxy protocol library which means that you
4043 should also use the PerlIO layer. You may be headed for trouble.
4052 : get the patchlevel
4054 echo "Getting the current patchlevel..." >&4
4055 if $test -r $rsrc/patchlevel.h;then
4056 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4057 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4058 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4059 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4060 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4061 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4062 perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
4071 $echo "(You do not have patchlevel.h. Eek.)"
4073 if $test -r $rsrc/.patch ; then
4074 if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4075 perl_patchlevel=`cat $rsrc/.patch`
4078 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4079 version_patchlevel_string="version $patchlevel subversion $subversion"
4080 case "$perl_patchlevel" in
4082 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4085 $echo "(You have $package $version_patchlevel_string.)"
4089 : XXX Should be a Configure test for double-dots in filenames.
4090 version=`echo $revision $patchlevel $subversion | \
4091 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4092 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4093 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4096 version=`echo $revision $patchlevel $subversion | \
4097 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4098 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4099 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4102 : Special case the 5.005_xx maintenance series, which used 5.005
4103 : without any subversion label as a subdirectory in $sitelib
4104 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4105 api_versionstring='5.005'
4108 case "$usethreads" in
4109 $define|true|[yY]*) dflt='y';;
4110 *) # Catch case where user specified ithreads or 5005threads but
4111 # forgot -Dusethreads (A.D. 4/2002)
4112 case "$useithreads$use5005threads" in
4114 case "$useperlio" in
4115 "$define") dflt='y' ;;
4125 Perl can be built to take advantage of threads on some systems.
4126 To do so, Configure can be run with -Dusethreads.
4128 Note that Perl built with threading support runs slightly slower
4129 and uses more memory than plain Perl. The current implementation
4130 is believed to be stable, but it is fairly new, and so should be
4131 treated with caution.
4133 If this doesn't make any sense to you, just accept the default '$dflt'.
4135 rp='Build a threading Perl?'
4138 y|Y) val="$define" ;;
4144 if $test $patchlevel -lt 9; then
4145 case "$usethreads" in
4149 Since release 5.6, Perl has had two different threading implementations,
4150 the newer interpreter-based version (ithreads) with one interpreter per
4151 thread, and the older 5.005 version (5005threads).
4152 The 5005threads version is effectively unmaintained and will probably be
4153 removed in Perl 5.10, so there should be no need to build a Perl using it
4154 unless needed for backwards compatibility with some existing 5.005threads
4158 : Default to ithreads unless overridden on command line or with
4161 case "$use5005threads" in
4162 $define|true|[yY]*) dflt='n';;
4164 case "$useithreads" in
4165 $undef|false|[nN]*) dflt='n';;
4167 rp='Use the newer interpreter-based ithreads?'
4170 y|Y) val="$define" ;;
4175 : Now set use5005threads to the opposite value.
4176 case "$useithreads" in
4177 $define) val="$undef" ;;
4184 useithreads="$undef"
4185 use5005threads="$undef"
4189 case "$useithreads$use5005threads" in
4193 You cannot have both the ithreads and the 5.005 threads enabled
4194 at the same time. Disabling the 5.005 threads since they are
4195 much less stable than the ithreads.
4198 use5005threads="$undef"
4203 : perl-5.9.x and later
4205 use5005threads="$undef"
4206 case "$usethreads" in
4208 : Default to ithreads unless overridden on command line or with
4211 case "$useithreads" in
4212 $undef|false|[nN]*) dflt='n';;
4214 rp='Use the newer interpreter-based ithreads?'
4217 y|Y) val="$define" ;;
4224 useithreads="$undef"
4230 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4233 *** To build with ithreads you must also use the PerlIO layer.
4234 *** Cannot continue, aborting.
4240 case "$d_oldpthreads" in
4241 '') : Configure tests would be welcome here. For now, assume undef.
4243 *) val="$d_oldpthreads" ;;
4249 : Look for a hint-file generated 'call-back-unit'. If the
4250 : user has specified that a threading perl is to be built,
4251 : we may need to set or change some other defaults.
4252 if $test -f usethreads.cbu; then
4253 echo "Your platform has some specific hints regarding threaded builds, using them..."
4256 case "$usethreads" in
4257 "$define"|true|[yY]*)
4259 (Your platform does not have any specific hints for threaded builds.
4260 Assuming POSIX threads, then.)
4268 Perl can be built so that multiple Perl interpreters can coexist
4269 within the same Perl executable.
4272 case "$useithreads" in
4275 This multiple interpreter support is required for interpreter-based threads.
4279 *) case "$usemultiplicity" in
4280 $define|true|[yY]*) dflt='y';;
4284 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4285 rp='Build Perl for multiplicity?'
4288 y|Y) val="$define" ;;
4297 case "$usemorebits" in
4298 "$define"|true|[yY]*)
4299 use64bitint="$define"
4300 uselongdouble="$define"
4301 usemorebits="$define"
4303 *) usemorebits="$undef"
4307 : make some quick guesses about what we are up against
4309 $echo $n "Hmm... $c"
4319 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4320 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4322 echo "Looks kind of like an OSF/1 system, but we'll see..."
4324 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4325 xxx=`./loc addbib blurfl $pth`
4326 if $test -f $xxx; then
4327 echo "Looks kind of like a USG system with BSD features, but we'll see..."
4331 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4332 echo "Looks kind of like an extended USG system, but we'll see..."
4334 echo "Looks kind of like a USG system, but we'll see..."
4338 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4339 echo "Looks kind of like a BSD system, but we'll see..."
4343 echo "Looks kind of like a Version 7 system, but we'll see..."
4346 case "$eunicefix" in
4349 There is, however, a strange, musty smell in the air that reminds me of
4350 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4354 : it so happens the Eunice I know will not run shell scripts in Unix format
4358 echo "Congratulations. You aren't running Eunice."
4362 : Detect OS2. The p_ variable is set above in the Head.U unit.
4363 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4364 : semicolon as a patch separator
4369 I have the feeling something is not exactly right, however...don't tell me...
4370 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4371 (Or you may be running DOS with DJGPP.)
4376 if test -f /xenix; then
4377 echo "Actually, this looks more like a XENIX system..."
4382 echo "It's not Xenix..."
4387 if test -f /venix; then
4388 echo "Actually, this looks more like a VENIX system..."
4395 echo "Nor is it Venix..."
4398 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4399 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4406 rp="Use which C compiler?"
4410 : See if they have not cc but they do have gcc
4412 : Look for a hint-file generated 'call-back-unit'. Now that the
4413 : user has specified the compiler, we may need to set or change some
4415 if $test -f cc.cbu; then
4421 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4425 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4427 printf("%s\n", __VERSION__);
4429 printf("%s\n", "1");
4435 if $cc -o try $ccflags $ldflags try.c; then
4436 gccversion=`$run ./try`
4437 case "$gccversion" in
4438 '') echo "You are not using GNU cc." ;;
4439 *) echo "You are using GNU cc $gccversion."
4445 echo "*** WHOA THERE!!! ***" >&4
4446 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
4447 case "$knowitall" in
4449 echo " You'd better start hunting for one and let me know about it." >&4
4455 case "$gccversion" in
4456 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4458 case "$gccversion" in
4459 '') gccosandvers='' ;;
4460 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4461 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4463 case "$gccosandvers" in
4464 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4465 $osname$osvers) ;; # looking good
4466 $osname*) cat <<EOM >&4
4468 *** WHOA THERE!!! ***
4470 Your gcc has not been compiled for the exact release of
4471 your operating system ($gccosandvers versus $osname$osvers).
4473 In general it is a good idea to keep gcc synchronized with
4474 the operating system because otherwise serious problems
4475 may ensue when trying to compile software, like Perl.
4477 I'm trying to be optimistic here, though, and will continue.
4478 If later during the configuration and build icky compilation
4479 problems appear (headerfile conflicts being the most common
4480 manifestation), I suggest reinstalling the gcc to match
4481 your operating system release.
4485 *) gccosandvers='' ;; # failed to parse, better be silent
4493 # gcc 3.* complain about adding -Idirectories that they already know about,
4494 # so we will take those off from locincpth.
4495 case "$gccversion" in
4497 echo "main(){}">try.c
4498 for incdir in $locincpth; do
4499 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4500 grep '^c[cp]p*[01]: warning: changing search order '`
4501 if test "X$warn" != X; then
4502 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4508 : What should the include directory be ?
4510 $echo $n "Hmm... $c"
4514 if $test -f /bin/mips && /bin/mips; then
4515 echo "Looks like a MIPS system..."
4516 $cat >usr.c <<'EOCP'
4517 #ifdef SYSTYPE_BSD43
4521 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4522 dflt='/bsd43/usr/include'
4526 mips_type='System V'
4528 $rm -f usr.c usr.out
4529 echo "and you're compiling with the $mips_type compiler and libraries."
4533 echo "Doesn't look like a MIPS system."
4543 case "$xxx_prompt" in
4546 rp='Where are the include files you want to use?'
4554 : see how we invoke the C preprocessor
4556 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4557 cat <<'EOT' >testcpp.c
4563 if test ! -f cppstdin; then
4564 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4565 # AIX cc -E doesn't show the absolute headerfile
4566 # locations but we'll cheat by using the -M flag.
4567 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
4569 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4572 echo "Keeping your $hint cppstdin wrapper."
4575 wrapper=`pwd`/cppstdin
4579 if $test "X$cppstdin" != "X" && \
4580 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4581 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4583 echo "You used to use $cppstdin $cppminus so we'll use that again."
4585 '') echo "But let's see if we can live without a wrapper..." ;;
4587 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4588 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4590 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4593 echo "(However, $cpprun $cpplast does not work, let's see...)"
4601 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4608 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4609 $cc -E <testcpp.c >testcpp.out 2>&1; \
4610 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4611 echo "Yup, it does."
4614 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4615 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4616 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4617 echo "Yup, it does."
4620 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4621 $cc -P <testcpp.c >testcpp.out 2>&1; \
4622 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4623 echo "Yipee, that works!"
4626 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4627 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4628 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4629 echo "At long last!"
4632 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4633 $cpp <testcpp.c >testcpp.out 2>&1; \
4634 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4638 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4639 $cpp - <testcpp.c >testcpp.out 2>&1; \
4640 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4641 echo "Hooray, it works! I was beginning to wonder."
4644 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4645 $wrapper <testcpp.c >testcpp.out 2>&1; \
4646 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4652 rp="No dice. I can't find a C preprocessor. Name one:"
4656 $x_cpp <testcpp.c >testcpp.out 2>&1
4657 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4658 echo "OK, that will do." >&4
4660 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4675 echo "Perhaps can we force $cc -E using a wrapper..."
4676 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4677 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4683 echo "Nope, we'll have to live without it..."
4697 "$wrapper"|'cppstdin') ;;
4698 *) $rm -f $wrapper;;
4700 $rm -f testcpp.c testcpp.out
4702 : Set private lib path
4705 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4710 '') dlist="$loclibpth $plibpth $glibpth";;
4711 *) dlist="$libpth";;
4714 : Now check and see which directories actually exist, avoiding duplicates
4718 if $test -d $xxx; then
4721 *) libpth="$libpth $xxx";;
4727 Some systems have incompatible or broken versions of libraries. Among
4728 the directories listed in the question below, please remove any you
4729 know not to be holding relevant libraries, and add any that are needed.
4730 Say "none" for none.
4741 rp="Directories to use for library searches?"
4748 : compute shared library extension
4751 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4761 On some systems, shared libraries may be available. Answer 'none' if
4762 you want to suppress searching of shared libraries for the remainder
4763 of this configuration.
4766 rp='What is the file extension used for shared libraries?'
4770 : Define several unixisms.
4771 : Hints files or command line option can be used to override them.
4772 : The convoluted testing is in case hints files set either the old
4775 '') case "$exe_ext" in
4777 *) _exe="$exe_ext" ;;
4782 '') case "$lib_ext" in
4789 '') case "$obj_ext" in
4796 '') case "$path_sep" in
4807 : Which makefile gets called first. This is used by make depend.
4808 case "$firstmakefile" in
4809 '') firstmakefile='makefile';;
4813 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4816 case "$uselongdouble" in
4817 $define|true|[yY]*) dflt='y';;
4822 Perl can be built to take advantage of long doubles which