# -------------------- Documentation ---------------- # check for Emacs since the documentation is writen in org-mode find_program(EMACS emacs) # check for LaTeX find_package(LATEX COMPONENTS PDFLATEX) # check for pygmentize find_program(PYGMENTIZE pygmentize) # check for gnuplot find_package(Gnuplot) add_custom_target(userdoc) add_custom_target(doc DEPENDS userdoc) if (EMACS AND GNUPLOT_FOUND) add_custom_command( OUTPUT "${PUGS_BINARY_DIR}/doc" COMMAND ${CMAKE_COMMAND} -E make_directory "${PUGS_BINARY_DIR}/doc" ) add_custom_target(pugsdoc-dir DEPENDS "${PUGS_BINARY_DIR}/doc") set(ORG_GENERATOR_FILES "${PUGS_SOURCE_DIR}/doc/lisp/build-doc-config.el" "${PUGS_SOURCE_DIR}/doc/lisp/share/pugs.el" "${PUGS_SOURCE_DIR}/doc/lisp/share/ob-pugs.el" "${PUGS_SOURCE_DIR}/doc/lisp/share/ob-pugs-error.el" ) add_custom_command( COMMENT "Check Emacs packages for documentation building" OUTPUT "${PUGS_SOURCE_DIR}/doc/lisp/elpa" COMMAND ${CMAKE_COMMAND} -E env PUGS=${PUGS_BINARY_DIR}/pugs HOME=${PUGS_SOURCE_DIR}/doc/lisp PUGS_SOURCE_DIR=${PUGS_SOURCE_DIR} PUGS_BINARY_DIR=${PUGS_BINARY_DIR} ${EMACS} -Q --script ${PUGS_SOURCE_DIR}/doc/lisp/build-doc-config.el DEPENDS ${ORG_GENERATOR_FILES} ) add_custom_target(pugsdoc-download-elpa DEPENDS "${PUGS_SOURCE_DIR}/doc/lisp/elpa") add_custom_command( OUTPUT "${PUGS_BINARY_DIR}/doc/userdoc.html" COMMAND ${CMAKE_COMMAND} -E env PUGS=${PUGS_BINARY_DIR}/pugs HOME=${PUGS_SOURCE_DIR}/doc/lisp PUGS_SOURCE_DIR=${PUGS_SOURCE_DIR} PUGS_BINARY_DIR=${PUGS_BINARY_DIR} ${EMACS} -Q --script ${PUGS_SOURCE_DIR}/doc/lisp/userdoc-html.el DEPENDS "${PUGS_SOURCE_DIR}/doc/userdoc.org" "${PUGS_SOURCE_DIR}/doc/lisp/userdoc-html.el" pugs pugsdoc-dir pugsdoc-download-elpa ${ORG_GENERATOR_FILES} WORKING_DIRECTORY ${PUGS_BINARY_DIR}/doc COMMENT "Building user documentation in doc/userdoc.html" VERBATIM) add_custom_target(userdoc-html DEPENDS pugsdoc-dir "${PUGS_BINARY_DIR}/doc/userdoc.html") add_dependencies(userdoc userdoc-html) if (LATEX_PDFLATEX_FOUND AND PYGMENTIZE) add_custom_command( OUTPUT "${PUGS_BINARY_DIR}/doc/userdoc.pdf" COMMAND ${CMAKE_COMMAND} -E env PUGS=${PUGS_BINARY_DIR}/pugs HOME=${PUGS_SOURCE_DIR}/doc/lisp PUGS_SOURCE_DIR=${PUGS_SOURCE_DIR} PUGS_BINARY_DIR=${PUGS_BINARY_DIR} ${EMACS} -Q --script ${PUGS_SOURCE_DIR}/doc/lisp/userdoc-pdf.el DEPENDS "${PUGS_SOURCE_DIR}/doc/userdoc.org" "${PUGS_SOURCE_DIR}/doc/lisp/userdoc-pdf.el" "${PUGS_SOURCE_DIR}/tools/pgs-pygments.sh" "${PUGS_SOURCE_DIR}/tools/pgs-pygments.py" pugs pugsdoc-dir pugsdoc-download-elpa ${ORG_GENERATOR_FILES} WORKING_DIRECTORY ${PUGS_BINARY_DIR}/doc COMMENT "Building user documentation in doc/userdoc.pdf" VERBATIM) add_custom_target(userdoc-pdf DEPENDS pugsdoc-dir "${PUGS_BINARY_DIR}/doc/userdoc.pdf" ) add_dependencies(userdoc userdoc-pdf) else() if (NOT LATEX_PDFLATEX_FOUND) add_custom_target(userdoc-missing-latex COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --no-newline "Cannot build pdf documentation: " COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "pdflatex missing") add_dependencies(userdoc userdoc-missing-latex) endif() if (NOT PIGMENTIZE_FOUND) add_custom_target(userdoc-missing-pygmentize COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --no-newline "Cannot build pdf documentation: " COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "pygmentize missing") add_dependencies(userdoc userdoc-missing-pygmentize) endif() endif() else() if (NOT EMACS) add_custom_target(userdoc-missing-emacs COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --no-newline "Cannot build documentation: " COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "emacs missing") add_dependencies(userdoc userdoc-missing-emacs) endif() if (NOT GNUPLOT_FOUND) add_custom_target(userdoc-missing-gnuplot COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --no-newline "Cannot build documentation: " COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --red --bold "gnuplot missing") add_dependencies(userdoc userdoc-missing-gnuplot) endif() endif() add_dependencies(doc userdoc)