[glib] glib-compile-resources: Output depfile in same directory as target



commit 9006940de604a8d72bf9198a0e4b20cd113c4b11
Author: Patrick Griffis <tingping tingping se>
Date:   Mon Oct 24 13:04:10 2016 -0400

    glib-compile-resources: Output depfile in same directory as target
    
    https://bugzilla.gnome.org/show_bug.cgi?id=773437

 docs/reference/gio/glib-compile-resources.xml |    2 ++
 gio/glib-compile-resources.c                  |   11 +++++++++++
 2 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gio/glib-compile-resources.xml b/docs/reference/gio/glib-compile-resources.xml
index f5a1e62..85ce284 100644
--- a/docs/reference/gio/glib-compile-resources.xml
+++ b/docs/reference/gio/glib-compile-resources.xml
@@ -178,6 +178,8 @@ If <option>FILE</option> is -, the dependencies are written to the standard
 output. Unlike <option>--generate-dependencies</option>, this option can be
 combined with other <option>--generate</option> options to generate dependencies
 as a side-effect of generating sources.
+If <option>FILE</option> is not an absolute path and <option>--target</option>
+is passed then it will be relative to the same directory as the target output.
 </para></listitem>
 </varlistentry>
 
diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c
index 3d13b12..ce02d1a 100644
--- a/gio/glib-compile-resources.c
+++ b/gio/glib-compile-resources.c
@@ -789,6 +789,17 @@ main (int argc, char **argv)
         }
       else
         {
+          /* Output depfile next to generated file */
+          if (!g_path_is_absolute (dependency_file) && target != NULL)
+            {
+              char *targetdir = g_path_get_dirname (target);
+              char *tmp = dependency_file;
+
+              dependency_file = g_build_filename (targetdir, dependency_file, NULL);
+
+              g_free (tmp);
+              g_free (targetdir);
+            }
           if (!g_file_set_contents (dependency_file, dep_string->str, dep_string->len, &error))
             {
               g_printerr ("Error writing dependency file: %s\n", error->message);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]