diff options
author | Peter Wu <peter@lekensteyn.nl> | 2017-02-25 18:14:57 +0100 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2017-03-21 14:49:53 +0100 |
commit | 898b012a9bf388590c4be7f526815b5ab74feca1 (patch) | |
tree | 5b8865e44a8d4a9c779a55b0667e26e20e6b89b1 /docs/libcurl | |
parent | 84a226a30b2d43f8fb0da996152a8376f1e21d8e (diff) |
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
Diffstat (limited to 'docs/libcurl')
-rw-r--r-- | docs/libcurl/CMakeLists.txt | 55 | ||||
-rw-r--r-- | docs/libcurl/opts/CMakeLists.txt | 12 |
2 files changed, 67 insertions, 0 deletions
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) |