Skip to content

Commit 2ede15d

Browse files
authored
Merge pull request #744 from ManifoldFR/topic/tagfiles-consistency-fix
doxygen.cmake : make tagfiles processing more consistent
2 parents 4d66e41 + 1707f20 commit 2ede15d

File tree

1 file changed

+27
-38
lines changed

1 file changed

+27
-38
lines changed

doxygen.cmake

+27-38
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,10 @@ macro(_SETUP_DOXYGEN_DEFAULT_OPTIONS)
514514
# ---------------------------------------------------------------------------
515515
# Configuration options related to external references
516516
# ---------------------------------------------------------------------------
517-
_set_if_undefined(DOXYGEN_GENERATE_TAGFILE "${PROJECT_NAME}.doxytag")
517+
_set_if_undefined(
518+
DOXYGEN_GENERATE_TAGFILE
519+
"doxygen-html/${PROJECT_NAME}.doxytag"
520+
)
518521
# ---------------------------------------------------------------------------
519522
# Configuration options related to the dot tool
520523
# ---------------------------------------------------------------------------
@@ -592,9 +595,7 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
592595
add_dependencies(doc ${PROJECT_NAME}-doc)
593596

594597
add_custom_command(
595-
OUTPUT
596-
${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}.doxytag
597-
${PROJECT_BINARY_DIR}/doc/doxygen-html
598+
OUTPUT ${PROJECT_BINARY_DIR}/doc/doxygen-html
598599
COMMAND ${DOXYGEN_EXECUTABLE} ${JRL_CMAKEMODULE_DOXYFILE_PATH}
599600
WORKING_DIRECTORY doc
600601
COMMENT "Generating Doxygen documentation"
@@ -606,7 +607,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
606607
APPEND
607608
PROPERTY
608609
ADDITIONAL_MAKE_CLEAN_FILES
609-
${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}.doxytag
610610
${PROJECT_BINARY_DIR}/doc/doxygen.log
611611
${PROJECT_BINARY_DIR}/doc/doxygen-html
612612
)
@@ -639,12 +639,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
639639

640640
# Install generated files.
641641
if(INSTALL_DOCUMENTATION)
642-
if(EXISTS ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}.doxytag)
643-
install(
644-
FILES ${PROJECT_BINARY_DIR}/doc/${PROJECT_NAME}.doxytag
645-
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR}/doxygen-html
646-
)
647-
endif()
648642
install(
649643
DIRECTORY ${PROJECT_BINARY_DIR}/doc/doxygen-html
650644
DESTINATION ${CMAKE_INSTALL_FULL_DOCDIR}
@@ -674,19 +668,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
674668
endif(NOT DOXYGEN_FOUND)
675669
endmacro(_SETUP_PROJECT_DOCUMENTATION)
676670

677-
# REMOVE_DUPLICATES
678-
# -----------------
679-
#
680-
# Remove duplicate values from a space separated list
681-
function(REMOVE_DUPLICATES ARG_STR OUTPUT)
682-
set(ARG_LIST ${ARG_STR})
683-
separate_arguments(ARG_LIST)
684-
list(REMOVE_DUPLICATES ARG_LIST)
685-
string(REGEX REPLACE "([^\\]|^);" "\\1 " _TMP_STR "${ARG_LIST}")
686-
string(REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") # fixes escaping
687-
set(${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
688-
endfunction()
689-
690671
# _DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES
691672
# ----------------------------------------
692673
#
@@ -699,9 +680,11 @@ macro(_DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES DEPENDENCIES VAR_OUT)
699680
DEFINED ${PREFIX}_DOXYGENDOCDIR
700681
AND EXISTS ${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag
701682
)
702-
set(
683+
get_filename_component(DEP_DOCDIR "${${PREFIX}_DOXYGENDOCDIR}" ABSOLUTE)
684+
list(
685+
APPEND
703686
${VAR_OUT}
704-
"${${VAR_OUT}} \"${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag = ${${PREFIX}_DOXYGENDOCDIR}\""
687+
"\"${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag = ${DEP_DOCDIR}\""
705688
)
706689
endif()
707690
if(DEFINED ${PREFIX}_DEPENDENCIES)
@@ -741,9 +724,9 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
741724
endif()
742725
endif()
743726
if(INSTALL_DOCUMENTATION)
744-
# Find doxytag files To ignore this list of tag files, set variable
745-
# DOXYGEN_TAGFILES
746-
set(_TAGFILES_FROM_DEPENDENCIES "${DOXYGEN_TAGFILES_FROM_DEPENDENCIES}")
727+
# Find doxytag files. To ignore this list of tag files,
728+
# set the DOXYGEN_TAGFILES CMake variable or TAGFILES in doc/Doxyfile.extra.in.
729+
set(_TAGFILES_FROM_DEPENDENCIES ${DOXYGEN_TAGFILES_FROM_DEPENDENCIES})
747730
set(PKG_REQUIRES ${_PKG_CONFIG_REQUIRES})
748731
list(APPEND PKG_REQUIRES ${_PKG_CONFIG_COMPILE_TIME_REQUIRES})
749732
foreach(PKG_CONFIG_STRING ${PKG_REQUIRES})
@@ -758,16 +741,16 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
758741
DEFINED ${PREFIX}_DOXYGENDOCDIR
759742
AND EXISTS ${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag
760743
)
761-
file(
762-
RELATIVE_PATH
744+
# always use absolute path
745+
get_filename_component(
763746
DEP_DOCDIR
764-
${CMAKE_INSTALL_FULL_DOCDIR}
765-
${${PREFIX}_DOXYGENDOCDIR}
747+
"${${PREFIX}_DOXYGENDOCDIR}"
748+
ABSOLUTE
766749
)
767-
768-
set(
750+
list(
751+
APPEND
769752
_TAGFILES_FROM_DEPENDENCIES
770-
"${_TAGFILES_FROM_DEPENDENCIES} \"${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag = ${DEP_DOCDIR}\""
753+
"\"${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag = ${DEP_DOCDIR}\""
771754
)
772755
endif()
773756
endforeach()
@@ -776,9 +759,15 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
776759
_TAGFILES_FROM_DEPENDENCIES
777760
)
778761
if(_TAGFILES_FROM_DEPENDENCIES)
779-
REMOVE_DUPLICATES(
780-
${_TAGFILES_FROM_DEPENDENCIES}
762+
# use native deduplication routine for comma-separated lists, then
763+
# convert comma-separated list to space-separated list string.
764+
list(REMOVE_DUPLICATES _TAGFILES_FROM_DEPENDENCIES)
765+
string(
766+
REPLACE
767+
";"
768+
" "
781769
DOXYGEN_TAGFILES_FROM_DEPENDENCIES
770+
"${_TAGFILES_FROM_DEPENDENCIES}"
782771
)
783772
endif()
784773
endif()

0 commit comments

Comments
 (0)