summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xext/extmk.rb10
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb
index e83a0e5d8c..2cad5753ac 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -496,13 +496,17 @@ cond = proc {|ext, *|
}
($extension || %w[*]).each do |e|
e = e.sub(/\A(?:\.\/)+/, '')
- exts |= Dir.glob("#{ext_prefix}/#{e}/**/extconf.rb").collect {|d|
+ incl, excl = Dir.glob("#{ext_prefix}/#{e}/**/extconf.rb").collect {|d|
d = File.dirname(d)
d.slice!(0, ext_prefix.length + 1)
d
- }.find_all {|ext|
+ }.partition {|ext|
with_config(ext, &cond)
- }.sort
+ }
+ incl.sort!
+ excl.sort!.collect! {|d| d+"/"}
+ nil while incl.reject! {|d| excl << d+"/" if excl.any? {|e| d.start_with?(e)}}
+ exts |= incl
if $LIBRUBYARG_SHARED.empty? and CONFIG["EXTSTATIC"] == "static"
exts.delete_if {|d| File.fnmatch?("-*", d)}
end