[glib] resources: compiler: Add autoselected output format



commit f42a5fb53b80540b3af457af32ca1de072f4fdd7
Author: Christian Persch <chpe gnome org>
Date:   Mon Jan 23 22:51:44 2012 +0100

    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.
 </varlistentry>
 
 <varlistentry>
+<term><option>--generate</option></term>
+<listitem><para>
+Write the output file in the format selected for by its filename extension:
+<variablelist>
+<varlistentry>
+<term><literal>.c</literal></term>
+<listitem><para>C source</para></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>.h</literal></term>
+<listitem><para>C header</para></listitem>
+</varlistentry>
+<varlistentry>
+<term><literal>.gresource</literal></term>
+<listitem><para>resource bundle</para></listitem>
+</varlistentry>
+</variablelist>
+</para></listitem>
+</varlistentry>
+
+<varlistentry>
 <term><option>--generate-source</option></term>
 <listitem><para>
 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
 



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