[gnome-settings-daemon/wip/inigomartinez/meson: 3/6] build: Use template files for enums generation



commit 3bbc5b0d0e5bf32717288b04777e0abc73614d48
Author: Iñigo Martínez <inigomartinez gmail com>
Date:   Thu Feb 1 22:25:54 2018 +0100

    build: Use template files for enums generation
    
    The data contents for the enum related files are stored in the
    build files.
    
    This patch moves this information to template files to be used
    along with glib-mkenums.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=793087

 plugins/common/gsd-common-enums.c.in |   40 ++++++++++++++++++++++++++++++++++
 plugins/common/gsd-common-enums.h.in |   27 +++++++++++++++++++++++
 plugins/common/meson.build           |   18 ++------------
 plugins/power/gsd-power-enums.c.in   |   40 ++++++++++++++++++++++++++++++++++
 plugins/power/gsd-power-enums.h.in   |   27 +++++++++++++++++++++++
 plugins/power/meson.build            |   18 ++------------
 6 files changed, 140 insertions(+), 30 deletions(-)
---
diff --git a/plugins/common/gsd-common-enums.c.in b/plugins/common/gsd-common-enums.c.in
new file mode 100644
index 0000000..fbc3f18
--- /dev/null
+++ b/plugins/common/gsd-common-enums.c.in
@@ -0,0 +1,40 @@
+/*** BEGIN file-header ***/
+#include "gsd-common-enums.h"
+#include <glib-object.h>
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+       static GType the_type = 0;
+
+       if (the_type == 0)
+       {
+               static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+                       { @VALUENAME@,
+                         "@VALUENAME@",
+                         "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+                       { 0, NULL, NULL }
+               };
+               the_type = g_@type@_register_static (
+                               g_intern_static_string ("@EnumName@"),
+                               values);
+       }
+       return the_type;
+}
+
+/*** END value-tail ***/
diff --git a/plugins/common/gsd-common-enums.h.in b/plugins/common/gsd-common-enums.h.in
new file mode 100644
index 0000000..d3ebcc0
--- /dev/null
+++ b/plugins/common/gsd-common-enums.h.in
@@ -0,0 +1,27 @@
+/*** BEGIN file-header ***/
+#ifndef GSD_COMMON_ENUMS_H
+#define GSD_COMMON_ENUMS_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from "@basename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define GSD_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+
+/*** END enumeration-production ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* !GSD_COMMON_ENUMS_H */
+/*** END file-tail ***/
+
diff --git a/plugins/common/meson.build b/plugins/common/meson.build
index 2a0f4b2..ec54cc1 100644
--- a/plugins/common/meson.build
+++ b/plugins/common/meson.build
@@ -14,22 +14,10 @@ enums_header = 'gsd-device-manager.h'
 enums = 'gsd-common-enums'
 
 sources += gnome.mkenums(
-  enums + '.h',
+  enums,
   sources: enums_header,
-  fhead: '#ifndef GSD_COMMON_ENUMS_H\n#define GSD_COMMON_ENUMS_H\n\n#include 
<glib-object.h>\n\nG_BEGIN_DECLS\n',
-  fprod: '/* enumerations from "@filename@" */\n',
-  vhead: 'GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GSD_TYPE_@ENUMSHORT@ 
(@enum_name@_get_type())\n',
-  ftail: 'G_END_DECLS\n\n#endif /* !GSD_COMMON_ENUMS_H */'
-)
-
-sources += gnome.mkenums(
-  enums + '.c',
-  sources: enums_header,
-  fhead: '#include "gsd-device-manager.h"\n#include "gsd-common-enums.h"\n',
-  fprod: '\n/* enumerations from "@filename@" */',
-  vhead: 'GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static 
const G@Type@Value values[] = {',
-  vprod: '      { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
-  vtail: '      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static ("@EnumName@", values);\n  
}\n  return etype;\n}\n'
+  c_template: enums + '.c.in',
+  h_template: enums + '.h.in'
 )
 
 resource_data = files('gtk.css')
diff --git a/plugins/power/gsd-power-enums.c.in b/plugins/power/gsd-power-enums.c.in
new file mode 100644
index 0000000..1b994bb
--- /dev/null
+++ b/plugins/power/gsd-power-enums.c.in
@@ -0,0 +1,40 @@
+/*** BEGIN file-header ***/
+#include "gsd-power-enums.h"
+#include <glib-object.h>
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@basename@" */
+#include "@basename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+       static GType the_type = 0;
+
+       if (the_type == 0)
+       {
+               static const G@Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+                       { @VALUENAME@,
+                         "@VALUENAME@",
+                         "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+                       { 0, NULL, NULL }
+               };
+               the_type = g_@type@_register_static (
+                               g_intern_static_string ("@EnumName@"),
+                               values);
+       }
+       return the_type;
+}
+
+/*** END value-tail ***/
diff --git a/plugins/power/gsd-power-enums.h.in b/plugins/power/gsd-power-enums.h.in
new file mode 100644
index 0000000..53e37c0
--- /dev/null
+++ b/plugins/power/gsd-power-enums.h.in
@@ -0,0 +1,27 @@
+/*** BEGIN file-header ***/
+#ifndef GSD_POWER_ENUMS_H
+#define GSD_POWER_ENUMS_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* Enumerations from "@basename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define GSD_POWER_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+
+/*** END enumeration-production ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* !GSD_POWER_ENUMS_H */
+/*** END file-tail ***/
+
diff --git a/plugins/power/meson.build b/plugins/power/meson.build
index 634cb53..ee08fdd 100644
--- a/plugins/power/meson.build
+++ b/plugins/power/meson.build
@@ -53,22 +53,10 @@ enums_headers = files(
 enums = 'gsd-power-enums'
 
 sources += gnome.mkenums(
-  enums + '.h',
+  enums,
   sources: enums_headers,
-  fhead: '#ifndef GSD_POWER_ENUMS_H\n#define GSD_POWER_ENUMS_H\n\n#include 
<glib-object.h>\n\nG_BEGIN_DECLS\n',
-  fprod: '/* enumerations from "@filename@" */\n',
-  vhead: 'GType @enum_name@_get_type (void) G_GNUC_CONST;\n#define GSD_POWER_TYPE_@ENUMSHORT@ 
(@enum_name@_get_type())\n',
-  ftail: 'G_END_DECLS\n\n#endif /* !GSD_POWER_ENUMS_H */'
-)
-
-sources += gnome.mkenums(
-  enums + '.c',
-  sources: enums_headers,
-  fhead: '#include "gsm-inhibitor-flag.h"\n#include "gsm-presence-flag.h"\n#include "gsd-power-enums.h"',
-  fprod: '\n/* enumerations from "@filename@" */',
-  vhead: 'GType\n@enum_name@_get_type (void)\n{\n  static GType etype = 0;\n  if (etype == 0) {\n    static 
const G@Type@Value values[] = {',
-  vprod: '      { @VALUENAME@, "@VALUENAME@", "@valuenick@" },',
-  vtail: '      { 0, NULL, NULL }\n    };\n    etype = g_@type@_register_static ("@EnumName@", values);\n  
}\n  return etype;\n}\n'
+  c_template: enums + '.c.in',
+  h_template: enums + '.h.in'
 )
 
 gsd_power_enums_update = executable(


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