Feature #19422
openMake `--enabled-shared` mandatory on macOS
Description
From the troubles around linker on macOS, I propose --enable-shared
option mandatory on macOS.
This patch enables the option by default, and abort if --disable-shared
option is given explicitly.
diff --git i/configure.ac w/configure.ac
index 7db2ab5257c..923ac7d1199 100644
--- i/configure.ac
+++ w/configure.ac
@@ -504,6 +504,11 @@ AS_CASE(["$target_os"],
rb_cv_binary_elf=no
: ${enable_shared=yes}
],
+[darwin*], [
+ AS_IF([test "${enable_shared=yes}" = no], [
+ AC_MSG_ERROR([--disable-shared is not supported on this platform])
+ ])
+],
[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
AC_PROG_LN_S
@@ -3055,14 +3060,7 @@ AC_SUBST(EXTOBJS)
: ${LDFLAGS=""}
: ${LIBPATHENV=DYLD_FALLBACK_LIBRARY_PATH}
: ${PRELOADENV=DYLD_INSERT_LIBRARIES}
- AS_IF([test x"$enable_shared" = xyes], [
- # Resolve symbols from libruby.dylib when --enable-shared
- EXTDLDFLAGS='$(LIBRUBYARG_SHARED)'
- ], [test "x$EXTSTATIC" = x], [
- # When building exts as bundles, a mach-o bundle needs to know its loader
- # program to bind symbols from the ruby executable
- EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
- ])
+ EXTDLDFLAGS='$(LIBRUBYARG_SHARED)'
rb_cv_dlopen=yes],
[aix*], [ : ${LDSHARED='$(CC)'}
AS_IF([test "$GCC" = yes], [
@@ -3356,10 +3354,6 @@ AS_IF([test x"$cross_compiling" = xyes], [
AC_SUBST(XRUBY_RUBYLIBDIR)
AC_SUBST(XRUBY_RUBYHDRDIR)
PREP='$(arch)-fake.rb'
- AS_CASE(["$enable_shared:$EXTSTATIC:$target_os"], [no::darwin*], [
- # darwin target requires miniruby for linking ext bundles
- PREP="$PREP"' miniruby$(EXEEXT)'
- ])
RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
RUNRUBY='$(RUNRUBY_COMMAND)'
XRUBY='$(MINIRUBY)'
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to mrkn (Kenta Murata)
Updated by naruse (Yui NARUSE) over 1 year ago
- Related to Bug #18912: Build failure with Xcode 14 and macOS 13 (Ventura) Beta added
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Assignee changed from mrkn (Kenta Murata) to hsbt (Hiroshi SHIBATA)
We discuss this feature in DevMeeting.
We will back to use dynamic_lookup
and suppress warnings. But Apple may remove dynamic_lookup
completely in the future. We need to look and test Xcode 15 in this summer.
After that, we will decide how to handle this problem.
Updated by nobu (Nobuyoshi Nakada) 11 months ago
Although the problem seems avoided (or postponed maybe) now, this would still make sense, I think.
Since the ruby 2.6 bundled with macOS is configured to --enable-shared
too, there is no reason for us to disable the shared
option.
Updated by hsbt (Hiroshi SHIBATA) 10 months ago
We discuss this at dev meeting.
We only change default configuration to --enable-shared
for macOS. If user want to use --disable-shared
explicitly, we accept it.
Updated by nobu (Nobuyoshi Nakada) 10 months ago
- Status changed from Assigned to Closed
Applied in changeset git|9694445051c4192c8f659529133acab253bd0bc3.
[Feature #19422] Enable shared by default on macOS
Updated by hsbt (Hiroshi SHIBATA) 9 months ago
- Related to Bug #20004: Release CI is broken with Ruby master added
Updated by hsbt (Hiroshi SHIBATA) 9 months ago
- Status changed from Closed to Open
This change affect some environment like GitHub Actions.
Updated by misdoro (Mikhail Doronin) 8 months ago
Should this be tried again? Maybe the failures were caused by the bug #20072 ?
Updated by katei (Yuta Saito) 8 months ago
This feature has been reverted due to #20004 and we are planning to land it again after 3.3 release by https://github.com/ruby/ruby/pull/9090
Updated by hsbt (Hiroshi SHIBATA) 6 months ago
- Status changed from Open to Assigned