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 by the tool
15 # called "metaconfig". Rather than working with this copy of Configure,
16 # you should use metaconfig. Perl uses a modified version of this
17 # tool, and this, together with the metaconfig units, are available
18 # in the git repository:
19 # $ git clone https://github.com/perl5-metaconfig/metaconfig metaconfig
20 # The original dist package (including metaconfig) is available on github:
21 # $ git clone https://github.com/rmanfredi/dist.git dist-git
23 # Though this script was generated by metaconfig from metaunits, it is
24 # OK to send patches against Configure itself (but not to commit them
25 # to blead). It's up to
26 # the Configure maintainers to backport the patch to the metaunits if it
27 # is accepted. Exceptions to this rule, and more information, is in
28 # Porting/pumpkin.pod.
30 # Generated using [metaconfig 3.5 PL0]
31 # (with additional metaconfig patches by perlbug@perl.org)
36 SCO csh still thinks true is false. Write to SCO today and tell them that next
37 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
39 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
40 we'd have to do is go in and swap the && and || tokens, wherever they are.)
42 [End of diatribe. We now return you to your regularly scheduled programming...]
46 OOPS! You naughty creature! You didn't run Configure with sh!
47 I will attempt to remedy the situation by running sh for you...
51 true || exec sh $0 $argv:q
53 (exit $?0) || cat c2$$
54 (exit $?0) || exec sh $0 $argv:q
57 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
60 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
61 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
62 *** Please read the README.plan9 for further instructions.
63 *** Cannot continue, aborting.
69 if test -f /sys/utilities/MultiView ; then
70 # AmigaOS, test -c for /dev/null is not useful
72 elif test ! -c /dev/null ; then
75 *** I'm sorry, but /dev/null appears to be a file rather than a device.
76 *** Please consult your operating sytem's notes for making a device
78 *** Cannot continue, aborting.
84 : compute my invocation name
88 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
93 : Proper separator for the PATH environment variable
95 : On OS/2 this directory should exist if this is not floppy only system ":-]"
96 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' 2>&1 ) 2>&1 >/dev/null ; then
97 if test -n "$OS2_SHELL"; then
99 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
100 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
102 elif test -n "$DJGPP"; then
103 case "X${MACHTYPE:-nonesuchmach}" in
110 : Proper PATH setting
111 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
112 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
113 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
114 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
115 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
116 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
117 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
118 paths="$paths /sbin /usr/sbin /usr/libexec"
119 paths="$paths /system/gnu_library/bin"
123 case "$p_$PATH$p_" in
125 *) test -d $p && PATH=$PATH$p_$p ;;
132 : shall we be using ksh?
138 if (PATH=.; alias -x) >/dev/null 2>&1; then
141 if test -f /hp-ux -a -f /bin/ksh; then
142 needksh='to avoid sh bug in "here document" expansion'
144 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
145 if test X`/usr/bin/uname -v` = X4; then
146 avoidksh="to avoid AIX 4's /bin/sh"
150 if test -f /osf_boot -a -f /usr/sbin/setld; then
151 if test X`/usr/bin/uname -s` = XOSF1; then
152 avoidksh="to avoid Digital UNIX' ksh"
157 case "$inksh/$needksh" in
164 case "$inksh/$avoidksh" in
170 case "$inksh/$needksh-$avoidksh-" in
173 (I see you are using the Korn shell. Some ksh's blow up on $me,
174 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
181 echo "(Feeding myself to $newsh $reason.)"
183 Configure|*/Configure) exec $newsh $0 "$@";;
184 *) exec $newsh Configure "$@";;
188 test -x "${newsh}" || unset newsh
190 : if needed, set CDPATH to a harmless value that is not chatty
191 : avoid bash 2.02 problems with empty CDPATH.
195 *bash*) CDPATH='.' ;;
201 : Configure runs within the UU subdirectory
202 test -d UU || mkdir UU
346 useversionedarchname=''
352 initialinstalllocation=''
384 d_attribute_deprecated=''
385 d_attribute_format=''
386 d_attribute_malloc=''
387 d_attribute_nonnull=''
388 d_attribute_noreturn=''
390 d_attribute_unused=''
391 d_attribute_warn_unused_result=''
392 d_printf_format_null=''
396 d_builtin_choose_expr=''
398 d_builtin_add_overflow=''
399 d_builtin_mul_overflow=''
400 d_builtin_sub_overflow=''
402 d_c99_variadic_macros=''
452 endhostent_r_proto=''
458 endprotoent_r_proto=''
464 endservent_r_proto=''
536 gethostbyaddr_r_proto=''
538 gethostbyname_r_proto=''
540 gethostent_r_proto=''
553 getnetbyaddr_r_proto=''
555 getnetbyname_r_proto=''
569 d_getprotobyname_r=''
570 getprotobyname_r_proto=''
571 d_getprotobynumber_r=''
572 getprotobynumber_r_proto=''
574 getprotoent_r_proto=''
586 getservbyname_r_proto=''
588 getservbyport_r_proto=''
590 getservent_r_proto=''
623 d_lc_monetary_2008=''
628 d_libm_lib_version=''
636 d_localtime_r_needs_tzset=''
644 d_long_double_style_ieee=''
645 d_long_double_style_ieee_doubledouble=''
646 d_long_double_style_ieee_extended=''
647 d_long_double_style_ieee_std=''
648 d_long_double_style_vax=''
661 d_malloc_good_size=''
707 d_thread_safe_nl_langinfo_l=''
720 d_old_pthread_create_joinable=''
721 old_pthread_create_joinable=''
723 d_pthread_attr_setscope=''
771 sethostent_r_proto=''
788 setprotoent_r_proto=''
800 setservent_r_proto=''
813 d_siginfo_si_errno=''
816 d_siginfo_si_status=''
818 d_siginfo_si_value=''
830 d_ipv6_mreq_source=''
847 d_sprintf_returns_strlen=''
860 perl_static_inline=''
865 d_stdio_ptr_lval_nochange_cnt=''
866 d_stdio_ptr_lval_sets_cnt=''
952 default_inc_excludes_dot=''
1023 d_gdbm_ndbm_h_uses_prototypes=''
1024 d_gdbmndbm_h_uses_prototypes=''
1026 d_ndbm_h_uses_prototypes=''
1103 d_inc_version_list=''
1105 inc_version_list_init=''
1113 installusrbinperl=''
1129 ignore_versioned_solibs=''
1145 d_double_has_negative_zero=''
1146 d_double_has_subnormals=''
1147 d_double_style_cray=''
1148 d_double_style_ibm=''
1149 d_double_style_ieee=''
1150 d_double_style_vax=''
1201 d_perl_otherlibdirs=''
1209 api_versionstring=''
1215 version_patchlevel_string=''
1219 d_nv_preserves_uv=''
1220 d_nv_zero_is_allbits_zero=''
1231 nv_overflows_integers_at=''
1232 nv_preserves_uv_bits=''
1305 installsitehtml1dir=''
1308 installsitehtml3dir=''
1315 installsiteman1dir=''
1318 installsiteman3dir=''
1323 installsitescript=''
1341 d_stdio_stream_array=''
1342 stdio_stream_array=''
1360 usekernprocpathname=''
1361 ccflags_uselargefiles=''
1362 ldflags_uselargefiles=''
1363 libswanted_uselargefiles=''
1372 usensgetexecutablepath=''
1386 installvendorarch=''
1393 installvendorhtml1dir=''
1395 vendorhtml1direxp=''
1396 installvendorhtml3dir=''
1398 vendorhtml3direxp=''
1404 installvendorman1dir=''
1407 installvendorman3dir=''
1414 installvendorscript=''
1425 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1428 : We must find out about Eunice early
1430 if test -f /etc/unixtovms; then
1431 eunicefix=/etc/unixtovms
1433 if test -f /etc/unixtovms.exe; then
1434 eunicefix=/etc/unixtovms.exe
1437 : Set executable suffix now -- needed before hints available
1438 if test -f "/libs/version.library"; then
1441 elif test -f "/system/gnu_library/bin/ar.pm"; then
1444 elif test -n "$DJGPP"; then
1447 elif test -f /kern/cookiejar; then
1450 elif test -d c:/. -o -n "$is_os2" ; then
1457 : Possible local include directories to search.
1458 : Set locincpth to "" in a hint file to defeat local include searches.
1459 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1460 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1462 : no include file wanted by default
1465 : Enable -DEBUGGING and -DDEBUGGING from the command line
1469 : Trailing extension. Override this in a hint file, if needed.
1470 : Extra object files, if any, needed on this platform.
1473 : change the next line if compiling for Xenix/286 on Xenix/386
1474 xlibpth='/usr/lib/386 /lib/386'
1475 : Possible local library directories to search.
1476 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1477 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1479 : general looking path for locating libraries
1480 glibpth="/lib /usr/lib $xlibpth"
1481 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1482 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1483 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1484 test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1486 : Private path used by Configure to find libraries. Its value
1487 : is prepended to libpth. This variable takes care of special
1488 : machines, like the mips. Usually, it should be empty.
1491 : default library list
1493 : some systems want to use only the non-versioned libso:s
1494 ignore_versioned_solibs=''
1498 : set useposix=false in your hint file to disable the POSIX extension.
1500 : set useopcode=false in your hint file to disable the Opcode extension.
1503 ccflags_uselargefiles=''
1504 ldflags_uselargefiles=''
1505 libswanted_uselargefiles=''
1506 : set usemultiplicity on the Configure command line to enable multiplicity.
1507 : set usesocks on the Configure command line to enable socks.
1509 : set usethreads on the Configure command line to enable threads.
1510 usereentrant='undef'
1511 : List of libraries we want.
1512 : If anyone needs extra -lxxx, put those in a hint file.
1513 libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld"
1514 libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD"
1515 : We probably want to search /usr/shlib before most other libraries.
1516 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1517 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1518 glibpth="/usr/shlib $glibpth"
1519 : Do not use vfork unless overridden by a hint file.
1522 : Find the basic shell for Bourne shell scripts
1526 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1529 if test -f "$xxx"; then
1532 : Build up a list and do a single loop so we can 'break' out.
1533 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1534 for xxx in sh bash ksh pdksh ash; do
1536 try="$try ${p}/${xxx}"
1540 if test -f "$xxx"; then
1543 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1546 elif test -f "$xxx.exe"; then
1557 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1559 Usually it's in /bin/sh. How did you even get this far?
1560 Please contact me (Perl Maintainers) at perlbug@perl.org and
1561 we'll try to straighten this all out.
1567 : When cross-compiling we need to separate the sh-to-run-Configure-with from the sh-to-use-in-Perl
1568 : default both to the same thing, cross-compilers can then set targetsh differently if they like
1571 : see if sh knows # comments
1572 if `$sh -c '#' >/dev/null 2>&1`; then
1576 test -f $xcat$_exe || xcat=/usr/bin/cat
1577 if test ! -f $xcat$_exe; then
1578 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1579 if test -f $p/cat$_exe; then
1584 if test ! -f $xcat$_exe; then
1585 echo "Can't find cat anywhere!"
1589 echo "#!$xcat" >sharp
1592 ./sharp > today 2>/dev/null
1593 if test -s today; then
1596 echo "#! $xcat" > sharp
1599 ./sharp > today 2>/dev/null
1600 if test -s today; then
1608 echo "Your $sh doesn't grok # comments--I will strip them later on."
1611 echo "exec grep -v '^[ ]*#'" >spitshell
1613 $eunicefix spitshell
1614 spitshell=`pwd`/spitshell
1616 echo "I presume that if # doesn't work, #! won't work either!"
1621 : figure out how to guarantee sh startup
1623 '') startsh=${sharpbang}${sh} ;;
1635 : echo "Yup, it does."
1637 echo "Hmm... '$startsh' does not guarantee sh startup..."
1638 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1642 : Save command line options in file UU/cmdline.opt for later use in
1643 : generating config.sh.
1644 cat > cmdline.opt <<EOSH
1645 : Configure command line arguments.
1654 cat >>cmdline.opt <<EOSH
1655 config_arg$argn='$arg'
1657 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1660 arg_exp=`cat cmdl.opt`
1661 args_exp="$args_exp$args_sep'$arg_exp'"
1662 argn=`expr $argn + 1`
1667 : produce awk script to parse command line options
1668 cat >options.awk <<'EOF'
1670 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1672 len = length(optstr);
1673 for (i = 1; i <= len; i++) {
1674 c = substr(optstr, i, 1);
1675 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1686 if (substr(str, 1, 1) != "-") {
1687 printf("'%s'\n", str);
1691 for (i = 2; i <= len; i++) {
1692 c = substr(str, i, 1);
1694 printf("-%s\n", substr(str, i));
1700 printf("'%s'\n", substr(str, i + 1));
1713 : process the command line options
1714 set X `for arg in "$@"; do echo "X$arg"; done |
1715 sed -e s/X// | awk -f options.awk`
1720 : set up default values
1729 rm -f optdef.sh posthint.sh
1730 cat >optdef.sh <<EOS
1736 while test $# -gt 0; do
1738 -d) shift; fastread=yes;;
1739 -e) shift; alldone=cont;;
1743 if test -r "$1"; then
1746 echo "$me: cannot read config file $1." >&2
1752 -h) shift; error=true;;
1753 -r) shift; reuseval=true;;
1754 -s) shift; silent=true; realsilent=true;;
1755 -E) shift; alldone=exit;;
1756 -K) shift; knowitall=true;;
1758 -S) shift; silent=true; extractsh=true;;
1763 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1764 echo "$me: ignoring -D $1" >&2
1767 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1768 *) echo "$1='define'" >> optdef.sh;;
1775 *=) echo "$1" >> optdef.sh;;
1777 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1778 echo "$me: ignoring -U $1" >&2
1780 *) echo "$1='undef'" >> optdef.sh;;
1791 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1795 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1796 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1802 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1803 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1804 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1805 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1806 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1807 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1813 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1815 echo "$yyy=''" >> posthint.sh ;;
1820 echo "$yyy='$zzz'" >> posthint.sh ;;
1822 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1824 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1829 echo "$yyy=$zzz" >> posthint.sh ;;
1830 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1834 -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1837 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1845 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1846 [-U symbol] [-U symbol=] [-A command:symbol...]
1847 -d : use defaults for all answers.
1848 -e : go on without questioning past the production of config.sh.
1849 -f : specify an alternate default configuration file.
1850 -h : print this help message and exit (with an error status).
1851 -r : reuse C symbols value if possible (skips costly nm extraction).
1852 -s : silent mode, only echoes questions and essential information.
1853 -D : define symbol to have some value:
1854 -D symbol symbol gets the value 'define'
1855 -D symbol=value symbol gets the value 'value'
1856 common used examples (see INSTALL for more info):
1857 -Duse64bitint use 64bit integers
1858 -Duse64bitall use 64bit integers and pointers
1859 -Dusethreads use thread support
1860 -Dinc_version_list=none do not include older perl trees in @INC
1861 -DEBUGGING=none DEBUGGING options
1862 -Dcc=gcc choose your compiler
1863 -Dprefix=/opt/perl5 choose your destination
1864 -E : stop at the end of questions, after having produced config.sh.
1865 -K : do not use unless you know what you are doing.
1866 -O : ignored for backward compatibility
1867 -S : perform variable substitutions on all .SH files (can mix with -f)
1868 -U : undefine symbol:
1869 -U symbol symbol gets the value 'undef'
1870 -U symbol= symbol gets completely empty
1872 -A : manipulate symbol after the platform specific hints have been applied:
1873 -A append:symbol=value append value to symbol
1874 -A symbol=value like append:, but with a separating space
1875 -A define:symbol=value define symbol to have value
1876 -A clear:symbol define symbol to be ''
1877 -A define:symbol define symbol to be 'define'
1878 -A eval:symbol=value define symbol to be eval of value
1879 -A prepend:symbol=value prepend value to symbol
1880 -A undef:symbol define symbol to be 'undef'
1881 -A undef:symbol= define symbol to be ''
1882 e.g.: -A prepend:libswanted='cl pthread '
1883 -A ccflags=-DSOME_MACRO
1884 -V : print version number and exit (with a zero status).
1891 case "$fastread$alldone" in
1894 case "$extractsh" in
1897 if test ! -t 0; then
1898 echo "Say 'sh Configure', not 'sh <Configure'"
1908 true) exec 1>/dev/null;;
1911 : run the defines and the undefines, if any, but leave the file out there...
1913 grep '\\' optdef.sh >/dev/null 2>&1
1914 if test $? = 0; then
1915 echo "Configure does not support \\ in -D arguments"
1919 : create the posthint manipulation script and leave the file out there...
1924 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1925 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1926 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
1927 ABYZ-abyz) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1928 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1931 : Some greps do not return status, grrr.
1932 echo "grimblepritz" >grimble
1933 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1935 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1941 : the following should work in any shell
1945 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1946 cat >contains <<'EOSS'
1947 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1952 : Find the path to the source tree
1955 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1959 *) src=`cd ../$src && pwd` ;;
1972 if test -f $rsrc/Configure && \
1973 $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1975 : found it, so we are ok.
1978 for src in . .. ../.. ../../.. ../../../..; do
1979 if test -f ../$src/Configure && \
1980 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1991 Sorry, I can't seem to locate the source dir for $package. Please start
1992 Configure with an explicit path -- i.e. /some/path/Configure.
2000 echo "Sources for $package found in \"$src\"." >&4
2004 : script used to extract .SH files with variable substitutions
2005 cat >extract <<'EOS'
2007 echo "Doing variable substitutions on .SH files..."
2008 if test -f MANIFEST; then
2009 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
2011 echo "(Looking for .SH files under the source directory.)"
2012 set x `(cd "$src"; find . -name "*.SH" -print)`
2016 0) set x `(cd "$src"; echo *.SH)`; shift;;
2018 if test ! -f "$src/$1"; then
2024 while test $name; do
2025 if test ! -d "$name"; then
2026 create="$name $create";
2027 name=`echo $name | sed -e "s|^[^/]*$||"`;
2028 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
2033 for file in $create; do
2042 dir=`expr X$file : 'X\(.*\)/'`
2043 file=`expr X$file : 'X.*/\(.*\)'`
2044 (cd "$dir" && . ./$file)
2054 dir=`expr X$file : 'X\(.*\)/'`
2055 file=`expr X$file : 'X.*/\(.*\)'`
2056 (set x $dir; shift; eval $mkdir_p)
2057 sh <"$src/$dir/$file"
2066 if test -f "$src/config_h.SH"; then
2067 if test ! -f config.h; then
2068 : oops, they left it out of MANIFEST, probably, so do it anyway.
2069 . "$src/config_h.SH"
2074 : extract files and exit if asked to do so
2075 case "$extractsh" in
2077 case "$realsilent" in
2081 case "$config_sh" in
2082 '') config_sh='config.sh';;
2085 echo "Fetching answers from $config_sh..."
2092 echo "Extraction done."
2097 : Eunice requires " " instead of "", can you believe it
2100 echo "Beginning of configuration questions for $package."
2102 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
2104 : first determine how to suppress newline on echo command
2106 echo "Checking echo to see how to suppress newlines..."
2107 (echo "hi there\c" ; echo " ") >.echotmp
2108 if $contains c .echotmp >/dev/null 2>&1 ; then
2119 echo $n "The star should be here-->$c"
2123 : Now test for existence of everything in MANIFEST
2125 if test -f "$rsrc/MANIFEST"; then
2126 echo "First let's make sure your kit is complete. Checking..." >&4
2127 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
2128 (split -l 50 2>/dev/null || split -50)
2131 for filelist in x??; do
2132 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
2133 >/dev/null 2>>"$tmppwd/missing")
2135 if test -s missing; then
2139 THIS PACKAGE SEEMS TO BE INCOMPLETE.
2141 You have the option of continuing the configuration process, despite the
2142 distinct possibility that your kit is damaged, by typing 'y'es. If you
2143 do, don't blame me if something goes wrong. I advise you to type 'n'o
2144 and contact the author (perlbug@perl.org).
2147 echo $n "Continue? [n] $c" >&4
2151 echo "Continuing..." >&4
2155 echo "ABORTING..." >&4
2160 echo "Looks good..."
2163 echo "There is no MANIFEST file. I hope your kit is complete !"
2167 : Find the appropriate value for a newline for tr
2168 if test -n "$DJGPP"; then
2171 if test X"$trnl" = X; then
2172 case "`echo foo | tr '\n' x 2>/dev/null`" in
2176 if test X"$trnl" = X; then
2177 case "`echo foo | tr '\012' x 2>/dev/null`" in
2178 foox) trnl='\012' ;;
2181 if test X"$trnl" = X; then
2182 case "`echo foo | tr '\r\n' xy 2>/dev/null`" in
2183 fooxy) trnl='\n\r' ;;
2186 if test X"$trnl" = X; then
2189 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2195 : compute the number of columns on the terminal for proper question formatting
2200 : set up the echo used in my read
2201 myecho="case \"\$xxxm\" in
2202 '') echo $n \"\$rp $c\" >&4;;
2204 '') echo $n \"[\$xxxm] $c\";;
2206 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2208 echo $n \"[\$xxxm] $c\" >&4
2210 echo $n \"\$rp [\$xxxm] $c\" >&4
2216 : now set up to do reads with possible shell escape and default assignment
2222 case "\$fastread" in
2223 yes) case "\$dflt" in
2226 case "\$silent-\$rp" in
2231 *) case "\$silent" in
2232 true) case "\$rp" in
2237 while expr "X\$ans" : "X!" >/dev/null; do
2241 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2249 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2258 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2263 echo "(OK, I'll run with -d after this question.)" >&4
2266 echo "*** Sorry, \$1 not supported yet." >&4
2276 echo "*** Substitution done -- please confirm."
2278 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2283 echo "*** Error -- try again."
2290 case "\$ans\$xxxm\$nostick" in
2302 : create .config dir to save info across Configure sessions
2303 test -d ../.config || mkdir ../.config
2304 cat >../.config/README <<EOF
2305 This directory created by Configure to save information that should
2306 persist across sessions for $package.
2308 You may safely delete it if you wish.
2311 : See if we are using a devel version and want that
2312 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2315 usedevel="$define" ;;
2316 *) case "$xversion" in
2319 *** WHOA THERE!!! ***
2321 This is an UNSTABLE DEVELOPMENT release.
2322 The version of this $package distribution is $xversion, that is, odd,
2323 (as opposed to even) and that signifies a development release.
2324 If you want a maintenance release, you want an even-numbered version.
2326 Do ***NOT*** install this into production use.
2327 Data corruption and crashes are possible.
2329 It is most seriously suggested that you do not continue any further
2330 unless you want to help in developing and debugging Perl.
2332 If you *still* want to build perl, you can answer 'y' now,
2333 or pass -Dusedevel to Configure.
2336 rp='Do you really want to continue?'
2340 [yY]) echo >&4 "Okay, continuing."
2341 usedevel="$define" ;;
2342 *) echo >&4 "Okay, bye."
2353 case "$versiononly" in
2354 '') versiononly="$define" ;;
2356 case "$installusrbinperl" in
2357 '') installusrbinperl="$undef" ;;
2362 : general instructions
2365 user=`(logname) 2>/dev/null`
2367 '') user=`whoami 2>&1`;;
2369 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2372 rp='Would you like to see the instructions?'
2383 This installation shell script will examine your system and ask you questions
2384 to determine how the perl5 package should be installed. If you get
2385 stuck on a question, you may use a ! shell escape to start a subshell or
2386 execute a command. Many of the questions will have default answers in square
2387 brackets; typing carriage return will give you the default.
2389 On some of the questions which ask for file or directory names you are allowed
2390 to use the ~name construct to specify the login directory belonging to "name",
2391 even if you don't have a shell which knows about that. Questions where this is
2392 allowed will be marked "(~name ok)".
2396 dflt='Type carriage return to continue'
2400 The prompter used in this script allows you to use shell variables and
2401 backticks in your answers. You may use $1, $2, etc... to refer to the words
2402 in the default answer, as if the default line was a set of arguments given to a
2403 script shell. This means you may also use $* to repeat the whole default line,
2404 so you do not have to re-type everything to add something to the default.
2406 Every time there is a substitution, you will have to confirm. If there is an
2407 error (e.g. an unmatched backtick), the default answer will remain unchanged
2408 and you will be prompted again.
2410 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2411 the questions and use the computed defaults (or the previous answers if there
2412 was already a config.sh file). Type 'Configure -h' for a list of options.
2413 You may also start interactively and then answer '& -d' at any prompt to turn
2414 on the non-interactive behaviour for the remainder of the execution.
2420 Much effort has been expended to ensure that this shell script will run on any
2421 Unix system. If despite that it blows up on yours, your best bet is to edit
2422 Configure and run it again. If you can't run Configure for some reason,
2423 you'll have to generate a config.sh file by hand. Whatever problems you
2424 have, let me (perlbug@perl.org) know how I blew it.
2426 This installation script affects things in two ways:
2428 1) it may do direct variable substitutions on some of the files included
2430 2) it builds a config.h file for inclusion in C programs. You may edit
2431 any of these files as the need arises after running this script.
2433 If you make a mistake on a question, there is no easy way to back up to it
2434 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2435 files. Configure will offer to let you do this before it runs the SH files.
2438 dflt='Type carriage return to continue'
2440 case "$firsttime" in
2441 true) echo $user >>../.config/instruct;;
2445 : Set 'sysroot' to change the logical root directory to your headers and libraries see man gcc
2446 : This is primarily meant for cross-compile environments, and may fail to be useful in other cases
2447 if test "X$sysroot" = X; then
2452 echo "Using $sysroot to find your headers and libraries, adding to ccflags"
2453 # _sysroot is used in places where we need --sysroot=foo
2454 # but using the rest of the flags could cause issues.
2455 _sysroot="--sysroot=$sysroot";
2459 ccflags="$ccflags $_sysroot"
2464 ldflags="$ldflags $_sysroot"
2469 cppflags="$cppflags $_sysroot"
2471 # lddlflags updated below in lddlflags section;
2472 # same with cccdlflags
2476 # Adjust some defaults to also use $sysroot
2477 for var in xlibpth loclibpth locincpth glibpth; do
2480 for path in $xxx; do
2481 eval $var=\"\$$var $sysroot$path\"
2487 : find out where common programs are
2489 echo "Locating common programs..." >&4
2502 if test -d \$dir/\$thing; then
2508 for thisthing in \$dir/\$thing; do
2509 : just loop through to pick last item
2511 if test -f \$thisthing; then
2514 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2517 elif test -f \$dir/\$thing.exe; then
2518 if test -n "$DJGPP"; then
2519 echo \$dir/\$thing.exe
2520 elif test "$eunicefix" != ":"; then
2521 : on Eunice apparently
2574 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2575 pth="$pth $sysroot/lib $sysroot/usr/lib"
2576 for file in $loclist; do
2580 if test -f "$xxx"; then
2583 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2584 xxx=`./loc $file $file $pth`
2587 '') xxx=`./loc $file $file $pth`;;
2588 *) xxx=`./loc $xxx $xxx $pth`;;
2590 eval $file=$xxx$_exe
2594 echo $file is in $xxx.
2597 echo $file is in $xxx.
2600 echo "I don't know where '$file' is, and my life depends on it." >&4
2601 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2607 echo "Don't worry if any of the following aren't found..."
2609 for file in $trylist; do
2613 if test -f "$xxx"; then
2616 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2617 xxx=`./loc $file $file $pth`
2620 '') xxx=`./loc $file $file $pth`;;
2621 *) xxx=`./loc $xxx $xxx $pth`;;
2623 eval $file=$xxx$_exe
2627 echo $file is in $xxx.
2630 echo $file is in $xxx.
2633 echo "I don't see $file out there, $say."
2640 echo "Substituting grep for egrep."
2647 *) if $less -R </dev/null >/dev/null 2>&1; then
2648 echo "Substituting less -R for less."
2656 echo "Substituting cp for ln."
2665 echo "I can't find make or gmake, and my life depends on it." >&4
2666 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2674 *) # We can't have osname yet.
2675 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2676 # Assume that gmake, if found, is definitely GNU make
2677 # and prefer it over the system make.
2678 echo "Substituting gmake for make."
2686 echo "Hopefully test is built into your sh."
2689 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2690 echo "Using the test built into your sh."
2698 echo "Hopefully echo is built into your sh."
2703 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2704 $echo $n "hi there$c" >foo1
2705 echo $n "hi there$c" >foo2
2706 if cmp foo1 foo2 >/dev/null 2>&1; then
2707 echo "They are compatible. In fact, they may be identical."
2714 They are not compatible! You are probably running ksh on a non-USG system.
2715 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2716 have echo built in and we may have to run some Bourne shell scripts. That
2717 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2720 $echo $n "The star should be here-->$c"
2727 # This question was auctioned at YAPC::Europe-2007 in Vienna
2728 # I never promised you could answer it. I only auctioned the question.
2730 The following message is sponsored by
2732 Dresden.pm<--The stars should be here.
2734 Dear Perl user, system administrator or package
2735 maintainer, the Perl community sends greetings to
2736 you. Do you (emblematical) greet back [Y/n]? n
2740 : Check what type of C compiler we use
2744 cat <<'EOSC' >>trygcc
2749 int main(int argc, char *argv[]) {
2753 if $cc -o try $ccflags $ldflags try.c; then
2756 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2762 # Skip this test because it gives a false match on output like:
2763 # ./trygcc: line 23: cc: command not found
2764 # case "`$cc -v -c try.c 2>&1`" in
2765 # *gcc*) trygcc=no ;;
2767 if $test X"$trygcc" = Xyes; then
2768 if gcc -o try -c try.c; then
2770 echo "You seem to have a working gcc, though." >&4
2771 # Switching compilers may undo the work of hints files.
2772 # The most common problem is -D_REENTRANT for threads.
2773 # This heuristic catches that case, but gets false positives
2774 # if -Dusethreads was not actually specified. Better to
2775 # bail out here with a useful message than fail
2776 # mysteriously later. Should we perhaps just try to
2777 # re-invoke Configure -Dcc=gcc config_args ?
2778 if $test -f usethreads.cbu; then
2781 *** However, any setting of the C compiler flags (e.g. for thread support)
2782 *** will be lost. It may be necessary for you to restart Configure and
2783 *** add -Dcc=gcc to your Configure command line.
2786 rp="Would you like to go ahead and try gcc anyway?"
2789 rp="Would you like to use it?"
2792 if $test -f myread; then
2795 if $test -f UU/myread; then
2798 echo "Cannot find myread, sorry. Aborting." >&2
2803 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2816 cat <<'EOSC' >>checkcc
2821 int main(int argc, char *argv[]) {
2825 if $cc -o try $ccflags $ldflags try.c; then
2828 if $test X"$despair" = Xyes; then
2829 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2832 You need to find a working C compiler.
2833 Either (purchase and) install the C compiler supplied by your OS vendor,
2834 or for a free C compiler try http://gcc.gnu.org/
2835 I cannot continue any further, aborting.
2844 : determine whether symbolic links are supported
2847 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2848 echo "Symbolic links are supported." >&4
2851 echo "Symbolic links are NOT supported." >&4
2856 : determine whether symbolic links are supported
2860 echo "Checking how to test for symbolic links..." >&4
2862 if $test "X$issymlink" = X; then
2864 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2865 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2867 if test $? = 0; then
2870 echo "Your builtin 'test -h' may be broken." >&4
2873 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2876 if test -f "$p/$test"; then
2885 echo "Trying external '$test -h'." >&4
2886 issymlink="$test -h"
2887 if $test ! -h sym >/dev/null 2>&1; then
2888 echo "External '$test -h' is broken, too." >&4
2896 if $test "X$issymlink" = X; then
2897 if $test -L sym 2>/dev/null; then
2898 issymlink="$test -L"
2899 echo "The builtin '$test -L' worked." >&4
2902 if $test "X$issymlink" != X; then
2903 echo "You can test for symbolic links with '$issymlink'." >&4
2905 echo "I do not know how you can test for symbolic links." >&4
2909 *) echo "No symbolic links, so not testing for their testing..." >&4
2913 : Make symlinks util
2914 case "$mksymlinks" in
2917 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2920 *) case "$lns:$issymlink" in
2921 *"ln"*" -s:"*"test -"?)
2922 echo "Creating the symbolic links..." >&4
2924 awk '{print $1}' $src/MANIFEST | sed -e 's:/\([^/]*\)$: \1:' |
2934 print "# dir = ", dir, "file = ", file
2935 mf[dir] = mf[dir]" "source"/"dir"/"file;
2938 if (d != ".") { print("mkdir -p "d) }
2939 print("ln -sf "mf[d]" "d);
2941 }' source="$src" > UU/mksymlinks.$$
2945 if test ! -d t/base; then
2946 echo "Failed to create the subdirectories. Aborting." >&4
2950 if test ! -f t/base/lex.t; then
2951 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2954 if test ! -f win32/win32.c; then
2955 echo "Failed to create the symlinks (win32/win32.c missing). Aborting." >&4
2960 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2968 : Check for Cross-Compilation
2969 if $test "X$targethost" = "X"; then
2972 if $test "X$targetenv" = "X"; then
2975 case "$usecrosscompile" in
2977 $echo "Cross-compiling..."
2980 *-gcc*|*-g++*) # A cross-compiling gcc, probably.
2981 # arm-linux-androideabi-gcc -> arm-linux-androideabi
2982 # x86_64-w64-mingw32-gcc.exe -> x86_64-w64-mingw32
2983 targetarch=`$echo $cc|$sed 's/-g[c\+][c\+].*$//'`
2984 ar=`$echo $cc|$sed 's/-g[c\+][c\+]/-ar/'`
2985 # leave out ld, choosing it is more complex
2986 nm=`$echo $cc|$sed 's/-g[c\+][c\+]/-nm/'`
2987 ranlib=`$echo $cc|$sed 's/-g[c\+][c\+]/-ranlib/'`
2988 # We are in a weird spot. Just before us, some values
2989 # were 'saved', to be restored after the hints are
2990 # run. This means that the changes we made to ar,
2991 # nm and ranlib will get reverted.
2992 # To avoid that, we hijack the saving mechanism and
2993 # have it save our new values.
2994 for file in ar nm ranlib; do
2996 eval $file=$xxx$_exe
3001 case "$targetarch" in
3002 '') echo "Targetarch not defined." >&4; croak=y ;;
3003 *) echo "Using targetarch $targetarch." >&4 ;;
3005 case "$targethost" in
3006 '') echo "Targethost not defined." >&4; croak=n ;;
3007 *) echo "Using targethost $targethost." >&4
3012 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
3014 : compile a host miniperl and generate_uudmap, unless we got passed them
3015 if $test "X$hostperl" = X; then
3016 echo "Building host miniperl and generate_uudmap binaries" >&4
3024 $src/Configure -des -Dusedevel -Dmksymlinks
3026 case "$hostgenerate" in
3027 '') $make generate_uudmap
3028 hostgenerate=$src/host/generate_uudmap
3030 "$undef") hostgenerate=''
3033 hostperl=$src/host/miniperl
3036 hostosname=`$hostperl -le 'print $^O'`
3039 usecrosscompile="$undef"
3043 : Define -Dtargethost=somecomputer to run compiled tests on another machine
3044 case "$targethost" in
3045 '') echo "Checking for cross-compile" >&4
3046 case "$usecrosscompile$multiarch" in
3047 *$define*) echo "Skipping the try tests in the rest of Configure as no targethost was defined when cross-compiling" >&4
3048 if [ -f Makefile ]; then
3050 echo "Now you must ensure config.sh, config.h and the generated headers exist and run a $make."
3052 echo "Configure done."
3056 *) echo "No targethost for running compiler tests against defined, running locally" >&4
3063 *) echo "Using targethost $targethost." >&4
3065 /*) run=$src/Cross/run
3066 targetmkdir=$src/Cross/mkdir
3068 from=$src/Cross/from
3070 *) pwd=`$test -f ../Configure & cd ..; pwd`
3072 targetmkdir=$pwd/Cross/mkdir
3074 from=$pwd/Cross/from
3077 case "$targetrun" in
3078 '') targetrun=ssh ;;
3083 case "$targetfrom" in
3084 '') targetfrom=scp ;;
3088 from=$from-$targetfrom
3089 case "$targetdir" in
3091 echo "Guessing targetdir $targetdir." >&4
3094 case "$targetuser" in
3096 echo "Guessing targetuser $targetuser." >&4
3099 case "$targetport" in
3101 echo "Guessing targetport $targetport." >&4
3104 case "$targetfrom" in
3108 case "$targetrun" in
3128 '') cwd=$targetdir ;;
3133 $targetrun -p $targetport -l $targetuser $targethost "cd \$cwd && \$env \$exe \$@"
3139 *) echo "Unknown targetrun '$targetrun'" >&4
3143 case "$targetmkdir" in
3145 cat >$targetmkdir <<EOF
3147 $targetrun -p $targetport -l $targetuser $targethost "mkdir -p \$@"
3149 $chmod a+rx $targetmkdir
3151 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
3163 $targetmkdir \`dirname \$f\`
3164 $targetto -P $targetport -r $q \$f $targetuser@$targethost:\$f 2>/dev/null || exit 1
3167 $targetmkdir $targetdir/\`dirname \$f\`
3168 $targetto -P $targetport -r $q \$f $targetuser@$targethost:$targetdir/\$f 2>/dev/null || exit 1
3181 $mkdir -p $targetdir/\`dirname \$f\`
3182 $cp \$f $targetdir/\$f || exit 1
3185 $targetmkdir $targetdir/\`dirname \$f\`
3186 $cp \$f $targetdir/\$f || exit 1
3193 *) echo "Unknown targetto '$targetto'" >&4
3197 case "$targetfrom" in
3204 $targetfrom -P $targetport $q $targetuser@$targethost:$targetdir/\$f . || exit 1
3209 cp) cat >$from <<EOF
3214 cp $targetdir/\$f . || exit 1
3219 *) echo "Unknown targetfrom '$targetfrom'" >&4
3223 if $test ! -f $run; then
3224 echo "Target 'run' script '$run' not found." >&4
3228 if $test ! -f $to; then
3229 echo "Target 'to' script '$to' not found." >&4
3233 if $test ! -f $from; then
3234 echo "Target 'from' script '$from' not found." >&4
3238 if $test ! -f $run -o ! -f $to -o ! -f $from; then
3242 Using '$run' for remote execution,
3243 and '$from' and '$to'
3244 for remote file transfer.
3250 usecrosscompile="$undef"
3255 : see whether [:lower:] and [:upper:] are supported character classes
3257 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | $tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
3259 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
3263 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
3264 # (0xd9 and 0xe2), therefore that is a nice testing point.
3265 if test "X$up" = X -o "X$low" = X; then
3266 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
3272 if test "X$up" = X -o "X$low" = X; then
3273 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
3279 if test "X$up" = X -o "X$low" = X; then
3280 case "`echo RS | od -x 2>/dev/null`" in
3282 echo "Hey, this might be EBCDIC." >&4
3283 if test "X$up" = X -o "X$low" = X; then
3284 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3285 rs) up='[A-IJ-RS-Z]'
3290 if test "X$up" = X -o "X$low" = X; then
3291 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3301 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3303 echo "Using $up and $low to convert case." >&4
3306 echo "I don't know how to translate letters from upper to lower case." >&4
3307 echo "Your tr is not acting any way I know of." >&4
3311 : set up the translation script tr, must be called with ./tr of course
3315 '[A-Z][a-z]') exec $tr '$up' '$low';;
3316 '[a-z][A-Z]') exec $tr '$low' '$up';;
3323 : Try to determine whether config.sh was made on this system
3324 case "$config_sh" in
3326 myuname=`$uname -a 2>/dev/null`
3327 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3328 # Downcase everything to avoid ambiguity.
3329 # Remove slashes and single quotes so we can use parts of this in
3330 # directory and file names.
3331 # Remove newlines so myuname is sane to use elsewhere.
3332 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3333 # because the A-Z/a-z are not consecutive.
3334 myuname=`echo $myuname | $sed -e "s,['/],,g" | \
3335 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3336 newmyuname="$myuname"
3338 case "$knowitall" in
3340 if test -f ../config.sh; then
3341 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3342 eval "`grep myuname= ../config.sh`"
3344 if test "X$myuname" = "X$newmyuname"; then
3352 : Get old answers from old config file if Configure was run on the
3353 : same system, otherwise use the hints.
3356 if test -f config.sh; then
3358 rp="I see a config.sh file. Shall I use it to set the defaults?"
3361 n*|N*) echo "OK, I'll ignore it."
3362 mv config.sh config.sh.old
3363 myuname="$newmyuname"
3365 *) echo "Fetching default answers from your old config.sh file..." >&4
3373 : Older versions did not always set $sh. Catch re-use of such
3383 if test ! -f config.sh; then
3386 First time through, eh? I have some defaults handy for some systems
3387 that need some extra help getting the Configure answers right:
3390 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3392 : Half the following guesses are probably wrong... If you have better
3393 : tests or hints, please send them to perlbug@perl.org
3394 : The metaconfig authors would also appreciate a copy...
3395 $test -f /irix && osname=irix
3396 $test -f /xenix && osname=sco_xenix
3397 $test -f /dynix && osname=dynix
3398 $test -f /dnix && osname=dnix
3399 $test -f /lynx.os && osname=lynxos
3400 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3401 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3402 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3403 $test -f /bin/mips && /bin/mips && osname=mips
3404 $test -d /usr/apollo/bin && osname=apollo
3405 $test -f /etc/saf/_sactab && osname=svr4
3406 $test -d /usr/include/minix && osname=minix && osvers=`$uname -r`
3407 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3408 $test -f /sys/utilities/MultiView && osname=amigaos
3409 if $test -d /MachTen -o -d /MachTen_Folder; then
3411 if $test -x /sbin/version; then
3412 osvers=`/sbin/version | $awk '{print $2}' |
3413 $sed -e 's/[A-Za-z]$//'`
3414 elif $test -x /usr/etc/version; then
3415 osvers=`/usr/etc/version | $awk '{print $2}' |
3416 $sed -e 's/[A-Za-z]$//'`
3422 $test -f /sys/posix.dll &&
3423 $test -f /usr/bin/what &&
3424 set X `/usr/bin/what /sys/posix.dll` &&
3425 $test "$3" = UWIN &&
3429 if $test -f $uname; then
3437 umips) osname=umips ;;
3440 [23]100) osname=mips ;;
3442 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3443 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3446 elif $test -f /etc/kconfig; then
3448 if test "$lns" = "$ln -s"; then
3450 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3452 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3459 if test -n "$DJGPP"; then
3468 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3470 # oslevel can fail with:
3471 # oslevel: Unable to acquire lock.
3472 *not\ found) osvers="$4"."$3" ;;
3473 '<3240'|'<>3240') osvers=3.2.0 ;;
3474 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3475 '=3250'|'>3250') osvers=3.2.5 ;;
3479 bitrig) osname=bitrig
3482 bsd386) osname=bsd386
3485 cygwin*) osname=cygwin
3488 *dc.osx) osname=dcosx
3494 domainos) osname=apollo
3500 dragonfly) osname=dragonfly
3503 dynixptx*) osname=dynixptx
3504 osvers=`echo "$4"|sed 's/^v//'`
3506 freebsd) osname=freebsd
3508 genix) osname=genix ;;
3512 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3525 $test -f /system/lib/libandroid.so && osname=linux-android
3529 netbsd*) osname=netbsd
3532 news-os) osvers="$3"
3534 4*) osname=newsos4 ;;
3538 nonstop-ux) osname=nonstopux ;;
3539 openbsd) osname=openbsd
3545 POSIX-BC | posix-bc ) osname=posix-bc
3548 powerux | power_ux | powermax_os | powermaxos | \
3549 powerunix | power_unix) osname=powerux
3555 solaris) osname=solaris
3557 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3564 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3568 titanos) osname=titanos
3577 ultrix) osname=ultrix
3580 osf1|mls+) case "$5" in
3583 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3586 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3589 hp*) osname=hp_osf1 ;;
3590 mips) osname=mips_osf1 ;;
3593 # UnixWare 7.1.2 is known as Open UNIX 8
3594 openunix|unixware) osname=svr5
3602 $2) case "$osname" in
3606 : svr4.x or possibly later
3616 if test -f /stand/boot ; then
3617 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3618 if test -n "$INITPROG" -a -f "$INITPROG"; then
3619 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3620 if test -n "$isesix"; then
3628 *) if test -f /etc/systemid; then
3630 set `echo $3 | $sed 's/\./ /g'` $4
3631 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3633 elif $test -f $src/hints/sco_$1_$2.sh; then
3635 elif $test -f $src/hints/sco_$1.sh; then
3640 '') : Still unknown. Probably a generic Sys V.
3649 *) case "$osname" in
3650 '') : Still unknown. Probably a generic BSD.
3658 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3659 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3660 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3663 $rm -f UU/kernel.what
3664 elif test -d c:/. -o -n "$is_os2" ; then
3671 case "$targetarch" in
3674 case "$targetarch" in
3676 # Will load qnx.sh, which should change osname to nto
3681 # Catch arm-linux-androideabi, mipsel-linux-android,
3682 # and i686-linux-android
3683 osname=linux-android
3687 # Something like arm-linux-gnueabihf is really just
3694 # XXX perhaps we should just assume
3695 # osvers to be 2, or maybe take the value
3696 # from targetarch. Using $run before the
3697 # hints are run is somewhat icky.
3698 set X `$run $uname -a 2>/dev/null`
3701 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3706 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3713 : Now look for a hint file osname_osvers, unless one has been
3714 : specified already.
3717 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3718 : Also try without trailing minor version numbers.
3719 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3720 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3721 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3722 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3725 *) case "$osvers" in
3728 *) if $test -f $src/hints/$file.sh ; then
3730 elif $test -f $src/hints/$xfile.sh ; then
3732 elif $test -f $src/hints/$xxfile.sh ; then
3734 elif $test -f $src/hints/$xxxfile.sh ; then
3736 elif $test -f $src/hints/$xxxxfile.sh ; then
3738 elif $test -f "$src/hints/${osname}.sh" ; then
3747 if $test -f Policy.sh ; then
3750 none) dflt="Policy" ;;
3751 *) dflt="Policy $dflt" ;;
3756 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3760 if $test -f Policy.sh ; then
3763 There's also a Policy hint file available, which should make the
3764 site-specific (policy) questions easier to answer.
3771 You may give one or more space-separated answers, or "none" if appropriate.
3772 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3773 previous run of Configure, you may specify it as well as or instead of
3774 OS-specific hints. If hints are provided for your OS, you should use them:
3775 although Perl can probably be built without hints on many platforms, using
3776 hints often improve performance and may enable features that Configure can't
3777 set up on its own. If there are no hints that match your OS, specify "none";
3778 DO NOT give a wrong version or a wrong OS.
3782 rp="Which of these apply, if any?"
3785 for file in $tans; do
3786 if $test X$file = XPolicy -a -f Policy.sh; then
3788 $cat Policy.sh >> UU/config.sh
3789 elif $test -f $src/hints/$file.sh; then
3790 . $src/hints/$file.sh
3791 $cat $src/hints/$file.sh >> UU/config.sh
3792 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3795 : Give one chance to correct a possible typo.
3796 echo "$file.sh does not exist"
3798 rp="hint to use instead?"
3800 for file in $ans; do
3801 if $test -f "$src/hints/$file.sh"; then
3802 . $src/hints/$file.sh
3803 $cat $src/hints/$file.sh >> UU/config.sh
3804 elif $test X$ans = X -o X$ans = Xnone ; then
3807 echo "$file.sh does not exist -- ignored."
3814 : Remember our hint file for later.
3815 if $test -f "$src/hints/$file.sh" ; then
3825 echo "Fetching default answers from $config_sh..." >&4
3829 cp $config_sh config.sh 2>/dev/null
3841 : Restore computed paths
3842 for file in $loclist $trylist; do
3843 eval $file="\$_$file"
3848 Configure uses the operating system name and version to set some defaults.
3849 The default value is probably right if the name rings a bell. Otherwise,
3850 since spelling matters for me, either accept the default or answer "none"
3857 ''|' '|none) dflt=none ;;
3858 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3861 *) dflt="$osname" ;;
3863 rp="Operating system name?"
3867 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3873 ''|' '|none) dflt=none ;;
3874 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3875 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3877 ''|' ') dflt=none ;;
3882 *) dflt="$osvers" ;;
3884 rp="Operating system version?"
3894 : who configured the system
3895 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3898 cf_by=`(logname) 2>/dev/null`
3901 cf_by=`(whoami) 2>/dev/null`
3903 "") cf_by=unknown ;;
3908 : decide how portable to be. Allow command line overrides.
3909 case "$d_portable" in
3911 *) d_portable="$define" ;;
3914 : set up shell script to do ~ expansion
3920 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3923 if $test -f /bin/csh; then
3924 /bin/csh -f -c "glob \$1"
3929 name=\`$expr x\$1 : '..\([^/]*\)'\`
3930 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3931 if $test ! -d "\$dir"; then
3933 echo "\$me: can't locate home directory for: \$name" >&2
3938 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3954 : now set up to get a file name
3958 cat <<'EOSC' >>getfile
3974 : getfile will accept an answer from the comma-separated list
3975 : enclosed in parentheses even if it does not meet other criteria.
3976 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3977 fn=`echo $fn | sed 's/(.*)//'`
3983 loc_file=`expr $fn : '.*:\(.*\)'`
3984 fn=`expr $fn : '\(.*\):.*'`
3992 */*) fullpath=true;;
4001 *e*) exp_file=true;;
4004 *p*) nopath_ok=true;;
4009 *d*) type='Directory';;
4010 *l*) type='Locate';;
4015 Locate) what='File';;
4020 case "$d_portable" in
4028 while test "$type"; do
4033 true) rp="$rp (~name ok)";;
4036 if test -f UU/getfile.ok && \
4037 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4056 value=`UU/filexp $ans`
4059 if test "$ans" != "$value"; then
4060 echo "(That expands to $value on this system.)"
4074 /*) value="$ansexp" ;;
4075 [a-zA-Z]:/*) value="$ansexp" ;;
4080 echo "I shall only accept a full path name, as in /bin/ls." >&4
4081 echo "Use a ! shell escape if you wish to check pathnames." >&4
4084 echo "Please give a full path name, starting with slash." >&4
4087 echo "Note that using ~name is ok provided it expands well." >&4
4100 for fp in $gfpth; do
4101 if test "X$fp" = X.; then
4106 if test -f "$pf"; then
4108 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4110 echo "($value is not a plain file, but that's ok.)"
4113 if test X"$type" = X; then
4120 for fp in $gfpth; do
4121 if test "X$fp" = X.; then
4126 direxp="$fp/$ansexp"
4128 if test -d "$direxp"; then
4136 if test -d "$ansexp"; then
4137 echo "(Looking for $loc_file in directory $value.)"
4138 value="$value/$loc_file"
4139 ansexp="$ansexp/$loc_file"
4141 if test -f "$ansexp"; then
4144 case "$nopath_ok" in
4145 true) case "$value" in
4147 *) echo "Assuming $value will be in people's path."
4163 if test "$fastread" = yes; then
4168 rp="$what $value doesn't exist. Use that name anyway?"
4187 test "X$gfpthkeep" != Xy && gfpth=""
4190 : determine root of directory hierarchy where package will be installed.
4193 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4196 dflt=`echo "$prefix" | sed 's/.$//'`
4204 By default, $package will be installed in $dflt/bin, manual pages
4205 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4206 installation directories. Typically this is something like /usr/local.
4207 If you wish to have binaries under /usr/bin but other parts of the
4208 installation under /usr/local, that's ok: you will be prompted
4209 separately for each of the installation directories, the prefix being
4210 only used to set the defaults.
4214 rp='Installation prefix to use?'
4222 *) oldprefix="$prefix";;
4229 : allow them to override the AFS root
4232 *) afsroot=$afsroot ;;
4238 $define|true) afs=true ;;
4239 $undef|false) afs=false ;;
4240 *) if $test -d $afsroot; then
4248 echo "AFS may be running... I'll be extra cautious then..." >&4
4250 echo "AFS does not seem to be running..." >&4
4253 : determine installation prefix for where package is to be installed.
4257 Since you are running AFS, I need to distinguish the directory in which
4258 files will reside from the directory in which they are installed (and from
4259 which they are presumably copied to the former directory by occult means).
4262 case "$installprefix" in
4263 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4264 *) dflt="$installprefix";;
4269 In some special cases, particularly when building $package for distribution,
4270 it is convenient to distinguish the directory in which files should be
4271 installed from the directory ($prefix) in which they will
4272 eventually reside. For most users, these two directories are the same.
4275 case "$installprefix" in
4277 *) dflt=$installprefix;;
4281 rp='What installation prefix should I use for installing files?'
4283 installprefix="$ans"
4284 installprefixexp="$ansexp"
4286 : Perform the prefixexp/installprefixexp correction if necessary
4287 cat <<EOS >installprefix
4290 cat <<'EOSC' >>installprefix
4291 : Change installation prefix, if necessary.
4292 if $test X"$prefix" != X"$installprefix"; then
4293 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
4295 eval "install${prefixvar}=\"\$${prefixvar}exp\""
4298 chmod +x installprefix
4299 $eunicefix installprefix
4301 : Set variables such as privlib and privlibexp from the output of ./getfile
4302 : performing the prefixexp/installprefixexp correction if necessary.
4303 cat <<EOS >setprefixvar
4306 cat <<'EOSC' >>setprefixvar
4307 eval "${prefixvar}=\"\$ans\""
4308 eval "${prefixvar}exp=\"\$ansexp\""
4311 chmod +x setprefixvar
4312 $eunicefix setprefixvar
4314 : set up the script used to warn in case of inconsistency
4323 '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4325 *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
4326 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4331 echo "*** WHOA THERE!!! ***" >&4
4332 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
4335 rp=" Keep the $hint value?"
4338 y) td=$was; tu=$was;;
4342 : function used to set '$1' to '$val'
4343 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4345 $define$undef) . ./whoa; eval "$var=\$td";;
4346 $undef$define) . ./whoa; eval "$var=\$tu";;
4347 *) eval "$var=$val";;
4350 : get the patchlevel
4352 echo "Getting the current patchlevel..." >&4
4353 if $test -r $rsrc/patchlevel.h;then
4354 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4355 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4356 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4357 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4358 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4359 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4360 perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4369 $echo "(You do not have patchlevel.h. Eek.)"
4371 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4372 version_patchlevel_string="version $patchlevel subversion $subversion"
4373 case "$perl_patchlevel" in
4375 *) perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'`
4376 version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel"
4380 $echo "(You have $package $version_patchlevel_string.)"
4384 : XXX Should be a Configure test for double-dots in filenames.
4385 version=`echo $revision $patchlevel $subversion | \
4386 $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4387 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4388 $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4391 version=`echo $revision $patchlevel $subversion | \
4392 $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4393 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4394 $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4397 : Special case the 5.005_xx maintenance series, which used 5.005
4398 : without any subversion label as a subdirectory in $sitelib
4399 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4400 api_versionstring='5.005'
4403 : Do we want threads support and if so, what type
4404 case "$usethreads" in
4405 $define|true|[yY]*) dflt='y';;
4406 *) # Catch case where user specified ithreads or 5005threads but
4407 # forgot -Dusethreads (A.D. 4/2002)
4408 case "$useithreads$use5005threads" in
4409 *$define*) dflt='y';;
4416 Perl can be built to offer a form of threading support on some systems
4417 To do so, Configure can be run with -Dusethreads.
4419 Note that Perl built with threading support runs slightly slower
4420 and uses slightly more memory than plain Perl.
4422 If this doesn't make any sense to you, just accept the default '$dflt'.
4424 rp='Build a threading Perl?'
4427 y|Y) val="$define" ;;
4433 if $test $patchlevel -lt 9; then
4434 case "$usethreads" in
4436 : Default to ithreads unless overridden on command line or with
4439 case "$use5005threads" in
4441 echo "5.005 threads are no longer supported"
4445 case "$useithreads" in
4446 $undef|false|[nN]*) dflt='n';;
4448 rp='Use the newer interpreter-based ithreads?'
4451 y|Y) val="$define" ;;
4456 : Now set use5005threads to the opposite value.
4457 case "$useithreads" in
4458 $define) val="$undef" ;;
4465 useithreads="$undef"
4466 use5005threads="$undef"
4470 case "$useithreads$use5005threads" in
4474 You cannot have both the ithreads and the 5.005 threads enabled
4475 at the same time. Disabling the 5.005 threads since they are
4476 much less stable than the ithreads.
4479 use5005threads="$undef"
4484 : perl-5.9.x and later
4486 if test X"$usethreads" = "X$define"; then
4487 case "$use5005threads" in
4491 5.005 threads has been removed for 5.10. Perl will be built using ithreads.
4498 use5005threads="$undef"
4499 useithreads="$usethreads"
4502 case "$d_oldpthreads" in
4503 '') : Configure tests would be welcome here. For now, assume undef.
4505 *) val="$d_oldpthreads" ;;
4511 : Look for a hint-file generated 'call-back-unit'. If the
4512 : user has specified that a threading perl is to be built,
4513 : we may need to set or change some other defaults.
4514 if $test -f usethreads.cbu; then
4515 echo "Your platform has some specific hints regarding threaded builds, using them..."
4518 case "$usethreads" in
4519 "$define"|true|[yY]*)
4521 (Your platform does not have any specific hints for threaded builds.
4522 Assuming POSIX threads, then.)
4528 : Check if multiplicity is required
4531 Perl can be built so that multiple Perl interpreters can coexist
4532 within the same Perl executable.
4535 case "$useithreads" in
4538 This multiple interpreter support is required for interpreter-based threads.
4542 *) case "$usemultiplicity" in
4543 $define|true|[yY]*) dflt='y';;
4547 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4548 rp='Build Perl for multiplicity?'
4551 y|Y) val="$define" ;;
4559 : Check if morebits is requested
4560 case "$usemorebits" in
4561 "$define"|true|[yY]*)
4562 use64bitint="$define"
4563 uselongdouble="$define"
4564 usemorebits="$define"
4566 *) usemorebits="$undef"
4570 : Determine the C compiler to be used
4576 rp="Use which C compiler?"
4580 : See whether they have no cc but they do have gcc
4582 if $test -f cc.cbu; then
4587 : make some quick guesses about what we are up against
4589 $echo $n "Hmm... $c"
4599 $cat $sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h >foo 2>/dev/null
4600 if test -f /osf_boot || $contains 'OSF/1' $sysroot/usr/include/ctype.h >/dev/null 2>&1
4602 echo "Looks kind of like an OSF/1 system, but we'll see..."
4604 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4605 xxx=`./loc addbib blurfl $pth`
4606 if $test -f $xxx; then
4607 echo "Looks kind of like a USG system with BSD features, but we'll see..."
4611 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4612 echo "Looks kind of like an extended USG system, but we'll see..."
4614 echo "Looks kind of like a USG system, but we'll see..."
4618 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4619 echo "Looks kind of like a BSD system, but we'll see..."
4623 echo "Looks kind of like a Version 7 system, but we'll see..."
4626 case "$eunicefix" in
4629 There is, however, a strange, musty smell in the air that reminds me of
4630 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4634 : it so happens the Eunice I know will not run shell scripts in Unix format
4638 echo "Congratulations. You aren't running Eunice."
4642 : Detect OS2. The p_ variable is set above in the Head.U unit.
4643 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4644 : semicolon as a patch separator
4649 I have the feeling something is not exactly right, however...don't tell me...
4650 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4651 (Or you may be running DOS with DJGPP.)
4656 if test -f /xenix; then
4657 echo "Actually, this looks more like a XENIX system..."
4662 echo "It's not Xenix..."
4667 if test -f /venix; then
4668 echo "Actually, this looks more like a VENIX system..."
4675 echo "Nor is it Venix..."
4678 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4679 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4682 : Check if we are using GNU gcc and what its version is
4684 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4688 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4690 printf("%s\n", __VERSION__);
4692 printf("%s\n", "1");
4698 if $cc -o try $ccflags $ldflags try.c; then
4699 gccversion=`$run ./try`
4700 case "$gccversion" in
4701 '') echo "You are not using GNU cc." ;;
4702 *) echo "You are using GNU cc $gccversion."
4708 echo "*** WHOA THERE!!! ***" >&4
4709 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
4710 case "$knowitall" in
4712 echo " You'd better start hunting for one and let me know about it." >&4
4718 case "$gccversion" in
4719 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4721 case "$gccversion" in
4722 '') gccosandvers='' ;;
4723 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4724 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4726 case "$gccosandvers" in
4727 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4728 $osname$osvers) ;; # looking good
4729 $osname*) cat <<EOM >&4
4731 *** WHOA THERE!!! ***
4733 Your gcc has not been compiled for the exact release of
4734 your operating system ($gccosandvers versus $osname$osvers).
4736 In general it is a good idea to keep gcc synchronized with
4737 the operating system because otherwise serious problems
4738 may ensue when trying to compile software, like Perl.
4740 I'm trying to be optimistic here, though, and will continue.
4741 If later during the configuration and build icky compilation
4742 problems appear (headerfile conflicts being the most common
4743 manifestation), I suggest reinstalling the gcc to match
4744 your operating system release.
4748 *) gccosandvers='' ;; # failed to parse, better be silent
4756 # gcc 3.* complain about adding -Idirectories that they already know about,
4757 # so we will take those off from locincpth.
4758 case "$gccversion" in
4760 echo "main(){}">try.c
4761 for incdir in $locincpth; do
4762 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4763 grep '^c[cp]p*[01]: warning: changing search order '`
4764 if test "X$warn" != X; then
4765 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4771 # gcc 4.9 by default does some optimizations that break perl.
4772 # see ticket 121505.
4774 # The -fwrapv disables those optimizations (and probably others,) so
4775 # for gcc 4.9 (and later, since the optimizations probably won't go
4776 # away), add -fwrapv unless the user requests -fno-wrapv, which
4777 # disables -fwrapv, or if the user requests -fsanitize=undefined,
4778 # which turns the overflows -fwrapv ignores into runtime errors.
4779 case "$gccversion" in
4780 4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*)
4782 *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;;
4783 *) ccflags="$ccflags -fwrapv" ;;
4787 : What should the include directory be ?
4788 : Use sysroot if set, so findhdr looks in the right place.
4790 $echo $n "Hmm... $c"
4791 dflt="$sysroot/usr/include"
4794 if $test -f /bin/mips && /bin/mips; then
4795 echo "Looks like a MIPS system..."
4796 $cat >usr.c <<'EOCP'
4797 #ifdef SYSTYPE_BSD43
4801 if $cc $cppflags -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4802 dflt='/bsd43/usr/include'
4806 mips_type='System V'
4808 $rm -f usr.c usr.out
4809 echo "and you're compiling with the $mips_type compiler and libraries."
4813 echo "Doesn't look like a MIPS system."
4823 case "$xxx_prompt" in
4826 rp='Where are the include files you want to use?'
4834 : see how we invoke the C preprocessor
4836 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4837 cat <<'EOT' >testcpp.c
4843 if test ! -f cppstdin; then
4844 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4845 # AIX cc -E doesn't show the absolute headerfile
4846 # locations but we'll cheat by using the -M flag.
4847 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
4849 echo 'cat >.$$.c; '"$cc $cppflags"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4852 echo "Keeping your $hint cppstdin wrapper."
4855 wrapper=`pwd`/cppstdin
4859 if $test "X$cppstdin" != "X" && \
4860 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4861 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1