summaryrefslogtreecommitdiffstats
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2012-10-08 14:38:16 +0200
committerMatthias Vogelgesang <matthias.vogelgesang@gmail.com>2012-10-08 14:38:16 +0200
commitb3dbedeec78a55802565a3824ab52188e8b9bd4d (patch)
tree7529d8a8ce0a65ed94195631787c4cab6279709a /src/CMakeLists.txt
parentd58bbe683873d043f50c8261f4588d7941e9cb8c (diff)
downloadlibuca-b3dbedeec78a55802565a3824ab52188e8b9bd4d.tar.gz
libuca-b3dbedeec78a55802565a3824ab52188e8b9bd4d.tar.bz2
libuca-b3dbedeec78a55802565a3824ab52188e8b9bd4d.tar.xz
libuca-b3dbedeec78a55802565a3824ab52188e8b9bd4d.zip
Generate introspection files
Unfortunately, the gir tools recognize anything with $PREFIX_new_$SUFFIX as some kind of constructor. This means that we have to rename uca_plugin_manager_new_camera() to uca_plugin_manager_get_camera().
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4bf5820..dd2f464 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -37,6 +37,9 @@ add_custom_command(
# --- Configure ---------------------------------------------------------------
+find_program(INTROSPECTION_SCANNER "g-ir-scanner")
+find_program(INTROSPECTION_COMPILER "g-ir-compiler")
+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h)
@@ -67,7 +70,51 @@ set_target_properties(uca PROPERTIES
target_link_libraries(uca ${UCA_DEPS})
+# --- Build introspection files -----------------------------------------------
+
+if (INTROSPECTION_SCANNER AND INTROSPECTION_COMPILER)
+ option(WITH_GIR "Build introspection files" ON)
+
+ if (WITH_GIR)
+ set(GIR_PREFIX "Uca-${UCA_ABI_VERSION}")
+ set(GIR_XML "${GIR_PREFIX}.gir")
+ set(GIR_TYPELIB "${GIR_PREFIX}.typelib")
+ set(_gir_input)
+
+ foreach(_src ${uca_SRCS} ${uca_HDRS})
+ list(APPEND _gir_input "${CMAKE_CURRENT_SOURCE_DIR}/${_src}")
+ endforeach()
+
+ add_custom_command(OUTPUT ${GIR_XML}
+ COMMAND ${INTROSPECTION_SCANNER}
+ --namespace=Uca
+ --nsversion=${UCA_ABI_VERSION}
+ --library=uca
+ --no-libtool
+ --include=GObject-2.0
+ --include=GModule-2.0
+ --output ${GIR_XML}
+ --warn-all
+ ${_gir_input}
+ DEPENDS ${uca_SRCS}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+ add_custom_command(OUTPUT ${GIR_TYPELIB}
+ COMMAND ${INTROSPECTION_COMPILER}
+ -o ${GIR_TYPELIB}
+ ${GIR_XML}
+ DEPENDS ${GIR_XML}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
+
+ add_custom_target(gir ALL DEPENDS ${GIR_XML} ${GIR_TYPELIB})
+ add_dependencies(gir uca)
+
+ endif()
+endif()
+
+
# --- Build documentation -----------------------------------------------------
+
pkg_check_modules(GTK_DOC gtk-doc)
if(GTK_DOC_FOUND)
@@ -170,6 +217,16 @@ install(FILES ${uca_HDRS}
DESTINATION include/uca
COMPONENT headers)
+if(WITH_GIR)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_XML}
+ DESTINATION share/gir-1.0
+ COMPONENT libraries)
+
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${GIR_TYPELIB}
+ DESTINATION ${LIB_INSTALL_DIR}/girepository-1.0
+ COMPONENT libraries)
+endif()
+
# --- Generate package description --------------------------------------------