diff options
author | Patrick Griffis <tingping@tingping.se> | 2016-10-22 03:54:24 -0400 |
---|---|---|
committer | Patrick Griffis <tingping@tingping.se> | 2016-10-24 11:35:02 -0400 |
commit | 28e134413158d50d9a393f16bd8c82d3dd69ba22 (patch) | |
tree | a2e55bdd7f6fb11288a12f348613df1584264218 | |
parent | 2ee1c7006e1bcb48b670e494050edcf0a9e3fd66 (diff) | |
download | glib-28e134413158d50d9a393f16bd8c82d3dd69ba22.tar.gz |
glib-compile-resources: Fix creating depfile with other targets
Follow up to 87d76a5a9c from bug 745754
https://bugzilla.gnome.org/show_bug.cgi?id=773344
-rw-r--r-- | gio/glib-compile-resources.c | 98 |
1 files changed, 52 insertions, 46 deletions
diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c index 05d73340d..bd5058d64 100644 --- a/gio/glib-compile-resources.c +++ b/gio/glib-compile-resources.c @@ -748,68 +748,74 @@ main (int argc, char **argv) return 1; } - if (generate_dependencies || dependency_file != NULL) + /* This can be used in the same invocation + as other generate commands */ + if (dependency_file != NULL) { + /* Generate a .d file that describes the dependencies for + * build tools, gcc -M -MF style */ + GString *dep_string; GHashTableIter iter; gpointer key, data; FileData *file_data; g_hash_table_iter_init (&iter, files); - if (dependency_file == NULL) + + dep_string = g_string_new (NULL); + g_string_printf (dep_string, "%s:", srcfile); + + /* First rule: foo.xml: resource1 resource2.. */ + while (g_hash_table_iter_next (&iter, &key, &data)) { - /* Generate list of files for direct use as dependencies in a Makefile */ - while (g_hash_table_iter_next (&iter, &key, &data)) - { - file_data = data; - g_print ("%s\n", file_data->filename); - } + file_data = data; + if (!g_str_equal (file_data->filename, srcfile)) + g_string_append_printf (dep_string, " %s", file_data->filename); } - else - { - /* Generate a .d file that describes the dependencies for - * build tools, gcc -M -MF style */ - GString *dep_string; - dep_string = g_string_new (NULL); - g_string_printf (dep_string, "%s:", srcfile); + g_string_append (dep_string, "\n\n"); - /* First rule: foo.xml: resource1 resource2.. */ - while (g_hash_table_iter_next (&iter, &key, &data)) + /* One rule for every resource: resourceN: */ + g_hash_table_iter_init (&iter, files); + while (g_hash_table_iter_next (&iter, &key, &data)) + { + file_data = data; + if (!g_str_equal (file_data->filename, srcfile)) + g_string_append_printf (dep_string, "%s:\n\n", file_data->filename); + } + + if (g_str_equal (dependency_file, "-")) + { + g_print ("%s\n", dep_string->str); + } + else + { + if (!g_file_set_contents (dependency_file, dep_string->str, dep_string->len, &error)) { - file_data = data; - if (!g_str_equal (file_data->filename, srcfile)) - g_string_append_printf (dep_string, " %s", file_data->filename); + g_printerr ("Error writing dependency file: %s\n", error->message); + g_string_free (dep_string, TRUE); + g_free (dependency_file); + g_error_free (error); + return 1; } + } - g_string_append (dep_string, "\n\n"); + g_string_free (dep_string, TRUE); + g_free (dependency_file); + } - /* One rule for every resource: resourceN: */ - g_hash_table_iter_init (&iter, files); - while (g_hash_table_iter_next (&iter, &key, &data)) - { - file_data = data; - if (!g_str_equal (file_data->filename, srcfile)) - g_string_append_printf (dep_string, "%s:\n\n", file_data->filename); - } + if (generate_dependencies) + { + GHashTableIter iter; + gpointer key, data; + FileData *file_data; - if (g_str_equal (dependency_file, "-")) - { - g_print ("%s\n", dep_string->str); - } - else - { - if (!g_file_set_contents (dependency_file, dep_string->str, dep_string->len, &error)) - { - g_printerr ("Error writing dependency file: %s\n", error->message); - g_string_free (dep_string, TRUE); - g_free (dependency_file); - g_error_free (error); - return 1; - } - } + g_hash_table_iter_init (&iter, files); - g_string_free (dep_string, TRUE); - g_free (dependency_file); + /* Generate list of files for direct use as dependencies in a Makefile */ + while (g_hash_table_iter_next (&iter, &key, &data)) + { + file_data = data; + g_print ("%s\n", file_data->filename); } } else if (generate_source || generate_header) |