geos/doc/check_doxygen_errors.cmake

51 строка
1.6 KiB
CMake

################################################################################
# Part of CMake configuration for GEOS
#
# Script checking the doxygen logfile for errors and warnings, which are not
# accepted. Throws FATAL_ERROR if found.
#
# Copyright (C) 2019 Nicklas Larsson <n_larsson@yahoo.com>
#
# This is free software; you can redistribute and/or modify it under
# the terms of the GNU Lesser General Public Licence as published
# by the Free Software Foundation.
# See the COPYING file for more information.
################################################################################
file(TO_NATIVE_PATH ${DOXYGEN_LOGFILE} DOXYGEN_LOGFILE)
if(EXISTS "${DOXYGEN_LOGFILE}")
set(ERRORS "")
file(READ "${DOXYGEN_LOGFILE}" LOGFILE)
# convert file content to list
string(REGEX REPLACE "\n$" "" LOGFILE "${LOGFILE}")
string(REGEX REPLACE ";" "\\\\;" LOGFILE "${LOGFILE}")
string(REGEX REPLACE "\n" ";" LOGFILE "${LOGFILE}")
# let's not forget non-fatal warnings
list(LENGTH LOGFILE NUM_WARNINGS)
if(NUM_WARNINGS GREATER 0)
message(STATUS
"Doxygen issued ${NUM_WARNINGS} warning(s), see ${DOXYGEN_LOGFILE}")
endif()
foreach(LINE ${LOGFILE})
string(REGEX MATCH
".*(not documented|ignoring unsupported tag).*" IGNORE ${LINE})
if("${IGNORE}" STREQUAL "")
list(APPEND ERRORS ${LINE})
endif()
endforeach()
if(NOT "${ERRORS}" STREQUAL "")
# convert list to string
string(REGEX REPLACE ";" "\n" ERROR_MSG "${ERRORS}")
message(FATAL_ERROR "${ERROR_MSG}")
endif()
unset(ERRORS)
endif()
message(STATUS "Doxygen documentation is OK")