From: Val Och Date: Sat, 2 Dec 2023 02:13:43 +0000 (+0000) Subject: vala: Keep depfile empty if no dependencies were written X-Git-Tag: 0.56.15~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9adf4bf61a22a6ad57ce84d1b5bb704c2527dc02;p=thirdparty%2Fvala.git vala: Keep depfile empty if no dependencies were written --- diff --git a/vala/valacodecontext.vala b/vala/valacodecontext.vala index 0ac4bbdf8..5e6775846 100644 --- a/vala/valacodecontext.vala +++ b/vala/valacodecontext.vala @@ -754,7 +754,10 @@ public class Vala.CodeContext { return null; } - public void write_dependencies (string filename) { + /* + * Create make-style depfile for use by build systems. + */ + void write_depfile (string filename, List deps) { var stream = FileStream.open (filename, "w"); if (stream == null) { @@ -762,36 +765,41 @@ public class Vala.CodeContext { return; } - stream.printf ("%s:", filename); + bool first = true; + foreach (var dep in deps) { + if (first) { + first = false; + stream.printf ("%s: ", filename); + } else { + stream.puts (" \\\n\t"); + } + stream.printf ("%s", dep); + } + // Don't write newlines to otherwise empty files to work around + // https://github.com/ninja-build/ninja/issues/2357 + if (!first) { + stream.puts ("\n\n"); + } + } + + public void write_dependencies (string filename) { + List fastvapi_files = new ArrayList (str_equal); foreach (var src in source_files) { if (src.file_type == SourceFileType.FAST && src.used) { - stream.printf (" %s", src.filename); + fastvapi_files.add (src.filename); } } - stream.printf ("\n\n"); + write_depfile (filename, fastvapi_files); } public void write_external_dependencies (string filename) { - var stream = FileStream.open (filename, "w"); - - if (stream == null) { - Report.error (null, "unable to open `%s' for writing", filename); - return; - } - - bool first = true; + List external_files = new ArrayList (str_equal); foreach (var src in source_files) { if (src.file_type != SourceFileType.SOURCE && src.used) { - if (first) { - first = false; - stream.printf ("%s: ", filename); - } else { - stream.puts (" \\\n\t"); - } - stream.printf ("%s", src.filename); + external_files.add (src.filename); } } - stream.puts ("\n\n"); + write_depfile (filename, external_files); } private static bool ends_with_dir_separator (string s) {