diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2022-09-17 12:09:34 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-17 12:09:34 +0900 |
commit | 6898984f1cd1b0375c3da44d7832724489e0e470 (patch) | |
tree | d811a0a5e7ff372895d6d0230b28163d510151eb /configure.ac | |
parent | e3a32abe2ef726c552ed04603413a0b7befd3ec0 (diff) |
[Bug #19005] dynamic_lookup linker option in external libraries
The warning against `-undefined dynamic_lookup` is just a warning yet,
and many gems seem to pay no attention to warnings. Until it fails
actually, keep it as a migration path, except for standard extension
libraries and bundled extension gems.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/6394
Merged-By: nobu <nobu@ruby-lang.org>
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/configure.ac b/configure.ac index 43f1541f3b..8cf0f58067 100644 --- a/configure.ac +++ b/configure.ac @@ -2956,7 +2956,7 @@ STATIC= } : "rpath" && { - AS_CASE(["$target_os"], + AS_CASE(["$target_os"], [solaris*], [ AS_IF([test "$GCC" = yes], [ : ${LDSHARED='$(CC) -shared'} AS_IF([test "$rb_cv_prog_gnu_ld" = yes], [ @@ -3055,23 +3055,35 @@ STATIC= [atheos*], [ : ${LDSHARED='$(CC) -shared'} rb_cv_dlopen=yes], [ : ${LDSHARED='$(LD)'}]) - AC_MSG_RESULT($rb_cv_dlopen) + AC_MSG_RESULT($rb_cv_dlopen) +} - AS_IF([test "$rb_cv_dlopen" = yes], [ +AS_IF([test "$rb_cv_dlopen" = yes], [ AS_CASE(["$target_os"], - [darwin*], [ + [darwin*], [ + AC_SUBST(ADDITIONAL_DLDFLAGS, "") for flag in \ "-multiply_defined suppress" \ + "-undefined dynamic_lookup" \ ; do - test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`" - RUBY_TRY_LDFLAGS([$flag], [], [flag=]) - AS_IF([test "x$flag" != x], [ - RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag]) - ]) + test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`" + RUBY_TRY_LDFLAGS([$flag], [], [$flag=]) + AS_IF([test x"$flag" = x], [continue]) + + AC_MSG_CHECKING([whether $flag is accepted for bundle]) + : > conftest.c + AS_IF([${LDSHARED/'$(CC)'/$CC} -o conftest.bundle $flag conftest.c >/dev/null 2>conftest.err && + test ! -s conftest.err], [ + AC_MSG_RESULT([yes]) + RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag]) + ], [ + AC_MSG_RESULT([no]) + RUBY_APPEND_OPTIONS(ADDITIONAL_DLDFLAGS, [$flag]) + ]) + rm -fr conftest.* done - ]) - ]) -} + ]) +]) AS_IF([test "${LDSHAREDXX}" = ""], [ AS_CASE(["${LDSHARED}"], |