find_program(SPHINXBUILD NAMES sphinx-build  REQUIRED)
message(STATUS "SHERPA Manual: SPHINXBUILD=${SPHINXBUILD}")
find_package(LATEX COMPONENTS PDFLATEX MAKEINDEX REQUIRED)
message(STATUS "SHERPA Manual: LATEX_FOUND=${LATEX_FOUND} PDFLATEX_COMPILER=${PDFLATEX_COMPILER} MAKEINDEX_COMPILER=${MAKEINDEX_COMPILER}")
find_program(LATEXMK NAMES latexmk  REQUIRED)
message(STATUS "SHERPA Manual: LATEXMK=${LATEXMK}")

file (GLOB_RECURSE MANUALDEPS ${CMAKE_CURRENT_SOURCE_DIR}/source/manual/*.rst)

set (sphinx_options  "-Drelease=${SHERPA_VERSION}")
add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/completion.index  ${CMAKE_CURRENT_BINARY_DIR}/options.index
       DEPENDS ${MANUALDEPS}
       COMMAND ${SPHINXBUILD} -M completion  ${CMAKE_CURRENT_SOURCE_DIR}/source . ${sphinx_options}
       COMMAND mv completion/completion.index  .
       COMMAND mv completion/options.index .
       COMMAND rm -r completion
       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       VERBATIM)
add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/Sherpa.1 
       DEPENDS ${MANUALDEPS}
       COMMAND ${SPHINXBUILD} -M man  ${CMAKE_CURRENT_SOURCE_DIR}/source . ${sphinx_options}
       COMMAND mv man/Sherpa.1 .
       COMMAND rm -r man
       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       VERBATIM)
       
add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/sherpamanual_html
       DEPENDS ${MANUALDEPS}
       COMMAND ${SPHINXBUILD} -M html  ${CMAKE_CURRENT_SOURCE_DIR}/source . ${sphinx_options}
       COMMAND rm -rf sherpamanual_html
       COMMAND mv html sherpamanual_html
       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       VERBATIM)

add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.pdf
       DEPENDS ${MANUALDEPS}
       COMMAND ${SPHINXBUILD} -M latexpdf  ${CMAKE_CURRENT_SOURCE_DIR}/source  . ${sphinx_options}
       COMMAND mv latex/sherpamanual.pdf .
       COMMAND mv latex/sherpamanual.fls .
       COMMAND rm -r latex
       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       VERBATIM)

add_custom_command(
       OUTPUT  ${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.info
       DEPENDS ${MANUALDEPS}
       COMMAND ${SPHINXBUILD} -M info  ${CMAKE_CURRENT_SOURCE_DIR}/source  . ${sphinx_options}
       COMMAND mv texinfo/sherpamanual.info .
       COMMAND rm -r texinfo
       WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
       VERBATIM)

install( FILES ${CMAKE_CURRENT_BINARY_DIR}/Sherpa.1  DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 )
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.info DESTINATION ${CMAKE_INSTALL_INFODIR})
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.pdf DESTINATION ${CMAKE_INSTALL_DOCDIR} )

ADD_CUSTOM_TARGET(all-files 
  DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/completion.index  
${CMAKE_CURRENT_BINARY_DIR}/options.index
${CMAKE_CURRENT_BINARY_DIR}/Sherpa.1 
${CMAKE_CURRENT_BINARY_DIR}/sherpamanual_html
${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.pdf
${CMAKE_CURRENT_BINARY_DIR}/sherpamanual.info 
)
ADD_CUSTOM_TARGET(all-formats ALL)
ADD_DEPENDENCIES(all-formats all-files)
set (DATADIR ${CMAKE_INSTALL_DATADIR})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/sherpa-completion.in ${CMAKE_CURRENT_BINARY_DIR}/sherpa-completion @ONLY)

install( FILES
${CMAKE_CURRENT_BINARY_DIR}/completion.index  
${CMAKE_CURRENT_BINARY_DIR}/options.index
${CMAKE_CURRENT_BINARY_DIR}/sherpa-completion
DESTINATION
${CMAKE_INSTALL_DATADIR}/SHERPA-MC
)
