From 89847f70426a44cfb236416110457a375ac377a3 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Thu, 24 Jan 2019 00:07:07 +0100 Subject: [PATCH 1/8] Make the output directory used by doxygen absolute to avoid dependency on a particular working directory --- Doxyfile.in | 2 +- doc/CMakeLists.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Doxyfile.in b/Doxyfile.in index b5bd51c9..f1377504 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- PROJECT_NAME = D-Bus PROJECT_NUMBER = @VERSION@ -OUTPUT_DIRECTORY = doc/api +OUTPUT_DIRECTORY = @top_builddir@/doc/api OUTPUT_LANGUAGE = English EXTRACT_ALL = NO EXTRACT_PRIVATE = NO diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 5a5eb85a..6c29ba45 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -12,6 +12,7 @@ endif() if(DBUS_ENABLE_DOXYGEN_DOCS) set(top_srcdir ${CMAKE_SOURCE_DIR}) + set(top_builddir ${CMAKE_BINARY_DIR}) if(WIN32) set(DBUS_GENERATE_MAN NO) else() From e840edec094ee80d2ca4a0f7e77bed039a3a1d55 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 18:42:16 +0100 Subject: [PATCH 2/8] Add target devhelp2 only when xsltproc has been found It doesn't make sense to add a make target if it can't be created. --- doc/CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 6c29ba45..399e5313 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -29,10 +29,6 @@ if(DBUS_ENABLE_DOXYGEN_DOCS) WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ) add_dependencies(doc apidoc) - add_custom_target(devhelp2 - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 - ) - add_dependencies(doc devhelp2) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/api/html/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus/api) endif() @@ -49,6 +45,10 @@ if(DBUS_HAVE_XSLTPROC) DEPENDS doxygen_to_devhelp.xsl api/html/index.html WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) + add_custom_target(devhelp2 + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 + ) + add_dependencies(doc devhelp2) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus) endif() From cea3a27ed3b956e0af750fe102ce0c1c32ae8843 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 18:57:16 +0100 Subject: [PATCH 3/8] Cleanup dbus.devhelp2 make target pathes Use absolute paths to avoid confusion about where the associated file is located. --- doc/CMakeLists.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 399e5313..ea653547 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -40,10 +40,14 @@ endif() if(DBUS_HAVE_XSLTPROC) add_custom_command( - OUTPUT dbus.devhelp2 - COMMAND ${XSLTPROC_EXECUTABLE} -o dbus.devhelp2 ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_to_devhelp.xsl api/xml/index.xml - DEPENDS doxygen_to_devhelp.xsl api/html/index.html - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 + COMMAND ${XSLTPROC_EXECUTABLE} + -o ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 + ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_to_devhelp.xsl + ${CMAKE_CURRENT_BINARY_DIR}/api/xml/index.xml + DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_to_devhelp.xsl + ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ) add_custom_target(devhelp2 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 From 44973e372d97181e9874fe726bfff0f4b4ffe428 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 18:57:43 +0100 Subject: [PATCH 4/8] Target devhelp2 does not require dependencies that have already been specified in dbus.devhelp2 --- doc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index ea653547..528e2531 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -50,7 +50,7 @@ if(DBUS_HAVE_XSLTPROC) ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ) add_custom_target(devhelp2 - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 ) add_dependencies(doc devhelp2) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus) From d32ae7082e0bd5ecbfeeac0cef474ecfe6d0181e Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 19:05:47 +0100 Subject: [PATCH 5/8] Update doxygen doc only if an associated source or Doxyfile has been changed Use doxygen.stamp as output for generating doxygen doc similar to autotools. --- doc/CMakeLists.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 528e2531..6475625f 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -3,7 +3,7 @@ # find_package(Doxygen) -# build doc always +# always check doc target add_custom_target(doc ALL) if(DOXYGEN_EXECUTABLE) @@ -19,14 +19,17 @@ if(DBUS_ENABLE_DOXYGEN_DOCS) set(DBUS_GENERATE_MAN YES) endif() configure_file(../Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ) + file(GLOB dbus_files "${CMAKE_SOURCE_DIR}/dbus/*.[ch]*") add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp + DEPENDS ${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ${dbus_files} COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API documentation with Doxygen" ) add_custom_target(apidoc - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp ) add_dependencies(doc apidoc) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/api/html/ DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus/api) @@ -47,7 +50,7 @@ if(DBUS_HAVE_XSLTPROC) ${CMAKE_CURRENT_BINARY_DIR}/api/xml/index.xml DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/doxygen_to_devhelp.xsl - ${CMAKE_CURRENT_BINARY_DIR}/api/html/index.html + ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp ) add_custom_target(devhelp2 DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/dbus.devhelp2 From a710cdd5e3f5c4e5500f518621f773566fe3a045 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 19:12:32 +0100 Subject: [PATCH 6/8] Fix dependency chain for doc files generated from docbook source --- doc/CMakeLists.txt | 67 +++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 6475625f..ff51a28f 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -73,6 +73,28 @@ if(DOCBOOKXSL_DIR AND XSLTPROC_EXECUTABLE) endif() if(DBUS_ENABLE_XML_DOCS) +# +# generate docbook file from template +# +macro(generate_docbook_file a b) + get_filename_component(outname ${b} NAME) + set(srcfile ${CMAKE_CURRENT_SOURCE_DIR}/${a}) + set(tmpfile ${CMAKE_CURRENT_BINARY_DIR}/${outname}.tmp.cmake) + file(WRITE ${tmpfile} " +set(EXPANDED_SYSCONFDIR ${CMAKE_INSTALL_FULL_SYSCONFDIR}) +set(EXPANDED_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}) +set(DBUS_VERSION ${DBUS_VERSION}) +configure_file(${srcfile} ${b}) + ") + add_custom_command(OUTPUT ${b} + COMMAND ${CMAKE_COMMAND} -E remove ${b} + COMMAND ${CMAKE_COMMAND} -P ${tmpfile} + DEPENDS ${srcfile} ${CMAKE_BINARY_DIR}/CMakeCache.txt + COMMENT "Generating ${outname}" + ) + add_custom_target(${outname} DEPENDS ${b}) + add_dependencies(doc ${outname}) +endmacro() macro(DOCBOOK _sources _format) get_filename_component(_infile ${_sources} ABSOLUTE) @@ -85,22 +107,18 @@ macro(DOCBOOK _sources _format) set(STYLESHEET "${DOCBOOKXSL_DIR}/html/docbook.xsl") endif() set(_outfile ${CMAKE_CURRENT_BINARY_DIR}/${_outname}) - if(EXISTS ${_sources}) - if(XSLTPROC_EXECUTABLE) - add_custom_target(${_outname} - ${XSLTPROC_EXECUTABLE} --output ${_outfile} --nonet --xinclude --param passivetex.extensions '1' ${STYLESHEET} ${_infile} - DEPENDS ${_infile} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - endif() - add_dependencies(xmldoc ${_outname}) - if(${_format} STREQUAL "man") - install(FILES ${_outfile} DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1) - else() - install(FILES ${_outfile} DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus) - endif() + add_custom_command( + OUTPUT ${_outfile} + COMMAND ${XSLTPROC_EXECUTABLE} --output ${_outfile} --nonet --xinclude --param passivetex.extensions '1' ${STYLESHEET} ${_infile} + DEPENDS ${XSLTPROC_EXECUTABLE} ${_infile} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + ) + add_custom_target(${_outname} DEPENDS ${_outfile}) + add_dependencies(xmldoc ${_outname}) + if(${_format} STREQUAL "man") + install(FILES ${_outfile} DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man1) else() - message(STATUS "skipping xml doc generating for ${_infile}, file not found") + install(FILES ${_outfile} DESTINATION ${CMAKE_INSTALL_DATADIR}/doc/dbus) endif() endmacro() @@ -127,20 +145,21 @@ endmacro() COPYDIR(doc *.png) COPYDIR(doc *.svg) +generate_docbook_file(dbus-cleanup-sockets.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-cleanup-sockets.1.xml) +generate_docbook_file(dbus-daemon.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-daemon.1.xml) +generate_docbook_file(dbus-launch.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-launch.1.xml) +generate_docbook_file(dbus-monitor.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-monitor.1.xml) +generate_docbook_file(dbus-run-session.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-run-session.1.xml) +generate_docbook_file(dbus-send.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-send.1.xml) +generate_docbook_file(dbus-test-tool.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-test-tool.1.xml) +generate_docbook_file(dbus-update-activation-environment.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-update-activation-environment.1.xml) +generate_docbook_file(dbus-uuidgen.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-uuidgen.1.xml) + docbook(${CMAKE_CURRENT_SOURCE_DIR}/dbus-test-plan.xml html) docbook(${CMAKE_CURRENT_SOURCE_DIR}/dbus-tutorial.xml html) docbook(${CMAKE_CURRENT_SOURCE_DIR}/dbus-specification.xml html) docbook(${CMAKE_CURRENT_SOURCE_DIR}/dbus-faq.xml html) -configure_file(dbus-cleanup-sockets.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-cleanup-sockets.1.xml) -configure_file(dbus-daemon.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-daemon.1.xml) -configure_file(dbus-launch.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-launch.1.xml) -configure_file(dbus-monitor.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-monitor.1.xml) -configure_file(dbus-run-session.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-run-session.1.xml) -configure_file(dbus-send.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-send.1.xml) -configure_file(dbus-test-tool.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-test-tool.1.xml) -configure_file(dbus-update-activation-environment.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-update-activation-environment.1.xml) -configure_file(dbus-uuidgen.1.xml.in ${CMAKE_CURRENT_BINARY_DIR}/dbus-uuidgen.1.xml) if(UNIX) docbook(${CMAKE_CURRENT_BINARY_DIR}/dbus-daemon.1.xml man) docbook(${CMAKE_CURRENT_BINARY_DIR}/dbus-monitor.1.xml man) From 22fb56cfb747b6b89c3445e97bede6d782f6b462 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 21:40:49 +0100 Subject: [PATCH 7/8] Create top level dir for generating doxygon files --- doc/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index ff51a28f..f2a7524a 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -23,6 +23,7 @@ if(DBUS_ENABLE_DOXYGEN_DOCS) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp DEPENDS ${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ${dbus_files} + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/api COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} From f04e611a46d7bac2fdbf63586882ac9e55a77a0b Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Fri, 25 Jan 2019 22:11:46 +0100 Subject: [PATCH 8/8] Try to fix doxygen error on CI reporting "Output directory ... does not exist and cannot be created" --- doc/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index f2a7524a..6c268c99 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -23,7 +23,7 @@ if(DBUS_ENABLE_DOXYGEN_DOCS) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp DEPENDS ${CMAKE_SOURCE_DIR}/Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile ${dbus_files} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/api + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/api/html COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/doxygen.stamp WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}