Skip to content

Commit 8a426f9

Browse files
committed
doxygen.cmake : make tagfiles processing more consistent
- process list as a comma-separated native CMake list - fix extraneous whitespaces - always use absolute paths (allows dedupe to work) - remove custom REMOVE_DUPLICATES() function
1 parent 851587a commit 8a426f9

File tree

1 file changed

+22
-27
lines changed

1 file changed

+22
-27
lines changed

doxygen.cmake

+22-27
Original file line numberDiff line numberDiff line change
@@ -630,19 +630,6 @@ macro(_SETUP_PROJECT_DOCUMENTATION)
630630
endif(NOT DOXYGEN_FOUND)
631631
endmacro(_SETUP_PROJECT_DOCUMENTATION)
632632

633-
# REMOVE_DUPLICATES
634-
# -----------------
635-
#
636-
# Remove duplicate values from a space separated list
637-
function(REMOVE_DUPLICATES ARG_STR OUTPUT)
638-
set(ARG_LIST ${ARG_STR})
639-
separate_arguments(ARG_LIST)
640-
list(REMOVE_DUPLICATES ARG_LIST)
641-
string(REGEX REPLACE "([^\\]|^);" "\\1 " _TMP_STR "${ARG_LIST}")
642-
string(REGEX REPLACE "[\\](.)" "\\1" _TMP_STR "${_TMP_STR}") # fixes escaping
643-
set(${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
644-
endfunction()
645-
646633
# _DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES
647634
# ----------------------------------------
648635
#
@@ -655,9 +642,11 @@ macro(_DOXYTAG_ENTRIES_FROM_CMAKE_DEPENDENCIES DEPENDENCIES VAR_OUT)
655642
DEFINED ${PREFIX}_DOXYGENDOCDIR
656643
AND EXISTS ${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag
657644
)
658-
set(
645+
get_filename_component(DEP_DOCDIR "${${PREFIX}_DOXYGENDOCDIR}" ABSOLUTE)
646+
list(
647+
APPEND
659648
${VAR_OUT}
660-
"${${VAR_OUT}} \"${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag = ${${PREFIX}_DOXYGENDOCDIR}\""
649+
"\"${${PREFIX}_DOXYGENDOCDIR}/${PREFIX}.doxytag = ${DEP_DOCDIR}\""
661650
)
662651
endif()
663652
if(DEFINED ${PREFIX}_DEPENDENCIES)
@@ -697,9 +686,9 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
697686
endif()
698687
endif()
699688
if(INSTALL_DOCUMENTATION)
700-
# Find doxytag files To ignore this list of tag files, set variable
701-
# DOXYGEN_TAGFILES
702-
set(_TAGFILES_FROM_DEPENDENCIES "${DOXYGEN_TAGFILES_FROM_DEPENDENCIES}")
689+
# Find doxytag files. To ignore this list of tag files,
690+
# set the DOXYGEN_TAGFILES CMake variable or TAGFILES in doc/Doxyfile.extra.in.
691+
set(_TAGFILES_FROM_DEPENDENCIES ${DOXYGEN_TAGFILES_FROM_DEPENDENCIES})
703692
set(PKG_REQUIRES ${_PKG_CONFIG_REQUIRES})
704693
list(APPEND PKG_REQUIRES ${_PKG_CONFIG_COMPILE_TIME_REQUIRES})
705694
foreach(PKG_CONFIG_STRING ${PKG_REQUIRES})
@@ -714,16 +703,16 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
714703
DEFINED ${PREFIX}_DOXYGENDOCDIR
715704
AND EXISTS ${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag
716705
)
717-
file(
718-
RELATIVE_PATH
706+
# always use absolute path
707+
get_filename_component(
719708
DEP_DOCDIR
720-
${CMAKE_INSTALL_FULL_DOCDIR}
721-
${${PREFIX}_DOXYGENDOCDIR}
709+
"${${PREFIX}_DOXYGENDOCDIR}"
710+
ABSOLUTE
722711
)
723-
724-
set(
712+
list(
713+
APPEND
725714
_TAGFILES_FROM_DEPENDENCIES
726-
"${_TAGFILES_FROM_DEPENDENCIES} \"${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag = ${DEP_DOCDIR}\""
715+
"\"${${PREFIX}_DOXYGENDOCDIR}/${LIBRARY_NAME}.doxytag = ${DEP_DOCDIR}\""
727716
)
728717
endif()
729718
endforeach()
@@ -732,9 +721,15 @@ macro(_SETUP_PROJECT_DOCUMENTATION_FINALIZE)
732721
_TAGFILES_FROM_DEPENDENCIES
733722
)
734723
if(_TAGFILES_FROM_DEPENDENCIES)
735-
REMOVE_DUPLICATES(
736-
${_TAGFILES_FROM_DEPENDENCIES}
724+
# use native deduplication routine for comma-separated lists, then
725+
# convert comma-separated list to space-separated list string.
726+
list(REMOVE_DUPLICATES _TAGFILES_FROM_DEPENDENCIES)
727+
string(
728+
REPLACE
729+
";"
730+
" "
737731
DOXYGEN_TAGFILES_FROM_DEPENDENCIES
732+
"${_TAGFILES_FROM_DEPENDENCIES}"
738733
)
739734
endif()
740735
endif()

0 commit comments

Comments
 (0)