extmk.rb: check if parent is build

* ext/extmk.rb (extmake): don't build nested libraries if parent
  library isn't build.

* ext/{dl/callback,tk/tkutil}/extconf.rb: no longer need to check
  if the parent is build.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45887 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2014-05-09 05:52:59 +00:00
Родитель ecb8b52f56
Коммит 77811031e5
3 изменённых файлов: 16 добавлений и 11 удалений

Просмотреть файл

@ -1,6 +1,6 @@
require 'mkmf'
if compiled?("dl")
begin
callbacks = (0..8).map{|i| "callback-#{i}"}.unshift("callback")
callback_srcs = callbacks.map{|basename| "#{basename}.c"}
callback_objs = callbacks.map{|basename| "#{basename}.o"}

Просмотреть файл

@ -141,6 +141,16 @@ def extmake(target)
FileUtils.mkpath target unless File.directory?(target)
begin
# don't build if parent library isn't build
parent = true
d = target
until (d = File.dirname(d)) == '.'
if File.exist?("#{$top_srcdir}/ext/#{d}/extconf.rb")
parent = (/^all:\s*install/ =~ IO.read("#{d}/Makefile") rescue false)
break
end
end
dir = Dir.pwd
FileUtils.mkpath target unless File.directory?(target)
Dir.chdir target
@ -161,8 +171,8 @@ def extmake(target)
makefile = "./Makefile"
static = $static
$static = nil if noinstall = File.fnmatch?("-*", target)
ok = File.exist?(makefile)
unless $ignore
ok = parent && File.exist?(makefile)
if parent && !$ignore
rbconfig0 = RbConfig::CONFIG
mkconfig0 = CONFIG
rbconfig = {
@ -288,13 +298,15 @@ def extmake(target)
end
ensure
Logging::log_close
unless $ignore
if rbconfig0
RbConfig.module_eval {
remove_const(:CONFIG)
const_set(:CONFIG, rbconfig0)
remove_const(:MAKEFILE_CONFIG)
const_set(:MAKEFILE_CONFIG, mkconfig0)
}
end
if mkconfig0
MakeMakefile.class_eval {
remove_const(:CONFIG)
const_set(:CONFIG, mkconfig0)

Просмотреть файл

@ -1,11 +1,4 @@
begin
has_tk = compiled?('tk')
rescue NoMethodError
# Probably, called manually (NOT from 'extmk.rb'). Force to make Makefile.
has_tk = true
end
if has_tk
require 'mkmf'
have_func("rb_obj_instance_exec", "ruby.h")