From 7daddf2b6f44960344157a0accb3963a7d87ca03 Mon Sep 17 00:00:00 2001 From: Jameson Nash Date: Thu, 11 Jun 2026 08:58:36 -0400 Subject: [PATCH] [docs] try again to handle doxygen everywhere (#203081) The previous attempt at this (b7da9565017e32c18b927a7637714d1b660b558d) still broke standalone builds. Now I have locally tested standalone flang, runtimes (with openmp), lldb, combined builds, and the utils script. Hopefully that covers everything this time, and gets everything into a more consistent state (always using the HandleDoxygen script in the same way, included exactly once as required by the cmake design). --- bolt/docs/CMakeLists.txt | 3 --- clang-tools-extra/docs/CMakeLists.txt | 1 - clang/docs/CMakeLists.txt | 2 -- cmake/Modules/HandleDoxygen.cmake | 5 +++++ flang/CMakeLists.txt | 7 ++++--- flang/docs/CMakeLists.txt | 3 --- lldb/CMakeLists.txt | 1 + lldb/docs/CMakeLists.txt | 3 --- llvm/CMakeLists.txt | 11 ----------- llvm/docs/CMakeLists.txt | 1 - mlir/docs/CMakeLists.txt | 2 -- openmp/docs/CMakeLists.txt | 2 -- polly/docs/CMakeLists.txt | 1 - runtimes/CMakeLists.txt | 4 +++- 14 files changed, 13 insertions(+), 33 deletions(-) diff --git a/bolt/docs/CMakeLists.txt b/bolt/docs/CMakeLists.txt index 92c3c964acb7..45b6d6c6d707 100644 --- a/bolt/docs/CMakeLists.txt +++ b/bolt/docs/CMakeLists.txt @@ -1,5 +1,3 @@ - -find_package(Doxygen) if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) @@ -48,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(bolt_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/clang-tools-extra/docs/CMakeLists.txt b/clang-tools-extra/docs/CMakeLists.txt index 1492f25a0197..5f0ac7befeaa 100644 --- a/clang-tools-extra/docs/CMakeLists.txt +++ b/clang-tools-extra/docs/CMakeLists.txt @@ -46,7 +46,6 @@ if (DOXYGEN_FOUND) set(clang_tools_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/clang/docs/CMakeLists.txt b/clang/docs/CMakeLists.txt index b0de3e74c5c7..10992eea61c2 100644 --- a/clang/docs/CMakeLists.txt +++ b/clang/docs/CMakeLists.txt @@ -1,4 +1,3 @@ - if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) @@ -47,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(clang_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/cmake/Modules/HandleDoxygen.cmake b/cmake/Modules/HandleDoxygen.cmake index 9a8a453102ac..82aa4d369cca 100644 --- a/cmake/Modules/HandleDoxygen.cmake +++ b/cmake/Modules/HandleDoxygen.cmake @@ -20,6 +20,11 @@ if (LLVM_ENABLE_DOXYGEN) llvm_find_program(dot) find_package(Doxygen REQUIRED) message(STATUS "Doxygen enabled (${DOXYGEN_VERSION}).") + # Create a global aggregate doxygen target for generating llvm and any/all + # subprojects doxygen documentation. + if (LLVM_BUILD_DOCS) + add_custom_target(doxygen ALL) + endif() if (DOXYGEN_FOUND) option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF) diff --git a/flang/CMakeLists.txt b/flang/CMakeLists.txt index a137b4acf239..6d03080d7102 100644 --- a/flang/CMakeLists.txt +++ b/flang/CMakeLists.txt @@ -241,9 +241,6 @@ if (FLANG_STANDALONE_BUILD) else() add_custom_target(check-all DEPENDS check-flang ) endif() - if (LLVM_BUILD_DOCS) - add_custom_target(doxygen-flang ALL) - endif() else() option(FLANG_INCLUDE_TESTS @@ -305,6 +302,7 @@ list(INSERT CMAKE_MODULE_PATH 0 "${FLANG_SOURCE_DIR}/cmake/modules" "${LLVM_COMMON_CMAKE_UTILS}/Modules" ) + include(AddFlang) if (NOT DEFAULT_SYSROOT) @@ -516,6 +514,9 @@ endif() option(FLANG_INCLUDE_DOCS "Generate build targets for the Flang docs." ${LLVM_INCLUDE_DOCS}) +if(FLANG_STANDALONE_BUILD) + include(HandleDoxygen) +endif() if (FLANG_INCLUDE_DOCS) add_subdirectory(docs) endif() diff --git a/flang/docs/CMakeLists.txt b/flang/docs/CMakeLists.txt index 5f2fb2fadd06..d23cb7ea8c58 100644 --- a/flang/docs/CMakeLists.txt +++ b/flang/docs/CMakeLists.txt @@ -1,5 +1,3 @@ - -find_package(Doxygen) if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) @@ -48,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(flang_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt index c30a0bca60e5..46e83681a814 100644 --- a/lldb/CMakeLists.txt +++ b/lldb/CMakeLists.txt @@ -34,6 +34,7 @@ if(LLDB_BUILT_STANDALONE) set(CMAKE_CXX_EXTENSIONS NO) include(LLDBStandalone) + include(HandleDoxygen) endif() include(LLDBConfig) diff --git a/lldb/docs/CMakeLists.txt b/lldb/docs/CMakeLists.txt index 87e05db8c943..ccdcb4df1c60 100644 --- a/lldb/docs/CMakeLists.txt +++ b/lldb/docs/CMakeLists.txt @@ -1,11 +1,8 @@ -include(FindDoxygen) - if(DOXYGEN_FOUND) set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}/..) set(DOT dot) set(PACKAGE_VERSION mainline) set(abs_top_builddir ..) - include(HandleDoxygen) llvm_configure_doxygen() add_custom_target(lldb-cpp-doc diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 075d3f3acfe3..4509fbaba1d2 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -927,17 +927,6 @@ option (LLVM_ENABLE_BINDINGS "Build bindings." ON) option (LLVM_ENABLE_TELEMETRY "Enable the telemetry library. If set to OFF, library cannot be enabled after build (eg., at runtime)" ON) include(HandleDoxygen) -if (LLVM_ENABLE_DOXYGEN) - if (DOXYGEN_FOUND) - # If we find doxygen and we want to enable doxygen by default create a - # global aggregate doxygen target for generating llvm and any/all - # subprojects doxygen documentation. - if (LLVM_BUILD_DOCS) - add_custom_target(doxygen ALL) - endif() - endif() -endif() - set(LLVM_INSTALL_DOXYGEN_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/llvm/doxygen-html" CACHE STRING "Doxygen-generated HTML documentation install directory") diff --git a/llvm/docs/CMakeLists.txt b/llvm/docs/CMakeLists.txt index 5c8a24c0d651..4e12d7902b02 100644 --- a/llvm/docs/CMakeLists.txt +++ b/llvm/docs/CMakeLists.txt @@ -56,7 +56,6 @@ if (LLVM_ENABLE_DOXYGEN) set(llvm_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/mlir/docs/CMakeLists.txt b/mlir/docs/CMakeLists.txt index 53d9f73f912f..447d4eb36ac7 100644 --- a/mlir/docs/CMakeLists.txt +++ b/mlir/docs/CMakeLists.txt @@ -1,4 +1,3 @@ - if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) @@ -47,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(mlir_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/openmp/docs/CMakeLists.txt b/openmp/docs/CMakeLists.txt index 50e052e13e83..186c90310646 100644 --- a/openmp/docs/CMakeLists.txt +++ b/openmp/docs/CMakeLists.txt @@ -1,4 +1,3 @@ - if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) set(abs_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) @@ -47,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(openmp_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/polly/docs/CMakeLists.txt b/polly/docs/CMakeLists.txt index b034b00ce982..971653f015fe 100644 --- a/polly/docs/CMakeLists.txt +++ b/polly/docs/CMakeLists.txt @@ -46,7 +46,6 @@ if (LLVM_ENABLE_DOXYGEN) set(polly_doxygen_qhp_cust_filter_attrs "") endif() - include(HandleDoxygen) llvm_configure_doxygen() set(abs_top_srcdir) diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index f6debee97511..0a84ef3957f7 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -296,7 +296,9 @@ option(LLVM_INCLUDE_DOCS "Generate build targets for the runtimes documentation. option(LLVM_ENABLE_SPHINX "Use Sphinx to generate the runtimes documentation." OFF) option(RUNTIMES_EXECUTE_ONLY_CODE "Compile runtime libraries as execute-only." OFF) -include(HandleDoxygen) +if(NOT HAVE_LLVM_LIT) + include(HandleDoxygen) +endif() if (RUNTIMES_EXECUTE_ONLY_CODE) # If a target doesn't support or recognise -mexecute-only, Clang will simply ignore the flag.