#
#
find_package(Doxygen)

add_subdirectory(Common)

if(DOXYGEN_FOUND)
  #----------------------------------------------------------------------
  #----------------------------------------------------------------------
  if ( EXISTS ${CMAKE_SOURCE_DIR}/../.gitlab-ci.yml )
    file(READ ${CMAKE_SOURCE_DIR}/../.gitlab-ci.yml _SRC)
  elseif ( EXISTS ${CMAKE_SOURCE_DIR}/.gitlab-ci.yml )
    file(READ ${CMAKE_SOURCE_DIR}/.gitlab-ci.yml _SRC)
  endif( )
  if ( EXISTS ${CMAKE_SOURCE_DIR}/../.gitlab-ci-local )
    file( GLOB GLOB_YML ${CMAKE_SOURCE_DIR}/../.gitlab-ci-local/*.yml )
  elseif ( EXISTS ${CMAKE_SOURCE_DIR}/.gitlab-ci-local )
    file( GLOB GLOB_YML ${CMAKE_SOURCE_DIR}/.gitlab-ci-local/*.yml )
  endif( )
  if ( GLOB_YML )
    foreach( filename ${GLOB_YML} )
      file( READ ${filename} _tmp )
      set( _SRC "${_SRC}\n${_tmp}" )
    endforeach( )
  endif( )
  if ( _SRC )
    string(REGEX MATCHALL "nds2-client-verify:([^:]*):" OS_DOCKER_TARGETS ${_SRC})
    string(REGEX REPLACE "nds2-client-verify:([^:]*):" "<li>\\1</li>" OS_DOCKER_TARGETS ${OS_DOCKER_TARGETS})
  endif( )
  set(main_page ${CMAKE_BINARY_DIR}/doc/Common)
  configure_file(
      ${CMAKE_CURRENT_SOURCE_DIR}/DeveloperMainPage.txt.in
      ${CMAKE_CURRENT_BINARY_DIR}/DeveloperMainPage.txt
      @ONLY )
  #--------------------------------------------------------------------
  # User documentation
  #--------------------------------------------------------------------
  cx_target_manual(
    TARGET ClientUser
    OUTPUT_NAME User
    TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/NDSClientDoc.cfg.in
    ENABLE_SECTIONS "USER_SECTION"
    INPUT
      ${CMAKE_SOURCE_DIR}/src/libndscxx/module
    EXCLUDE_SYMBOLS
      *::detail
      *::detail::*
      NDS_swig::*
    HIDE_UNDOC_MEMBERS
    HIDE_UNDOC_CLASSES
    EXCLUDE ${PROJECT_SOURCE_DIR}/swig ${PROJECT_SOURCE_DIR}/tests ${PROJECT_SOURCE_DIR}/doc
    EXCLUDE_PATTERNS */sqlite3.* */test/* */CMakeLists.txt
    )
  cx_target_manual(
    TARGET ClientDeveloper
    OUTPUT_NAME Developer
    TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/NDSClientDoc.cfg.in
    ENABLE_SECTIONS
      "DEVELOPER_SECTION"
      "ADMIN_SECTION"
      "USER_SECTION"
    INPUT
      ${CMAKE_CURRENT_BINARY_DIR}/DeveloperMainPage.txt
      ${CMAKE_SOURCE_DIR}
    EXTRACT_ALL
    EXTRACT_PRIVATE
    EXTRACT_STATIC
    EXTRACT_LOCAL_CLASSES
    EXTRACT_LOCAL_METHODS
    EXTRACT_ANON_NSPACES
    EXCLUDE ${PROJECT_SOURCE_DIR}/swig ${PROJECT_SOURCE_DIR}/tests
    EXCLUDE_PATTERNS */test/* */CMakeLists.txt */catch.hpp
    )
  cx_target_manual(
    TARGET ClientAdministrator
    OUTPUT_NAME Administrator
    TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/NDSClientDoc.cfg.in
    ENABLE_SECTIONS "ADMIN_SECTION"
    INPUT
      ${CMAKE_SOURCE_DIR}
    EXCLUDE_SYMBOLS
      nds_impl::*
      NDS
      NDS::*
      NDS_swig
      NDS_swig::*
      chan_req_
      daq_
      daq_block_header
      daq_channel_
      daq_channel_group_
      daq_listen_t
      daq_private_
      signal_conv1
      signal_conv_
      trench_struct
    HIDE_UNDOC_MEMBERS
    HIDE_UNDOC_CLASSES
    EXCLUDE ${PROJECT_SOURCE_DIR}/swig ${PROJECT_SOURCE_DIR}/tests
    EXCLUDE_PATTERNS */test/* */CMakeLists.txt */catch.hpp
    )
endif(DOXYGEN_FOUND)
