summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/mruby/build/command.rb26
1 files changed, 21 insertions, 5 deletions
diff --git a/lib/mruby/build/command.rb b/lib/mruby/build/command.rb
index bed0c3a6a..870a8dc20 100644
--- a/lib/mruby/build/command.rb
+++ b/lib/mruby/build/command.rb
@@ -139,6 +139,15 @@ module MRuby
# /include/mruby/value.h \
# /src/value_array.h
#
+ # ==== Without <tt>-MP</tt> compiler flag (gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0)
+ #
+ # /build/host/src/array.o: /src/array.c \
+ # /include/mruby.h /include/mrbconf.h \
+ # /include/mruby/common.h \
+ # ...
+ # /include/mruby/range.h \
+ # /src/value_array.h
+ #
# ==== With <tt>-MP</tt> compiler flag
#
# /build/host/src/array.o: \
@@ -155,11 +164,18 @@ module MRuby
#
def get_dependencies(file)
file = file.ext('d') unless File.extname(file) == '.d'
- deps = []
- if File.exist?(file)
- File.foreach(file){|line| deps << $1 if /^ +(.*?)(?: *\\)?$/ =~ line}
- deps.uniq!
- end
+ return [MRUBY_CONFIG] unless File.exist?(file)
+
+ deps = "".gsub("\\\n ", "").split("\n").map do |dep_line|
+ # dep_line:
+ # - "/build/host/src/array.o: /src/array.c /include/mruby/common.h ..."
+ # - ""
+ # - "/include/mruby/common.h:"
+ dep_line.scan(/^\S+:\s+(.+)$/).flatten.map { |s| s.split(' ') }.flatten
+ # => ["/src/array.c", "/include/mruby/common.h" , ...]
+ # []
+ # []
+ end.flatten.uniq
deps << MRUBY_CONFIG
end
end