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 package (which contains metaconfig) is available via SVN:
17 # svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
28 # Generated on Tue May 27 17:17:47 CEST 2008 [metaconfig 3.5 PL0]
29 # (with additional metaconfig patches by perlbug@perl.org)
34 SCO csh still thinks true is false. Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
37 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
40 [End of diatribe. We now return you to your regularly scheduled programming...]
44 OOPS! You naughty creature! You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
49 true || exec sh $0 $argv:q
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
67 if test ! -c /dev/null ; then
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
73 *** Cannot continue, aborting.
79 : compute my invocation name
83 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
88 : Proper separator for the PATH environment variable
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92 if test -n "$OS2_SHELL"; then
94 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
97 elif test -n "$DJGPP"; then
98 case "X${MACHTYPE:-nonesuchmach}" in
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
118 case "$p_$PATH$p_" in
120 *) test -d $p && PATH=$PATH$p_$p ;;
127 : shall we be using ksh?
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
136 if test -f /hp-ux -a -f /bin/ksh; then
137 needksh='to avoid sh bug in "here document" expansion'
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140 if test X`/usr/bin/uname -v` = X4; then
141 avoidksh="to avoid AIX 4's /bin/sh"
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146 if test X`/usr/bin/uname -s` = XOSF1; then
147 avoidksh="to avoid Digital UNIX' ksh"
152 case "$inksh/$needksh" in
159 case "$inksh/$avoidksh" in
165 case "$inksh/$needksh-$avoidksh-" in
168 (I see you are using the Korn shell. Some ksh's blow up on $me,
169 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
176 echo "(Feeding myself to $newsh $reason.)"
178 Configure|*/Configure) exec $newsh $0 "$@";;
179 *) exec $newsh Configure "$@";;
183 test -x "${newsh}" || unset newsh
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='.' ;;
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
335 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=''
724 d_sprintf_returns_strlen=''
739 d_stdio_ptr_lval_nochange_cnt=''
740 d_stdio_ptr_lval_sets_cnt=''
950 d_inc_version_list=''
952 inc_version_list_init=''
971 ignore_versioned_solibs=''
1035 d_perl_otherlibdirs=''
1043 api_versionstring=''
1049 version_patchlevel_string=''
1053 d_nv_preserves_uv=''
1054 d_nv_zero_is_allbits_zero=''
1065 nv_overflows_integers_at=''
1066 nv_preserves_uv_bits=''
1138 installsitehtml1dir=''
1141 installsitehtml3dir=''
1148 installsiteman1dir=''
1151 installsiteman3dir=''
1156 installsitescript=''
1171 d_stdio_stream_array=''
1172 stdio_stream_array=''
1185 ccflags_uselargefiles=''
1186 ldflags_uselargefiles=''
1187 libswanted_uselargefiles=''
1207 installvendorarch=''
1214 installvendorhtml1dir=''
1216 vendorhtml1direxp=''
1217 installvendorhtml3dir=''
1219 vendorhtml3direxp=''
1225 installvendorman1dir=''
1228 installvendorman3dir=''
1235 installvendorscript=''
1248 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1251 : We must find out about Eunice early
1253 if test -f /etc/unixtovms; then
1254 eunicefix=/etc/unixtovms
1256 if test -f /etc/unixtovms.exe; then
1257 eunicefix=/etc/unixtovms.exe
1260 : Set executable suffix now -- needed before hints available
1261 if test -f "/libs/version.library"; then
1264 elif test -f "/system/gnu_library/bin/ar.pm"; then
1267 elif test -n "$DJGPP"; then
1270 elif test -d c:/. -o -n "$is_os2" ; then
1276 : Trailing extension. Override this in a hint file, if needed.
1277 : Extra object files, if any, needed on this platform.
1282 : change the next line if compiling for Xenix/286 on Xenix/386
1283 xlibpth='/usr/lib/386 /lib/386'
1284 : Possible local library directories to search.
1285 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1286 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1288 : general looking path for locating libraries
1289 glibpth="/lib /usr/lib $xlibpth"
1290 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1291 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1292 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1293 test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1295 : Private path used by Configure to find libraries. Its value
1296 : is prepended to libpth. This variable takes care of special
1297 : machines, like the mips. Usually, it should be empty.
1300 : default library list
1302 : some systems want to use only the non-versioned libso:s
1303 ignore_versioned_solibs=''
1304 : set usethreads on the Configure command line to enable threads.
1305 usereentrant='undef'
1306 : full support for void wanted by default
1309 : Possible local include directories to search.
1310 : Set locincpth to "" in a hint file to defeat local include searches.
1311 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1312 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1314 : no include file wanted by default
1317 : Enable -DEBUGGING and -DDEBUGGING from the command line
1324 : set useposix=false in your hint file to disable the POSIX extension.
1326 : set useopcode=false in your hint file to disable the Opcode extension.
1329 ccflags_uselargefiles=''
1330 ldflags_uselargefiles=''
1331 libswanted_uselargefiles=''
1332 : set usemultiplicity on the Configure command line to enable multiplicity.
1333 : set usesocks on the Configure command line to enable socks.
1334 : List of libraries we want.
1335 : If anyone needs extra -lxxx, put those in a hint file.
1336 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1337 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1338 : We probably want to search /usr/shlib before most other libraries.
1339 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1340 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1341 glibpth="/usr/shlib $glibpth"
1342 : Do not use vfork unless overridden by a hint file.
1345 : Find the basic shell for Bourne shell scripts
1349 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1352 if test -f "$xxx"; then
1355 : Build up a list and do a single loop so we can 'break' out.
1356 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1357 for xxx in sh bash ksh pdksh ash; do
1359 try="$try ${p}/${xxx}"
1363 if test -f "$xxx"; then
1366 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1369 elif test -f "$xxx.exe"; then
1380 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1382 Usually it's in /bin/sh. How did you even get this far?
1383 Please contact me (Perl Maintainers) at perlbug@perl.org and
1384 we'll try to straighten this all out.
1390 : see if sh knows # comments
1391 if `$sh -c '#' >/dev/null 2>&1`; then
1395 test -f $xcat$_exe || xcat=/usr/bin/cat
1396 if test ! -f $xcat$_exe; then
1397 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1398 if test -f $p/cat$_exe; then
1403 if test ! -f $xcat$_exe; then
1404 echo "Can't find cat anywhere!"
1408 echo "#!$xcat" >sharp
1412 if test -s today; then
1415 echo "#! $xcat" > sharp
1419 if test -s today; then
1427 echo "Your $sh doesn't grok # comments--I will strip them later on."
1430 echo "exec grep -v '^[ ]*#'" >spitshell
1432 $eunicefix spitshell
1433 spitshell=`pwd`/spitshell
1435 echo "I presume that if # doesn't work, #! won't work either!"
1440 : figure out how to guarantee sh startup
1442 '') startsh=${sharpbang}${sh} ;;
1454 : echo "Yup, it does."
1456 echo "Hmm... '$startsh' does not guarantee sh startup..."
1457 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1461 : Save command line options in file UU/cmdline.opt for later use in
1462 : generating config.sh.
1463 cat > cmdline.opt <<EOSH
1464 : Configure command line arguments.
1473 cat >>cmdline.opt <<EOSH
1474 config_arg$argn='$arg'
1476 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1479 arg_exp=`cat cmdl.opt`
1480 args_exp="$args_exp$args_sep'$arg_exp'"
1481 argn=`expr $argn + 1`
1486 : produce awk script to parse command line options
1487 cat >options.awk <<'EOF'
1489 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1491 len = length(optstr);
1492 for (i = 1; i <= len; i++) {
1493 c = substr(optstr, i, 1);
1494 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1505 if (substr(str, 1, 1) != "-") {
1506 printf("'%s'\n", str);
1510 for (i = 2; i <= len; i++) {
1511 c = substr(str, i, 1);
1513 printf("-%s\n", substr(str, i));
1519 printf("'%s'\n", substr(str, i + 1));
1532 : process the command line options
1533 set X `for arg in "$@"; do echo "X$arg"; done |
1534 sed -e s/X// | awk -f options.awk`
1539 : set up default values
1549 rm -f optdef.sh posthint.sh
1550 cat >optdef.sh <<EOS
1556 while test $# -gt 0; do
1558 -d) shift; fastread=yes;;
1559 -e) shift; alldone=cont;;
1563 if test -r "$1"; then
1566 echo "$me: cannot read config file $1." >&2
1572 -h) shift; error=true;;
1573 -r) shift; reuseval=true;;
1574 -s) shift; silent=true; realsilent=true;;
1575 -E) shift; alldone=exit;;
1576 -K) shift; knowitall=true;;
1577 -O) shift; override=true;;
1578 -S) shift; silent=true; extractsh=true;;
1583 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1584 echo "$me: ignoring -D $1" >&2
1587 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1588 *) echo "$1='define'" >> optdef.sh;;
1595 *=) echo "$1" >> optdef.sh;;
1597 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1598 echo "$me: ignoring -U $1" >&2
1600 *) echo "$1='undef'" >> optdef.sh;;
1611 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1615 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1616 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1622 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1623 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1624 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1625 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1626 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1627 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1633 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1635 echo "$yyy=''" >> posthint.sh ;;
1640 echo "$yyy='$zzz'" >> posthint.sh ;;
1642 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1644 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1649 echo "$yyy=$zzz" >> posthint.sh ;;
1650 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1654 -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1657 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1665 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1666 [-U symbol] [-U symbol=] [-A command:symbol...]
1667 -d : use defaults for all answers.
1668 -e : go on without questioning past the production of config.sh.
1669 -f : specify an alternate default configuration file.
1670 -h : print this help message and exit (with an error status).
1671 -r : reuse C symbols value if possible (skips costly nm extraction).
1672 -s : silent mode, only echoes questions and essential information.
1673 -D : define symbol to have some value:
1674 -D symbol symbol gets the value 'define'
1675 -D symbol=value symbol gets the value 'value'
1676 common used examples (see INSTALL for more info):
1677 -Duse64bitint use 64bit integers
1678 -Duse64bitall use 64bit integers and pointers
1679 -Dusethreads use thread support
1680 -Dinc_version_list=none do not include older perl trees in @INC
1681 -DEBUGGING=none DEBUGGING options
1682 -Dcc=gcc choose your compiler
1683 -Dprefix=/opt/perl5 choose your destination
1684 -E : stop at the end of questions, after having produced config.sh.
1685 -K : do not use unless you know what you are doing.
1686 -O : let -D and -U override definitions from loaded configuration file.
1687 -S : perform variable substitutions on all .SH files (can mix with -f)
1688 -U : undefine symbol:
1689 -U symbol symbol gets the value 'undef'
1690 -U symbol= symbol gets completely empty
1692 -A : manipulate symbol after the platform specific hints have been applied:
1693 -A append:symbol=value append value to symbol
1694 -A symbol=value like append:, but with a separating space
1695 -A define:symbol=value define symbol to have value
1696 -A clear:symbol define symbol to be ''
1697 -A define:symbol define symbol to be 'define'
1698 -A eval:symbol=value define symbol to be eval of value
1699 -A prepend:symbol=value prepend value to symbol
1700 -A undef:symbol define symbol to be 'undef'
1701 -A undef:symbol= define symbol to be ''
1702 e.g.: -A prepend:libswanted='cl pthread '
1703 -A ccflags=-DSOME_MACRO
1704 -V : print version number and exit (with a zero status).
1711 case "$fastread$alldone" in
1714 case "$extractsh" in
1717 if test ! -t 0; then
1718 echo "Say 'sh Configure', not 'sh <Configure'"
1728 true) exec 1>/dev/null;;
1731 : run the defines and the undefines, if any, but leave the file out there...
1734 : create the posthint manipulation script and leave the file out there...
1739 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1740 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1741 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1742 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1743 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1746 : Some greps do not return status, grrr.
1747 echo "grimblepritz" >grimble
1748 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1750 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1756 : the following should work in any shell
1760 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1761 cat >contains <<'EOSS'
1762 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1767 : Find the path to the source tree
1770 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1774 *) src=`cd ../$src && pwd` ;;
1787 if test -f $rsrc/Configure && \
1788 $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1790 : found it, so we are ok.
1793 for src in . .. ../.. ../../.. ../../../..; do
1794 if test -f ../$src/Configure && \
1795 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1806 Sorry, I can't seem to locate the source dir for $package. Please start
1807 Configure with an explicit path -- i.e. /some/path/Configure.
1815 echo "Sources for $package found in \"$src\"." >&4
1819 : script used to extract .SH files with variable substitutions
1820 cat >extract <<'EOS'
1822 echo "Doing variable substitutions on .SH files..."
1823 if test -f MANIFEST; then
1824 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1826 echo "(Looking for .SH files under the source directory.)"
1827 set x `(cd "$src"; find . -name "*.SH" -print)`
1831 0) set x `(cd "$src"; echo *.SH)`; shift;;
1833 if test ! -f "$src/$1"; then
1839 while test $name; do
1840 if test ! -d "$name"; then
1841 create="$name $create";
1842 name=`echo $name | sed -e "s|^[^/]*$||"`;
1843 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1848 for file in $create; do
1857 dir=`expr X$file : 'X\(.*\)/'`
1858 file=`expr X$file : 'X.*/\(.*\)'`
1859 (cd "$dir" && . ./$file)
1869 dir=`expr X$file : 'X\(.*\)/'`
1870 file=`expr X$file : 'X.*/\(.*\)'`
1871 (set x $dir; shift; eval $mkdir_p)
1872 sh <"$src/$dir/$file"
1881 if test -f "$src/config_h.SH"; then
1882 if test ! -f config.h; then
1883 : oops, they left it out of MANIFEST, probably, so do it anyway.
1884 . "$src/config_h.SH"
1889 : extract files and exit if asked to do so
1890 case "$extractsh" in
1892 case "$realsilent" in
1896 case "$config_sh" in
1897 '') config_sh='config.sh';;
1900 echo "Fetching answers from $config_sh..."
1903 test "$override" && . ./optdef.sh
1907 echo "Extraction done."
1912 : Eunice requires " " instead of "", can you believe it
1915 echo "Beginning of configuration questions for $package."
1917 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1919 : first determine how to suppress newline on echo command
1921 echo "Checking echo to see how to suppress newlines..."
1922 (echo "hi there\c" ; echo " ") >.echotmp
1923 if $contains c .echotmp >/dev/null 2>&1 ; then
1934 echo $n "The star should be here-->$c"
1938 : Now test for existence of everything in MANIFEST
1940 if test -f "$rsrc/MANIFEST"; then
1941 echo "First let's make sure your kit is complete. Checking..." >&4
1942 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" |\
1943 (split -l 50 2>/dev/null || split -50)
1946 for filelist in x??; do
1947 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
1948 >/dev/null 2>>"$tmppwd/missing")
1950 if test -s missing; then
1954 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1956 You have the option of continuing the configuration process, despite the
1957 distinct possibility that your kit is damaged, by typing 'y'es. If you
1958 do, don't blame me if something goes wrong. I advise you to type 'n'o
1959 and contact the author (perlbug@perl.org).
1962 echo $n "Continue? [n] $c" >&4
1966 echo "Continuing..." >&4
1970 echo "ABORTING..." >&4
1975 echo "Looks good..."
1978 echo "There is no MANIFEST file. I hope your kit is complete !"
1982 : Find the appropriate value for a newline for tr
1984 if test -n "$DJGPP"; then
1987 if test X"$trnl" = X; then
1988 case "`echo foo|tr '\n' x 2>/dev/null`" in
1992 if test X"$trnl" = X; then
1993 case "`echo foo|tr '\012' x 2>/dev/null`" in
1994 foox) trnl='\012' ;;
1997 if test X"$trnl" = X; then
1998 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1999 fooxy) trnl='\n\r' ;;
2002 if test X"$trnl" = X; then
2005 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2011 : compute the number of columns on the terminal for proper question formatting
2016 : set up the echo used in my read
2017 myecho="case \"\$xxxm\" in
2018 '') echo $n \"\$rp $c\" >&4;;
2020 '') echo $n \"[\$xxxm] $c\";;
2022 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2024 echo $n \"[\$xxxm] $c\" >&4
2026 echo $n \"\$rp [\$xxxm] $c\" >&4
2032 : now set up to do reads with possible shell escape and default assignment
2038 case "\$fastread" in
2039 yes) case "\$dflt" in
2042 case "\$silent-\$rp" in
2047 *) case "\$silent" in
2048 true) case "\$rp" in
2053 while expr "X\$ans" : "X!" >/dev/null; do
2057 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2065 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2074 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2079 echo "(OK, I'll run with -d after this question.)" >&4
2082 echo "*** Sorry, \$1 not supported yet." >&4
2092 echo "*** Substitution done -- please confirm."
2094 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2099 echo "*** Error -- try again."
2106 case "\$ans\$xxxm\$nostick" in
2118 : create .config dir to save info across Configure sessions
2119 test -d ../.config || mkdir ../.config
2120 cat >../.config/README <<EOF
2121 This directory created by Configure to save information that should
2122 persist across sessions for $package.
2124 You may safely delete it if you wish.
2127 : See if we are using a devel version and want that
2128 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2130 $define|true|[yY]*) ;;
2131 *) case "$xversion" in
2134 *** WHOA THERE!!! ***
2136 This is an UNSTABLE DEVELOPMENT release.
2137 The version of this $package distribution is $xversion, that is, odd,
2138 (as opposed to even) and that signifies a development release.
2139 If you want a maintenance release, you want an even-numbered version.
2141 Do ***NOT*** install this into production use.
2142 Data corruption and crashes are possible.
2144 It is most seriously suggested that you do not continue any further
2145 unless you want to help in developing and debugging Perl.
2147 If you *still* want to build perl, you can answer 'y' now,
2148 or pass -Dusedevel to Configure.
2151 rp='Do you really want to continue?'
2155 [yY]) echo >&4 "Okay, continuing."
2156 usedevel="$define" ;;
2157 *) echo >&4 "Okay, bye."
2167 case "$versiononly" in
2168 '') versiononly="$define" ;;
2170 case "$installusrbinperl" in
2171 '') installusrbinperl="$undef" ;;
2176 : general instructions
2179 user=`(logname) 2>/dev/null`
2181 '') user=`whoami 2>&1`;;
2183 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2186 rp='Would you like to see the instructions?'
2197 This installation shell script will examine your system and ask you questions
2198 to determine how the perl5 package should be installed. If you get
2199 stuck on a question, you may use a ! shell escape to start a subshell or
2200 execute a command. Many of the questions will have default answers in square
2201 brackets; typing carriage return will give you the default.
2203 On some of the questions which ask for file or directory names you are allowed
2204 to use the ~name construct to specify the login directory belonging to "name",
2205 even if you don't have a shell which knows about that. Questions where this is
2206 allowed will be marked "(~name ok)".
2210 dflt='Type carriage return to continue'
2214 The prompter used in this script allows you to use shell variables and
2215 backticks in your answers. You may use $1, $2, etc... to refer to the words
2216 in the default answer, as if the default line was a set of arguments given to a
2217 script shell. This means you may also use $* to repeat the whole default line,
2218 so you do not have to re-type everything to add something to the default.
2220 Everytime there is a substitution, you will have to confirm. If there is an
2221 error (e.g. an unmatched backtick), the default answer will remain unchanged
2222 and you will be prompted again.
2224 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2225 the questions and use the computed defaults (or the previous answers if there
2226 was already a config.sh file). Type 'Configure -h' for a list of options.
2227 You may also start interactively and then answer '& -d' at any prompt to turn
2228 on the non-interactive behaviour for the remainder of the execution.
2234 Much effort has been expended to ensure that this shell script will run on any
2235 Unix system. If despite that it blows up on yours, your best bet is to edit
2236 Configure and run it again. If you can't run Configure for some reason,
2237 you'll have to generate a config.sh file by hand. Whatever problems you
2238 have, let me (perlbug@perl.org) know how I blew it.
2240 This installation script affects things in two ways:
2242 1) it may do direct variable substitutions on some of the files included
2244 2) it builds a config.h file for inclusion in C programs. You may edit
2245 any of these files as the need arises after running this script.
2247 If you make a mistake on a question, there is no easy way to back up to it
2248 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2249 files. Configure will offer to let you do this before it runs the SH files.
2252 dflt='Type carriage return to continue'
2254 case "$firsttime" in
2255 true) echo $user >>../.config/instruct;;
2259 : find out where common programs are
2261 echo "Locating common programs..." >&4
2274 if test -d \$dir/\$thing; then
2280 for thisthing in \$dir/\$thing; do
2281 : just loop through to pick last item
2283 if test -f \$thisthing; then
2286 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2289 elif test -f \$dir/\$thing.exe; then
2290 if test -n "$DJGPP"; then
2291 echo \$dir/\$thing.exe
2292 elif test "$eunicefix" != ":"; then
2293 : on Eunice apparently
2345 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2346 pth="$pth /lib /usr/lib"
2347 for file in $loclist; do
2351 if test -f "$xxx"; then
2354 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2355 xxx=`./loc $file $file $pth`
2358 '') xxx=`./loc $file $file $pth`;;
2359 *) xxx=`./loc $xxx $xxx $pth`;;
2361 eval $file=$xxx$_exe
2365 echo $file is in $xxx.
2368 echo $file is in $xxx.
2371 echo "I don't know where '$file' is, and my life depends on it." >&4
2372 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2378 echo "Don't worry if any of the following aren't found..."
2380 for file in $trylist; do
2384 if test -f "$xxx"; then
2387 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2388 xxx=`./loc $file $file $pth`
2391 '') xxx=`./loc $file $file $pth`;;
2392 *) xxx=`./loc $xxx $xxx $pth`;;
2394 eval $file=$xxx$_exe
2398 echo $file is in $xxx.
2401 echo $file is in $xxx.
2404 echo "I don't see $file out there, $say."
2411 echo "Substituting grep for egrep."
2418 echo "Substituting cp for ln."
2427 echo "I can't find make or gmake, and my life depends on it." >&4
2428 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2436 *) # We can't have osname yet.
2437 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2438 # Assume that gmake, if found, is definitely GNU make
2439 # and prefer it over the system make.
2440 echo "Substituting gmake for make."
2448 echo "Hopefully test is built into your sh."
2451 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2452 echo "Using the test built into your sh."
2460 echo "Hopefully echo is built into your sh."
2465 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2466 $echo $n "hi there$c" >foo1
2467 echo $n "hi there$c" >foo2
2468 if cmp foo1 foo2 >/dev/null 2>&1; then
2469 echo "They are compatible. In fact, they may be identical."
2476 They are not compatible! You are probably running ksh on a non-USG system.
2477 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2478 have echo built in and we may have to run some Bourne shell scripts. That
2479 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2482 $echo $n "The star should be here-->$c"
2489 # This question was auctioned at YAPC::Europe-2007 in Vienna
2490 # I never promised you could answer it. I only auctioned the question.
2492 The following message is sponsored by
2494 Dresden.pm<--The stars should be here.
2496 Dear Perl user, system administrator or package
2497 maintainer, the Perl community sends greetings to
2498 you. Do you (emblematical) greet back [Y/n]? n
2502 : Check what type of C compiler we use
2506 cat <<'EOSC' >>trygcc
2511 int main(int argc, char *argv[]) {
2515 if $cc -o try $ccflags $ldflags try.c; then
2518 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2524 # Skip this test because it gives a false match on output like:
2525 # ./trygcc: line 23: cc: command not found
2526 # case "`$cc -v -c try.c 2>&1`" in
2527 # *gcc*) trygcc=no ;;
2529 if $test X"$trygcc" = Xyes; then
2530 if gcc -o try -c try.c; then
2532 echo "You seem to have a working gcc, though." >&4
2533 # Switching compilers may undo the work of hints files.
2534 # The most common problem is -D_REENTRANT for threads.
2535 # This heuristic catches that case, but gets false positives
2536 # if -Dusethreads was not actually specified. Better to
2537 # bail out here with a useful message than fail
2538 # mysteriously later. Should we perhaps just try to
2539 # re-invoke Configure -Dcc=gcc config_args ?
2540 if $test -f usethreads.cbu; then
2543 *** However, any setting of the C compiler flags (e.g. for thread support)
2544 *** will be lost. It may be necessary for you to restart Configure and
2545 *** add -Dcc=gcc to your Configure command line.
2548 rp="Would you like to go ahead and try gcc anyway?"
2551 rp="Would you like to use it?"
2554 if $test -f myread; then
2557 if $test -f UU/myread; then
2560 echo "Cannot find myread, sorry. Aborting." >&2
2565 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2578 cat <<'EOSC' >>checkcc
2583 int main(int argc, char *argv[]) {
2587 if $cc -o try $ccflags $ldflags try.c; then
2590 if $test X"$despair" = Xyes; then
2591 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2594 You need to find a working C compiler.
2595 Either (purchase and) install the C compiler supplied by your OS vendor,
2596 or for a free C compiler try http://gcc.gnu.org/
2597 I cannot continue any further, aborting.
2606 : determine whether symbolic links are supported
2609 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2610 echo "Symbolic links are supported." >&4
2613 echo "Symbolic links are NOT supported." >&4
2618 : determine whether symbolic links are supported
2622 echo "Checking how to test for symbolic links..." >&4
2624 if $test "X$issymlink" = X; then
2626 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2627 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2629 if test $? = 0; then
2632 echo "Your builtin 'test -h' may be broken." >&4
2635 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2638 if test -f "$p/$test"; then
2647 echo "Trying external '$test -h'." >&4
2648 issymlink="$test -h"
2649 if $test ! -h sym >/dev/null 2>&1; then
2650 echo "External '$test -h' is broken, too." >&4
2658 if $test "X$issymlink" = X; then
2659 if $test -L sym 2>/dev/null; then
2660 issymlink="$test -L"
2661 echo "The builtin '$test -L' worked." >&4
2664 if $test "X$issymlink" != X; then
2665 echo "You can test for symbolic links with '$issymlink'." >&4
2667 echo "I do not know how you can test for symbolic links." >&4
2671 *) echo "No symbolic links, so not testing for their testing..." >&4
2676 : Make symlinks util
2677 case "$mksymlinks" in
2680 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2683 *) case "$lns:$issymlink" in
2684 *"ln"*" -s:"*"test -"?)
2685 echo "Creating the symbolic links..." >&4
2686 echo "(First creating the subdirectories...)" >&4
2688 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2690 test -z "$directory" && break
2694 if test ! -d t/base; then
2695 echo "Failed to create the subdirectories. Aborting." >&4
2698 echo "(Then creating the symlinks...)" >&4
2699 awk '{print $1}' $src/MANIFEST | while true; do
2701 test -z "$filename" && break
2702 if test -f $filename; then
2703 if $issymlink $filename; then
2707 if test -f $filename; then
2708 echo "$filename already exists, not symlinking."
2710 ln -s $src/$filename $filename
2714 if test ! -f t/base/lex.t; then
2715 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2720 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2728 : Check for Cross-Compilation
2729 case "$usecrosscompile" in
2731 $echo "Cross-compiling..."
2734 *-*-gcc) # A cross-compiling gcc, probably.
2735 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2737 # leave out ld, choosing it is more complex
2739 ranlib=$targetarch-ranlib
2740 $echo 'extern int foo;' > try.c
2741 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2743 if $test $# -gt 0; then
2745 incpth="`$echo $incpth|$sed 's/^ //'`"
2746 echo "Guessing incpth '$incpth'." >&4
2748 j="`$echo $i|$sed 's,/include$,/lib,'`"
2749 if $test -d $j; then
2753 libpth="`$echo $libpth|$sed 's/^ //'`"
2754 echo "Guessing libpth '$libpth'." >&4
2759 case "$targetarch" in
2760 '') echo "Targetarch not defined." >&4; croak=y ;;
2761 *) echo "Using targetarch $targetarch." >&4 ;;
2764 '') echo "Incpth not defined." >&4; croak=y ;;
2765 *) echo "Using incpth '$incpth'." >&4 ;;
2768 '') echo "Libpth not defined." >&4; croak=y ;;
2769 *) echo "Using libpth '$libpth'." >&4 ;;
2772 '') for i in $incpth; do
2773 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2775 echo "Guessing usrinc $usrinc." >&4
2780 '') echo "Usrinc not defined." >&4; croak=y ;;
2783 *) echo "Using usrinc $usrinc." >&4 ;;
2785 case "$targethost" in
2786 '') echo "Targethost not defined." >&4; croak=y ;;
2787 *) echo "Using targethost $targethost." >&4
2792 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2795 /*) run=$src/Cross/run
2796 targetmkdir=$src/Cross/mkdir
2798 from=$src/Cross/from
2800 *) pwd=`$test -f ../Configure & cd ..; pwd`
2802 targetmkdir=$pwd/Cross/mkdir
2804 from=$pwd/Cross/from
2807 case "$targetrun" in
2808 '') targetrun=ssh ;;
2813 case "$targetfrom" in
2814 '') targetfrom=scp ;;
2818 from=$from-$targetfrom
2819 case "$targetdir" in
2821 echo "Guessing targetdir $targetdir." >&4
2824 case "$targetuser" in
2826 echo "Guessing targetuser $targetuser." >&4
2829 case "$targetfrom" in
2833 case "$targetrun" in
2845 '') cwd=$targetdir ;;
2849 if $test ! -f \$exe.xok; then
2853 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2856 *) echo "Unknown targetrun '$targetrun'" >&4
2860 case "$targetmkdir" in
2862 cat >$targetmkdir <<EOF
2864 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2866 $chmod a+rx $targetmkdir
2868 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2880 $targetmkdir \`dirname \$f\`
2881 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2884 $targetmkdir $targetdir/\`dirname \$f\`
2885 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2898 $mkdir -p $targetdir/\`dirname \$f\`
2899 $cp \$f $targetdir/\$f || exit 1
2902 $targetmkdir $targetdir/\`dirname \$f\`
2903 $cp \$f $targetdir/\$f || exit 1
2910 *) echo "Unknown targetto '$targetto'" >&4
2914 case "$targetfrom" in
2921 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2926 cp) cat >$from <<EOF
2931 cp $targetdir/\$f . || exit 1
2936 *) echo "Unknown targetfrom '$targetfrom'" >&4
2940 if $test ! -f $run; then
2941 echo "Target 'run' script '$run' not found." >&4
2945 if $test ! -f $to; then
2946 echo "Target 'to' script '$to' not found." >&4
2950 if $test ! -f $from; then
2951 echo "Target 'from' script '$from' not found." >&4
2955 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2959 Using '$run' for remote execution,
2960 and '$from' and '$to'
2961 for remote file transfer.
2967 usecrosscompile='undef'
2972 : see whether [:lower:] and [:upper:] are supported character classes
2974 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2976 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2980 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2981 # (0xd9 and 0xe2), therefore that is a nice testing point.
2982 if test "X$up" = X -o "X$low" = X; then
2983 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2989 if test "X$up" = X -o "X$low" = X; then
2990 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2996 if test "X$up" = X -o "X$low" = X; then
2997 case "`echo RS | od -x 2>/dev/null`" in
2999 echo "Hey, this might be EBCDIC." >&4
3000 if test "X$up" = X -o "X$low" = X; then
3001 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3002 rs) up='[A-IJ-RS-Z]'
3007 if test "X$up" = X -o "X$low" = X; then
3008 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3018 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3020 echo "Using $up and $low to convert case." >&4
3023 echo "I don't know how to translate letters from upper to lower case." >&4
3024 echo "Your tr is not acting any way I know of." >&4
3028 : set up the translation script tr, must be called with ./tr of course
3032 '[A-Z][a-z]') exec $tr '$up' '$low';;
3033 '[a-z][A-Z]') exec $tr '$low' '$up';;
3040 : Try to determine whether config.sh was made on this system
3041 case "$config_sh" in
3043 myuname=`$uname -a 2>/dev/null`
3044 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3045 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3046 # because the A-Z/a-z are not consecutive.
3047 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3048 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3049 newmyuname="$myuname"
3051 case "$knowitall" in
3053 if test -f ../config.sh; then
3054 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3055 eval "`grep myuname= ../config.sh`"
3057 if test "X$myuname" = "X$newmyuname"; then
3065 : Get old answers from old config file if Configure was run on the
3066 : same system, otherwise use the hints.
3069 if test -f config.sh; then
3071 rp="I see a config.sh file. Shall I use it to set the defaults?"
3074 n*|N*) echo "OK, I'll ignore it."
3075 mv config.sh config.sh.old
3076 myuname="$newmyuname"
3078 *) echo "Fetching default answers from your old config.sh file..." >&4
3086 : Older versions did not always set $sh. Catch re-use of such
3096 if test ! -f config.sh; then
3099 First time through, eh? I have some defaults handy for some systems
3100 that need some extra help getting the Configure answers right:
3103 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3105 : Half the following guesses are probably wrong... If you have better
3106 : tests or hints, please send them to perlbug@perl.org
3107 : The metaconfig authors would also appreciate a copy...
3108 $test -f /irix && osname=irix
3109 $test -f /xenix && osname=sco_xenix
3110 $test -f /dynix && osname=dynix
3111 $test -f /dnix && osname=dnix
3112 $test -f /lynx.os && osname=lynxos
3113 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3114 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3115 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3116 $test -f /bin/mips && /bin/mips && osname=mips
3117 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3118 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3119 $test -d /usr/apollo/bin && osname=apollo
3120 $test -f /etc/saf/_sactab && osname=svr4
3121 $test -d /usr/include/minix && osname=minix
3122 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3123 if $test -d /MachTen -o -d /MachTen_Folder; then
3125 if $test -x /sbin/version; then
3126 osvers=`/sbin/version | $awk '{print $2}' |
3127 $sed -e 's/[A-Za-z]$//'`
3128 elif $test -x /usr/etc/version; then
3129 osvers=`/usr/etc/version | $awk '{print $2}' |
3130 $sed -e 's/[A-Za-z]$//'`
3136 $test -f /sys/posix.dll &&
3137 $test -f /usr/bin/what &&
3138 set X `/usr/bin/what /sys/posix.dll` &&
3139 $test "$3" = UWIN &&
3143 if $test -f $uname; then
3151 umips) osname=umips ;;
3154 [23]100) osname=mips ;;
3155 next*) osname=next ;;
3157 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3158 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3161 elif $test -f /etc/kconfig; then
3163 if test "$lns" = "$ln -s"; then
3165 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3167 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3174 if test -n "$DJGPP"; then
3183 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3185 # oslevel can fail with:
3186 # oslevel: Unable to acquire lock.
3187 *not\ found) osvers="$4"."$3" ;;
3188 '<3240'|'<>3240') osvers=3.2.0 ;;
3189 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3190 '=3250'|'>3250') osvers=3.2.5 ;;
3194 bsd386) osname=bsd386
3197 cygwin*) osname=cygwin
3200 *dc.osx) osname=dcosx
3206 domainos) osname=apollo
3212 dragonfly) osname=dragonfly
3215 dynixptx*) osname=dynixptx
3216 osvers=`echo "$4"|sed 's/^v//'`
3218 freebsd) osname=freebsd
3220 genix) osname=genix ;;
3224 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3240 netbsd*) osname=netbsd
3243 news-os) osvers="$3"
3245 4*) osname=newsos4 ;;
3249 next*) osname=next ;;
3250 nonstop-ux) osname=nonstopux ;;
3251 openbsd) osname=openbsd
3257 POSIX-BC | posix-bc ) osname=posix-bc
3260 powerux | power_ux | powermax_os | powermaxos | \
3261 powerunix | power_unix) osname=powerux
3267 solaris) osname=solaris
3269 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3276 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3280 titanos) osname=titanos
3289 ultrix) osname=ultrix
3292 osf1|mls+) case "$5" in
3295 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3298 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3301 hp*) osname=hp_osf1 ;;
3302 mips) osname=mips_osf1 ;;
3305 # UnixWare 7.1.2 is known as Open UNIX 8
3306 openunix|unixware) osname=svr5
3314 $2) case "$osname" in
3318 : svr4.x or possibly later
3328 if test -f /stand/boot ; then
3329 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3330 if test -n "$INITPROG" -a -f "$INITPROG"; then
3331 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3332 if test -n "$isesix"; then
3340 *) if test -f /etc/systemid; then
3342 set `echo $3 | $sed 's/\./ /g'` $4
3343 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3345 elif $test -f $src/hints/sco_$1_$2.sh; then
3347 elif $test -f $src/hints/sco_$1.sh; then
3352 '') : Still unknown. Probably a generic Sys V.
3361 *) case "$osname" in
3362 '') : Still unknown. Probably a generic BSD.
3370 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3371 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3372 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3375 $rm -f UU/kernel.what
3376 elif test -d c:/. -o -n "$is_os2" ; then
3383 case "$targetarch" in
3386 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3391 : Now look for a hint file osname_osvers, unless one has been
3392 : specified already.
3395 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3396 : Also try without trailing minor version numbers.
3397 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3398 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3399 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3400 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3403 *) case "$osvers" in
3406 *) if $test -f $src/hints/$file.sh ; then
3408 elif $test -f $src/hints/$xfile.sh ; then
3410 elif $test -f $src/hints/$xxfile.sh ; then
3412 elif $test -f $src/hints/$xxxfile.sh ; then
3414 elif $test -f $src/hints/$xxxxfile.sh ; then
3416 elif $test -f "$src/hints/${osname}.sh" ; then
3425 if $test -f Policy.sh ; then
3428 none) dflt="Policy" ;;
3429 *) dflt="Policy $dflt" ;;
3434 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3438 if $test -f Policy.sh ; then
3441 There's also a Policy hint file available, which should make the
3442 site-specific (policy) questions easier to answer.
3449 You may give one or more space-separated answers, or "none" if appropriate.
3450 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3451 previous run of Configure, you may specify it as well as or instead of
3452 OS-specific hints. If hints are provided for your OS, you should use them:
3453 although Perl can probably be built without hints on many platforms, using
3454 hints often improve performance and may enable features that Configure can't
3455 set up on its own. If there are no hints that match your OS, specify "none";
3456 DO NOT give a wrong version or a wrong OS.
3460 rp="Which of these apply, if any?"
3463 for file in $tans; do
3464 if $test X$file = XPolicy -a -f Policy.sh; then
3466 $cat Policy.sh >> UU/config.sh
3467 elif $test -f $src/hints/$file.sh; then
3468 . $src/hints/$file.sh
3469 $cat $src/hints/$file.sh >> UU/config.sh
3470 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3473 : Give one chance to correct a possible typo.
3474 echo "$file.sh does not exist"
3476 rp="hint to use instead?"
3478 for file in $ans; do
3479 if $test -f "$src/hints/$file.sh"; then
3480 . $src/hints/$file.sh
3481 $cat $src/hints/$file.sh >> UU/config.sh
3482 elif $test X$ans = X -o X$ans = Xnone ; then
3485 echo "$file.sh does not exist -- ignored."
3492 : Remember our hint file for later.
3493 if $test -f "$src/hints/$file.sh" ; then
3503 echo "Fetching default answers from $config_sh..." >&4
3507 cp $config_sh config.sh 2>/dev/null
3517 test "$override" && . ./optdef.sh
3519 : Restore computed paths
3520 for file in $loclist $trylist; do
3521 eval $file="\$_$file"
3526 Configure uses the operating system name and version to set some defaults.
3527 The default value is probably right if the name rings a bell. Otherwise,
3528 since spelling matters for me, either accept the default or answer "none"
3535 ''|' '|none) dflt=none ;;
3536 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3539 *) dflt="$osname" ;;
3541 rp="Operating system name?"
3545 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3551 ''|' '|none) dflt=none ;;
3552 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3553 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3555 ''|' ') dflt=none ;;
3560 *) dflt="$osvers" ;;
3562 rp="Operating system version?"
3572 : who configured the system
3573 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3576 cf_by=`(logname) 2>/dev/null`
3579 cf_by=`(whoami) 2>/dev/null`
3581 "") cf_by=unknown ;;
3586 : decide how portable to be. Allow command line overrides.
3587 case "$d_portable" in
3589 *) d_portable="$define" ;;
3592 : set up shell script to do ~ expansion
3598 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3601 if $test -f /bin/csh; then
3602 /bin/csh -f -c "glob \$1"
3607 name=\`$expr x\$1 : '..\([^/]*\)'\`
3608 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3609 if $test ! -d "\$dir"; then
3611 echo "\$me: can't locate home directory for: \$name" >&2
3616 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3632 : now set up to get a file name
3636 cat <<'EOSC' >>getfile
3652 : getfile will accept an answer from the comma-separated list
3653 : enclosed in parentheses even if it does not meet other criteria.
3654 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3655 fn=`echo $fn | sed 's/(.*)//'`
3661 loc_file=`expr $fn : '.*:\(.*\)'`
3662 fn=`expr $fn : '\(.*\):.*'`
3670 */*) fullpath=true;;
3679 *e*) exp_file=true;;
3682 *p*) nopath_ok=true;;
3687 *d*) type='Directory';;
3688 *l*) type='Locate';;
3693 Locate) what='File';;
3698 case "$d_portable" in
3706 while test "$type"; do
3711 true) rp="$rp (~name ok)";;
3714 if test -f UU/getfile.ok && \
3715 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3734 value=`UU/filexp $ans`
3737 if test "$ans" != "$value"; then
3738 echo "(That expands to $value on this system.)"
3752 /*) value="$ansexp" ;;
3753 [a-zA-Z]:/*) value="$ansexp" ;;
3758 echo "I shall only accept a full path name, as in /bin/ls." >&4
3759 echo "Use a ! shell escape if you wish to check pathnames." >&4
3762 echo "Please give a full path name, starting with slash." >&4
3765 echo "Note that using ~name is ok provided it expands well." >&4
3778 for fp in $gfpth; do
3779 if test "X$fp" = X.; then
3784 if test -f "$pf"; then
3786 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3788 echo "($value is not a plain file, but that's ok.)"
3791 if test X"$type" = X; then
3798 for fp in $gfpth; do
3799 if test "X$fp" = X.; then
3804 direxp="$fp/$ansexp"
3806 if test -d "$direxp"; then
3814 if test -d "$ansexp"; then
3815 echo "(Looking for $loc_file in directory $value.)"
3816 value="$value/$loc_file"
3817 ansexp="$ansexp/$loc_file"
3819 if test -f "$ansexp"; then
3822 case "$nopath_ok" in
3823 true) case "$value" in
3825 *) echo "Assuming $value will be in people's path."
3841 if test "$fastread" = yes; then
3846 rp="$what $value doesn't exist. Use that name anyway?"
3865 test "X$gfpthkeep" != Xy && gfpth=""
3868 : determine root of directory hierarchy where package will be installed.
3871 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3874 dflt=`echo "$prefix" | sed 's/.$//'`
3882 By default, $package will be installed in $dflt/bin, manual pages
3883 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3884 installation directories. Typically this is something like /usr/local.
3885 If you wish to have binaries under /usr/bin but other parts of the
3886 installation under /usr/local, that's ok: you will be prompted
3887 separately for each of the installation directories, the prefix being
3888 only used to set the defaults.
3892 rp='Installation prefix to use?'
3900 *) oldprefix="$prefix";;
3907 : allow them to override the AFS root
3910 *) afsroot=$afsroot ;;
3916 $define|true) afs=true ;;
3917 $undef|false) afs=false ;;
3918 *) if $test -d $afsroot; then
3926 echo "AFS may be running... I'll be extra cautious then..." >&4
3928 echo "AFS does not seem to be running..." >&4
3931 : determine installation prefix for where package is to be installed.
3935 Since you are running AFS, I need to distinguish the directory in which
3936 files will reside from the directory in which they are installed (and from
3937 which they are presumably copied to the former directory by occult means).
3940 case "$installprefix" in
3941 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3942 *) dflt="$installprefix";;
3947 In some special cases, particularly when building $package for distribution,
3948 it is convenient to distinguish the directory in which files should be
3949 installed from the directory ($prefix) in which they will
3950 eventually reside. For most users, these two directories are the same.
3953 case "$installprefix" in
3955 *) dflt=$installprefix;;
3959 rp='What installation prefix should I use for installing files?'
3961 installprefix="$ans"
3962 installprefixexp="$ansexp"
3964 : Perform the prefixexp/installprefixexp correction if necessary
3965 cat <<EOS >installprefix
3968 cat <<'EOSC' >>installprefix
3969 : Change installation prefix, if necessary.
3970 if $test X"$prefix" != X"$installprefix"; then
3971 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3973 eval "install${prefixvar}=\"\$${prefixvar}exp\""
3976 chmod +x installprefix
3977 $eunicefix installprefix
3979 : Set variables such as privlib and privlibexp from the output of ./getfile
3980 : performing the prefixexp/installprefixexp correction if necessary.
3981 cat <<EOS >setprefixvar
3984 cat <<'EOSC' >>setprefixvar
3985 eval "${prefixvar}=\"\$ans\""
3986 eval "${prefixvar}exp=\"\$ansexp\""
3989 chmod +x setprefixvar
3990 $eunicefix setprefixvar
3992 : set up the script used to warn in case of inconsistency
4001 '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4003 *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
4004 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4009 echo "*** WHOA THERE!!! ***" >&4
4010 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
4013 rp=" Keep the $hint value?"
4016 y) td=$was; tu=$was;;
4020 : function used to set '$1' to '$val'
4021 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4023 $define$undef) . ./whoa; eval "$var=\$td";;
4024 $undef$define) . ./whoa; eval "$var=\$tu";;
4025 *) eval "$var=$val";;
4028 : Check is we will use socks
4030 $define|true|[yY]*) dflt='y';;
4035 Perl can be built to use the SOCKS proxy protocol library. To do so,
4036 Configure must be run with -Dusesocks. If you use SOCKS you also need
4037 to use the PerlIO abstraction layer, this will be implicitly selected.
4039 If this doesn't make any sense to you, just accept the default '$dflt'.
4041 rp='Build Perl for SOCKS?'
4044 y|Y) val="$define" ;;
4051 $define|true|[yY]*) useperlio="$define";;
4054 : Check if we want perlio
4055 case "$useperlio" in
4056 $define|true|[yY]*|'') dflt='y';;
4061 Previous version of $package used the standard IO mechanisms as
4062 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
4063 alternate IO mechanisms via the PerlIO abstraction layer, but the
4064 stdio mechanism is still available if needed. The abstraction layer
4065 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4066 Using PerlIO with sfio may cause problems with some extension modules.
4068 If this doesn't make any sense to you, just accept the default '$dflt'.
4070 rp='Use the PerlIO abstraction layer?'
4077 echo "Ok, doing things the stdio way."
4086 case "$useperlio" in
4087 $define|true|[yY]*) ;;
4090 You are using the SOCKS proxy protocol library which means that you
4091 should also use the PerlIO layer. You may be headed for trouble.
4099 : get the patchlevel
4101 echo "Getting the current patchlevel..." >&4
4102 if $test -r $rsrc/patchlevel.h;then
4103 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4104 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4105 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4106 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4107 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4108 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4109 perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4118 $echo "(You do not have patchlevel.h. Eek.)"
4120 if $test -r $rsrc/.patch ; then
4121 if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4122 perl_patchlevel=`cat $rsrc/.patch`
4125 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4126 version_patchlevel_string="version $patchlevel subversion $subversion"
4127 case "$perl_patchlevel" in
4129 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4132 $echo "(You have $package $version_patchlevel_string.)"
4136 : XXX Should be a Configure test for double-dots in filenames.
4137 version=`echo $revision $patchlevel $subversion | \
4138 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4139 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4140 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4143 version=`echo $revision $patchlevel $subversion | \
4144 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4145 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4146 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4149 : Special case the 5.005_xx maintenance series, which used 5.005
4150 : without any subversion label as a subdirectory in $sitelib
4151 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4152 api_versionstring='5.005'
4155 : Do we want threads support and if so, what type
4156 case "$usethreads" in
4157 $define|true|[yY]*) dflt='y';;
4158 *) # Catch case where user specified ithreads or 5005threads but
4159 # forgot -Dusethreads (A.D. 4/2002)
4160 case "$useithreads$use5005threads" in
4162 case "$useperlio" in
4163 "$define") dflt='y' ;;
4173 Perl can be built to take advantage of threads on some systems.
4174 To do so, Configure can be run with -Dusethreads.
4176 Note that Perl built with threading support runs slightly slower
4177 and uses more memory than plain Perl. The current implementation
4178 is believed to be stable, but it is fairly new, and so should be
4179 treated with caution.
4181 If this doesn't make any sense to you, just accept the default '$dflt'.
4183 rp='Build a threading Perl?'
4186 y|Y) val="$define" ;;
4192 if $test $patchlevel -lt 9; then
4193 case "$usethreads" in
4197 Since release 5.6, Perl has had two different threading implementations,
4198 the newer interpreter-based version (ithreads) with one interpreter per
4199 thread, and the older 5.005 version (5005threads).
4200 The 5005threads version is effectively unmaintained and will probably be
4201 removed in Perl 5.10, so there should be no need to build a Perl using it
4202 unless needed for backwards compatibility with some existing 5.005threads
4206 : Default to ithreads unless overridden on command line or with
4209 case "$use5005threads" in
4210 $define|true|[yY]*) dflt='n';;
4212 case "$useithreads" in
4213 $undef|false|[nN]*) dflt='n';;
4215 rp='Use the newer interpreter-based ithreads?'
4218 y|Y) val="$define" ;;
4223 : Now set use5005threads to the opposite value.
4224 case "$useithreads" in
4225 $define) val="$undef" ;;
4232 useithreads="$undef"
4233 use5005threads="$undef"
4237 case "$useithreads$use5005threads" in
4241 You cannot have both the ithreads and the 5.005 threads enabled
4242 at the same time. Disabling the 5.005 threads since they are
4243 much less stable than the ithreads.
4246 use5005threads="$undef"
4251 : perl-5.9.x and later
4253 if test X"$usethreads" = "X$define"; then
4254 case "$use5005threads" in
4258 5.005 threads has been removed for 5.10. Perl will be built using ithreads.
4265 use5005threads="$undef"
4266 useithreads="$usethreads"
4269 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4272 *** To build with ithreads you must also use the PerlIO layer.
4273 *** Cannot continue, aborting.
4279 case "$d_oldpthreads" in
4280 '') : Configure tests would be welcome here. For now, assume undef.
4282 *) val="$d_oldpthreads" ;;
4288 : Look for a hint-file generated 'call-back-unit'. If the
4289 : user has specified that a threading perl is to be built,
4290 : we may need to set or change some other defaults.
4291 if $test -f usethreads.cbu; then
4292 echo "Your platform has some specific hints regarding threaded builds, using them..."
4295 case "$usethreads" in
4296 "$define"|true|[yY]*)
4298 (Your platform does not have any specific hints for threaded builds.
4299 Assuming POSIX threads, then.)
4305 : Check if multiplicity is required
4308 Perl can be built so that multiple Perl interpreters can coexist
4309 within the same Perl executable.
4312 case "$useithreads" in
4315 This multiple interpreter support is required for interpreter-based threads.
4319 *) case "$usemultiplicity" in
4320 $define|true|[yY]*) dflt='y';;
4324 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4325 rp='Build Perl for multiplicity?'
4328 y|Y) val="$define" ;;
4336 : Check if morebits is requested
4337 case "$usemorebits" in
4338 "$define"|true|[yY]*)
4339 use64bitint="$define"
4340 uselongdouble="$define"
4341 usemorebits="$define"
4343 *) usemorebits="$undef"
4347 : Determine the C compiler to be used
4353 rp="Use which C compiler?"
4357 : See whether they have no cc but they do have gcc
4359 if $test -f cc.cbu; then
4364 : make some quick guesses about what we are up against
4366 $echo $n "Hmm... $c"
4376 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4377 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4379 echo "Looks kind of like an OSF/1 system, but we'll see..."
4381 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4382 xxx=`./loc addbib blurfl $pth`
4383 if $test -f $xxx; then
4384 echo "Looks kind of like a USG system with BSD features, but we'll see..."
4388 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4389 echo "Looks kind of like an extended USG system, but we'll see..."
4391 echo "Looks kind of like a USG system, but we'll see..."
4395 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4396 echo "Looks kind of like a BSD system, but we'll see..."
4400 echo "Looks kind of like a Version 7 system, but we'll see..."
4403 case "$eunicefix" in
4406 There is, however, a strange, musty smell in the air that reminds me of
4407 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4411 : it so happens the Eunice I know will not run shell scripts in Unix format
4415 echo "Congratulations. You aren't running Eunice."
4419 : Detect OS2. The p_ variable is set above in the Head.U unit.
4420 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4421 : semicolon as a patch separator
4426 I have the feeling something is not exactly right, however...don't tell me...
4427 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4428 (Or you may be running DOS with DJGPP.)
4433 if test -f /xenix; then
4434 echo "Actually, this looks more like a XENIX system..."
4439 echo "It's not Xenix..."
4444 if test -f /venix; then
4445 echo "Actually, this looks more like a VENIX system..."
4452 echo "Nor is it Venix..."
4455 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4456 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4459 : Check if we are using GNU gcc and what its version is
4461 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4465 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4467 printf("%s\n", __VERSION__);
4469 printf("%s\n", "1");
4475 if $cc -o try $ccflags $ldflags try.c; then
4476 gccversion=`$run ./try`
4477 case "$gccversion" in
4478 '') echo "You are not using GNU cc." ;;
4479 *) echo "You are using GNU cc $gccversion."
4485 echo "*** WHOA THERE!!! ***" >&4
4486 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
4487 case "$knowitall" in
4489 echo " You'd better start hunting for one and let me know about it." >&4
4495 case "$gccversion" in
4496 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4498 case "$gccversion" in
4499 '') gccosandvers='' ;;
4500 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4501 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4503 case "$gccosandvers" in
4504 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4505 $osname$osvers) ;; # looking good
4506 $osname*) cat <<EOM >&4
4508 *** WHOA THERE!!! ***
4510 Your gcc has not been compiled for the exact release of
4511 your operating system ($gccosandvers versus $osname$osvers).
4513 In general it is a good idea to keep gcc synchronized with
4514 the operating system because otherwise serious problems
4515 may ensue when trying to compile software, like Perl.
4517 I'm trying to be optimistic here, though, and will continue.
4518 If later during the configuration and build icky compilation
4519 problems appear (headerfile conflicts being the most common
4520 manifestation), I suggest reinstalling the gcc to match
4521 your operating system release.
4525 *) gccosandvers='' ;; # failed to parse, better be silent
4533 # gcc 3.* complain about adding -Idirectories that they already know about,
4534 # so we will take those off from locincpth.
4535 case "$gccversion" in
4537 echo "main(){}">try.c
4538 for incdir in $locincpth; do
4539 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4540 grep '^c[cp]p*[01]: warning: changing search order '`
4541 if test "X$warn" != X; then
4542 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4548 : What should the include directory be ?
4550 $echo $n "Hmm... $c"
4554 if $test -f /bin/mips && /bin/mips; then
4555 echo "Looks like a MIPS system..."
4556 $cat >usr.c <<'EOCP'
4557 #ifdef SYSTYPE_BSD43
4561 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4562 dflt='/bsd43/usr/include'
4566 mips_type='System V'
4568 $rm -f usr.c usr.out
4569 echo "and you're compiling with the $mips_type compiler and libraries."
4573 echo "Doesn't look like a MIPS system."
4583 case "$xxx_prompt" in
4586 rp='Where are the include files you want to use?'
4594 : see how we invoke the C preprocessor
4596 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4597 cat <<'EOT' >testcpp.c
4603 if test ! -f cppstdin; then
4604 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4605 # AIX cc -E doesn't show the absolute headerfile
4606 # locations but we'll cheat by using the -M flag.
4607 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
4609 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4612 echo "Keeping your $hint cppstdin wrapper."
4615 wrapper=`pwd`/cppstdin
4619 if $test "X$cppstdin" != "X" && \
4620 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4621 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4623 echo "You used to use $cppstdin $cppminus so we'll use that again."
4625 '') echo "But let's see if we can live without a wrapper..." ;;
4627 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4628 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4630 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4633 echo "(However, $cpprun $cpplast does not work, let's see...)"
4641 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4648 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4649 $cc -E <testcpp.c >testcpp.out 2>&1; \
4650 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4651 echo "Yup, it does."
4654 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4655 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4656 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4657 echo "Yup, it does."
4660 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4661 $cc -P <testcpp.c >testcpp.out 2>&1; \
4662 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4663 echo "Yipee, that works!"
4666 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4667 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4668 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4669 echo "At long last!"
4672 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4673 $cpp <testcpp.c >testcpp.out 2>&1; \
4674 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4678 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4679 $cpp - <testcpp.c >testcpp.out 2>&1; \
4680 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4681 echo "Hooray, it works! I was beginning to wonder."
4684 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4685 $wrapper <testcpp.c >testcpp.out 2>&1; \
4686 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4692 rp="No dice. I can't find a C preprocessor. Name one:"
4696 $x_cpp <testcpp.c >testcpp.out 2>&1
4697 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4698 echo "OK, that will do." >&4
4700 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4715 echo "Perhaps can we force $cc -E using a wrapper..."
4716 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4717 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4723 echo "Nope, we'll have to live without it..."
4737 "$wrapper"|'cppstdin') ;;
4738 *) $rm -f $wrapper;;
4740 $rm -f testcpp.c testcpp.out
4742 : Set private lib path
4745 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4750 '') dlist="$loclibpth $plibpth $glibpth";;
4751 *) dlist="$libpth";;
4754 : Now check and see which directories actually exist, avoiding duplicates
4758 if $test -d $xxx; then
4761 *) libpth="$libpth $xxx";;
4767 Some systems have incompatible or broken versions of libraries. Among
4768 the directories listed in the question below, please remove any you
4769 know not to be holding relevant libraries, and add any that are needed.
4770 Say "none" for none.
4781 rp="Directories to use for library searches?"
4788 : compute shared library extension
4791 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4801 On some systems, shared libraries may be available. Answer 'none' if
4802 you want to suppress searching of shared libraries for the remainder
4803 of this configuration.
4806 rp='What is the file extension used for shared libraries?'
4810 : Define several unixisms.
4811 : Hints files or command line option can be used to override them.
4812 : The convoluted testing is in case hints files set either the old
4815 '') case "$exe_ext" in
4817 *) _exe="$exe_ext" ;;
4822 '') case "$lib_ext" in
4829 '') case "$obj_ext" in