Skip to content

Commit 31fd82e

Browse files
authored
Merge pull request #1169 from cipherboy/make-install-fix
Add ENABLE_DOCS to control building documentation
2 parents a425ebf + 7ddc0b1 commit 31fd82e

File tree

2 files changed

+89
-46
lines changed

2 files changed

+89
-46
lines changed

CMakeLists.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,14 @@ cmake_dependent_option(ENABLE_PERL "if enabled, the perl swig bindings will be b
309309
set(WANT_BASE64 TRUE CACHE BOOL "wants builtin Base64")
310310
set(WANT_XBASE64 FALSE CACHE BOOL "wants builtin XBase64")
311311

312+
# ---------- Documentation
313+
314+
# Due to the time it takes to build documentation on every change,
315+
# we choose to disable documentation by default. Only when ENABLE_DOCS==TRUE
316+
# will docs be built and added to the `make install` target.
317+
318+
option(ENABLE_DOCS "enables documentation building -- suggests doxygen, asciidoc" FALSE)
319+
312320
# ---------- STATUS MESSAGES
313321

314322
message(STATUS " ")
@@ -349,6 +357,12 @@ message(STATUS "Testing:")
349357
message(STATUS "tests: ${ENABLE_TESTS}")
350358
message(STATUS "valgrind: ${ENABLE_VALGRIND}")
351359
message(STATUS "MITRE: ${ENABLE_MITRE}")
360+
message(STATUS " ")
361+
362+
message(STATUS "Documentation:")
363+
message(STATUS "enabled: ${ENABLE_DOCS}")
364+
message(STATUS "doxygen: ${DOXYGEN_EXECUTABLE}")
365+
message(STATUS "asciidoc: ${ASCIIDOC_EXECUTABLE}")
352366

353367
# ---------- PATHS
354368

docs/CMakeLists.txt

Lines changed: 75 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,81 @@
1-
add_custom_target(docs
2-
COMMENT "Generating documentation and manuals in HTML format"
3-
)
1+
if(ENABLE_DOCS)
2+
add_custom_target(docs ALL
3+
COMMENT "Generating documentation and manuals in HTML format"
4+
)
45

5-
if(DOXYGEN_FOUND)
6-
# set input and output files
7-
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
8-
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
6+
if(DOXYGEN_FOUND)
7+
# set input and output files
8+
set(DOXYGEN_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
9+
set(DOXYGEN_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
910

10-
# request to configure the file
11-
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
11+
# request to configure the file
12+
configure_file(${DOXYGEN_IN} ${DOXYGEN_OUT} @ONLY)
1213

13-
# note the option ALL which allows to build the docs together with the application
14-
add_custom_target(doxygen_docs
15-
COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}"
16-
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
17-
COMMENT "Generating API documentation with Doxygen")
18-
add_dependencies(docs doxygen_docs)
19-
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
20-
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
21-
)
22-
endif()
14+
# note the option ALL which allows to build the docs together with the application
15+
add_custom_command(
16+
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/html"
17+
DEPENDS ${DOXYGEN_OUT}
18+
COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUT}"
19+
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
20+
COMMENT "Generating API documentation with Doxygen"
21+
)
22+
add_custom_target(
23+
doxygen_docs
24+
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/html"
25+
)
26+
add_dependencies(docs doxygen_docs)
27+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
28+
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
29+
)
30+
endif()
2331

24-
if(ASCIIDOC_EXECUTABLE)
25-
add_custom_target(user_manual
26-
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/manual"
27-
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/manual/manual.html" "${CMAKE_CURRENT_SOURCE_DIR}/manual/manual.adoc"
28-
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/manual/images" "${CMAKE_CURRENT_BINARY_DIR}/manual/images"
29-
COMMENT "Generating OpenSCAP User Manual in HTML format"
30-
)
31-
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/manual"
32-
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
33-
)
34-
add_custom_target(developer_manual
35-
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/developer"
36-
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/developer/developer.html" "${CMAKE_CURRENT_SOURCE_DIR}/developer/developer.adoc"
37-
COMMENT "Generating OpenSCAP Developer Manual in HTML format"
38-
)
39-
# We are not installing the OpenSCAP Developer manual because it does not
40-
# make any sense to install this for end-users.
41-
add_custom_target(contribute_docs
42-
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/contribute"
43-
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/contribute.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/contribute.adoc"
44-
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/testing.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/testing.adoc"
45-
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/versioning.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/versioning.adoc"
46-
COMMENT "Generating contribute documentation in HTML format"
47-
)
48-
# We are not installing the contribute documentation because it does not
49-
# make any sense to install this for end-users.
32+
if(ASCIIDOC_EXECUTABLE)
33+
add_custom_command(
34+
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/manual/manual.html"
35+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/manual/manual.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/manual/images"
36+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/manual"
37+
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/manual/manual.html" "${CMAKE_CURRENT_SOURCE_DIR}/manual/manual.adoc"
38+
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_CURRENT_SOURCE_DIR}/manual/images" "${CMAKE_CURRENT_BINARY_DIR}/manual/images"
39+
COMMENT "Generating OpenSCAP User Manual in HTML format"
40+
)
41+
add_custom_target(
42+
user_manual
43+
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/manual/manual.html"
44+
)
45+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/manual"
46+
DESTINATION "${CMAKE_INSTALL_DOCDIR}"
47+
)
48+
49+
add_custom_command(
50+
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/developer/developer.html"
51+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/developer/developer.adoc"
52+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/developer"
53+
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/developer/developer.html" "${CMAKE_CURRENT_SOURCE_DIR}/developer/developer.adoc"
54+
COMMENT "Generating OpenSCAP Developer Manual in HTML format"
55+
)
56+
add_custom_target(
57+
developer_manual
58+
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/developer/developer.html"
59+
)
60+
# We are not installing the OpenSCAP Developer manual because it does not
61+
# make any sense to install this for end-users.
62+
63+
add_custom_command(
64+
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/contribute/contribute.html" "${CMAKE_CURRENT_BINARY_DIR}/contribute/testing.html" "${CMAKE_CURRENT_BINARY_DIR}/contribute/versioning.html"
65+
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/contribute/contribute.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/testing.adoc" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/versioning.adoc"
66+
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/contribute"
67+
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/contribute.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/contribute.adoc"
68+
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/testing.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/testing.adoc"
69+
COMMAND "${ASCIIDOC_EXECUTABLE}" -b html5 -o "${CMAKE_CURRENT_BINARY_DIR}/contribute/versioning.html" "${CMAKE_CURRENT_SOURCE_DIR}/contribute/versioning.adoc"
70+
COMMENT "Generating contribute documentation in HTML format"
71+
)
72+
add_custom_target(
73+
contribute_docs
74+
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/contribute/contribute.html" "${CMAKE_CURRENT_BINARY_DIR}/contribute/testing.html" "${CMAKE_CURRENT_BINARY_DIR}/contribute/versioning.html"
75+
)
76+
# We are not installing the contribute documentation because it does not
77+
# make any sense to install this for end-users.
5078

51-
add_dependencies(docs user_manual developer_manual contribute_docs)
79+
add_dependencies(docs user_manual developer_manual contribute_docs)
80+
endif()
5281
endif()

0 commit comments

Comments
 (0)