This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #132087) correct *at() function detection on older darwin
[perl5.git] / hints / linux.sh
index 4c2c5f5..3f38ea0 100644 (file)
@@ -58,7 +58,11 @@ shift
 libswanted="$*"
 
 # Debian 4.0 puts ndbm in the -lgdbm_compat library.
-libswanted="$libswanted gdbm_compat"
+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
 # function in <sys/stat.h>.
@@ -174,6 +178,23 @@ case "$plibpth" in
     ;;
 esac
 
+# 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
+
 case "$libc" in
 '')
 # If you have glibc, then report the version for ./myconfig bug reporting.
@@ -200,92 +221,6 @@ case "$libc" 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} $ccflags $ldflags 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.
-
-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
-
-rm -f try.c a.out
-
 if ${sh:-/bin/sh} -c exit; then
   echo ''
   echo 'You appear to have a working bash.  Good.'
@@ -493,7 +428,7 @@ then
        DBLIB="$DBDIR/libdb.so"
        if [ -f $DBLIB ]
        then
-         if ${nm:-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