summaryrefslogtreecommitdiff
path: root/cmake/Modules
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-19 16:37:56 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-19 16:37:56 +0200
commitda2f2f64a67b9aa9bd8ef73f7a9940acc739fbb1 (patch)
tree579a72dd282595f751171a30b31606d43a31b01e /cmake/Modules
parentf61df0b33ea2a2de064f1fa2a9cde191b790a5ba (diff)
downloadturns-da2f2f64a67b9aa9bd8ef73f7a9940acc739fbb1.tar.xz
turns-da2f2f64a67b9aa9bd8ef73f7a9940acc739fbb1.zip
lib: move enum definitions
Diffstat (limited to 'cmake/Modules')
-rw-r--r--cmake/Modules/GlibMkenums.cmake93
1 files changed, 57 insertions, 36 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()