build: emit warning for the doxygen target if tests and examples are disabled

Signed-off-by: Gabriel Ferreira <gabrielcarvfer@gmail.com>
This commit is contained in:
Gabriel Ferreira
2023-02-06 11:35:34 -03:00
parent 0388b7c263
commit 264f6d9b72
2 changed files with 64 additions and 51 deletions

View File

@@ -1059,61 +1059,11 @@ macro(process_options)
# We checked this already exists, but we need the path to the executable
set(DOXYGEN_EXECUTABLE ${DOXYGEN})
# Get introspected doxygen
add_custom_target(
run-print-introspected-doxygen
COMMAND
${CMAKE_OUTPUT_DIRECTORY}/utils/ns${NS3_VER}-print-introspected-doxygen${build_profile_suffix}
> ${PROJECT_SOURCE_DIR}/doc/introspected-doxygen.h
COMMAND
${CMAKE_OUTPUT_DIRECTORY}/utils/ns${NS3_VER}-print-introspected-doxygen${build_profile_suffix}
--output-text > ${PROJECT_SOURCE_DIR}/doc/ns3-object.txt
DEPENDS print-introspected-doxygen
)
add_custom_target(
run-introspected-command-line
COMMAND ${CMAKE_COMMAND} -E env NS_COMMANDLINE_INTROSPECTION=..
${Python3_EXECUTABLE} ./test.py --no-build --constrain=example
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
DEPENDS all-test-targets # all-test-targets only exists if ENABLE_TESTS is
# set to ON
)
file(
WRITE ${CMAKE_BINARY_DIR}/introspected-command-line-preamble.h
"/* This file is automatically generated by
CommandLine::PrintDoxygenUsage() from the CommandLine configuration
in various example programs. Do not edit this file! Edit the
CommandLine configuration in those files instead.
*/\n"
)
add_custom_target(
assemble-introspected-command-line
# works on CMake 3.18 or newer > COMMAND ${CMAKE_COMMAND} -E cat
# ${PROJECT_SOURCE_DIR}/testpy-output/*.command-line >
# ${PROJECT_SOURCE_DIR}/doc/introspected-command-line.h
COMMAND
${cat_command} ${CMAKE_BINARY_DIR}/introspected-command-line-preamble.h
${PROJECT_SOURCE_DIR}/testpy-output/*.command-line >
${PROJECT_SOURCE_DIR}/doc/introspected-command-line.h 2> NULL
DEPENDS run-introspected-command-line
)
add_custom_target(
update_doxygen_version
COMMAND bash ${PROJECT_SOURCE_DIR}/doc/ns3_html_theme/get_version.sh
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
)
add_custom_target(
doxygen
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/doc/doxygen.conf
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
DEPENDS update_doxygen_version run-print-introspected-doxygen
assemble-introspected-command-line
USES_TERMINAL
)
add_custom_target(
doxygen-no-build
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/doc/doxygen.conf
@@ -1121,6 +1071,69 @@ macro(process_options)
DEPENDS update_doxygen_version
USES_TERMINAL
)
# The `doxygen` target only really works if we have tests enabled, so emit a
# warning to use `doxygen-no-build` instead.
if((NOT ${ENABLE_TESTS}) AND (NOT ${ENABLE_EXAMPLES}))
# cmake-format: off
set(doxygen_target_requires_tests_msg
echo The \\'doxygen\\' target called by \\'./ns3 docs doxygen\\' or \\'./ns3 docs all\\' commands
require examples and tests to generate introspected documentation.
Enable examples and tests, or use \\'doxygen-no-build\\'.
)
# cmake-format: on
add_custom_target(doxygen COMMAND ${doxygen_target_requires_tests_msg})
unset(doxygen_target_requires_tests_msg)
else()
# Get introspected doxygen
add_custom_target(
run-print-introspected-doxygen
COMMAND
${CMAKE_OUTPUT_DIRECTORY}/utils/ns${NS3_VER}-print-introspected-doxygen${build_profile_suffix}
> ${PROJECT_SOURCE_DIR}/doc/introspected-doxygen.h
COMMAND
${CMAKE_OUTPUT_DIRECTORY}/utils/ns${NS3_VER}-print-introspected-doxygen${build_profile_suffix}
--output-text > ${PROJECT_SOURCE_DIR}/doc/ns3-object.txt
DEPENDS print-introspected-doxygen
)
add_custom_target(
run-introspected-command-line
COMMAND ${CMAKE_COMMAND} -E env NS_COMMANDLINE_INTROSPECTION=..
${Python3_EXECUTABLE} ./test.py --no-build --constrain=example
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
DEPENDS all-test-targets # all-test-targets only exists if ENABLE_TESTS
# is set to ON
)
file(
WRITE ${CMAKE_BINARY_DIR}/introspected-command-line-preamble.h
"/* This file is automatically generated by
CommandLine::PrintDoxygenUsage() from the CommandLine configuration
in various example programs. Do not edit this file! Edit the
CommandLine configuration in those files instead.
*/\n"
)
add_custom_target(
assemble-introspected-command-line
# works on CMake 3.18 or newer > COMMAND ${CMAKE_COMMAND} -E cat
# ${PROJECT_SOURCE_DIR}/testpy-output/*.command-line >
# ${PROJECT_SOURCE_DIR}/doc/introspected-command-line.h
COMMAND
${cat_command}
${CMAKE_BINARY_DIR}/introspected-command-line-preamble.h
${PROJECT_SOURCE_DIR}/testpy-output/*.command-line >
${PROJECT_SOURCE_DIR}/doc/introspected-command-line.h 2> NULL
DEPENDS run-introspected-command-line
)
add_custom_target(
doxygen
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/doc/doxygen.conf
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
DEPENDS update_doxygen_version run-print-introspected-doxygen
assemble-introspected-command-line
USES_TERMINAL
)
endif()
endif()
# Now we check for sphinx dependencies

2
ns3
View File

@@ -1457,7 +1457,7 @@ def main():
args.build = [args.docs] if args.docs != "all" else ["sphinx", "doxygen"]
if "doxygen" in args.build and (not build_info["ENABLE_EXAMPLES"] or not build_info["ENABLE_TESTS"]):
print('The "./ns3 docs doxygen" and "./ns3 docs all" commands,\n'
'require examples and tests to generate introspected documentation.\n'
'requires examples and tests to generate introspected documentation.\n'
'Try "./ns3 docs doxygen-no-build" or enable examples and tests.')
exit(1)