mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 21:36:21 +03:00
166 lines
9.9 KiB
CMake
166 lines
9.9 KiB
CMake
####################################################################################
|
|
# #
|
|
# Copyright (c) 2014 - 2018 Axel Menzel <info@rttr.org> #
|
|
# #
|
|
# This file is part of RTTR (Run Time Type Reflection) #
|
|
# License: MIT License #
|
|
# #
|
|
# Permission is hereby granted, free of charge, to any person obtaining #
|
|
# a copy of this software and associated documentation files (the "Software"), #
|
|
# to deal in the Software without restriction, including without limitation #
|
|
# the rights to use, copy, modify, merge, publish, distribute, sublicense, #
|
|
# and/or sell copies of the Software, and to permit persons to whom the #
|
|
# Software is furnished to do so, subject to the following conditions: #
|
|
# #
|
|
# The above copyright notice and this permission notice shall be included in #
|
|
# all copies or substantial portions of the Software. #
|
|
# #
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE #
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE #
|
|
# SOFTWARE. #
|
|
# #
|
|
####################################################################################
|
|
|
|
find_package(Doxygen)
|
|
# These variables are defined in the doxygen file(@VAR@) as place holders
|
|
# an will be substituted by the following values
|
|
set(DOXYGEN_PROJECT_NUMBER "${RTTR_VERSION_STR}")
|
|
set(DOXYGEN_PROJECT_NAME "${PROJECT_NAME}")
|
|
set(DOXYGEN_INPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/rttr \\
|
|
${CMAKE_CURRENT_SOURCE_DIR}" )
|
|
set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/doc")
|
|
set(DOXYGEN_DOC_INSTALL_DIR "doc")
|
|
set(DOXYGEN_CONFIG_FILE_IN "DoxyFile.cfg.in")
|
|
set(DOXYGEN_LAYOUT_FILE_IN "doxygen-customization/layout/DoxygenLayout.xml.in")
|
|
set(DOXYGEN_EXCLUDE "")
|
|
set(DOXYGEN_STRIP_FROM_PATH "${CMAKE_SOURCE_DIR}/src/rttr")
|
|
set(DOXYGEN_CUSTOM_HTML_DIR "rttr-${RTTR_VERSION_MAJOR}-${RTTR_VERSION_MINOR}-${RTTR_VERSION_PATCH}")
|
|
set(DOXYGEN_PREDEFINED "DOXYGEN \\
|
|
RTTR_INLINE= \\
|
|
RTTR_FORCE_INLINE= \\
|
|
RTTR_API= \\
|
|
RTTR_NOEXCEPT=noexcept \\
|
|
RTTR_CONSTEXPR=constexpr \\
|
|
RTTR_CXX14_CONSTEXPR=constexpr \\
|
|
RTTR_STATIC_CONSTEXPR=static constexpr \\
|
|
RTTR_NOEXCEPT_OR_NOTHROW=throw() \\
|
|
RTTR_DEPRECATED_WITH_MSG= \\
|
|
RTTR_LOCAL= \\
|
|
")
|
|
set(DOXYGEN_EXCLUDE_SYMBOLS "impl* \\
|
|
impl::* \\
|
|
detail* \\
|
|
detail:: \\
|
|
")
|
|
|
|
set(DOXYGEN_EXCLUDE_PATTERNS "*.cpp* \\
|
|
*_p.cpp* \\
|
|
*PCH.h* \\
|
|
*_impl.h* \\
|
|
*_p.h* \\
|
|
*/src/rttr/detail/* \\
|
|
*/src/test/* \\
|
|
*/src/benchmark/*")
|
|
|
|
set(DOXYGEN_INDEX_FILE_IN "index.html.in")
|
|
|
|
#### LAYOUT VARIABLES
|
|
set(DOXY_LAYOUT_MAIN_PAGE_TITLE "RTTR")
|
|
set(DOXY_LAYOUT_PAGES_TITLE "Tutorial")
|
|
set(DOXY_LAYOUT_PAGES_TITLE2 "Installation")
|
|
set(DOXY_LAYOUT_PAGES_TITLE3 "License")
|
|
|
|
|
|
if (${CUSTOM_DOXYGEN_STYLE})
|
|
set(DOXYGEN_CUSTOM_HTML_FOOTER "${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/html/footer.html")
|
|
set(DOXYGEN_CUSTOM_HTML_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/html/header.html")
|
|
set(DOXYGEN_CUSTOM_HTML_STYLESHEET "${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/css/custom-doxygen.css")
|
|
endif()
|
|
|
|
if(NOT DOXYGEN_FOUND)
|
|
message(WARNING "Doxygen not found - Documentation will not be generated!")
|
|
return()
|
|
endif()
|
|
|
|
string ( REGEX REPLACE ".cfg.in$" ".cfg" DOXYGEN_CONFIG_FILE ${DOXYGEN_CONFIG_FILE_IN} )
|
|
string ( REGEX REPLACE ".html.in$" ".html" DOXYGEN_INDEX_FILE ${DOXYGEN_INDEX_FILE_IN} )
|
|
string ( REGEX REPLACE ".xml.in$" ".xml" DOXYGEN_LAYOUT_FILE ${DOXYGEN_LAYOUT_FILE_IN} )
|
|
string ( REGEX REPLACE "[^\\/]*/(.*)" "\\1" DOXYGEN_LAYOUT_FILE "${DOXYGEN_LAYOUT_FILE}")
|
|
|
|
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE_IN})
|
|
message(WARNING "Doxygen configuration file not found - Documentation will not be generated!")
|
|
return()
|
|
endif()
|
|
|
|
# modify the doxygen file, i.e. substitute the variables with values
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CONFIG_FILE})
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_LAYOUT_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_LAYOUT_FILE})
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_INDEX_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_INDEX_FILE})
|
|
# copy our shortcut html file (this 'index.html' will call itself the 'index.html' from doxygen,
|
|
# but this file is hard to locate in the big doxygen output directory)
|
|
#file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/index.html DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY})
|
|
|
|
if (${CUSTOM_DOXYGEN_STYLE})
|
|
#fonts
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/fonts/ptsans_regular_macroman DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}/fonts)
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/fonts/source_code_pro_regular DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}/fonts)
|
|
|
|
|
|
#bootstrap
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/3rd-party/bootstrap-3.3.2/css/bootstrap.min.css DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}/bootstrap/css)
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/3rd-party/bootstrap-3.3.2/js/bootstrap.min.js DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}/bootstrap/js)
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/css/custom-bootstrap.css DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
#jquery
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/3rd-party/jquery-2.1.3/jquery.min.js DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
#the connection between the doxygen style and the bootstrap style
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/js/doxy-boot.js DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-customization/img/favicon.ico DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
endif()
|
|
|
|
#########################################################################################
|
|
|
|
add_custom_target(doc ALL
|
|
COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CONFIG_FILE}"
|
|
WORKING_DIRECTORY "${DOXYGEN_OUTPUT_DIRECTORY}"
|
|
COMMENT "Building documentation...")
|
|
|
|
set_target_properties(doc PROPERTIES FOLDER "Documentation")
|
|
|
|
install(DIRECTORY "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}"
|
|
DESTINATION "${DOXYGEN_DOC_INSTALL_DIR}"
|
|
PATTERN "*.*"
|
|
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
|
|
|
|
install(FILES "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_INDEX_FILE}"
|
|
DESTINATION "${DOXYGEN_DOC_INSTALL_DIR}"
|
|
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ)
|
|
|
|
#########################################################################################
|
|
|
|
if (BUILD_WEBSITE_DOCU)
|
|
set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/doc_website")
|
|
set(DOXYGEN_CUSTOM_HTML_FOOTER "${CMAKE_CURRENT_SOURCE_DIR}/doxygen_website_customization/html/footer.html")
|
|
set(DOXYGEN_CUSTOM_HTML_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/doxygen_website_customization/html/header.html")
|
|
set(DOXYGEN_CUSTOM_HTML_STYLESHEET "${CMAKE_CURRENT_SOURCE_DIR}/doxygen_website_customization/css/custom-doxygen.css")
|
|
set(DOXYGEN_CUSTOM_HTML_DIR "master")
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CONFIG_FILE})
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_LAYOUT_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_LAYOUT_FILE})
|
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_INDEX_FILE_IN} ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_INDEX_FILE})
|
|
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_website_customization/css/custom-bootstrap.css DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_website_customization/js/doxy-boot.js DESTINATION ${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR})
|
|
|
|
add_custom_target(doc_website ALL
|
|
COMMAND "${DOXYGEN_EXECUTABLE}" "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CONFIG_FILE}"
|
|
WORKING_DIRECTORY "${DOXYGEN_OUTPUT_DIRECTORY}"
|
|
COMMENT "Building documentation...")
|
|
|
|
set_target_properties(doc_website PROPERTIES FOLDER "Documentation")
|
|
endif()
|
|
|
|
#########################################################################################
|