blob: 7a661404c8504c6cf986df6587fc9ac7fadcc15c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# GIDocgen.cmake
#
# Adds an option -DENABLE_GI_DOCGEN=OFF and helper commands
#
# Functions:
#
# gi_docgen(_output_filename_noext _define_name _enums_header ...)
# runs glib-mkenums to generate enumtypes .h and .c files from multiple
# _enums_header. It searches for files in the current source directory and
# exports to the current binary directory.
include(CMakeParseArguments)
add_printable_option(ENABLE_GI_DOCGEN "Use gi-docgen to build documentation" OFF)
if(ENABLE_GI_DOCGEN)
if(NOT ENABLE_INTROSPECTION)
message(FATAL_ERROR "Documentation generation with gi-docgen require introspection generation to be enabled, use -DENABLE_INTROSPECTION=ON to enable it, or disable gi-docgen documentation generation with -DENABLE_GI_DOCGEN=OFF")
endif(NOT ENABLE_INTROSPECTION)
find_program(GI_DOCGEN gi-docgen)
if(NOT GI_DOCGEN)
message(FATAL_ERROR "The gi-docgen command is not found. Install it or disable documentation generation with -DENABLE_GI_DOCGEN=OFF")
endif(NOT GI_DOCGEN)
endif(ENABLE_GI_DOCGEN)
macro(generate_gi_documentation _target _config _gir_path)
cmake_parse_arguments(GIDOCGEN_ARG "" "" "CONTENT_DIRS;INCLUDE_PATHS;TEMPLATE_DIRS" ${ARGN} )
set(EXTRA_ARGS)
foreach(_item IN LISTS GIDOCGEN_ARG_CONTENT_DIRS)
list(APPEND EXTRA_ARGS "--content-dir=${_item}")
endforeach()
foreach(_item IN LISTS GIDOCGEN_ARG_INCLUDE_PATHS)
list(APPEND EXTRA_ARGS "--add-include-path=${_item}")
endforeach()
foreach(_item IN LISTS GIDOCGEN_ARG_TEMPLATE_DIRS)
list(APPEND EXTRA_ARGS "--templates-dir=${_item}")
endforeach()
get_filename_component(_gir_filename ${_gir_path} NAME)
gir_girfilename_to_target(_gir_target ${_gir_filename})
add_custom_target(
${_target}-doc ALL
COMMAND
${GI_DOCGEN}
generate
--config ${_config}
--content-dir ${CMAKE_CURRENT_SOURCE_DIR}
--no-namespace-dir
--output-dir ${CMAKE_CURRENT_BINARY_DIR}/${_target}
--quiet
${EXTRA_ARGS}
${_gir_path}
DEPENDS
${_gir_target}
WORKING_DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}
COMMENT
"Generate documentation for ${_target}"
)
endmacro(generate_gi_documentation)
|