From 898b012a9bf388590c4be7f526815b5ab74feca1 Mon Sep 17 00:00:00 2001 From: Peter Wu Date: Sat, 25 Feb 2017 18:14:57 +0100 Subject: cmake: add support for building HTML and PDF docs Note that for some reason there is this warning (that also exists with autotools, added since curl-7_15_1-94-ga718cb05f): docs/libcurl/curl_multi_socket_all.3:1: can't open `man3/curl_multi_socket.3': No such file or directory Additionally, adjust the roffit --mandir option to support creating links when doing out-of-tree builds. Ref: https://github.com/curl/curl/pull/1288 --- docs/libcurl/CMakeLists.txt | 55 ++++++++++++++++++++++++++++++++++++++++ docs/libcurl/opts/CMakeLists.txt | 12 +++++++++ 2 files changed, 67 insertions(+) create mode 100644 docs/libcurl/CMakeLists.txt create mode 100644 docs/libcurl/opts/CMakeLists.txt (limited to 'docs/libcurl') diff --git a/docs/libcurl/CMakeLists.txt b/docs/libcurl/CMakeLists.txt new file mode 100644 index 000000000..bdbcad45f --- /dev/null +++ b/docs/libcurl/CMakeLists.txt @@ -0,0 +1,55 @@ +# Load man_MANS from shared file +transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") +include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") + +function(add_manual_pages _listname) + foreach(_file IN LISTS ${_listname}) + if(_file STREQUAL "libcurl-symbols.3") + # Special case, an auto-generated file. + set(_srcfile "${CMAKE_CURRENT_BINARY_DIR}/${_file}") + else() + set(_srcfile "${CMAKE_CURRENT_SOURCE_DIR}/${_file}") + endif() + + string(REPLACE ".3" ".html" _htmlfile "${CMAKE_CURRENT_BINARY_DIR}/${_file}") + add_custom_command(OUTPUT "${_htmlfile}" + COMMAND roffit "--mandir=${CMAKE_CURRENT_SOURCE_DIR}" "${_srcfile}" > "${_htmlfile}" + DEPENDS "${_srcfile}" + VERBATIM + ) + + string(REPLACE ".3" ".pdf" _pdffile "${CMAKE_CURRENT_BINARY_DIR}/${_file}") + string(REPLACE ".3" ".ps" _psfile "${CMAKE_CURRENT_BINARY_DIR}/${_file}") + # XXX any reason why groff -Tpdf (for gropdf) is not used? + add_custom_command(OUTPUT "${_pdffile}" + COMMAND groff -Tps -man "${_srcfile}" > "${_psfile}" + COMMAND ps2pdf "${_psfile}" "${_pdffile}" + COMMAND "${CMAKE_COMMAND}" -E remove "${_psfile}" + DEPENDS "${_srcfile}" + #BYPRODUCTS "${_psfile}" + VERBATIM + ) + # "BYPRODUCTS" for add_custom_command requires CMake 3.2. For now hope that + # the temporary files are removed (i.e. the command is not interrupted). + endforeach() +endfunction() + +add_custom_command(OUTPUT libcurl-symbols.3 + COMMAND + "${PERL_EXECUTABLE}" + "${CMAKE_CURRENT_SOURCE_DIR}/mksymbolsmanpage.pl" < + "${CMAKE_CURRENT_SOURCE_DIR}/symbols-in-versions" > libcurl-symbols.3 + DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/symbols-in-versions" + "${CMAKE_CURRENT_SOURCE_DIR}/mksymbolsmanpage.pl" + VERBATIM +) + +add_manual_pages(man_MANS) + +string(REPLACE ".3" ".html" HTMLPAGES "${man_MANS}") +string(REPLACE ".3" ".pdf" PDFPAGES "${man_MANS}") +add_custom_target(html DEPENDS "${HTMLPAGES}") +add_custom_target(pdf DEPENDS "${PDFPAGES}") + +add_subdirectory(opts) diff --git a/docs/libcurl/opts/CMakeLists.txt b/docs/libcurl/opts/CMakeLists.txt new file mode 100644 index 000000000..24c011180 --- /dev/null +++ b/docs/libcurl/opts/CMakeLists.txt @@ -0,0 +1,12 @@ +# Load man_MANS from shared file +transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") +include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") + +add_manual_pages(man_MANS) + +string(REPLACE ".3" ".html" HTMLPAGES "${man_MANS}") +string(REPLACE ".3" ".pdf" PDFPAGES "${man_MANS}") +add_custom_target(opts-html DEPENDS "${HTMLPAGES}") +add_custom_target(opts-pdf DEPENDS "${PDFPAGES}") +add_dependencies(html opts-html) +add_dependencies(pdf opts-pdf) -- cgit v1.2.3