##*************************************************************************##
##  CUBE        http://www.scalasca.org/                                   ##
##*************************************************************************##
##  Copyright (c) 2024                                                     ##
##  Forschungszentrum Juelich GmbH, Juelich Supercomputing Centre          ##
##                                                                         ##
##  This software may be modified and distributed under the terms of       ##
##  a BSD-style license.  See the COPYING file in the package base         ##
##  directory for details.                                                 ##
##*************************************************************************##


#------------------------------------------------------------------------------
#--- create target "guide" -> ${DOC_ROOT}/CubeUserGuide.pdf and ${DOC_ROOT}/guide
#------------------------------------------------------------------------------

#--- generate Doxyfile from templates -------------------------------------
set(DOXYFILE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/doxygen-guide.cfg.in
                ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)


# remove path, which is set in Doxyfile (used by autoconf)
file(READ ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile CONTENT)
string(REGEX REPLACE "HTML_OUTPUT[^\n]*/html" "" CONTENT "${CONTENT}")
string(REGEX REPLACE "LATEX_OUTPUT[^\n]*/latex" "" CONTENT "${CONTENT}")
string(REGEX REPLACE "@INCLUDE =[^=]*time.cfg" "" CONTENT "${CONTENT}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile "${CONTENT}")

#--- execute doxygen ------------------------------------------------------

add_custom_command(OUTPUT ./html/index.html ./latex/refman.tex
         COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE} > doxygen.log 2>&1
         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
         COMMENT "Generating API documentation with Doxygen (see ${CMAKE_CURRENT_BINARY_DIR}/doxygen.log)"
         DEPENDS ${DOXYFILE} userguide.dox mainpage.dox appendix.dox
)

#--- build pdf using pdflatex ----------------------------------------------

set ( LATEX_DIR latex )

# configure main latex file which has been generated by doxygen
add_custom_command(OUTPUT ${LATEX_DIR}/CubeUserGuide.tex
    COMMAND sed "-e '/chapter{Cube G\\\\+U\\\\+I User Guide}/{N;d;}'" ${LATEX_DIR}/refman.tex > ${LATEX_DIR}/CubeUserGuide.tex
    DEPENDS ${LATEX_DIR}/refman.tex
)

#--- copy/configure files for front and back page
set ( COMMON ${CMAKE_SOURCE_DIR}/doc/doxygen-common/ )
file(COPY ${COMMON}/imgsrc/frontcover.tex DESTINATION ${LATEX_DIR} )
file(COPY ${COMMON}/imgsrc/backcover.tex DESTINATION ${LATEX_DIR} )
file(COPY ${COMMON}/imgsrc/CubeLogo.pdf DESTINATION ${LATEX_DIR} )
file(COPY ${COMMON}/imgsrc/FZJ_LogoInvert.pdf DESTINATION ${LATEX_DIR} )
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/title.tex DESTINATION ${LATEX_DIR} )
set ( HAVE_CORPORATE_STY "%%" ) # todo
configure_file(${COMMON}/imgsrc/corporate.tex.in ${LATEX_DIR}/corporate.tex @ONLY)

#--- build latex
pdflatex( ${LATEX_DIR}/frontcover.tex )
pdflatex( ${LATEX_DIR}/backcover.tex )
pdflatex( ${LATEX_DIR}/CubeUserGuide.tex
          DEPENDS ${LATEX_DIR}/frontcover.pdf ${LATEX_DIR}/backcover.pdf )

#--- create html tarball
add_custom_command(OUTPUT ${DOC_ROOT}/guide-html.tar.gz
         WORKING_DIRECTORY ..
         DEPENDS ./html/index.html
         COMMAND ${CMAKE_COMMAND} -E tar czf ${DOC_ROOT}/guide-html.tar.gz guide/html )

#--- generate results and copy them to local documentation directory ${DOC_ROOT}
add_custom_target( guide
                   COMMAND ${CMAKE_COMMAND} -E copy ${LATEX_DIR}/CubeUserGuide.pdf ${DOC_ROOT}
                   DEPENDS ${DOC_ROOT}/guide-html.tar.gz ${LATEX_DIR}/CubeUserGuide.pdf )
