114 lines
3.6 KiB
Diff
114 lines
3.6 KiB
Diff
diff --git a/hints/linux.sh b/hints/linux.sh
|
|
index fb5a46e..a985a8e 100644
|
|
--- a/hints/linux.sh
|
|
+++ b/hints/linux.sh
|
|
@@ -178,6 +178,16 @@ case "$plibpth" in
|
|
;;
|
|
esac
|
|
|
|
+# 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
|
|
+
|
|
# 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
|
|
@@ -221,92 +231,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.'
|