File: GIDocgen.cmake

package info (click to toggle)
evolution-data-server 3.56.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, trixie
  • size: 46,532 kB
  • sloc: ansic: 365,302; xml: 578; cpp: 482; perl: 297; sh: 62; makefile: 61; python: 35; javascript: 29
file content (65 lines) | stat: -rw-r--r-- 2,212 bytes parent folder | download | duplicates (2)
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
60
61
62
63
64
65
# 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 requires 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 "Cannot find gi-docgen. 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}"
	)
	install(
		DIRECTORY
			"${CMAKE_CURRENT_BINARY_DIR}/${_target}"
		DESTINATION
			"${SHARE_INSTALL_PREFIX}/doc"
	)
endmacro(generate_gi_documentation)