summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/Modules/GlibMkenums.cmake93
-rw-r--r--lib/CMakeLists.txt1
-rw-r--r--lib/src/turns-enums.c.in1
-rw-r--r--lib/src/turns-enums.h.in25
-rw-r--r--lib/src/turns-init.cpp1
-rw-r--r--lib/src/turns-participant.cpp2
-rw-r--r--lib/src/turns-participant.h5
-rw-r--r--lib/src/turns-turn-order.cpp1
-rw-r--r--lib/src/turns-turn-order.h3
-rw-r--r--lib/src/turnsmm/turn-order.cpp1
10 files changed, 63 insertions, 70 deletions
diff --git a/cmake/Modules/GlibMkenums.cmake b/cmake/Modules/GlibMkenums.cmake
index 58ae4ee..c3d75e6 100644
--- a/cmake/Modules/GlibMkenums.cmake
+++ b/cmake/Modules/GlibMkenums.cmake
@@ -21,58 +21,79 @@ function(target_add_glib_enums TARGET)
)
if(NOT TARGET "${TARGET}")
- message(FATAL_ERROR "Target '${TARGET}' does not exist")
+ message(FATAL_ERROR "GlibMkenums: Target '${TARGET}' does not exist")
endif()
if(NOT _HEADERS)
- message(FATAL_ERROR "Missing enum headers")
+ message(FATAL_ERROR "GlibMkenums: No headers to be parsed were specified")
endif()
- if(NOT _HEADER_TEMPLATE OR NOT _SOURCE_TEMPLATE)
- message(FATAL_ERROR "Missing templates")
+ if(NOT _HEADER_TEMPLATE)
+ message(STATUS "GlibMkenums: no header template was provided, skipping header generation")
+ set(_SKIP_HEADER YES)
endif()
- if(NOT _OUTPUT_NAME)
- message(FATAL_ERROR "Missing output name")
+ if(NOT _SOURCE_TEMPLATE)
+ message(STATUS "GlibMkenums: no source template was provided, skipping header generation")
+ set(_SKIP_SOURCE YES)
+ endif()
+
+ if(NOT _OUTPUT_NAME)
+ message(FATAL_ERROR "GlibMkenums: No output name was specified")
+ endif()
+
+ if(_SKIP_HEADER AND _SKIP_SOURCE)
+ message(AUTHOR_WARNING "GlibMkenums: No templates were specified, skipping all generation")
+ return()
endif()
set(SOURCE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/${_OUTPUT_NAME}.c")
set(HEADER_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/${_OUTPUT_NAME}.h")
- add_custom_command(OUTPUT
- ${SOURCE_FILE}
- ${HEADER_FILE}
- WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
- COMMAND "${GLIB_MKENUMS_BIN}"
- ARGS
- "--template=${_SOURCE_TEMPLATE}"
- "--output=${SOURCE_FILE}"
- ${_HEADERS}
- COMMAND "${GLIB_MKENUMS_BIN}"
- ARGS
- "--template=${_HEADER_TEMPLATE}"
- "--output=${HEADER_FILE}"
- ${_HEADERS}
- VERBATIM
- COMMENT "Generating enum sources"
- DEPENDS
- ${_HEADERS}
- ${_SOURCE_TEMPLATE}
- ${_HEADER_TEMPLATE}
- )
+ if(NOT _SKIP_HEADER)
+ add_custom_command(OUTPUT
+ ${HEADER_FILE}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ COMMAND "${GLIB_MKENUMS_BIN}"
+ ARGS
+ "--template=${_HEADER_TEMPLATE}"
+ "--output=${HEADER_FILE}"
+ ${_HEADERS}
+ VERBATIM
+ COMMENT "Generating enum interface header"
+ DEPENDS
+ ${_HEADERS}
+ ${_HEADER_TEMPLATE}
+ )
+ endif()
+
+ if(NOT _SKIP_SOURCE)
+ add_custom_command(OUTPUT
+ ${SOURCE_FILE}
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+ COMMAND "${GLIB_MKENUMS_BIN}"
+ ARGS
+ "--template=${_SOURCE_TEMPLATE}"
+ "--output=${SOURCE_FILE}"
+ ${_HEADERS}
+ VERBATIM
+ COMMENT "Generating enum interface source"
+ DEPENDS
+ ${_HEADERS}
+ ${_SOURCE_TEMPLATE}
+ )
+ endif()
target_sources("${TARGET}" PRIVATE
"${SOURCE_FILE}"
)
- target_sources("${TARGET}" PUBLIC
- FILE_SET HEADERS
- FILES
- "${HEADER_FILE}"
- )
-
- target_include_directories("${TARGET}" PUBLIC
- "${CMAKE_CURRENT_BINARY_DIR}"
- )
+ if(NOT _SKIP_HEADER)
+ target_sources("${TARGET}" PUBLIC
+ FILE_SET HEADERS
+ FILES
+ "${HEADER_FILE}"
+ )
+ endif()
endfunction()
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index b9365c8..998504b 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -100,7 +100,6 @@ set_target_properties("lib" PROPERTIES
)
target_add_glib_enums("lib"
- HEADER_TEMPLATE "src/turns-enums.h.in"
SOURCE_TEMPLATE "src/turns-enums.c.in"
OUTPUT_NAME "turns-enums"
HEADERS ${HEADERS}
diff --git a/lib/src/turns-enums.c.in b/lib/src/turns-enums.c.in
index 2f75d77..635ea33 100644
--- a/lib/src/turns-enums.c.in
+++ b/lib/src/turns-enums.c.in
@@ -1,5 +1,4 @@
/*** BEGIN file-header ***/
-#include "turns-enums.h"
/*** END file-header ***/
/*** BEGIN file-production ***/
diff --git a/lib/src/turns-enums.h.in b/lib/src/turns-enums.h.in
deleted file mode 100644
index de93e31..0000000
--- a/lib/src/turns-enums.h.in
+++ /dev/null
@@ -1,25 +0,0 @@
-/*** BEGIN file-header ***/
-#ifndef TURNS_ENUMS_H
-#define TURNS_ENUMS_H
-
-#include <glib.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 @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
-/*** END value-header ***/
-
-/*** BEGIN file-tail ***/
-G_END_DECLS
-
-#endif
-/*** END file-tail ***/
diff --git a/lib/src/turns-init.cpp b/lib/src/turns-init.cpp
index 243434d..0d6a808 100644
--- a/lib/src/turns-init.cpp
+++ b/lib/src/turns-init.cpp
@@ -1,6 +1,5 @@
#include "turns-init.h"
-#include "turns-enums.h"
#include "turns-participant.h"
#include "turns-turn-order.h"
diff --git a/lib/src/turns-participant.cpp b/lib/src/turns-participant.cpp
index 1e03c8b..0846532 100644
--- a/lib/src/turns-participant.cpp
+++ b/lib/src/turns-participant.cpp
@@ -1,7 +1,5 @@
#include "turns-participant.h"
-#include "turns-enums.h"
-
#include <glib-object.h>
#include <glib.h>
#include <glibconfig.h>
diff --git a/lib/src/turns-participant.h b/lib/src/turns-participant.h
index f951ddb..7f5ff7b 100644
--- a/lib/src/turns-participant.h
+++ b/lib/src/turns-participant.h
@@ -1,8 +1,6 @@
#ifndef TURNS_PARTICIPANT_H
#define TURNS_PARTICIPANT_H
-#include "turns-enums.h" // IWYU pragma: export
-
#include <glib-object.h>
#include <glib.h>
#include <glibconfig.h>
@@ -17,6 +15,9 @@ typedef enum
TURNS_PARTICIPANT_DISPOSITION_SECRET,
} TurnsParticipantDisposition;
+GType turns_participant_disposition_get_type(void) G_GNUC_CONST;
+#define TURNS_TYPE_PARTICIPANT_DISPOSITION (turns_participant_disposition_get_type())
+
#define TURNS_TYPE_PARTICIPANT turns_participant_get_type()
G_DECLARE_FINAL_TYPE(TurnsParticipant, turns_participant, TURNS, PARTICIPANT, GObject)
diff --git a/lib/src/turns-turn-order.cpp b/lib/src/turns-turn-order.cpp
index 496ef2d..3337bb5 100644
--- a/lib/src/turns-turn-order.cpp
+++ b/lib/src/turns-turn-order.cpp
@@ -1,6 +1,5 @@
#include "turns-turn-order.h"
-#include "turns-enums.h"
#include "turns-participant.h"
#include <gio/gio.h>
diff --git a/lib/src/turns-turn-order.h b/lib/src/turns-turn-order.h
index 9d5c4b7..fd888ec 100644
--- a/lib/src/turns-turn-order.h
+++ b/lib/src/turns-turn-order.h
@@ -14,6 +14,9 @@ typedef enum
TURNS_TURN_ORDER_SORT_MODE_ASCENDING,
} TurnsTurnOrderSortMode;
+GType turns_turn_order_sort_mode_get_type(void) G_GNUC_CONST;
+#define TURNS_TYPE_TURN_ORDER_SORT_MODE (turns_turn_order_sort_mode_get_type())
+
#define TURNS_TYPE_TURN_ORDER turns_turn_order_get_type()
G_DECLARE_FINAL_TYPE(TurnsTurnOrder, turns_turn_order, TURNS, TURN_ORDER, GObject)
diff --git a/lib/src/turnsmm/turn-order.cpp b/lib/src/turnsmm/turn-order.cpp
index 1636be9..00fb30d 100644
--- a/lib/src/turnsmm/turn-order.cpp
+++ b/lib/src/turnsmm/turn-order.cpp
@@ -16,7 +16,6 @@
#include <giomm/listmodel.h>
#include <glib-object.h>
-#include <turns-enums.h>
#include <bit>
#include <cstddef>