diff --git a/cmake/Modules/HandleDoxygen.cmake b/cmake/Modules/HandleDoxygen.cmake new file mode 100644 index 0000000000000..e2c88f0cbafbb --- /dev/null +++ b/cmake/Modules/HandleDoxygen.cmake @@ -0,0 +1,40 @@ +option(LLVM_ENABLE_DOXYGEN "Use Doxygen to generate API documentation." OFF) + + +# available programs checks +function(llvm_find_program name) + string(TOUPPER ${name} NAME) + string(REGEX REPLACE "\\." "_" NAME ${NAME}) + + find_program(LLVM_PATH_${NAME} NAMES ${ARGV}) + mark_as_advanced(LLVM_PATH_${NAME}) + if(LLVM_PATH_${NAME}) + set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?") + mark_as_advanced(HAVE_${NAME}) + else(LLVM_PATH_${NAME}) + set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?") + endif(LLVM_PATH_${NAME}) +endfunction() + +if (LLVM_ENABLE_DOXYGEN) + message(STATUS "Doxygen enabled.") + llvm_find_program(dot) + find_package(Doxygen REQUIRED) + + 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() + + option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF) + if (LLVM_DOXYGEN_EXTERNAL_SEARCH) + set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.") + set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings") + endif() + endif() +else() + message(STATUS "Doxygen disabled.") +endif() diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 9954053591d30..bfc60bdae8c4f 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -857,12 +857,13 @@ option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks c option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF) option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON) -option (LLVM_ENABLE_DOXYGEN "Use doxygen to generate llvm API documentation." OFF) option (LLVM_ENABLE_SPHINX "Use Sphinx to generate llvm documentation." OFF) option (LLVM_ENABLE_OCAMLDOC "Build OCaml bindings documentation." ON) 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) + set(LLVM_INSTALL_DOXYGEN_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/llvm/doxygen-html" CACHE STRING "Doxygen-generated HTML documentation install directory") set(LLVM_INSTALL_OCAMLDOC_HTML_DIR "${CMAKE_INSTALL_DOCDIR}/llvm/ocaml-html" diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake index ed2bfa6df68f4..a12eaf76d15df 100644 --- a/llvm/cmake/config-ix.cmake +++ b/llvm/cmake/config-ix.cmake @@ -448,25 +448,6 @@ if (NOT WIN32) endif() endif() -# available programs checks -function(llvm_find_program name) - string(TOUPPER ${name} NAME) - string(REGEX REPLACE "\\." "_" NAME ${NAME}) - - find_program(LLVM_PATH_${NAME} NAMES ${ARGV}) - mark_as_advanced(LLVM_PATH_${NAME}) - if(LLVM_PATH_${NAME}) - set(HAVE_${NAME} 1 CACHE INTERNAL "Is ${name} available ?") - mark_as_advanced(HAVE_${NAME}) - else(LLVM_PATH_${NAME}) - set(HAVE_${NAME} "" CACHE INTERNAL "Is ${name} available ?") - endif(LLVM_PATH_${NAME}) -endfunction() - -if (LLVM_ENABLE_DOXYGEN) - llvm_find_program(dot) -endif () - if(LLVM_ENABLE_FFI) set(FFI_REQUIRE_INCLUDE On) if(LLVM_ENABLE_FFI STREQUAL FORCE_ON) @@ -670,28 +651,6 @@ else( LLVM_ENABLE_THREADS ) message(STATUS "Threads disabled.") endif() -if (LLVM_ENABLE_DOXYGEN) - message(STATUS "Doxygen enabled.") - find_package(Doxygen REQUIRED) - - 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() - - option(LLVM_DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF) - if (LLVM_DOXYGEN_EXTERNAL_SEARCH) - set(LLVM_DOXYGEN_SEARCHENGINE_URL "" CACHE STRING "URL to use for external search.") - set(LLVM_DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings") - endif() - endif() -else() - message(STATUS "Doxygen disabled.") -endif() - find_program(GOLD_EXECUTABLE NAMES ${LLVM_DEFAULT_TARGET_TRIPLE}-ld.gold ld.gold ${LLVM_DEFAULT_TARGET_TRIPLE}-ld ld DOC "The gold linker") set(LLVM_BINUTILS_INCDIR "" CACHE PATH "PATH to binutils/include containing plugin-api.h for gold plugin.") diff --git a/runtimes/CMakeLists.txt b/runtimes/CMakeLists.txt index 5220b9353fed7..33f6da32fe6ff 100644 --- a/runtimes/CMakeLists.txt +++ b/runtimes/CMakeLists.txt @@ -241,6 +241,8 @@ 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 (RUNTIMES_EXECUTE_ONLY_CODE) # If a target doesn't support or recognise -mexecute-only, Clang will simply ignore the flag. # We can check for this case using -Werror=unused-command-line-argument.