summaryrefslogtreecommitdiff
path: root/doc/CMakeLists.txt
diff options
context:
space:
mode:
authorJohann Klähn <kljohann@gmail.com>2013-01-14 16:23:16 +0100
committerJohann Klähn <kljohann@gmail.com>2013-01-14 21:35:26 +0100
commitc88862fd66489fa8c06d06d3876b2c0f59dff3a5 (patch)
treec6724d47fa3e3d273e6bc1c98647228b84d8c33d /doc/CMakeLists.txt
parentedc272b7a065a41574492a75310b726174e86ec6 (diff)
downloadfork-ledger-c88862fd66489fa8c06d06d3876b2c0f59dff3a5.tar.gz
fork-ledger-c88862fd66489fa8c06d06d3876b2c0f59dff3a5.tar.bz2
fork-ledger-c88862fd66489fa8c06d06d3876b2c0f59dff3a5.zip
convert doc/Makefile to CMake
CMake will build the pdf version of the manual if texi2pdf is installed. It will be installed to DOCDIR/ledger{,3}.pdf, for example /usr/local/share/ledger/ledger3.pdf. Also, the man page will be installed to MANDIR/man1/ledger.1 The option BUILD_DOCS is now on by default. A new option BUILD_WEB_DOCS is used to toggle the generation of the html version of the manual and the man page (off by default). All this is added to the 'doc' make target.
Diffstat (limited to 'doc/CMakeLists.txt')
-rw-r--r--doc/CMakeLists.txt73
1 files changed, 73 insertions, 0 deletions
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index e69de29b..b50c8696 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -0,0 +1,73 @@
+set(info_files ledger.texi ledger3.texi)
+
+find_program(MAKEINFO makeinfo)
+find_program(TEXI2PDF texi2pdf)
+find_program(MAN2HTML man2html)
+
+########################################################################
+
+foreach(file ${info_files})
+ get_filename_component(file_base ${file} NAME_WE)
+ if(BUILD_WEB_DOCS)
+ if(NOT MAKEINFO)
+ message(FATAL_ERROR "Could not find makeinfo. HTML version of documentation cannot be built.")
+ endif()
+
+ add_custom_command(OUTPUT ${file_base}.html
+ COMMAND makeinfo --force --html --no-split -o ${file_base}.html ${file}
+ DEPENDS ${file}
+ VERBATIM)
+ list(APPEND ledger_doc_files ${file_base}.html)
+ endif(BUILD_WEB_DOCS)
+
+ if(NOT TEXI2PDF)
+ mesage(WARNING "Could not find texi2pdf. PDF version of documentation will not be built.")
+ else()
+ get_filename_component(file_base ${file} NAME_WE)
+ add_custom_command(OUTPUT ${file_base}.pdf
+ COMMAND texi2pdf -b -q ${file}
+ COMMAND rm -f ${file_base}.aux ${file_base}.cp ${file_base}.fn ${file_base}.ky ${file_base}.log ${file_base}.pg ${file_base}.toc ${file_base}.tp ${file_base}.vr
+ DEPENDS ${file}
+ VERBATIM)
+ list(APPEND ledger_doc_files ${file_base}.pdf)
+ endif()
+endforeach()
+
+########################################################################
+
+if(BUILD_WEB_DOCS)
+ include(FindUnixCommands)
+ if(NOT BASH)
+ message(FATAL_ERROR "Could not find bash. Unable to build documentation.")
+ endif()
+ if(NOT MAN2HTML)
+ message(FATAL_ERROR "Could not find man2html. HTML version of man page cannot be built.")
+ endif()
+
+ add_custom_command(OUTPUT ledger.1.html
+ COMMAND ${BASH} -c "man2html ledger.1 | tail -n+3 > ledger.1.html"
+ DEPENDS ledger.1
+ VERBATIM)
+ list(APPEND ledger_doc_files ledger.1.html)
+endif(BUILD_WEB_DOCS)
+
+########################################################################
+
+add_custom_target(doc ALL DEPENDS ${ledger_doc_files})
+
+########################################################################
+
+include(GNUInstallDirs)
+
+if(CMAKE_INSTALL_MANDIR)
+ install(FILES ledger.1
+ DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT doc)
+endif(CMAKE_INSTALL_MANDIR)
+
+if(CMAKE_INSTALL_DOCDIR)
+ foreach(file ${info_files})
+ get_filename_component(file_base ${file} NAME_WE)
+ install(FILES ${file_base}.pdf
+ DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc OPTIONAL)
+ endforeach()
+endif(CMAKE_INSTALL_DOCDIR)