[retro-gtk/mkenums: 1/3] Build enum types with mk-enums
- From: Adrien Plazas <aplazas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [retro-gtk/mkenums: 1/3] Build enum types with mk-enums
- Date: Mon, 13 Apr 2020 15:12:00 +0000 (UTC)
commit f931d1ba1593a1b8291fcbaed2addfb75228e8c2
Author: Adrien Plazas <kekun plazas laposte net>
Date: Mon Apr 13 17:06:43 2020 +0200
Build enum types with mk-enums
This will avoid manually defining the enum GType types.
retro-gtk/meson.build | 21 ++++++++++++++++++++-
retro-gtk/retro-gtk-enums.c.in | 35 +++++++++++++++++++++++++++++++++++
retro-gtk/retro-gtk-enums.h.in | 27 +++++++++++++++++++++++++++
retro-runner/meson.build | 16 ++++++++++++++++
retro-runner/retro-runner-enums.c.in | 35 +++++++++++++++++++++++++++++++++++
retro-runner/retro-runner-enums.h.in | 27 +++++++++++++++++++++++++++
shared/meson.build | 3 +++
7 files changed, 163 insertions(+), 1 deletion(-)
---
diff --git a/retro-gtk/meson.build b/retro-gtk/meson.build
index baf9737..c09dbcf 100644
--- a/retro-gtk/meson.build
+++ b/retro-gtk/meson.build
@@ -1,3 +1,9 @@
+retro_gtk_include_dir = get_option('includedir') / 'retro-gtk'
+
+retro_gtk_enum_headers = [
+ shared_enum_headers,
+]
+
retro_gtk_resources = gnome.compile_resources(
'retro_gtk_resources',
'retro-gtk.gresource.xml',
@@ -5,6 +11,14 @@ retro_gtk_resources = gnome.compile_resources(
source_dir: '.',
)
+retro_gtk_enums = gnome.mkenums('retro-gtk-enums',
+ h_template: 'retro-gtk-enums.h.in',
+ c_template: 'retro-gtk-enums.c.in',
+ sources: retro_gtk_enum_headers,
+ install_header: true,
+ install_dir: retro_gtk_include_dir,
+)
+
retro_gtk_sources = [
shared_sources,
retro_gtk_resources,
@@ -32,6 +46,11 @@ retro_gtk_sources = [
retro_gtk_generated_sources = [
ipc_runner_src,
+ retro_gtk_enums[0],
+]
+
+retro_gtk_generated_headers = [
+ retro_gtk_enums[1],
]
retro_gtk_main_header = 'retro-gtk.h'
@@ -71,7 +90,7 @@ retro_gtk_version_h = configure_file(
output: 'retro-gtk-version.h',
configuration: version_conf,
install: true,
- install_dir: join_paths(get_option('includedir'), 'retro-gtk')
+ install_dir: retro_gtk_include_dir
)
retro_gtk_c_args = [
diff --git a/retro-gtk/retro-gtk-enums.c.in b/retro-gtk/retro-gtk-enums.c.in
new file mode 100644
index 0000000..9a42d78
--- /dev/null
+++ b/retro-gtk/retro-gtk-enums.c.in
@@ -0,0 +1,35 @@
+/*** BEGIN file-header ***/
+
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(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 (g_intern_static_string ("@EnumName@"), values);
+ }
+ return etype;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+
+/*** END file-tail ***/
diff --git a/retro-gtk/retro-gtk-enums.h.in b/retro-gtk/retro-gtk-enums.h.in
new file mode 100644
index 0000000..746161d
--- /dev/null
+++ b/retro-gtk/retro-gtk-enums.h.in
@@ -0,0 +1,27 @@
+// This file is part of retro-gtk. License: GPL-3.0+.
+
+/*** BEGIN file-header ***/
+#pragma once
+
+#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION)
+# error "Only <retro-gtk.h> can be included directly."
+#endif
+
+#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);
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+/*** END file-tail ***/
diff --git a/retro-runner/meson.build b/retro-runner/meson.build
index dcb6c3e..2ae57fb 100644
--- a/retro-runner/meson.build
+++ b/retro-runner/meson.build
@@ -1,5 +1,21 @@
+retro_runner_enum_headers = [
+ shared_enum_headers,
+]
+
+retro_runner_enums = gnome.mkenums('retro-runner-enums',
+ h_template: 'retro-runner-enums.h.in',
+ c_template: 'retro-runner-enums.c.in',
+ sources: retro_runner_enum_headers,
+ install_header: false,
+)
+
+retro_runner_generated_sources = [
+ retro_runner_enums[0],
+]
+
retro_runner_sources = [
shared_sources,
+ retro_runner_generated_sources,
'ipc-runner-impl.c',
'retro-runner.c',
diff --git a/retro-runner/retro-runner-enums.c.in b/retro-runner/retro-runner-enums.c.in
new file mode 100644
index 0000000..9a42d78
--- /dev/null
+++ b/retro-runner/retro-runner-enums.c.in
@@ -0,0 +1,35 @@
+/*** BEGIN file-header ***/
+
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+@enum_name@_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(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 (g_intern_static_string ("@EnumName@"), values);
+ }
+ return etype;
+}
+
+/*** END value-tail ***/
+
+/*** BEGIN file-tail ***/
+
+/*** END file-tail ***/
diff --git a/retro-runner/retro-runner-enums.h.in b/retro-runner/retro-runner-enums.h.in
new file mode 100644
index 0000000..746161d
--- /dev/null
+++ b/retro-runner/retro-runner-enums.h.in
@@ -0,0 +1,27 @@
+// This file is part of retro-gtk. License: GPL-3.0+.
+
+/*** BEGIN file-header ***/
+#pragma once
+
+#if !defined(__RETRO_GTK_INSIDE__) && !defined(RETRO_GTK_COMPILATION)
+# error "Only <retro-gtk.h> can be included directly."
+#endif
+
+#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);
+#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
+/*** END value-header ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+/*** END file-tail ***/
diff --git a/shared/meson.build b/shared/meson.build
index 0aec622..c23e3ad 100644
--- a/shared/meson.build
+++ b/shared/meson.build
@@ -24,3 +24,6 @@ shared_headers = files([
'retro-memory-type.h',
'retro-rumble-effect.h',
])
+
+shared_enum_headers = files([
+])
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]