mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Use $(bindir) for path to executable in mkmf
For the macOS -bundle_loader linker option, we need a path to the Ruby exectuable. $(RUBY) is not necessarily a path since it could be a command line invocation. That happens during build with runruby.rb and can happen post installation if the user passes the --ruby option to a extconf.rb. Use $(bindir) to locate the executable instead. Before installation, $(bindir) doesn't exist, so we need to be able to override $(BUILTRUBY) in such situations so test-spec and bundled extensions could build. Use a new mkmf global, $builtruby, to do this; set it in fake.rb and in extmk.rb. Our build system is quite complex...
This commit is contained in:
parent
c69582a540
commit
e5a3f23256
Notes:
git
2022-08-04 16:29:45 +09:00
3 changed files with 7 additions and 2 deletions
|
@ -417,7 +417,6 @@ elsif CONFIG['EXTSTATIC']
|
||||||
else
|
else
|
||||||
$ruby = '$(topdir)/ruby' + EXEEXT
|
$ruby = '$(topdir)/ruby' + EXEEXT
|
||||||
end
|
end
|
||||||
$mflags << "BUILTRUBY=#$ruby"
|
|
||||||
$ruby = [$ruby]
|
$ruby = [$ruby]
|
||||||
$ruby << "-I'$(topdir)'"
|
$ruby << "-I'$(topdir)'"
|
||||||
unless CROSS_COMPILING
|
unless CROSS_COMPILING
|
||||||
|
@ -428,6 +427,7 @@ end
|
||||||
topruby = $ruby
|
topruby = $ruby
|
||||||
$ruby = topruby.join(' ')
|
$ruby = topruby.join(' ')
|
||||||
$mflags << "ruby=#$ruby"
|
$mflags << "ruby=#$ruby"
|
||||||
|
$builtruby = '$(topdir)/ruby' + EXEEXT # Must be an executable path
|
||||||
|
|
||||||
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
|
MTIMES = [__FILE__, 'rbconfig.rb', srcdir+'/lib/mkmf.rb'].collect {|f| File.mtime(f)}
|
||||||
|
|
||||||
|
|
|
@ -2076,7 +2076,11 @@ sitearch = #{CONFIG['sitearch']}
|
||||||
ruby_version = #{RbConfig::CONFIG['ruby_version']}
|
ruby_version = #{RbConfig::CONFIG['ruby_version']}
|
||||||
ruby = #{$ruby.sub(%r[\A#{Regexp.quote(RbConfig::CONFIG['bindir'])}(?=/|\z)]) {'$(bindir)'}}
|
ruby = #{$ruby.sub(%r[\A#{Regexp.quote(RbConfig::CONFIG['bindir'])}(?=/|\z)]) {'$(bindir)'}}
|
||||||
RUBY = $(ruby#{sep})
|
RUBY = $(ruby#{sep})
|
||||||
BUILTRUBY = $(RUBY)
|
BUILTRUBY = #{if defined?($builtruby) && $builtruby
|
||||||
|
$builtruby
|
||||||
|
else
|
||||||
|
File.join('$(bindir)', CONFIG["RUBY_INSTALL_NAME"] + CONFIG['EXEEXT'])
|
||||||
|
end}
|
||||||
ruby_headers = #{headers.join(' ')}
|
ruby_headers = #{headers.join(' ')}
|
||||||
|
|
||||||
RM = #{config_string('RM', &possible_command) || '$(RUBY) -run -e rm -- -f'}
|
RM = #{config_string('RM', &possible_command) || '$(RUBY) -run -e rm -- -f'}
|
||||||
|
|
|
@ -45,6 +45,7 @@ prehook = proc do |extmk|
|
||||||
$extout_prefix = '$(extout)$(target_prefix)/'
|
$extout_prefix = '$(extout)$(target_prefix)/'
|
||||||
config = RbConfig::CONFIG
|
config = RbConfig::CONFIG
|
||||||
mkconfig = RbConfig::MAKEFILE_CONFIG
|
mkconfig = RbConfig::MAKEFILE_CONFIG
|
||||||
|
$builtruby ||= File.join(builddir, config['RUBY_INSTALL_NAME'] + config['EXEEXT'])
|
||||||
RbConfig.fire_update!("builddir", builddir)
|
RbConfig.fire_update!("builddir", builddir)
|
||||||
RbConfig.fire_update!("buildlibdir", builddir)
|
RbConfig.fire_update!("buildlibdir", builddir)
|
||||||
RbConfig.fire_update!("libdir", builddir)
|
RbConfig.fire_update!("libdir", builddir)
|
||||||
|
|
Loading…
Reference in a new issue