From 1800b662a06767d295cfbd1d86394bf3d781f19b Mon Sep 17 00:00:00 2001 From: Michael Gottesman Date: Wed, 28 Aug 2013 20:28:35 +0000 Subject: [PATCH] [doxygen] Added support for doxygen external search. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189507 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/config-ix.cmake | 2 ++ docs/CMakeLists.txt | 25 +++++++++++++++++++++++++ docs/Makefile | 6 +++++- docs/doxygen.cfg.in | 11 +++++++++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 3f57e23a6f3..1f82557136d 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -473,6 +473,8 @@ if (LLVM_ENABLE_DOXYGEN) if (LLVM_BUILD_DOCS) add_custom_target(doxygen ALL) endif() + option(DOXYGEN_EXTERNAL_SEARCH "Enable doxygen external search." OFF) + set(DOXYGEN_SEARCH_MAPPINGS "" CACHE STRING "Doxygen Search Mappings") endif() else() message(STATUS "Doxygen disabled.") diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 7f1a51f17a4..7e9cc6beeab 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -7,6 +7,31 @@ if (LLVM_ENABLE_DOXYGEN) if (HAVE_DOT) set(DOT ${LLVM_PATH_DOT}) endif() + + if (DOXYGEN_EXTERNAL_SEARCH) + set(SEARCHENGINE "YES") + set(SERVER_BASED_SEARCH "YES") + set(EXTERNAL_SEARCH "YES") + + set(EXTRA_SEARCH_MAPPINGS "") + foreach(NameAndValue ${DOXYGEN_SEARCH_MAPPINGS}) + # Strip leading spaces + string(REGEX REPLACE "^[ ]+" "" NameAndValue ${NameAndValue}) + # Find variable name + string(REGEX MATCH "^[^=]+" Name ${NameAndValue}) + # Find the value + string(REPLACE "${Name}=" "" Value ${NameAndValue}) + # Set the variable + if (NOT ${Name} EQUALS llvm) + set(EXTRA_SEARCH_MAPPINGS "${EXTRA_SEARCH_MAPPINGS} ${LLVM_BINARY_DIR}/${NameAndValue}") + endif() + endforeach() + else() + set(SEARCHENGINE "NO") + set(SERVER_BASED_SEARCH "NO") + set(EXTERNAL_SEARCH "NO") + set(EXTRA_SEARCH_MAPPINGS "") + endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/doxygen.cfg.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen.cfg @ONLY) diff --git a/docs/Makefile b/docs/Makefile index 122c4b834bb..e830a3235ad 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -19,7 +19,11 @@ $(PROJ_OBJ_DIR)/doxygen.cfg: doxygen.cfg.in -e 's/@abs_top_srcdir@/../g' \ -e 's/@DOT@/dot/g' \ -e 's/@PACKAGE_VERSION@/mainline/' \ - -e 's/@abs_top_builddir@/../g' > $@ + -e 's/@abs_top_builddir@/../g' \ + -e 's/@enable_searchengine@/NO/g' \ + -e 's/@enable_server_based_search@/NO/g' \ + -e 's/@enable_external_search@/NO/g' \ + -e 's/@extra_search_mappings@/NO/g' > $@ endif include $(LEVEL)/Makefile.common diff --git a/docs/doxygen.cfg.in b/docs/doxygen.cfg.in index 20de0773f40..25614cd6700 100644 --- a/docs/doxygen.cfg.in +++ b/docs/doxygen.cfg.in @@ -1,3 +1,4 @@ + # Doxyfile 1.7.1 # This file describes the settings to be used by the documentation system @@ -1068,7 +1069,7 @@ FORMULA_TRANSPARENT = YES # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. -SEARCHENGINE = NO +SEARCHENGINE = @enable_searchengine@ # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a PHP enabled web server instead of at the web client @@ -1078,7 +1079,13 @@ SEARCHENGINE = NO # full text search. The disadvances is that it is more difficult to setup # and does not have live searching capabilities. -SERVER_BASED_SEARCH = NO +SERVER_BASED_SEARCH = @enable_server_based_search@ + +EXTERNAL_SEARCH = @enable_external_search@ + +EXTERNAL_SEARCH_ID = llvm + +EXTRA_SEARCH_MAPPINGS = @extra_search_mappings@ #--------------------------------------------------------------------------- # configuration options related to the LaTeX output