# build component extension
component_extension(NEEDS_LIBXML2
                    NEEDS_TOOL pml lml
                    INCLUDE_DIRECTORIES loads ${CMAKE_CURRENT_BINARY_DIR}/loads
                    DEFINES COMPILE_PHYSICALMODEL_COMPONENT_API
                    HEADERS_TO_INSTALL  PMComponentAPI.h
                                        AtomDC.h
                                        PMManagerDC.h
                                        ComponentDC.h
                                        MultiComponentDC.h
                                        StructuralComponentDC.h
                                        loads/AnimationMotorAddon.h
                                        loads/LoadsManager.h
                                        loads/Decoration.h
                                        loads/AtomDecoration.h
                                        loads/AnyDecoration.h
)


if(COMPONENT_PHYSICALMODEL)
  # for animation motor export
  #add_definitions(-DCOMPILE_PHYSICALMODEL_COMPONENT_API)

#-------------------
# api documentation
#-------------------
# TODO include this settings in the doxygen API doc generation of camitk set(COMPONENT_PHYSICALMODEL_GENERATE_API_DOC FALSE CACHE BOOL "generate api documentation using doxygen for physical model component")
 if(COMPONENT_PHYSICALMODEL_GENERATE_API_DOC)
  include(FindDoxygen)
  if (DOXYGEN)

    option(COMPONENT_PHYSICALMODEL_DOC_WITH_STATIC "Create documentation for static members" ON)
    option(COMPONENT_PHYSICALMODEL_DOC_WITH_PRIVATE "Create documentation for private members" ON)
    option(COMPONENT_PHYSICALMODEL_DOC_WITH_LOCAL "Create documentation for local members" ON)
    option(COMPONENT_PHYSICALMODEL_DOC_WITH_INTERNAL "Create documentation for internal features" ON)

    mark_as_advanced(
      COMPONENT_PHYSICALMODEL_DOC_WITH_PRIVATE
      COMPONENT_PHYSICALMODEL_DOC_WITH_STATIC
      COMPONENT_PHYSICALMODEL_DOC_WITH_LOCAL
      COMPONENT_PHYSICALMODEL_DOC_WITH_INTERNAL
    )

    if (COMPONENT_PHYSICALMODEL_DOC_WITH_PRIVATE)
      set(DOXYGEN_EXTRACT_PRIVATE YES)
    else ()
      set(DOXYGEN_EXTRACT_PRIVATE NO)
    endif ()

    if (COMPONENT_PHYSICALMODEL_DOC_WITH_STATIC)
      set(DOXYGEN_EXTRACT_STATIC YES)
    else ()
      set(DOXYGEN_EXTRACT_STATIC NO)
    endif ()

    if (COMPONENT_PHYSICALMODEL_DOC_WITH_LOCAL)
      set(DOXYGEN_EXTRACT_LOCAL YES)
    else ()
      set(DOXYGEN_EXTRACT_LOCAL NO)
    endif ()

    if (COMPONENT_PHYSICALMODEL_DOC_WITH_INTERNAL)
      set(DOXYGEN_EXTRACT_INTERNAL YES)
    else ()
      set(DOXYGEN_EXTRACT_INTERNAL NO)
    endif ()

    if (DOT)
      set(HAVE_DOT YES)
    else ()
      set(HAVE_DOT NO)
    endif ()

    set(DOXYGEN_LANGUAGE "English" CACHE STRING "Language used by doxygen")
    mark_as_advanced(DOXYGEN_LANGUAGE)

    set(DOXYGEN_SOURCE_DIR ${CURRENT_SOURCE_DIR}
      ${CURRENT_SOURCE_DIR}/loads
    )

    set(DOXYGEN_OUTPUT_DIR ${CURRENT_SOURCE_DIR}/api-doc)
    message("----> Documenation output dir is ${DOXYGEN_OUTPUT_DIR}")
    string(REGEX REPLACE ";" " " DOXYGEN_INPUT_LIST "${DOXYGEN_SOURCE_DIR}")

    configure_file(doxygen.conf.in ${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf)
#set(HTML_TARGET ${DOXYGEN_OUTPUT_DIR}/html/index.html)
    add_custom_target(api-doc ALL
          ${DOXYGEN} ${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf
          DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen.conf)

    set_target_properties(api-doc PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1)

  else (DOXYGEN)
      message(STATUS "WARNING: Doxygen not found - API documentation and reference manual will not be created")
  endif ()
 endif()
endif()
