# Set Doxygen module options
set(DOXYGEN_GENERATE_HTML YES)
set(DOXYGEN_GENERATE_LATEX NO)
set(DOXYGEN_QUIET YES)
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
set(DOXYGEN_WARN_NO_PARAMDOC NO)

if(PROXSUITE_DOXYGEN_USE_MATHJAX)
  set(DOXYGEN_USE_MATHJAX YES)
endif()

# Set Doxygen options
set(
  DOXYGEN_FILE_PATTERNS
  *.cc
  *.cpp
  *.h
  *.hpp
  *.dox
  *.md
  *.py
)
set(DOXYGEN_RECURSIVE YES)
set(DOXYGEN_SORT_MEMBER_DOCS NO)
set(DOXYGEN_SORT_BRIEF_DOCS NO)
set(DOXYGEN_SORT_MEMBERS_CTORS_1ST YES)
set(DOXYGEN_GENERATE_TESTLIST YES)
set(DOXYGEN_EXTRACT_STATIC YES)
set(DOXYGEN_EXTRACT_PRIV_VIRTUAL YES)
set(DOXYGEN_ENABLE_PREPROCESSING YES)
set(DOXYGEN_MACRO_EXPANSION YES)
set(DOXYGEN_EXPAND_ONLY_PREDEF YES)
set(DOXYGEN_PREDEFINED "EIGEN_MAKE_ALIGNED_OPERATOR_NEW")
set(DOXYGEN_FULL_PATH_NAMES YES)
set(DOXYGEN_EXCLUDE_SYMBOLS "*::internal, internal::*, *::internal::*")
set(DOXYGEN_EXCLUDE_PATTERNS "*.hxx")
set(DOXYGEN_INCLUDE_PATH ${PROJECT_SOURCE_DIR}/include)
set(DOXYGEN_EXCLUDE_SYMLINKS YES)
set(DOXYGEN_EXAMPLE_PATH ${PROJECT_SOURCE_DIR}/examples)
set(DOXYGEN_EXTRA_PACKAGES "{bm stmaryrd amsmath amssymb}")
set(DOXYGEN_GENERATE_TREEVIEW YES)
set(DOXYGEN_VERBATIM_HEADERS YES)
set(DOXYGEN_HTML_HEADER ${PROJECT_SOURCE_DIR}/doc/header.html)
set(DOXYGEN_TAGFILES "")
set(DOXYGEN_SHOW_FILES YES)
set(DOXYGEN_SHOW_NAMESPACES YES)
set(DOXYGEN_MATHJAX_FORMAT SVG)
set(DOXYGEN_SOURCE_BROWSER YES)
set(DOXYGEN_ALPHABETICAL_INDEX YES)
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE ${PROJECT_SOURCE_DIR}/doc/1-Overview.md)
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
set(DOXYGEN_HAVE_DOT YES)
set(DOXYGEN_DOT_IMAGE_FORMAT SVG)
set(DOXYGEN_DOT_TRANSPARENT YES)
set(DOXYGEN_HTML_OUTPUT html)

# Configure Doxygen
doxygen_add_docs(
  proxsuite-doc
  ALL
  ${PROJECT_SOURCE_DIR}/doc
  ${PROJECT_SOURCE_DIR}/include
  ${PROJECT_SOURCE_DIR}/bindings/python/proxsuite
  COMMENT "Generating API documentation with Doxygen"
)

if(INSTALL_DOCUMENTATION)
  install(
    DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_HTML_OUTPUT}
    DESTINATION ${CMAKE_INSTALL_DOCDIR}
    COMPONENT doc
  )
endif()
