summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-09 05:52:59 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-05-09 05:52:59 +0000
commit77811031e549b0e8011182f6f703a07ab2ae767b (patch)
treee1e093009ad72c0f14cf592d5a1a0cbc16d8f744 /ext
parentecb8b52f56f108ac93f0f470462f3a3cb697d91e (diff)
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.rb2
-rwxr-xr-xext/extmk.rb18
-rw-r--r--ext/tk/tkutil/extconf.rb7
3 files changed, 16 insertions, 11 deletions
diff --git a/ext/dl/callback/extconf.rb b/ext/dl/callback/extconf.rb
index 6c3387670d6..f3b79b0a33f 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 978095cd302..b80a4fc36e8 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 57de973c0aa..9ffde75657d 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")