blob: 6620a7afc7a997379ead2fa9a70f9facabd60957 (
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
project(doxygen LANGUAGES C CXX)
# define some folders
get_filename_component(RXCPP_DIR "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
get_filename_component(RXCPP_DIR "${RXCPP_DIR}" PATH)
MESSAGE( STATUS "RXCPP_DIR: " ${RXCPP_DIR} )
# target to generate documentation with Doxygen
find_package(Doxygen)
if(DOXYGEN_FOUND)
include(${RXCPP_DIR}/projects/CMake/shared.cmake)
set(EXAMPLES_DIR ${RXCPP_DIR}/Rx/v2/examples)
# Doxygen configuration
set(DOXY_CONF_DIR ${RXCPP_DIR}/projects/doxygen)
set(DOXY_CONF_FILE ${DOXY_CONF_DIR}/doxygen.conf)
# File with main page (index.html) content
set(DOXY_MAIN_PAGE ${DOXY_CONF_DIR}/mainpage.dox)
set(DOXY_FOOTER_HTML ${DOXY_CONF_DIR}/footer.html)
# Sources for processing location
set(DOXY_INPUT_DIR "${IX_SRC_DIR} ${RX_SRC_DIR} ${DOXY_MAIN_PAGE}")
# C++ examples location
set(DOXY_EXAMPLES_SRC_DIR ${EXAMPLES_DIR}/doxygen)
set(DOXY_EXAMPLES_BIN_DIR doxy_examples)
# Directories and files allowed for include-type command (\include, \example, \snippet etc)
set(DOXY_INCLUDE_DIR "${RXCPP_DIR} ${DOXY_EXAMPLES_SRC_DIR}")
# Resulting documentation to be placed here
set(DOXY_OUTPUT_DIR ${RXCPP_DIR}/projects/doxygen)
# Make Doxygen configuration from template with placeholders
configure_file(${DOXY_CONF_FILE}.in ${DOXY_CONF_FILE})
# Target to build examples
set(DOXY_EXAMPLE_SRC_LIST
${DOXY_EXAMPLES_SRC_DIR}/main.cpp
${DOXY_EXAMPLES_SRC_DIR}/all.cpp
${DOXY_EXAMPLES_SRC_DIR}/amb.cpp
${DOXY_EXAMPLES_SRC_DIR}/as_dynamic.cpp
${DOXY_EXAMPLES_SRC_DIR}/blocking_observable.cpp
${DOXY_EXAMPLES_SRC_DIR}/buffer.cpp
${DOXY_EXAMPLES_SRC_DIR}/combine_latest.cpp
${DOXY_EXAMPLES_SRC_DIR}/composite_exception.cpp
${DOXY_EXAMPLES_SRC_DIR}/concat.cpp
${DOXY_EXAMPLES_SRC_DIR}/concat_map.cpp
${DOXY_EXAMPLES_SRC_DIR}/contains.cpp
${DOXY_EXAMPLES_SRC_DIR}/create.cpp
${DOXY_EXAMPLES_SRC_DIR}/defer.cpp
${DOXY_EXAMPLES_SRC_DIR}/debounce.cpp
${DOXY_EXAMPLES_SRC_DIR}/default_if_empty.cpp
${DOXY_EXAMPLES_SRC_DIR}/delay.cpp
${DOXY_EXAMPLES_SRC_DIR}/distinct.cpp
${DOXY_EXAMPLES_SRC_DIR}/distinct_until_changed.cpp
${DOXY_EXAMPLES_SRC_DIR}/element_at.cpp
${DOXY_EXAMPLES_SRC_DIR}/empty.cpp
${DOXY_EXAMPLES_SRC_DIR}/error.cpp
${DOXY_EXAMPLES_SRC_DIR}/exists.cpp
${DOXY_EXAMPLES_SRC_DIR}/filter.cpp
${DOXY_EXAMPLES_SRC_DIR}/finally.cpp
${DOXY_EXAMPLES_SRC_DIR}/flat_map.cpp
${DOXY_EXAMPLES_SRC_DIR}/from.cpp
${DOXY_EXAMPLES_SRC_DIR}/group_by.cpp
${DOXY_EXAMPLES_SRC_DIR}/ignore_elements.cpp
${DOXY_EXAMPLES_SRC_DIR}/interval.cpp
${DOXY_EXAMPLES_SRC_DIR}/iterate.cpp
${DOXY_EXAMPLES_SRC_DIR}/just.cpp
${DOXY_EXAMPLES_SRC_DIR}/map.cpp
${DOXY_EXAMPLES_SRC_DIR}/math.cpp
${DOXY_EXAMPLES_SRC_DIR}/merge.cpp
${DOXY_EXAMPLES_SRC_DIR}/merge_delay_error.cpp
${DOXY_EXAMPLES_SRC_DIR}/never.cpp
${DOXY_EXAMPLES_SRC_DIR}/observe_on.cpp
${DOXY_EXAMPLES_SRC_DIR}/on_error_resume_next.cpp
${DOXY_EXAMPLES_SRC_DIR}/pairwise.cpp
${DOXY_EXAMPLES_SRC_DIR}/publish.cpp
${DOXY_EXAMPLES_SRC_DIR}/range.cpp
${DOXY_EXAMPLES_SRC_DIR}/reduce.cpp
${DOXY_EXAMPLES_SRC_DIR}/repeat.cpp
${DOXY_EXAMPLES_SRC_DIR}/replay.cpp
${DOXY_EXAMPLES_SRC_DIR}/retry.cpp
${DOXY_EXAMPLES_SRC_DIR}/sample.cpp
${DOXY_EXAMPLES_SRC_DIR}/scan.cpp
${DOXY_EXAMPLES_SRC_DIR}/scope.cpp
${DOXY_EXAMPLES_SRC_DIR}/sequence_equal.cpp
${DOXY_EXAMPLES_SRC_DIR}/skip.cpp
${DOXY_EXAMPLES_SRC_DIR}/skip_while.cpp
${DOXY_EXAMPLES_SRC_DIR}/skip_last.cpp
${DOXY_EXAMPLES_SRC_DIR}/skip_until.cpp
${DOXY_EXAMPLES_SRC_DIR}/start_with.cpp
${DOXY_EXAMPLES_SRC_DIR}/subscribe.cpp
${DOXY_EXAMPLES_SRC_DIR}/subscribe_on.cpp
${DOXY_EXAMPLES_SRC_DIR}/switch_if_empty.cpp
${DOXY_EXAMPLES_SRC_DIR}/switch_on_next.cpp
${DOXY_EXAMPLES_SRC_DIR}/take.cpp
${DOXY_EXAMPLES_SRC_DIR}/take_last.cpp
${DOXY_EXAMPLES_SRC_DIR}/take_until.cpp
${DOXY_EXAMPLES_SRC_DIR}/take_while.cpp
${DOXY_EXAMPLES_SRC_DIR}/tap.cpp
${DOXY_EXAMPLES_SRC_DIR}/time_interval.cpp
${DOXY_EXAMPLES_SRC_DIR}/timeout.cpp
${DOXY_EXAMPLES_SRC_DIR}/timer.cpp
${DOXY_EXAMPLES_SRC_DIR}/timestamp.cpp
${DOXY_EXAMPLES_SRC_DIR}/with_latest_from.cpp
${DOXY_EXAMPLES_SRC_DIR}/window.cpp
${DOXY_EXAMPLES_SRC_DIR}/zip.cpp
)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${DOXY_EXAMPLES_BIN_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${DOXY_EXAMPLES_BIN_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${DOXY_EXAMPLES_BIN_DIR})
add_executable(doxy_examples EXCLUDE_FROM_ALL ${DOXY_EXAMPLE_SRC_LIST})
add_executable(rxcpp::doxygen::examples ALIAS doxy_examples)
target_compile_options(doxy_examples PUBLIC ${RX_COMPILE_OPTIONS})
target_compile_features(doxy_examples PUBLIC ${RX_COMPILE_FEATURES})
target_include_directories(doxy_examples
PUBLIC ${RX_SRC_DIR} ${RX_CATCH_DIR}
)
target_link_libraries(doxy_examples PRIVATE ${CMAKE_THREAD_LIBS_INIT})
# Target to execute examples and save their output
add_custom_command(
OUTPUT doxy_examples_output
COMMAND ${DOXY_EXAMPLES_BIN_DIR}/doxy_examples > ${DOXY_EXAMPLES_SRC_DIR}/output.txt
COMMENT "Execute examples for Doxygen documentation")
# Target to generate docs
add_custom_target(doc
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXY_CONF_FILE}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS doxy_examples doxy_examples_output
COMMENT "Generating documentation with Doxygen"
VERBATIM)
endif()
|