summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-31 14:28:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-31 14:28:04 +0000
commit55483a36f4cae9b3702980b72dae7bc1e39efb7c (patch)
tree8be7a4d36615bdd72d31f4c1015a2bc6111ab06d /lib
parentc44fe99e69eaa09597651d3e852f15a8cc89e59a (diff)
downloadruby-55483a36f4cae9b3702980b72dae7bc1e39efb7c.tar.gz
ruby-55483a36f4cae9b3702980b72dae7bc1e39efb7c.tar.xz
ruby-55483a36f4cae9b3702980b72dae7bc1e39efb7c.zip
* lib/mkmf.rb (create_makefile): checks for duplication of source
files. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@23608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/mkmf.rb22
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 4612e30e4..cf68f398c 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -1643,20 +1643,22 @@ def create_makefile(target, srcprefix = nil)
srcprefix ||= '$(srcdir)'
RbConfig::expand(srcdir = srcprefix.dup)
+ ext = ".#{$OBJEXT}"
if not $objs
- $objs = []
- srcs = Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
- for f in srcs
- obj = File.basename(f, ".*") << ".o"
- $objs.push(obj) unless $objs.index(obj)
+ srcs = $srcs || Dir[File.join(srcdir, "*.{#{SRC_EXT.join(%q{,})}}")]
+ objs = srcs.inject(Hash.new {[]}) {|h, f| h[File.basename(f, ".*") << ext] <<= f; h}
+ $objs = objs.keys
+ unless objs.delete_if {|b, f| f.size == 1}.empty?
+ dups = objs.sort.map {|b, f|
+ "#{b[/.*\./]}{#{f.collect {|n| n[/([^.]+)\z/]}.join(',')}}"
+ }
+ abort "source files duplication - #{dups.join(", ")}"
end
- elsif !(srcs = $srcs)
- srcs = $objs.collect {|o| o.sub(/\.o\z/, '.c')}
+ else
+ $objs.collect! {|o| File.basename(o, ".*") << ext} unless $OBJEXT == "o"
+ srcs = $srcs || $objs.collect {|o| o.chomp(ext) << ".c"}
end
$srcs = srcs
- $objs.map! do |obj|
- obj.sub(/\.o\z/, ".#{$OBJEXT}")
- end
target = nil if $objs.empty?