summaryrefslogtreecommitdiff
path: root/cmake/Modules/GlibIntrospection.cmake
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-24 15:11:27 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-24 15:16:18 +0200
commit4f6f3bcc9923b8b7c2d64ca2ea400ce55d2372fe (patch)
tree8c37cfcc1b240315352d6796eb6c209c5b40acd2 /cmake/Modules/GlibIntrospection.cmake
parentf63a86c56987d04bb9e021cad3f1e6faca7f962f (diff)
downloadturns-4f6f3bcc9923b8b7c2d64ca2ea400ce55d2372fe.tar.xz
turns-4f6f3bcc9923b8b7c2d64ca2ea400ce55d2372fe.zip
build: flatten modules
Diffstat (limited to 'cmake/Modules/GlibIntrospection.cmake')
-rw-r--r--cmake/Modules/GlibIntrospection.cmake105
1 files changed, 0 insertions, 105 deletions
diff --git a/cmake/Modules/GlibIntrospection.cmake b/cmake/Modules/GlibIntrospection.cmake
deleted file mode 100644
index f2f1b91..0000000
--- a/cmake/Modules/GlibIntrospection.cmake
+++ /dev/null
@@ -1,105 +0,0 @@
-# SPDX-FileCopyrightText: 2025 Felix Morgner <felix.morgner@gmail.com>
-# SPDX-License-Identifier: LGPL-2.1-only
-
-include_guard()
-
-find_program(G_IR_SCANNER_BIN
- NAMES "g-ir-scanner"
- 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}'")
- return()
- endif()
-
- set(SINGLE_VALUE_ARGS
- "NAMESPACE"
- "OUTPUT"
- "VERSION"
- )
- set(MULTI_VALUE_ARGS
- "DEPENDENCIES"
- "SOURCES"
- )
- cmake_parse_arguments(
- PARSE_ARGV 1
- ""
- "${OPTIONS}"
- "${SINGLE_VALUE_ARGS}"
- "${MULTI_VALUE_ARGS}"
- )
-
- if(NOT TARGET "${TARGET}")
- message(FATAL_ERROR "GlibIntrospection: Target '${TARGET}' does not exist")
- endif()
-
- if(NOT _NAMESPACE)
- set(_NAMESPACE "${PROJECT_NAME}")
- message(WARNING "GlibIntrospection: defaulting to namespace ${_NAMESPACE}")
- endif()
-
- if(NOT _OUTPUT_DIR)
- get_target_property(_OUTPUT_DIR "${TARGET}" BINARY_DIR)
- endif()
-
- if(NOT _VERSION)
- set(_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}")
- message(WARNING "GlibIntrospection: defaulting to version ${_VERSION}")
- endif()
-
- if(NOT _DEPENDENCIES)
- message(FATAL_ERROR "GlibIntrospection: no dependencies specified")
- endif()
-
- if(NOT _SOURCES)
- get_target_property(SOURCES "${TARGET}" SOURCES)
- get_target_property(HEADERS "${TARGET}" HEADER_SET)
- set(_SOURCES ${HEADERS} ${SOURCES})
- endif()
-
- get_target_property(TARGET_OUTPUT_NAME "${TARGET}" OUTPUT_NAME)
- set(_OUTPUT_FILE "${_OUTPUT_DIR}/$<CONFIG>/${_NAMESPACE}-${_VERSION}")
-
- add_custom_command(TARGET "${TARGET}"
- POST_BUILD
- 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}"
- "--library=$<TARGET_FILE_BASE_NAME:${TARGET}>"
- "--library-path=$<TARGET_FILE_DIR:${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}.gir"
- ${_SOURCES}
- COMMAND "${G_IR_COMPILER_BIN}"
- "--output=${_OUTPUT_FILE}.typelib"
- "${_OUTPUT_FILE}.gir"
- COMMAND_EXPAND_LISTS
- VERBATIM
- )
-
- install(FILES "${_OUTPUT_FILE}.gir"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/gir-1.0"
- )
-
- install(FILES "${_OUTPUT_FILE}.typelib"
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/girepository-1.0"
- )
-
-endfunction() \ No newline at end of file