From cbe31ec920cf1fc94739f5427292c501f1d171e8 Mon Sep 17 00:00:00 2001
From: Nate Koenig <nate@openrobotics.org>
Date: Thu, 3 Sep 2020 06:53:25 -0700
Subject: [PATCH] Add additional input directories to parse when generating
 documentation

Signed-off-by: Nate Koenig <nate@openrobotics.org>
---
 cmake/IgnCreateDocs.cmake | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/cmake/IgnCreateDocs.cmake b/cmake/IgnCreateDocs.cmake
index 030db1d2..a7d69df0 100644
--- a/cmake/IgnCreateDocs.cmake
+++ b/cmake/IgnCreateDocs.cmake
@@ -26,6 +26,7 @@
 #     [API_MAINPAGE_MD <api_markdown_mainpage>]
 #     [AUTOGENERATED_DOC <generated doc dir>]
 #     [TUTORIALS_MAINPAGE_MD <tutorials_markdown_mainpage>]
+#     [ADDITIONAL_INPUT_DIRS <directory_list>]
 #     [TAGFILES <tagfile_list>])
 #
 # This function will configure doxygen templates and install them.
@@ -35,6 +36,7 @@
 # AUTOGENERATED_DOC: Optional. Directory with the generated code.
 # TUTORIALS_MAINPAGE_MD: Optional. Specify a Markdown page to use as the
 # main page for tutorial documentation.
+# ADDITIONAL_INPUT_DIRS: Optional. Specify additional input directories to parse when generating documentation.
 # TAGFILES: Optional. Specify tagfiles for doxygen to use. It should be a list of strings like:
 #           "${IGNITION-<DESIGNATION>_DOXYGEN_TAGFILE} = ${IGNITION-<DESIGNATION>_API_URL}"
 function(ign_create_docs)
@@ -43,7 +45,7 @@ function(ign_create_docs)
   # Define the expected arguments
   set(options)
   set(oneValueArgs API_MAINPAGE_MD AUTOGENERATED_DOC TUTORIALS_MAINPAGE_MD)
-  set(multiValueArgs "TAGFILES")
+  set(multiValueArgs "TAGFILES" "ADDITIONAL_INPUT_DIRS")
 
   #------------------------------------
   # Parse the arguments
@@ -119,6 +121,12 @@ function(ign_create_docs)
     ign_string_append(IGNITION_DOXYGEN_TAGFILES "\"${tagfile}\"" DELIM " \\\\\\\\\n    ")
   endforeach()
 
+  set(IGNITION_DOXYGEN_ADDITIONAL_INPUT_DIRS " ")
+
+  foreach(dir ${ign_create_docs_ADDITIONAL_INPUT_DIRS})
+    ign_string_append(IGNITION_DOXYGEN_ADDITIONAL_INPUT_DIRS "${dir}")
+  endforeach()
+
   find_package(Doxygen)
   if (DOXYGEN_FOUND AND EXISTS ${IGNITION_CMAKE_DOXYGEN_DIR}/api.in)
 
@@ -137,7 +145,7 @@ function(ign_create_docs)
     # about the spaces between input files/directories. If you put each cmake
     # variable on a separate line to make this `set` command more readable,
     # then doxygen will not generate the correct/complete output.
-    set(IGNITION_DOXYGEN_INPUT "${IGNITION_DOXYGEN_API_MAINPAGE_MD} ${IGNITION_DOXYGEN_AUTOGENERATED_DOC} ${IGNITION_DOXYGEN_TUTORIALS_DIR} ${IGNITION_DOXYGEN_TUTORIALS_MAINPAGE_MD} ${ign_doxygen_component_input_dirs}")
+    set(IGNITION_DOXYGEN_INPUT "${IGNITION_DOXYGEN_API_MAINPAGE_MD} ${IGNITION_DOXYGEN_AUTOGENERATED_DOC} ${IGNITION_DOXYGEN_TUTORIALS_DIR} ${IGNITION_DOXYGEN_TUTORIALS_MAINPAGE_MD} ${ign_doxygen_component_input_dirs} ${IGNITION_DOXYGEN_ADDITIONAL_INPUT_DIRS}")
     configure_file(${IGNITION_CMAKE_DOXYGEN_DIR}/api.in
                    ${CMAKE_BINARY_DIR}/api.dox @ONLY)