From f42a5fb53b80540b3af457af32ca1de072f4fdd7 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Mon, 23 Jan 2012 22:51:44 +0100 Subject: [PATCH] resources: compiler: Add autoselected output format This allows simplifying the make rules. Bug #668539. --- docs/reference/gio/glib-compile-resources.xml | 21 +++++++++++++++++++++ gio/glib-compile-resources.c | 11 +++++++++++ gio/tests/Makefile.am | 13 +++++-------- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/docs/reference/gio/glib-compile-resources.xml b/docs/reference/gio/glib-compile-resources.xml index 9c791f9..10af5ac 100644 --- a/docs/reference/gio/glib-compile-resources.xml +++ b/docs/reference/gio/glib-compile-resources.xml @@ -60,6 +60,27 @@ not specified the current directory is used. + + +Write the output file in the format selected for by its filename extension: + + +.c +C source + + +.h +C header + + +.gresource +resource bundle + + + + + + Instead of a writing the resource bundle in binary form create a C source file that contains the diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c index cce80e8..eaad38f 100644 --- a/gio/glib-compile-resources.c +++ b/gio/glib-compile-resources.c @@ -490,6 +490,7 @@ main (int argc, char **argv) gchar *srcfile; gchar *target = NULL; gchar *binary_target = NULL; + gboolean generate_automatic = FALSE; gboolean generate_source = FALSE; gboolean generate_header = FALSE; gboolean manual_register = FALSE; @@ -500,6 +501,7 @@ main (int argc, char **argv) GOptionEntry entries[] = { { "target", 0, 0, G_OPTION_ARG_FILENAME, &target, N_("name of the output file"), N_("FILE") }, { "sourcedir", 0, 0, G_OPTION_ARG_FILENAME, &sourcedir, N_("The directory where files are to be read from (default to current directory)"), N_("DIRECTORY") }, + { "generate", 0, 0, G_OPTION_ARG_NONE, &generate_automatic, N_("Generate output in the format selected for by the target filename extension"), NULL }, { "generate-header", 0, 0, G_OPTION_ARG_NONE, &generate_header, N_("Generate source header"), NULL }, { "generate-source", 0, 0, G_OPTION_ARG_NONE, &generate_source, N_("Generate sourcecode used to link in the resource file into your code"), NULL }, { "generate-dependencies", 0, 0, G_OPTION_ARG_NONE, &generate_dependencies, N_("Generate dependency list"), NULL }, @@ -591,6 +593,15 @@ main (int argc, char **argv) g_free (dirname); g_free (base); } + else if (generate_automatic) + { + if (g_str_has_suffix (target, ".c")) + generate_source = TRUE; + else if (g_str_has_suffix (target, ".h")) + generate_header = TRUE; + else if (g_str_has_suffix (target, ".gresource")) + ; + } if ((table = parse_resource_file (srcfile, !generate_dependencies)) == NULL) { diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index 34adebe..c4ae1f2 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -590,19 +590,16 @@ endif BUILT_SOURCES += test_resources.c test_resources2.c test_resources2.h test_resources.c: test2.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test2.gresource.xml) - $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test1 $(srcdir)/test2.gresource.xml + $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test1 $< -test_resources2.c: test3.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test3.gresource.xml) - $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test2 --manual-register $(srcdir)/test3.gresource.xml - -test_resources2.h: test3.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test3.gresource.xml) - $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-header --c-name _g_test2 --manual-register $(srcdir)/test3.gresource.xml +test_resources2.h test_resources2.c: test3.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test3.gresource.xml) + $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate --c-name _g_test2 --manual-register $< plugin_resources.c: test4.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test4.gresource.xml) - $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_plugin $(srcdir)/test4.gresource.xml + $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_plugin $< test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --generate-dependencies test.gresource.xml) - $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $(srcdir)/test.gresource.xml + $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $< noinst_LTLIBRARIES = libresourceplugin.la -- 2.7.4