summaryrefslogtreecommitdiff
path: root/ext/extmk.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-22 14:55:07 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-10-22 14:55:07 +0000
commitd6837060becd0cb4586eca08515fc4ee6c8bb2f0 (patch)
tree87d197119c2de1782a2a0f9c788a0d3abb1f14ac /ext/extmk.rb
parent755a8aa07fbdebbe2c8fda220984dc3b2e13e89e (diff)
* ext/extmk.rb, lib/mkmf.rb (with_config): support --with-extension
options. [ruby-dev:27449] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/extmk.rb')
-rw-r--r--ext/extmk.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 334ddbcd12..331ed180ea 100644
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -354,10 +354,25 @@ exts = $static_ext.sort_by {|t, i| i}.collect {|t, i| t}
if $extension
exts |= $extension.select {|d| File.directory?("#{ext_prefix}/#{d}")}
else
+ withes, withouts = %w[--with --without].collect {|w|
+ if not (w = %w[-extensions -ext].collect {|opt|arg_config(w+opt)}).any?
+ proc {false}
+ elsif (w = w.grep(String)).empty?
+ proc {true}
+ else
+ w.collect {|opt| opt.split(/,/)}.flatten.method(:any?)
+ end
+ }
+ cond = proc {|ext|
+ cond1 = proc {|n| File.fnmatch(n, ext, File::FNM_PATHNAME)}
+ withes.call(&cond1) or !withouts.call(&cond1)
+ }
exts |= Dir.glob("#{ext_prefix}/*/**/extconf.rb").collect {|d|
d = File.dirname(d)
d.slice!(0, ext_prefix.length + 1)
d
+ }.find_all {|ext|
+ with_config(ext, &cond)
}.sort
end