359 lines
12 KiB
Diff
359 lines
12 KiB
Diff
diff --git a/ext/Errno/Errno_pm.PL b/ext/Errno/Errno_pm.PL
|
|
index 439f254..a324604 100644
|
|
--- a/ext/Errno/Errno_pm.PL
|
|
+++ b/ext/Errno/Errno_pm.PL
|
|
@@ -242,20 +242,31 @@ sub write_errno_pm {
|
|
unless ($^O eq 'beos') { # trust what we have / get later
|
|
# invoke CPP and read the output
|
|
|
|
+ my $inhibit_linemarkers = '';
|
|
+ if ($Config{gccversion} =~ /\A(\d+)\./ and $1 >= 5) {
|
|
+ # GCC 5.0 interleaves expanded macros with line numbers breaking
|
|
+ # each line into multiple lines. RT#123784
|
|
+ $inhibit_linemarkers = ' -P';
|
|
+ }
|
|
+
|
|
if ($^O eq 'VMS') {
|
|
- my $cpp = "$Config{cppstdin} $Config{cppflags} $Config{cppminus}";
|
|
+ my $cpp = "$Config{cppstdin} $Config{cppflags}" .
|
|
+ $inhibit_linemarkers . " $Config{cppminus}";
|
|
$cpp =~ s/sys\$input//i;
|
|
open(CPPO,"$cpp errno.c |") or
|
|
die "Cannot exec $Config{cppstdin}";
|
|
} elsif ($IsMSWin32 || $^O eq 'NetWare') {
|
|
- open(CPPO,"$Config{cpprun} $Config{cppflags} errno.c |") or
|
|
- die "Cannot run '$Config{cpprun} $Config{cppflags} errno.c'";
|
|
+ my $cpp = "$Config{cpprun} $Config{cppflags}" .
|
|
+ $inhibit_linemarkers;
|
|
+ open(CPPO,"$cpp errno.c |") or
|
|
+ die "Cannot run '$cpp errno.c'";
|
|
} elsif ($IsSymbian) {
|
|
- my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc -";
|
|
+ my $cpp = "gcc -E -I$ENV{SDK}\\epoc32\\include\\libc" .
|
|
+ $inhibit_linemarkers ." -";
|
|
open(CPPO,"$cpp < errno.c |")
|
|
or die "Cannot exec $cpp";
|
|
} else {
|
|
- my $cpp = default_cpp();
|
|
+ my $cpp = default_cpp() . $inhibit_linemarkers;
|
|
open(CPPO,"$cpp < errno.c |")
|
|
or die "Cannot exec $cpp";
|
|
}
|
|
diff --git a/hints/linux.sh b/hints/linux.sh
|
|
index 688c68d..a985a8e 100644
|
|
--- a/hints/linux.sh
|
|
+++ b/hints/linux.sh
|
|
@@ -39,7 +39,7 @@ i_libutil='undef'
|
|
# SuSE Linux can be used as cross-compilation host for Cray XT4 Catamount/Qk.
|
|
if test -d /opt/xt-pe
|
|
then
|
|
- case "`cc -V 2>&1`" in
|
|
+ case "`${cc:-cc} -V 2>&1`" in
|
|
*catamount*) . hints/catamount.sh; return ;;
|
|
esac
|
|
fi
|
|
@@ -58,17 +58,10 @@ shift
|
|
libswanted="$*"
|
|
|
|
# Debian 4.0 puts ndbm in the -lgdbm_compat library.
|
|
-libswanted="$libswanted gdbm_compat"
|
|
-
|
|
-# If you have glibc, then report the version for ./myconfig bug reporting.
|
|
-# (Configure doesn't need to know the specific version since it just uses
|
|
-# gcc to load the library for all tests.)
|
|
-# We don't use __GLIBC__ and __GLIBC_MINOR__ because they
|
|
-# are insufficiently precise to distinguish things like
|
|
-# libc-2.0.6 and libc-2.0.7.
|
|
-if test -L /lib/libc.so.6; then
|
|
- libc=`ls -l /lib/libc.so.6 | awk '{print $NF}'`
|
|
- libc=/lib/$libc
|
|
+echo $libs
|
|
+if echo " $libswanted " | grep -q ' gdbm '; then
|
|
+ # Only add if gdbm is in libswanted.
|
|
+ libswanted="$libswanted gdbm_compat"
|
|
fi
|
|
|
|
# Configure may fail to find lstat() since it's a static/inline
|
|
@@ -87,6 +80,9 @@ case "$usemymalloc" in
|
|
'') usemymalloc='n' ;;
|
|
esac
|
|
|
|
+uname_minus_m="`$run uname -m 2>/dev/null`"
|
|
+uname_minus_m="${uname_minus_m:-"$targetarch"}"
|
|
+
|
|
# Check if we're about to use Intel's ICC compiler
|
|
case "`${cc:-cc} -V 2>&1`" in
|
|
*"Intel(R) C++ Compiler"*|*"Intel(R) C Compiler"*)
|
|
@@ -100,7 +96,7 @@ case "`${cc:-cc} -V 2>&1`" in
|
|
# The -no-gcc flag is needed otherwise, icc pretends (poorly) to be gcc
|
|
ccflags="-we147 -mp -no-gcc $ccflags"
|
|
# Prevent relocation errors on 64bits arch
|
|
- case "`uname -m`" in
|
|
+ case "$uname_minus_m" in
|
|
*ia64*|*x86_64*)
|
|
cccdlflags='-fPIC'
|
|
;;
|
|
@@ -134,7 +130,7 @@ case "$optimize" in
|
|
# use -O2 by default ; -O3 doesn't seem to bring significant benefits with gcc
|
|
'')
|
|
optimize='-O2'
|
|
- case "`uname -m`" in
|
|
+ case "$uname_minus_m" in
|
|
ppc*)
|
|
# on ppc, it seems that gcc (at least gcc 3.3.2) isn't happy
|
|
# with -O2 ; so downgrade to -O1.
|
|
@@ -174,7 +170,7 @@ else
|
|
fi
|
|
|
|
case "$plibpth" in
|
|
-'') plibpth=`LANG=C LC_ALL=C $gcc -print-search-dirs | grep libraries |
|
|
+'') plibpth=`LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries |
|
|
cut -f2- -d= | tr ':' $trnl | grep -v 'gcc' | sed -e 's:/$::'`
|
|
set X $plibpth # Collapse all entries on one line
|
|
shift
|
|
@@ -182,93 +178,60 @@ case "$plibpth" in
|
|
;;
|
|
esac
|
|
|
|
-# Are we using ELF? Thanks to Kenneth Albanowski <kjahds@kjahds.com>
|
|
-# for this test.
|
|
-cat >try.c <<'EOM'
|
|
-/* Test for whether ELF binaries are produced */
|
|
-#include <fcntl.h>
|
|
-#include <stdlib.h>
|
|
-#include <unistd.h>
|
|
-main() {
|
|
- char buffer[4];
|
|
- int i=open("a.out",O_RDONLY);
|
|
- if(i==-1)
|
|
- exit(1); /* fail */
|
|
- if(read(i,&buffer[0],4)<4)
|
|
- exit(1); /* fail */
|
|
- if(buffer[0] != 127 || buffer[1] != 'E' ||
|
|
- buffer[2] != 'L' || buffer[3] != 'F')
|
|
- exit(1); /* fail */
|
|
- exit(0); /* succeed (yes, it's ELF) */
|
|
-}
|
|
-EOM
|
|
-if ${cc:-gcc} try.c >/dev/null 2>&1 && $run ./a.out; then
|
|
- cat <<'EOM' >&4
|
|
-
|
|
-You appear to have ELF support. I'll try to use it for dynamic loading.
|
|
-If dynamic loading doesn't work, read hints/linux.sh for further information.
|
|
-EOM
|
|
-
|
|
-else
|
|
- cat <<'EOM' >&4
|
|
-
|
|
-You don't have an ELF gcc. I will use dld if possible. If you are
|
|
-using a version of DLD earlier than 3.2.6, or don't have it at all, you
|
|
-should probably upgrade. If you are forced to use 3.2.4, you should
|
|
-uncomment a couple of lines in hints/linux.sh and restart Configure so
|
|
-that shared libraries will be disallowed.
|
|
+# For the musl libc, perl should #define _GNU_SOURCE. Otherwise, some
|
|
+# available functions, like memem, won't be used. See the discussion in
|
|
+# [perl #133760]. musl doesn't offer an easy way to identify it, but,
|
|
+# at least on alpine linux, the ldd --version output contains the
|
|
+# string 'musl.'
|
|
+case `ldd --version 2>&1` in
|
|
+ musl*) ccflags="$ccflags -D_GNU_SOURCE" ;;
|
|
+ *) ;;
|
|
+esac
|
|
|
|
-EOM
|
|
- lddlflags="-r $lddlflags"
|
|
- # These empty values are so that Configure doesn't put in the
|
|
- # Linux ELF values.
|
|
- ccdlflags=' '
|
|
- cccdlflags=' '
|
|
- ccflags="-DOVR_DBL_DIG=14 $ccflags"
|
|
- so='sa'
|
|
- dlext='o'
|
|
- nm_so_opt=' '
|
|
- ## If you are using DLD 3.2.4 which does not support shared libs,
|
|
- ## uncomment the next two lines:
|
|
- #ldflags="-static"
|
|
- #so='none'
|
|
-
|
|
- # In addition, on some systems there is a problem with perl and NDBM
|
|
- # which causes AnyDBM and NDBM_File to lock up. This is evidenced
|
|
- # in the tests as AnyDBM just freezing. Apparently, this only
|
|
- # happens on a.out systems, so we disable NDBM for all a.out linux
|
|
- # systems. If someone can suggest a more robust test
|
|
- # that would be appreciated.
|
|
- #
|
|
- # More info:
|
|
- # Date: Wed, 7 Feb 1996 03:21:04 +0900
|
|
- # From: Jeffrey Friedl <jfriedl@nff.ncl.omron.co.jp>
|
|
- #
|
|
- # I tried compiling with DBM support and sure enough things locked up
|
|
- # just as advertised. Checking into it, I found that the lockup was
|
|
- # during the call to dbm_open. Not *in* dbm_open -- but between the call
|
|
- # to and the jump into.
|
|
- #
|
|
- # To make a long story short, making sure that the *.a and *.sa pairs of
|
|
- # /usr/lib/lib{m,db,gdbm}.{a,sa}
|
|
- # were perfectly in sync took care of it.
|
|
- #
|
|
- # This will generate a harmless Whoa There! message
|
|
- case "$d_dbm_open" in
|
|
- '') cat <<'EOM' >&4
|
|
-
|
|
-Disabling ndbm. This will generate a Whoa There message in Configure.
|
|
-Read hints/linux.sh for further information.
|
|
-EOM
|
|
- # You can override this with Configure -Dd_dbm_open
|
|
- d_dbm_open=undef
|
|
- ;;
|
|
- esac
|
|
-fi
|
|
+# libquadmath is sometimes installed as gcc internal library,
|
|
+# so contrary to our usual policy of *not* looking at gcc internal
|
|
+# directories we now *do* look at them, in case they contain
|
|
+# the quadmath library.
|
|
+# XXX This may apply to other gcc internal libraries, if such exist.
|
|
+# XXX This could be at Configure level, but then the $gcc is messy.
|
|
+case "$usequadmath" in
|
|
+"$define")
|
|
+ for d in `LANG=C LC_ALL=C $gcc $ccflags $ldflags -print-search-dirs | grep libraries | cut -f2- -d= | tr ':' $trnl | grep 'gcc' | sed -e 's:/$::'`
|
|
+ do
|
|
+ case `ls $d/*libquadmath*$so* 2>/dev/null` in
|
|
+ $d/*libquadmath*$so*) xlibpth="$xlibpth $d" ;;
|
|
+ esac
|
|
+ done
|
|
+ ;;
|
|
+esac
|
|
|
|
-rm -f try.c a.out
|
|
+case "$libc" in
|
|
+'')
|
|
+# If you have glibc, then report the version for ./myconfig bug reporting.
|
|
+# (Configure doesn't need to know the specific version since it just uses
|
|
+# gcc to load the library for all tests.)
|
|
+# We don't use __GLIBC__ and __GLIBC_MINOR__ because they
|
|
+# are insufficiently precise to distinguish things like
|
|
+# libc-2.0.6 and libc-2.0.7.
|
|
+ for p in $plibpth
|
|
+ do
|
|
+ for trylib in libc.so.6 libc.so
|
|
+ do
|
|
+ if $test -e $p/$trylib; then
|
|
+ libc=`ls -l $p/$trylib | awk '{print $NF}'`
|
|
+ if $test "X$libc" != X; then
|
|
+ break
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ if $test "X$libc" != X; then
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ ;;
|
|
+esac
|
|
|
|
-if /bin/sh -c exit; then
|
|
+if ${sh:-/bin/sh} -c exit; then
|
|
echo ''
|
|
echo 'You appear to have a working bash. Good.'
|
|
else
|
|
@@ -335,7 +298,7 @@ fi
|
|
#'osfmach3ppc') ccdlflags='-Wl,-E' ;;
|
|
#esac
|
|
|
|
-case "`uname -m`" in
|
|
+case "$uname_minus_m" in
|
|
sparc*)
|
|
case "$cccdlflags" in
|
|
*-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;;
|
|
@@ -350,17 +313,55 @@ esac
|
|
# version of -lgdbm which is a bad idea. So if we have 'nm'
|
|
# make sure it can read the file
|
|
# NI-S 2003/08/07
|
|
-if [ -r /usr/lib/libndbm.so -a -x /usr/bin/nm ] ; then
|
|
- if /usr/bin/nm /usr/lib/libndbm.so >/dev/null 2>&1 ; then
|
|
- echo 'Your shared -lndbm seems to be a real library.'
|
|
- else
|
|
- echo 'Your shared -lndbm is not a real library.'
|
|
- set `echo X "$libswanted "| sed -e 's/ ndbm / /'`
|
|
- shift
|
|
- libswanted="$*"
|
|
- fi
|
|
-fi
|
|
+case "$nm" in
|
|
+ '') ;;
|
|
+ *)
|
|
+ for p in $plibpth
|
|
+ do
|
|
+ if $test -r $p/libndbm.so; then
|
|
+ if $nm $p/libndbm.so >/dev/null 2>&1 ; then
|
|
+ echo 'Your shared -lndbm seems to be a real library.'
|
|
+ _libndbm_real=1
|
|
+ break
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ if $test "X$_libndbm_real" = X; then
|
|
+ echo 'Your shared -lndbm is not a real library.'
|
|
+ set `echo X "$libswanted "| sed -e 's/ ndbm / /'`
|
|
+ shift
|
|
+ libswanted="$*"
|
|
+ fi
|
|
+ ;;
|
|
+esac
|
|
|
|
+# Linux on Synology.
|
|
+if [ -f /etc/synoinfo.conf -a -d /usr/syno ]; then
|
|
+ # Tested on Synology DS213 and DS413
|
|
+ # OS version info in /etc.defaults/VERSION
|
|
+ # http://forum.synology.com/wiki/index.php/What_kind_of_CPU_does_my_NAS_have
|
|
+ # Synology DS213 running DSM 4.3-3810-0 (2013-11-06)
|
|
+ # CPU model Marvell Kirkwood mv6282 ARMv5te
|
|
+ # Linux 2.6.32.12 #3810 Wed Nov 6 05:13:41 CST 2013 armv5tel GNU/Linux
|
|
+ # Synology DS413 running DSM 4.3-3810-0 (2013-11-06)
|
|
+ # CPU model Freescale QorIQ P1022 ppc (e500v2)
|
|
+ # linux 2.6.32.12 #3810 ppc GNU/Linux
|
|
+ # All development stuff installed with ipkg is in /opt
|
|
+ if [ "$LANG" = "" -o "$LANG" = "C" ]; then
|
|
+ echo 'Your LANG is safe'
|
|
+ else
|
|
+ echo 'Please set $LANG to "C". All other $LANG settings will cause havoc' >&4
|
|
+ LANG=C
|
|
+ fi
|
|
+ echo 'Setting up to use /opt/*' >&4
|
|
+ locincpth="/opt/include $locincpth"
|
|
+ libpth="/opt/lib $libpth"
|
|
+ libspth="/opt/lib $libspth"
|
|
+ loclibpth="/opt/lib $loclibpth"
|
|
+ # POSIX will not link without the pthread lib
|
|
+ libswanted="$libswanted pthread"
|
|
+ echo "$libswanted" >&4
|
|
+fi
|
|
|
|
# This script UU/usethreads.cbu will get 'called-back' by Configure
|
|
# after it has prompted the user for whether to use threads.
|
|
@@ -414,16 +415,6 @@ $define|true|[yY]*)
|
|
;;
|
|
esac
|
|
|
|
-# If we are using g++ we must use nm and force ourselves to use
|
|
-# the /usr/lib/libc.a (resetting the libc below to an empty string
|
|
-# makes Configure to look for the right one) because the symbol
|
|
-# scanning tricks of Configure will crash and burn horribly.
|
|
-case "$cc" in
|
|
-*g++*) usenm=true
|
|
- libc=''
|
|
- ;;
|
|
-esac
|
|
-
|
|
# If using g++, the Configure scan for dlopen() and (especially)
|
|
# dlerror() might fail, easier just to forcibly hint them in.
|
|
case "$cc" in
|
|
@@ -447,7 +438,7 @@ then
|
|
DBLIB="$DBDIR/libdb.so"
|
|
if [ -f $DBLIB ]
|
|
then
|
|
- if nm -u $DBLIB | grep pthread >/dev/null
|
|
+ if ${nm:-nm} -u $DBLIB 2>/dev/null | grep pthread >/dev/null
|
|
then
|
|
if ldd $DBLIB | grep pthread >/dev/null
|
|
then
|