cmake_minimum_required (VERSION 3.26) project (HDF5_DOXYGEN C) #----------------------------------------------------------------------------- # Option to build documentation #----------------------------------------------------------------------------- string (TIMESTAMP HDF5_PACKAGE_DATE_STRING "%Y-%m-%d") if (DOXYGEN_FOUND) set (DOXYGEN_PACKAGE ${HDF5_PACKAGE_NAME}) # For release builds use the version from the package # set (DOXYGEN_VERSION_STRING ${HDF5_PACKAGE_VERSION_STRING}) set (DOXYGEN_VERSION_STRING "Last Updated on ${HDF5_PACKAGE_DATE_STRING}") set (DOXYGEN_DIR ${HDF5_DOXYGEN_DIR}) set (DOXYGEN_INCLUDE_ALIASES_PATH ${HDF5_DOXYGEN_DIR}) set (DOXYGEN_INCLUDE_ALIASES aliases) set (DOXYGEN_VERBATIM_VARS DOXYGEN_INCLUDE_ALIASES) set (DOXYGEN_PROJECT_LOGO ${HDF5_DOXYGEN_DIR}/img/HDFG-logo.png) set (DOXYGEN_PROJECT_BRIEF "The HDF5 Field Guide") set (DOXYGEN_INPUT_DIRECTORY "${HDF5_SOURCE_DIR} ${HDF5_DOXYGEN_DIR}/dox ${HDF5_GENERATED_SOURCE_DIR}") set (DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES) set (DOXYGEN_MACRO_EXPANSION YES) set (DOXYGEN_OUTPUT_DIRECTORY ${HDF5_BINARY_DIR}/hdf5lib_docs) set (DOXYGEN_EXAMPLES_DIRECTORY "${HDF5_DOXYGEN_DIR}/dox/cookbook ${HDF5_DOXYGEN_DIR}/examples ${HDF5_SRC_DIR} ${HDF5_SOURCE_DIR}/release_docs ${HDF5_TEST_SRC_DIR}") set (DOXYGEN_LAYOUT_FILE ${HDF5_DOXYGEN_DIR}/hdf5doxy_layout.xml) set (DOXYGEN_HTML_HEADER ${HDF5_DOXYGEN_DIR}/hdf5_header.html) set (DOXYGEN_HTML_FOOTER ${HDF5_DOXYGEN_DIR}/hdf5_footer.html) set (DOXYGEN_HTML_EXTRA_STYLESHEET "${HDF5_DOXYGEN_DIR}/hdf5doxy.css ${HDF5_DOXYGEN_DIR}/doxygen-awesome.css") set (DOXYGEN_HTML_EXTRA_FILES "${HDF5_DOXYGEN_DIR}/hdf5_navtree_hacks.js ${HDF5_DOXYGEN_DIR}/doxygen-awesome-tabs.js") set (DOXYGEN_TAG_FILE ${HDF5_BINARY_DIR}/hdf5.tag) set (DOXYGEN_SERVER_BASED_SEARCH NO) set (DOXYGEN_EXTERNAL_SEARCH NO) set (DOXYGEN_SEARCHENGINE_URL) set (DOXYGEN_STRIP_FROM_PATH ${HDF5_SOURCE_DIR}) set (DOXYGEN_STRIP_FROM_INC_PATH ${HDF5_SOURCE_DIR}) # Versioned API macros are added to PREDEFINED to give Doxygen a fixed # expansion and prevent it from discovering the #defines in H5version.h, # which otherwise causes "multiple @param documentation sections" warnings # when the macro documentation (\def) and the function documentation both # get associated with the same underlying function. # # The versioned API macros are auto-generated from src/H5vers.txt by the # bin/make_vers script, which creates doxygen/H5version_doxygen.cmake. # This ensures the Doxygen configuration stays synchronized with the # actual default versions defined in src/H5version.h. set (_doxygen_predefined_entries H5_HAVE_DIRECT H5_HAVE_LIBHDFS H5_HAVE_MAP_API H5_HAVE_PARALLEL H5_HAVE_ROS3_VFD H5_DOXYGEN H5_HAVE_SUBFILING_VFD H5_HAVE_IOC_VFD H5_HAVE_MIRROR_VFD "H5std_string=std::string" "H5G_link_t=H5L_type_t" ) # Load auto-generated versioned API macros from doxygen/H5version_doxygen.cmake include(${HDF5_DOXYGEN_DIR}/H5version_doxygen.cmake) list (JOIN _doxygen_predefined_entries " " DOXYGEN_PREDEFINED) set (DOXYGEN_WARN_AS_ERROR ${HDF5_DOXY_WARNINGS}) # This configure and individual custom targets work together # Replace variables inside @@ with the current values configure_file (${HDF5_DOXYGEN_DIR}/Doxyfile.in ${HDF5_BINARY_DIR}/Doxyfile @ONLY) install ( DIRECTORY ${HDF5_BINARY_DIR}/hdf5lib_docs/html DESTINATION ${HDF5_INSTALL_DOC_DIR} COMPONENT hdfdocuments ) install ( FILES ${HDF5_BINARY_DIR}/hdf5.tag DESTINATION ${HDF5_INSTALL_DOC_DIR} COMPONENT hdfdocuments ) if (NOT TARGET doxygen) add_custom_target (doxygen) endif () endif ()