# Copyright: (C) 2009 RobotCub Consortium
# Authors: Paul Fitzpatrick
# CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT

find_package(Doxygen)

if(DOXYGEN_FOUND)
    set(DOX_GENERATE_HTML YES)
    set(DOX_GENERATE_XML NO)

    # Options related to doxygen
    option(IDYNTREE_DOXYGEN_XML "Generate doxygen XML output, for use by SWIG" NO)
    mark_as_advanced(IDYNTREE_DOXYGEN_XML)

    option(IDYNTREE_DOXYGEN_VERBOSE "Generate a verbose HTML output for Doxygen, including call and caller graphs." OFF)
    mark_as_advanced(IDYNTREE_DOXYGEN_VERBOSE)
    set(DOX_VERBOSE NO)
    if(IDYNTREE_DOXYGEN_VERBOSE)
        set(DOX_VERBOSE YES)
    endif()


    if(IDYNTREE_DOXYGEN_XML)
        set(DOX_GENERATE_XML YES)
    endif()
    set(IDYNTREE_DOXYGEN_INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR} CACHE PATH
        "Install directory for iDynTree doxygen documentation")
    mark_as_advanced(IDYNTREE_DOXYGEN_INSTALL_DIR)


    # iDynTree documentation is always verbose now.  It used to be
    # partially stripped of stuff less interesting to end-users.
    set(DOX_EXTRA_DIR src conf doc/spec)
    set(DOX_PATTERNS "*.h *.dox *.cpp *.hpp")
    set(DOX_GENERATE_MAN NO)

    # search dot program
    # for setting the DOT_PATH variable in the Doxyfile
    find_program(DOT_EXECUTABLE dot)

    if( DOT_EXECUTABLE STREQUAL "DOT_EXECUTABLE-NOTFOUND" )
        message(STATUS "dot program not found")
        set(DOT_PATH "")
    else()
        # set the DOT_PATH variable by stripping the name (dot)
        # from the DOT_EXECUTABLE
        string(REGEX REPLACE "dot$" "" DOT_PATH ${DOT_EXECUTABLE})
    endif()

    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
                   ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
    add_custom_target(dox COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)

    set(DOX_GENERATE_HTML NO)
    set(DOX_GENERATE_MAN YES)
    set(DOX_GENERATE_XML NO)
    set(DOX_PATTERNS "cmd_*.dox")
    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
                   ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.man)
    add_custom_target(man COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.man)
endif()
