From fd233481f8b08eac326fc9bed09d723bc5377768 Mon Sep 17 00:00:00 2001 From: "Troy D. Straszheim" Date: Wed, 8 Apr 2009 11:09:43 +0000 Subject: [PATCH] quickbook bug got fixed (thanks Daniel James), revert previous messy workaround [SVN r52247] --- CMake/BoostDocs.cmake | 70 ++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/CMake/BoostDocs.cmake b/CMake/BoostDocs.cmake index efa8e9f68..a5933b841 100644 --- a/CMake/BoostDocs.cmake +++ b/CMake/BoostDocs.cmake @@ -13,8 +13,7 @@ # Transforms the source XML file by applying the given XSL stylesheet. # -# xsl_transform(OUTPUT output -# INPUT input [input2 input3 ...] +# xsl_transform(output input [input2 input3 ...] # STYLESHEET stylesheet # [CATALOG catalog] # [DIRECTORY mainfile] @@ -54,9 +53,9 @@ # If a COMMENT argument is provided, it will be used as the comment # CMake provides when running this XSL transformation. Otherwise, the # comment will be "Generating "output" via XSL transformation...". -macro(xsl_transform) +macro(xsl_transform OUTPUT INPUT) parse_arguments(THIS_XSL - "OUTPUT;INPUT;STYLESHEET;CATALOG;MAKE_ALL_TARGET;MAKE_TARGET;PARAMETERS;DIRECTORY;COMMENT" + "STYLESHEET;CATALOG;MAKE_ALL_TARGET;MAKE_TARGET;PARAMETERS;DIRECTORY;COMMENT" "" ${ARGN} ) @@ -82,18 +81,18 @@ macro(xsl_transform) # If the user didn't provide a comment for this transformation, # create a default one. if(NOT THIS_XSL_COMMENT) - set(THIS_XSL_COMMENT "Generating ${THIS_XSL_OUTPUT} via XSL transformation...") + set(THIS_XSL_COMMENT "Generating ${OUTPUT} via XSL transformation...") endif() # Figure out the actual output file that we tell CMake about # (THIS_XSL_OUTPUT_FILE) and the output file or directory that we # tell xsltproc about (THIS_XSL_OUTPUT). if (THIS_XSL_DIRECTORY) - set(THIS_XSL_OUTPUT_FILE ${THIS_XSL_OUTPUT}/${THIS_XSL_DIRECTORY}) - set(THIS_XSL_OUTPUT ${THIS_XSL_OUTPUT}/) + set(THIS_XSL_OUTPUT_FILE ${OUTPUT}/${THIS_XSL_DIRECTORY}) + set(THIS_XSL_OUTPUT ${OUTPUT}/) else() - set(THIS_XSL_OUTPUT_FILE ${THIS_XSL_OUTPUT}) - set(THIS_XSL_OUTPUT ${THIS_XSL_OUTPUT}) + set(THIS_XSL_OUTPUT_FILE ${OUTPUT}) + set(THIS_XSL_OUTPUT ${OUTPUT}) endif() if(NOT THIS_XSL_STYLESHEET) @@ -105,9 +104,9 @@ macro(xsl_transform) COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} ${THIS_XSL_EXTRA_FLAGS} -o ${THIS_XSL_OUTPUT} --path ${CMAKE_CURRENT_BINARY_DIR} - ${THIS_XSL_STYLESHEET} ${THIS_XSL_INPUT} + ${THIS_XSL_STYLESHEET} ${INPUT} COMMENT ${THIS_XSL_COMMENT} - DEPENDS ${THIS_XSL_INPUT} ${THIS_XSL_DEFAULT_ARGS}) + DEPENDS ${INPUT} ${THIS_XSL_DEFAULT_ARGS}) set_source_files_properties(${THIS_XSL_OUTPUT_FILE} PROPERTIES GENERATED TRUE) @@ -189,15 +188,14 @@ macro(doxygen_to_boostbook OUTPUT) ${CMAKE_CURRENT_BINARY_DIR}/xml/combine.xslt PROPERTIES GENERATED TRUE) xsl_transform( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/all.xml - INPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/index.xml + ${CMAKE_CURRENT_BINARY_DIR}/xml/all.xml + ${CMAKE_CURRENT_BINARY_DIR}/xml/index.xml STYLESHEET ${CMAKE_CURRENT_BINARY_DIR}/xml/combine.xslt COMMENT "Collecting Doxygen XML output for Boost.${PROJECT_NAME}...") # Transform single Doxygen XML file into BoostBook XML - xsl_transform( - OUTPUT ${OUTPUT} - INPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/all.xml + xsl_transform(${OUTPUT} + ${CMAKE_CURRENT_BINARY_DIR}/xml/all.xml STYLESHEET ${BOOSTBOOK_XSL_DIR}/doxygen/doxygen2boostbook.xsl COMMENT "Transforming Doxygen XML into BoostBook XML for Boost.${PROJECT_NAME}...") endmacro(doxygen_to_boostbook) @@ -226,7 +224,12 @@ macro(boost_add_documentation SOURCE) # If SOURCE is not a full path, it's in the current source # directory. - get_filename_component(THIS_DOC_SOURCE_PATH ${SOURCE} ABSOLUTE) + get_filename_component(THIS_DOC_SOURCE_PATH ${SOURCE} PATH) + if(THIS_DOC_SOURCE_PATH STREQUAL "") + set(THIS_DOC_SOURCE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${SOURCE}") + else() + set(THIS_DOC_SOURCE_PATH ${SOURCE}) + endif() # If we are parsing C++ headers (with Doxygen) for reference # documentation, do so now and produce the requested BoostBook XML @@ -278,7 +281,7 @@ macro(boost_add_documentation SOURCE) if (BUILD_QUICKBOOK) # Transform Quickbook into BoostBook XML get_filename_component(SOURCE_FILENAME ${SOURCE} NAME_WE) - set(BOOSTBOOK_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILENAME}.xml) + set(BOOSTBOOK_FILE ${SOURCE_FILENAME}.xml) add_custom_command(OUTPUT ${BOOSTBOOK_FILE} COMMAND quickbook "--output-file=${BOOSTBOOK_FILE}" ${THIS_DOC_SOURCE_PATH} @@ -286,7 +289,7 @@ macro(boost_add_documentation SOURCE) COMMENT "Generating BoostBook documentation for Boost.${PROJECT_NAME}...") # Transform BoostBook into other formats - boost_add_documentation(${BOOSTBOOK_FILE}) + boost_add_documentation(${CMAKE_CURRENT_BINARY_DIR}/${BOOSTBOOK_FILE}) else() message(SEND_ERROR "Quickbook is required to build Boost documentation.\nQuickbook can be built by enabling the BUILD_QUICKBOOK.") @@ -294,10 +297,8 @@ macro(boost_add_documentation SOURCE) elseif (THIS_DOC_EXT STREQUAL ".XML") # Transform BoostBook XML into DocBook XML get_filename_component(SOURCE_FILENAME ${SOURCE} NAME_WE) - set(DOCBOOK_FILE ${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_FILENAME}.docbook) - xsl_transform( - OUTPUT ${DOCBOOK_FILE} - INPUT ${THIS_DOC_SOURCE_PATH} + set(DOCBOOK_FILE ${SOURCE_FILENAME}.docbook) + xsl_transform(${DOCBOOK_FILE} ${THIS_DOC_SOURCE_PATH} ${THIS_DOC_DEFAULT_ARGS} STYLESHEET ${BOOSTBOOK_XSL_DIR}/docbook.xsl CATALOG ${CMAKE_BINARY_DIR}/catalog.xml @@ -305,13 +306,13 @@ macro(boost_add_documentation SOURCE) MAKE_TARGET ${PROJECT_NAME}-docbook) # Transform DocBook into other formats - boost_add_documentation(${DOCBOOK_FILE}) + boost_add_documentation(${CMAKE_CURRENT_BINARY_DIR}/${DOCBOOK_FILE}) elseif(THIS_DOC_EXT STREQUAL ".DOCBOOK") # If requested, build HTML documentation if (BUILD_DOCUMENTATION_HTML) xsl_transform( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html - INPUT ${THIS_DOC_SOURCE_PATH} + ${CMAKE_CURRENT_BINARY_DIR}/html + ${THIS_DOC_SOURCE_PATH} STYLESHEET ${BOOSTBOOK_XSL_DIR}/html.xsl CATALOG ${CMAKE_BINARY_DIR}/catalog.xml DIRECTORY HTML.manifest @@ -320,6 +321,8 @@ macro(boost_add_documentation SOURCE) boost.image.src=boost.png COMMENT "Generating HTML documentation for Boost.${PROJECT_NAME}..." MAKE_TARGET ${PROJECT_NAME}-html) + add_dependencies(html ${PROJECT_NAME}-html) + # # Install associated stuff # @@ -332,8 +335,6 @@ macro(boost_add_documentation SOURCE) COMMENT "Copying in associated stuff, boostbook.css and boost.png" ) - add_dependencies(html ${PROJECT_NAME}-html) - # Install generated documentation install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/boost-${BOOST_VERSION} @@ -344,14 +345,13 @@ macro(boost_add_documentation SOURCE) # If requested, build Unix man pages if (BUILD_DOCUMENTATION_MAN_PAGES) xsl_transform( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/man - INPUT ${THIS_DOC_SOURCE_PATH} + ${CMAKE_CURRENT_BINARY_DIR}/man + ${THIS_DOC_SOURCE_PATH} STYLESHEET ${BOOSTBOOK_XSL_DIR}/manpages.xsl CATALOG ${CMAKE_BINARY_DIR}/catalog.xml DIRECTORY man.manifest COMMENT "Generating man pages for Boost.${PROJECT_NAME}..." MAKE_ALL_TARGET ${PROJECT_NAME}-manpages) - add_dependencies(manpages ${PROJECT_NAME}-manpages) # Install man pages @@ -486,8 +486,12 @@ if (XSLTPROC AND DOXYGEN) if (DOCBOOK_DTD_DIR AND DOCBOOK_XSL_DIR) # Documentation build options option(BUILD_DOCUMENTATION "Whether to build library documentation" ON) + option(BUILD_DOCUMENTATION_HTML "Whether to build HTML documentation" ON) + add_custom_target(html) + option(BUILD_DOCUMENTATION_MAN_PAGES "Whether to build Unix man pages" ON) + add_custom_target(manpages) # Generate an XML catalog file. configure_file(${CMAKE_SOURCE_DIR}/tools/build/CMake/catalog.xml.in @@ -533,12 +537,10 @@ else() set(BUILD_DOCUMENTATION_OKAY TRUE) endif() -add_custom_target(html) -add_custom_target(manpages) - if (NOT BUILD_DOCUMENTATION_OKAY) if (BUILD_DOCUMENTATION) set(BUILD_DOCUMENTATION OFF CACHE BOOL "Whether to build library documentation" FORCE) endif() endif() +