summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuta Saito <kateinoigakukun@gmail.com>2022-07-30 17:25:12 +0900
committerYuta Saito <kateinoigakukun@gmail.com>2022-08-04 16:29:22 +0900
commit6d8b9a9d619821b722273d93cdc4645ae2e23ede (patch)
treef33b00dff19d81557f5432b32c2dab31b4f397db
parente5a3f232563139fdf15660d54aeaec112ffc2349 (diff)
Resolve abi symbol references from miniruby to avoid circular deps
Adding `ruby` to `PREP` causes the following circular dependencies because `PREP` is used as a prerequisite by some targets required to build `ruby` target itself. ``` make: Circular .rbconfig.time <- ruby dependency dropped. make: Circular builtin_binary.inc <- ruby dependency dropped. make: Circular ext/extinit.c <- ruby dependency dropped. make: Circular ruby <- ruby dependency dropped. ``` Adding a new Make variable like `EXTPREP` only for exts may be also reasonable, but it would introduce another complexity into our build system. `-bundle_loader` doesn't care that link-time and run-time loader executables are different as long as bound symbols are provided, so it's ok to resolve from miniruby to simplify our build.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/6193
-rw-r--r--configure.ac5
-rw-r--r--enc/Makefile.in2
-rwxr-xr-xext/extmk.rb2
3 files changed, 4 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index 1808a643f3..c68b7632e6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3015,7 +3015,6 @@ STATIC=
# When building ext bundles, a mach-o bundle needs to know its loader
# program to bind symbols from the ruby executable
EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
- PREP="$PREP"' $(PROGRAM)'
])
rb_cv_dlopen=yes],
[aix*], [ : ${LDSHARED='$(CC)'}
@@ -3340,7 +3339,7 @@ AS_IF([test x"$cross_compiling" = xyes], [
AC_SUBST(XRUBY_LIBDIR)
AC_SUBST(XRUBY_RUBYLIBDIR)
AC_SUBST(XRUBY_RUBYHDRDIR)
- PREP="$PREP "'$(arch)-fake.rb'
+ PREP='$(arch)-fake.rb'
RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
RUNRUBY='$(RUNRUBY_COMMAND)'
XRUBY='$(MINIRUBY)'
@@ -3350,7 +3349,7 @@ AS_IF([test x"$cross_compiling" = xyes], [
], [
MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
- PREP="$PREP "'miniruby$(EXEEXT)'
+ PREP='miniruby$(EXEEXT)'
RUNRUBY_COMMAND='$(MINIRUBY) $(tooldir)/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
RUNRUBY='$(RUNRUBY_COMMAND) --'
XRUBY='$(RUNRUBY)'
diff --git a/enc/Makefile.in b/enc/Makefile.in
index 0e1a27a667..dd8ca1b528 100644
--- a/enc/Makefile.in
+++ b/enc/Makefile.in
@@ -36,7 +36,7 @@ RUBY_SO_NAME = @RUBY_SO_NAME@
LIBRUBY = @LIBRUBY@
LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED)
-BUILTRUBY = $(topdir)/ruby$(EXEEXT)
+BUILTRUBY = $(topdir)/miniruby$(EXEEXT)
empty =
AR = @AR@
diff --git a/ext/extmk.rb b/ext/extmk.rb
index b0d84ef00f..1624ec9099 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -427,7 +427,7 @@ end
topruby = $ruby
$ruby = topruby.join(' ')
$mflags << "ruby=#$ruby"
-$builtruby = '$(topdir)/ruby' + EXEEXT # Must be an executable path
+$builtruby = '$(topdir)/miniruby' + EXEEXT # Must be an executable path
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}