$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: dgregor_at_[hidden]
Date: 2008-05-24 15:17:42
Author: dgregor
Date: 2008-05-24 15:17:42 EDT (Sat, 24 May 2008)
New Revision: 45734
URL: http://svn.boost.org/trac/boost/changeset/45734
Log:
Build and install man pages for Function, cope with XSL stylesheet parameters, and install the necessary stylesheets and images
Added:
   branches/CMake/release/doc/CMakeLists.txt   (contents, props changed)
   branches/CMake/release/doc/src/CMakeLists.txt   (contents, props changed)
Text files modified: 
   branches/CMake/release/CMakeLists.txt                    |     3 +                                       
   branches/CMake/release/tools/build/CMake/BoostDocs.cmake |    77 +++++++++++++++++++++++++++++++++------ 
   2 files changed, 67 insertions(+), 13 deletions(-)
Modified: branches/CMake/release/CMakeLists.txt
==============================================================================
--- branches/CMake/release/CMakeLists.txt	(original)
+++ branches/CMake/release/CMakeLists.txt	2008-05-24 15:17:42 EDT (Sat, 24 May 2008)
@@ -135,6 +135,9 @@
 # TODO: See if we can actually use auto-linking in our regression tests.
 add_definitions(-DBOOST_ALL_NO_LIB=1)
 
+# Add build rules for documentation
+add_subdirectory(doc)
+
 # Add build rules for all of the Boost libraries
 add_subdirectory(libs)
 
Added: branches/CMake/release/doc/CMakeLists.txt
==============================================================================
--- (empty file)
+++ branches/CMake/release/doc/CMakeLists.txt	2008-05-24 15:17:42 EDT (Sat, 24 May 2008)
@@ -0,0 +1,3 @@
+if (BUILD_DOCUMENTATION)
+  add_subdirectory(src)
+endif ()
Added: branches/CMake/release/doc/src/CMakeLists.txt
==============================================================================
--- (empty file)
+++ branches/CMake/release/doc/src/CMakeLists.txt	2008-05-24 15:17:42 EDT (Sat, 24 May 2008)
@@ -0,0 +1,13 @@
+if (BUILD_DOCUMENTATION_HTML)
+  # Install style sheets and the main Boost logo
+  install(FILES boostbook.css docutils.css reference.css ../../boost.png
+    DESTINATION share/boost-${BOOST_VERSION}/html)
+
+  # Install images
+  install(DIRECTORY images
+    DESTINATION share/boost-${BOOST_VERSION}/html
+    COMPONENT Core
+    PATTERN "CVS" EXCLUDE
+    REGEX ".svn" EXCLUDE)
+endif ()
+
Modified: branches/CMake/release/tools/build/CMake/BoostDocs.cmake
==============================================================================
--- branches/CMake/release/tools/build/CMake/BoostDocs.cmake	(original)
+++ branches/CMake/release/tools/build/CMake/BoostDocs.cmake	2008-05-24 15:17:42 EDT (Sat, 24 May 2008)
@@ -17,6 +17,7 @@
 #                 [DEPENDS depend1 depend2 ...]
 #                 [CATALOG catalog]
 #                 [DIRECTORY]
+#                 [PARAMETERS param1=value1 param2=value2 ...]
 #                 [[MAKE_ALL_TARGET | MAKE_TARGET] target])
 #
 # This macro builds a custom command that transforms an XML file
@@ -31,6 +32,9 @@
 # catalog file, specify the name of the XML catalog file via the
 # CATALOG argument. It will be provided to the XSL transform.
 #
+# The PARAMETERS argument is followed by param=value pairs that set
+# additional parameters to the XSL stylesheet.
+#
 # To associate a target name with the result of the XSL
 # transformation, use the MAKE_TARGET or MAKE_ALL_TARGET option and
 # provide the name of the target. The MAKE_ALL_TARGET option only
@@ -39,7 +43,7 @@
 # name is required the DIRECTORY option is specified.
 macro(xsl_transform OUTPUT INPUT STYLESHEET)
   parse_arguments(THIS_XSL
-    "DEPENDS;CATALOG;MAKE_ALL_TARGET;MAKE_TARGET"
+    "DEPENDS;CATALOG;MAKE_ALL_TARGET;MAKE_TARGET;PARAMETERS"
     "DIRECTORY"
     ${ARGN}
     )
@@ -48,18 +52,28 @@
     set(THIS_XSL_CATALOG "XML_CATALOG_FILES=${THIS_XSL_CATALOG}")
   endif ()
 
+  set(THIS_XSL_EXTRA_FLAGS)
+  foreach(PARAM ${THIS_XSL_PARAMETERS})
+    string(REGEX REPLACE "([^=]*)=([^;]*)" "\\1;\\2"
+      XSL_PARAM_LIST ${PARAM})
+    list(GET XSL_PARAM_LIST 0 XSL_PARAM_NAME)
+    list(GET XSL_PARAM_LIST 1 XSL_PARAM_VALUE)
+    list(APPEND THIS_XSL_EXTRA_FLAGS 
+      --stringparam ${XSL_PARAM_NAME} ${XSL_PARAM_VALUE})
+  endforeach(PARAM)
+
   if (THIS_XSL_DIRECTORY)
     # Run the XSLT processor to do an XML transformation with a
     # directory as output.
     if (THIS_XSL_MAKE_ALL_TARGET)
       add_custom_target(${THIS_XSL_MAKE_ALL_TARGET} ALL
-        COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} -o ${OUTPUT}/ 
-                ${STYLESHEET} ${INPUT}
+        COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} 
+                ${THIS_XSL_EXTRA_FLAGS} -o ${OUTPUT}/ ${STYLESHEET} ${INPUT}
         DEPENDS ${INPUT})
     elseif (THIS_XSL_MAKE_TARGET)
       add_custom_target(${THIS_XSL_MAKE_TARGET}
-        COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} -o ${OUTPUT}/ 
-                ${STYLESHEET} ${INPUT}
+        COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} 
+                ${THIS_XSL_EXTRA_FLAGS} -o ${OUTPUT}/ ${STYLESHEET} ${INPUT}
         DEPENDS ${INPUT})
     else()
       message(SEND_ERROR 
@@ -69,8 +83,8 @@
     # Run the XSLT processor to do an XML transformation with a single
     # file as output.
     add_custom_command(OUTPUT ${OUTPUT}
-      COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} -o ${OUTPUT} 
-              ${STYLESHEET} ${INPUT}
+      COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC} ${XSLTPROC_FLAGS} 
+              ${THIS_XSL_EXTRA_FLAGS} -o ${OUTPUT} ${STYLESHEET} ${INPUT}
       DEPENDS ${INPUT})
 
     # Create a custom target to refer to the result of this
@@ -117,10 +131,42 @@
     # Transform DocBook into other formats
     boost_add_documentation(${CMAKE_CURRENT_BINARY_DIR}/${DOCBOOK_FILE})
   elseif(THIS_DOC_EXT STREQUAL ".DOCBOOK")
-    xsl_transform(html ${THIS_DOC_SOURCE_PATH} ${BOOSTBOOK_XSL_DIR}/html.xsl
-      CATALOG ${CMAKE_BINARY_DIR}/catalog.xml
-      DIRECTORY
-      MAKE_ALL_TARGET html)
+    # If requested, build HTML documentation
+    if (BUILD_DOCUMENTATION_HTML)
+      xsl_transform(
+        ${CMAKE_CURRENT_BINARY_DIR}/html 
+        ${THIS_DOC_SOURCE_PATH} 
+        ${BOOSTBOOK_XSL_DIR}/html.xsl
+        CATALOG ${CMAKE_BINARY_DIR}/catalog.xml
+        DIRECTORY
+        PARAMETERS admon.graphics.path=images
+                   navig.graphics.path=images
+                   boost.image.src=boost.png
+        MAKE_ALL_TARGET html)
+
+      # Install generated documentation
+      install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html 
+        DESTINATION share/boost-${BOOST_VERSION}
+        COMPONENT ${ULIBNAME}_DOCS
+        PATTERN "*.manifest" EXCLUDE)
+    endif ()
+
+    # If requested, build Unix man pages
+    if (BUILD_DOCUMENTATION_MAN_PAGES)
+      xsl_transform(
+        ${CMAKE_CURRENT_BINARY_DIR}/man 
+        ${THIS_DOC_SOURCE_PATH} 
+        ${BOOSTBOOK_XSL_DIR}/manpages.xsl
+        CATALOG ${CMAKE_BINARY_DIR}/catalog.xml
+        DIRECTORY
+        MAKE_ALL_TARGET man)
+
+      # Install man pages
+      install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man
+        DESTINATION .
+        COMPONENT ${ULIBNAME}_DOCS
+        PATTERN "*.manifest" EXCLUDE)
+    endif ()
   else()
     message(SEND_ERROR "Unknown documentation source kind ${SOURCE}.")
   endif()
@@ -237,10 +283,15 @@
   DOC "Path to the BoostBook XSL stylesheets")
 mark_as_advanced(BOOSTBOOK_XSL_DIR)
 
+# Try to find Doxygen
+find_package(Doxygen)
+
 if (XSLTPROC)
   if (DOCBOOK_DTD_DIR AND DOCBOOK_XSL_DIR)
-    # We have all we need for documentation generation.
+    # Documentation build options
     option(BUILD_DOCUMENTATION "Whether to build library documentation" ON)
+    option(BUILD_DOCUMENTATION_HTML "Whether to build HTML documentation" ON)
+    option(BUILD_DOCUMENTATION_MAN_PAGES "Whether to build Unix man pages" ON)
 
     # Generate an XML catalog file.
     configure_file(${CMAKE_SOURCE_DIR}/tools/build/CMake/catalog.xml.in
@@ -266,7 +317,7 @@
   endif()
 endif()
 
-
+# Turn off BUILD_DOCUMENTATION if it isn't going to succeed.
 if (BUILD_DOCUMENTATION)
   set(BUILD_DOCUMENTATION_OKAY TRUE)
   if (NOT XSLTPROC)