diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-09 05:52:59 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-05-09 05:52:59 +0000 |
commit | 77811031e549b0e8011182f6f703a07ab2ae767b (patch) | |
tree | e1e093009ad72c0f14cf592d5a1a0cbc16d8f744 /ext | |
parent | ecb8b52f56f108ac93f0f470462f3a3cb697d91e (diff) | |
download | ruby-77811031e549b0e8011182f6f703a07ab2ae767b.tar.gz |
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
Diffstat (limited to 'ext')
-rw-r--r-- | ext/dl/callback/extconf.rb | 2 | ||||
-rwxr-xr-x | ext/extmk.rb | 18 | ||||
-rw-r--r-- | ext/tk/tkutil/extconf.rb | 7 |
3 files changed, 16 insertions, 11 deletions
diff --git a/ext/dl/callback/extconf.rb b/ext/dl/callback/extconf.rb index 6c3387670d..f3b79b0a33 100644 --- a/ext/dl/callback/extconf.rb +++ b/ext/dl/callback/extconf.rb @@ -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"} diff --git a/ext/extmk.rb b/ext/extmk.rb index 978095cd30..b80a4fc36e 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -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) diff --git a/ext/tk/tkutil/extconf.rb b/ext/tk/tkutil/extconf.rb index 57de973c0a..9ffde75657 100644 --- a/ext/tk/tkutil/extconf.rb +++ b/ext/tk/tkutil/extconf.rb @@ -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") |