diff options
Diffstat (limited to 'tool')
-rwxr-xr-x | tool/update-deps | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/tool/update-deps b/tool/update-deps index e0067c8ac2..efd556aebe 100755 --- a/tool/update-deps +++ b/tool/update-deps @@ -327,21 +327,23 @@ end def read_single_cc_deps(path_i, cwd) files = {} - path_i.each_line.with_index {|line, lineindex| + compiler_wd = nil + path_i.each_line {|line| next if /\A\# \d+ "(.*)"/ !~ line - files[$1] = lineindex + dep = $1 + next if %r{\A<.*>\z} =~ dep # omit <command-line>, etc. + compiler_wd ||= dep + files[dep] = true } # gcc emits {# 1 "/absolute/directory/of/the/source/file//"} at 2nd line. - compiler_wd = files.keys.find {|f| %r{\A/.*//\z} =~ f } - if compiler_wd + if %r{\A/.*//\z} =~ compiler_wd files.delete compiler_wd compiler_wd = Pathname(compiler_wd.sub(%r{//\z}, '')) - else + elsif !(compiler_wd = yield) raise "compiler working directory not found: #{path_i}" end deps = [] files.each_key {|dep| - next if %r{\A<.*>\z} =~ dep # omit <command-line>, etc. dep = Pathname(dep) if dep.relative? dep = compiler_wd + dep @@ -367,7 +369,13 @@ def read_cc_deps(cwd) end path_o = cwd + fn_o path_i = cwd + fn_i - deps[path_o] = read_single_cc_deps(path_i, cwd) + deps[path_o] = read_single_cc_deps(path_i, cwd) do + if fn_o.to_s.start_with?("enc/") + cwd + else + path_i.parent + end + end } deps end |