diff --git a/cmake/modules/InstallationHelper.cmake b/cmake/modules/InstallationHelper.cmake --- a/cmake/modules/InstallationHelper.cmake +++ b/cmake/modules/InstallationHelper.cmake @@ -164,35 +164,29 @@ install_target(${_shared_name} ${FORWARD_EXCLUDE_FROM_ALL}) endfunction() -function(install_manpage TARGET) - set(MAN_DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") +function(install_manpages TARGET) - set(MAN_PAGE "${CMAKE_BINARY_DIR}/doc/man/${TARGET}.1") - add_custom_command( - OUTPUT "${MAN_PAGE}" - COMMENT "Generating man page for ${TARGET}" - COMMAND - "${CMAKE_SOURCE_DIR}/doc/man/gen-manpages.sh" - "$" - "$" - "${MAN_PAGE}" - DEPENDS - bitcoind - "${TARGET}" + define_property(TARGET + PROPERTY MAN_PAGES + BRIEF_DOCS "The man pages associated with the target" + FULL_DOCS "A list of the man pages associated with a target" ) - add_custom_target(gen-manpage-${TARGET} - DEPENDS "${MAN_PAGE}" + + set_property( + TARGET ${TARGET} + APPEND PROPERTY MAN_PAGES ${ARGN} ) + set(MAN_DESTINATION "${CMAKE_INSTALL_MANDIR}/man1") + install( - FILES "${MAN_PAGE}" + FILES "$" DESTINATION "${MAN_DESTINATION}" COMPONENT manpage-${TARGET} EXCLUDE_FROM_ALL ) _add_install_target(manpage-${TARGET} - DEPENDS gen-manpage-${TARGET} EXCLUDE_FROM_ALL ) _add_install_target(manpages diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -2,4 +2,5 @@ configure_file(Doxyfile.cmake.in Doxyfile ESCAPE_QUOTES) +add_subdirectory(man) add_subdirectory(rpc) diff --git a/doc/man/CMakeLists.txt b/doc/man/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/doc/man/CMakeLists.txt @@ -0,0 +1,49 @@ +macro(generate_manpages) + foreach(TARGET ${ARGN}) + if(NOT TARGET ${TARGET}) + continue() + endif() + + set(MAN_PAGE "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.1") + + add_custom_command( + OUTPUT "${MAN_PAGE}" + COMMENT "Generating man page for ${TARGET}" + COMMAND + "${CMAKE_SOURCE_DIR}/cmake/utils/log-and-print-on-failure.sh" + "${CMAKE_CURRENT_BINARY_DIR}/gen-manpage-${TARGET}.log" + "${CMAKE_CURRENT_SOURCE_DIR}/gen-manpages.sh" + "$" + "$" + "${MAN_PAGE}" + DEPENDS + bitcoind + "${TARGET}" + ) + add_custom_target(gen-manpage-${TARGET} + DEPENDS "${MAN_PAGE}" + ) + + set_property( + DIRECTORY "${CMAKE_SOURCE_DIR}" + APPEND PROPERTY ADDITIONAL_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}" + ) + + set_property( + TARGET ${TARGET} + APPEND PROPERTY MAN_PAGES "${MAN_PAGE}" + ) + + if(TARGET install-manpage-${TARGET}) + add_dependencies(install-manpage-${TARGET} gen-manpage-${TARGET}) + endif() + endforeach() +endmacro() + +generate_manpages( + bitcoind + bitcoin-cli + bitcoin-tx + bitcoin-wallet + bitcoin-qt +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -597,7 +597,7 @@ add_to_security_check(bitcoin-wallet) install_target(bitcoin-wallet) - install_manpage(bitcoin-wallet) + install_manpages(bitcoin-wallet) else() target_sources(server PRIVATE dummywallet.cpp) endif() @@ -630,7 +630,7 @@ add_to_security_check(bitcoin-cli) install_target(bitcoin-cli) - install_manpage(bitcoin-cli) + install_manpages(bitcoin-cli) endif() # bitcoin-tx @@ -646,7 +646,7 @@ add_to_security_check(bitcoin-tx) install_target(bitcoin-tx) - install_manpage(bitcoin-tx) + install_manpages(bitcoin-tx) endif() # bitcoind @@ -659,7 +659,7 @@ add_to_security_check(bitcoind) install_target(bitcoind) -install_manpage(bitcoind) +install_manpages(bitcoind) # Bitcoin-qt if(BUILD_BITCOIN_QT) diff --git a/src/qt/CMakeLists.txt b/src/qt/CMakeLists.txt --- a/src/qt/CMakeLists.txt +++ b/src/qt/CMakeLists.txt @@ -341,7 +341,7 @@ include(InstallationHelper) install_target(bitcoin-qt) -install_manpage(bitcoin-qt) +install_manpages(bitcoin-qt) if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(BITCOINQT_BUNDLE_ICON "res/icons/bitcoin.icns")