summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIñigo Martínez <inigomartinez@gmail.com>2018-02-13 15:33:23 +0100
committerRay Strode <rstrode@redhat.com>2018-09-26 09:28:38 -0400
commitbf248cb354fdb2d459279443eff61cd5486c6045 (patch)
tree48d92a4c602f4e4b4ea605f6a0ef72e486ae5f3f
parente9e4aaee8f487608771545bd6d36c005a691984b (diff)
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.
-rw-r--r--src/libaccountsservice/act-user-enum-types.c.template37
-rw-r--r--src/libaccountsservice/act-user-enum-types.h.template23
-rw-r--r--src/libaccountsservice/meson.build21
3 files changed, 64 insertions, 17 deletions
diff --git a/src/libaccountsservice/act-user-enum-types.c.template b/src/libaccountsservice/act-user-enum-types.c.template
new file mode 100644
index 0000000..1d1b745
--- /dev/null
+++ b/src/libaccountsservice/act-user-enum-types.c.template
@@ -0,0 +1,37 @@
+/*** BEGIN file-header ***/
+#include "act-user-enum-types.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 etype = 0;
+ if (etype == 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 }
+ };
+ etype = g_@type@_register_static ("@EnumName@", values);
+ }
+ return etype;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+/*** END file-tail ***/
diff --git a/src/libaccountsservice/act-user-enum-types.h.template b/src/libaccountsservice/act-user-enum-types.h.template
new file mode 100644
index 0000000..110a9ea
--- /dev/null
+++ b/src/libaccountsservice/act-user-enum-types.h.template
@@ -0,0 +1,23 @@
+/*** BEGIN file-header ***/
+#ifndef __ACT_USER_ENUM_TYPES_H__
+#define __ACT_USER_ENUM_TYPES_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@basename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType @enum_name@_get_type (void) G_GNUC_CONST;
+#define ACT_USER_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+#endif /* __ACT_USER_ENUM_TYPES_H__ */
+/*** END file-tail ***/
diff --git a/src/libaccountsservice/meson.build b/src/libaccountsservice/meson.build
index d4cd781..0266635 100644
--- a/src/libaccountsservice/meson.build
+++ b/src/libaccountsservice/meson.build
@@ -17,26 +17,13 @@ sources = files(
'act-user-manager.c',
)
-enum_sources = []
enum_types = 'act-user-enum-types'
-enum_sources += gnome.mkenums(
- enum_types + '.c',
+enum_sources = gnome.mkenums(
+ enum_types,
sources: headers,
- fhead: '#include "act-user.h"\n#include "act-user-manager.h"\n#include "act-user-enum-types.h"\n#include <glib-object.h>\n\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',
-)
-
-enum_sources += gnome.mkenums(
- enum_types + '.h',
- sources: headers,
- fhead: '#ifndef __ACT_USER_ENUM_TYPES_H__\n#define __ACT_USER_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n',
- fprod: '/* enumerations from "@filename@" */\n',
- vhead: 'GType @enum_name@_get_type (void);\n#define ACT_USER_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n',
- ftail: 'G_END_DECLS\n\n#endif /* __ACT_USER_ENUM_TYPES_H__ */',
+ c_template: enum_types + '.c.template',
+ h_template: enum_types + '.h.template',
install_header: true,
install_dir: join_paths(act_pkgincludedir, subdir),
)