Add: [CMake] targets to generate documentation

This commit is contained in:
glx22 2020-12-10 23:57:27 +01:00 committed by glx22
parent 7f5afbfdf5
commit 6fae0b83d9
6 changed files with 61 additions and 25 deletions

View File

@ -72,6 +72,10 @@ find_package(Xaudio2)
find_package(Grfcodec) find_package(Grfcodec)
if(UNIX)
find_package(Doxygen)
endif()
# IPO is only properly supported from CMake 3.9. Despite the fact we are # IPO is only properly supported from CMake 3.9. Despite the fact we are
# CMake 3.5, still enable IPO if we detect we are 3.9+. # CMake 3.5, still enable IPO if we detect we are 3.9+.
if(POLICY CMP0069) if(POLICY CMP0069)
@ -130,6 +134,23 @@ add_custom_target(find_version
# An empty target for the tools # An empty target for the tools
add_custom_target(tools) add_custom_target(tools)
# Documentation
if(DOXYGEN_EXECUTABLE)
add_custom_target(docs)
add_custom_target(docs_source
${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/docs
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Generating documentation for source"
)
add_dependencies(docs_source
find_version
)
add_dependencies(docs
docs_source
)
endif()
include(SourceList) include(SourceList)
include(Endian) include(Endian)
add_endian_definition() add_endian_definition()

View File

@ -8,10 +8,10 @@
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "OpenTTD Source" PROJECT_NAME = "OpenTTD Source"
PROJECT_NUMBER = $(VERSION) PROJECT_NUMBER = ${REV_VERSION}
PROJECT_BRIEF = PROJECT_BRIEF =
PROJECT_LOGO = PROJECT_LOGO =
OUTPUT_DIRECTORY = docs/source/ OUTPUT_DIRECTORY = ${CPACK_BINARY_DIR}/docs/source/
CREATE_SUBDIRS = YES CREATE_SUBDIRS = YES
ALLOW_UNICODE_NAMES = NO ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
@ -306,16 +306,14 @@ SKIP_FUNCTION_MACROS = YES
# Configuration options related to external references # Configuration options related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = objs/openttd.tag GENERATE_TAGFILE = ${CPACK_BINARY_DIR}/docs/openttd.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
EXTERNAL_PAGES = YES EXTERNAL_PAGES = YES
PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
MSCGEN_PATH =
DIA_PATH = DIA_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO HAVE_DOT = NO

View File

@ -137,4 +137,16 @@ else()
message(STATUS "Generating CPackProperties.cmake") message(STATUS "Generating CPackProperties.cmake")
configure_file("${CMAKE_SOURCE_DIR}/CPackProperties.cmake.in" configure_file("${CMAKE_SOURCE_DIR}/CPackProperties.cmake.in"
"${CPACK_BINARY_DIR}/CPackProperties.cmake" @ONLY) "${CPACK_BINARY_DIR}/CPackProperties.cmake" @ONLY)
message(STATUS "Generating Doxyfile")
configure_file("${CMAKE_SOURCE_DIR}/Doxyfile.in"
"${CPACK_BINARY_DIR}/Doxyfile")
message(STATUS "Generating Doxyfile_AI")
configure_file("${CMAKE_SOURCE_DIR}/src/script/api/Doxyfile_AI.in"
"${CPACK_BINARY_DIR}/Doxyfile_AI")
message(STATUS "Generating Doxyfile_GS")
configure_file("${CMAKE_SOURCE_DIR}/src/script/api/Doxyfile_GS.in"
"${CPACK_BINARY_DIR}/Doxyfile_GS")
endif() endif()

View File

@ -100,6 +100,23 @@ foreach(API "ai;AI" "game;GS" "template;Template")
add_dependencies(script_api add_dependencies(script_api
script_${APILC}_includes script_${APILC}_includes
) )
# Documentation
if(DOXYGEN_EXECUTABLE)
add_custom_target(docs_${APILC}
${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/docs
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile_${APIUC}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating documentation for ${APILC} API"
)
add_dependencies(docs_${APILC}
find_version
script_window
)
add_dependencies(docs
docs_${APILC}
)
endif()
else() else()
add_dependencies(script_api add_dependencies(script_api
script_${APILC} script_${APILC}

View File

@ -10,8 +10,8 @@
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "OpenTTD AI API" PROJECT_NAME = "OpenTTD AI API"
PROJECT_NUMBER = $(VERSION) PROJECT_NUMBER = ${REV_VERSION}
OUTPUT_DIRECTORY = ../../../docs/aidocs/ OUTPUT_DIRECTORY = ${CPACK_BINARY_DIR}/docs/ai-api/
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
@ -76,7 +76,6 @@ GENERATE_DEPRECATEDLIST= NO
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO SHOW_USED_FILES = NO
SHOW_DIRECTORIES = NO
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
@ -91,7 +90,7 @@ WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = . $(GENERATED_API_DIR) INPUT = . ${FIND_VERSION_BINARY_DIR}/script/api
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
FILE_PATTERNS = script_*.hpp \ FILE_PATTERNS = script_*.hpp \
ai_*.hpp ai_*.hpp
@ -133,7 +132,6 @@ HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
CHM_FILE = CHM_FILE =
@ -181,8 +179,6 @@ MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_OUTPUT = xml XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES XML_PROGRAMLISTING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
@ -211,15 +207,13 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = ../../../objs/openttd_noai.tag GENERATE_TAGFILE = ${CPACK_BINARY_DIR}/docs/openttd_ai_api.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES

View File

@ -10,8 +10,8 @@
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "OpenTTD GameScript API" PROJECT_NAME = "OpenTTD GameScript API"
PROJECT_NUMBER = $(VERSION) PROJECT_NUMBER = ${REV_VERSION}
OUTPUT_DIRECTORY = ../../../docs/gamedocs/ OUTPUT_DIRECTORY = ${CPACK_BINARY_DIR}/docs/gs-api/
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
@ -76,7 +76,6 @@ GENERATE_DEPRECATEDLIST= NO
ENABLED_SECTIONS = ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = NO SHOW_USED_FILES = NO
SHOW_DIRECTORIES = NO
FILE_VERSION_FILTER = FILE_VERSION_FILTER =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
@ -91,7 +90,7 @@ WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = . $(GENERATED_API_DIR) INPUT = . ${FIND_VERSION_BINARY_DIR}/script/api
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
FILE_PATTERNS = script_*.hpp \ FILE_PATTERNS = script_*.hpp \
game_*.hpp game_*.hpp
@ -133,7 +132,6 @@ HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
HTML_DYNAMIC_SECTIONS = NO HTML_DYNAMIC_SECTIONS = NO
CHM_FILE = CHM_FILE =
@ -181,8 +179,6 @@ MAN_LINKS = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_XML = NO GENERATE_XML = NO
XML_OUTPUT = xml XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES XML_PROGRAMLISTING = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output # configuration options for the AutoGen Definitions output
@ -211,15 +207,13 @@ SKIP_FUNCTION_MACROS = YES
# Configuration::additions related to external references # Configuration::additions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = ../../../objs/openttd_nogo.tag GENERATE_TAGFILE = ${CPACK_BINARY_DIR}/docs/openttd_gs_api.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
MSCGEN_PATH =
HIDE_UNDOC_RELATIONS = YES HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES