summaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-22 18:45:20 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-22 18:45:20 +0200
commit24f3d9147bfe222a6bfcfc0845b44ae8fde33cdf (patch)
treec0a050776db0644ec6020181f5b4c699ce4f2e5c /cmake
parent8038808f1968b663e351a66023fabe0ed1b019f1 (diff)
downloadturns-24f3d9147bfe222a6bfcfc0845b44ae8fde33cdf.tar.xz
turns-24f3d9147bfe222a6bfcfc0845b44ae8fde33cdf.zip
lib: generate compiled typelib
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/GlibIntrospection.cmake18
1 files changed, 15 insertions, 3 deletions
diff --git a/cmake/Modules/GlibIntrospection.cmake b/cmake/Modules/GlibIntrospection.cmake
index c6b0752..db4434d 100644
--- a/cmake/Modules/GlibIntrospection.cmake
+++ b/cmake/Modules/GlibIntrospection.cmake
@@ -5,6 +5,11 @@ find_program(G_IR_SCANNER_BIN
REQUIRED
)
+find_program(G_IR_COMPILER_BIN
+ NAMES "g-ir-compiler"
+ REQUIRED
+)
+
function(target_glib_generate_gir TARGET)
if(NOT BUILD_SHARED_LIBS)
message(STATUS "GlibIntrospection: skipping GIR generation for static library target '${TARGET}'")
@@ -57,15 +62,18 @@ function(target_glib_generate_gir TARGET)
endif()
get_target_property(TARGET_OUTPUT_NAME "${TARGET}" OUTPUT_NAME)
- set(_OUTPUT_FILE "${_OUTPUT_DIR}/$<CONFIG>/${TARGET_OUTPUT_NAME}.gir")
+ set(_OUTPUT_FILE "${_OUTPUT_DIR}/$<CONFIG>/${_NAMESPACE}")
add_custom_command(TARGET "${TARGET}"
POST_BUILD
- BYPRODUCTS "${_OUTPUT_FILE}"
+ BYPRODUCTS
+ "${_OUTPUT_FILE}.gir"
+ "${_OUTPUT_FILE}.typelib"
COMMENT "Generating GIR file for ${TARGET}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND "${G_IR_SCANNER_BIN}"
ARGS
+ "--quiet"
"--warn-all"
"--namespace=${_NAMESPACE}"
"--nsversion=${_VERSION}"
@@ -74,9 +82,13 @@ function(target_glib_generate_gir TARGET)
"$<LIST:TRANSFORM,$<TARGET_PROPERTY:${TARGET},INTERFACE_INCLUDE_DIRECTORIES>,PREPEND,-I>"
"$<LIST:TRANSFORM,$<LIST:TRANSFORM,${_DEPENDENCIES},TOLOWER>,PREPEND,--pkg=>"
"$<LIST:TRANSFORM,${_DEPENDENCIES},PREPEND,--include=>"
- "--output=${_OUTPUT_FILE}"
+ "--output=${_OUTPUT_FILE}.gir"
${_SOURCES}
+ COMMAND "${G_IR_COMPILER_BIN}"
+ "--output=${_OUTPUT_FILE}.typelib"
+ "${_OUTPUT_FILE}.gir"
COMMAND_EXPAND_LISTS
+ VERBATIM
)
endfunction() \ No newline at end of file