|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r53150 - in trunk: libs/spirit libs/test/src tools tools/build/CMake tools/build/CMake/LinkTest tools/quickbook
From: troy_at_[hidden]
Date: 2009-05-21 10:05:17
Author: troy
Date: 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
New Revision: 53150
URL: http://svn.boost.org/trac/boost/changeset/53150
Log:
Merge of cmakefiles *from* (that's right, *FROM* :/ ) release branch.
Text files modified:
trunk/libs/spirit/CMakeLists.txt | 4
trunk/libs/test/src/CMakeLists.txt | 4 -
trunk/tools/CMakeLists.txt | 7 --
trunk/tools/build/CMake/BoostConfig.cmake | 68 +++++++++++++++++++++-
trunk/tools/build/CMake/BoostCore.cmake | 77 +++++++++++--------------
trunk/tools/build/CMake/BoostDocs.cmake | 117 +++++++++++++++++----------------------
trunk/tools/build/CMake/BoostTesting.cmake | 72 ++++++++++++++++++++---
trunk/tools/build/CMake/BoostUtils.cmake | 14 ++++
trunk/tools/build/CMake/LinkTest/CMakeLists.txt | 17 +++++
trunk/tools/quickbook/CMakeLists.txt | 7 +-
10 files changed, 246 insertions(+), 141 deletions(-)
Modified: trunk/libs/spirit/CMakeLists.txt
==============================================================================
--- trunk/libs/spirit/CMakeLists.txt (original)
+++ trunk/libs/spirit/CMakeLists.txt 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -1,8 +1,8 @@
# Add a library target to the build system
boost_library_project(
spirit
- SRCDIRS example/karma example/qi example/lex phoenix/example
- TESTDIRS test
+ SRCDIRS example/karma example/qi example/lex
+ TESTDIRS test phoenix/example
HEADERS spirit.hpp spirit
# DOCDIRS
DESCRIPTION "A object oriented, recursive-descent parser and output generation library using the syntax of Parsing Expression Grammars (PEGs) directly in C++"
Modified: trunk/libs/test/src/CMakeLists.txt
==============================================================================
--- trunk/libs/test/src/CMakeLists.txt (original)
+++ trunk/libs/test/src/CMakeLists.txt 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -14,7 +14,6 @@
boost_add_library(boost_prg_exec_monitor
execution_monitor.cpp cpp_main.cpp debug.cpp
- STATIC_TAG
SHARED_COMPILE_FLAGS -DBOOST_TEST_DYN_LINK=1 ${BOOST_SHARED_COMPILE_FLAGS})
boost_add_library(boost_test_exec_monitor
@@ -58,7 +57,6 @@
unit_test_suite.cpp
xml_log_formatter.cpp
xml_report_formatter.cpp
- STATIC_TAG
- SHARED_COMPILE_FLAGS -DBOOST_TEST_DYN_LINK=1 ${BOOST_SHARED_COMPILE_FLAGS}
+ SHARED_COMPILE_FLAGS -DBOOST_TEST_DYN_LINK=1 ${BOOST_SHARED_COMPILE_FLAGS}
)
Modified: trunk/tools/CMakeLists.txt
==============================================================================
--- trunk/tools/CMakeLists.txt (original)
+++ trunk/tools/CMakeLists.txt 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -79,9 +79,4 @@
add_subdirectory(quickbook)
add_subdirectory(wave)
-add_subdirectory(bcp)
-
-#
-# this one is just for docs
-#
-add_subdirectory(build/CMake)
+add_subdirectory(bcp)
\ No newline at end of file
Modified: trunk/tools/build/CMake/BoostConfig.cmake
==============================================================================
--- trunk/tools/build/CMake/BoostConfig.cmake (original)
+++ trunk/tools/build/CMake/BoostConfig.cmake 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -31,29 +31,42 @@
# Python interpreter
#
include(FindPythonInterp)
-message(STATUS "found python executable ${PYTHON_EXECUTABLE}")
include(FindPythonLibs)
-message(STATUS "found python includes ${PYTHON_INCLUDE_PATH}")
-message(STATUS "found python libs ${PYTHON_LIBRARIES}")
# Toolset detection.
if (NOT BOOST_TOOLSET)
set(BOOST_TOOLSET "unknown")
if (MSVC60)
set(BOOST_TOOLSET "vc6")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "6.0")
elseif(MSVC70)
set(BOOST_TOOLSET "vc7")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "7.0")
elseif(MSVC71)
set(BOOST_TOOLSET "vc71")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "7.1")
elseif(MSVC80)
set(BOOST_TOOLSET "vc80")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "8.0")
elseif(MSVC90)
set(BOOST_TOOLSET "vc90")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "9.0")
elseif(MSVC)
set(BOOST_TOOLSET "vc")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "unknown")
elseif(BORLAND)
set(BOOST_TOOLSET "bcb")
+ set(BOOST_COMPILER "msvc")
+ set(BOOST_COMPILER_VERSION "unknown")
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
+ set(BOOST_COMPILER "gcc")
+
# Execute GCC with the -dumpversion option, to give us a version string
execute_process(
COMMAND ${CMAKE_CXX_COMPILER} "-dumpversion"
@@ -62,6 +75,10 @@
# Match only the major and minor versions of the version string
string(REGEX MATCH "[0-9]+.[0-9]+" GCC_MAJOR_MINOR_VERSION_STRING
"${GCC_VERSION_STRING}")
+
+ # Match the full compiler version for the build name
+ string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" BOOST_COMPILER_VERSION
+ "${GCC_VERSION_STRING}")
# Strip out the period between the major and minor versions
string(REGEX REPLACE "\\." "" BOOST_VERSIONING_GCC_VERSION
@@ -69,33 +86,71 @@
# Set the GCC versioning toolset
set(BOOST_TOOLSET "gcc${BOOST_VERSIONING_GCC_VERSION}")
+ elseif(CMAKE_CXX_COMPILER MATCHES "/icpc$" OR CMAKE_CXX_COMPILER MATCHES "/icpc.exe$")
+ set(BOOST_TOOLSET "intel")
+ set(BOOST_COMPILER "intel")
+ set(CMAKE_COMPILER_IS_INTEL ON)
+ execute_process(
+ COMMAND ${CMAKE_CXX_COMPILER} "-dumpversion"
+ OUTPUT_VARIABLE INTEL_VERSION_STRING
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ set(BOOST_COMPILER_VERSION ${INTEL_VERSION_STRING})
endif(MSVC60)
endif (NOT BOOST_TOOLSET)
+message(STATUS "Boost compiler: ${BOOST_COMPILER}")
+message(STATUS "Boost toolset: ${BOOST_TOOLSET}")
+
+# create cache entry
+set(BOOST_PLATFORM "unknown" CACHE STRING "Boost platform name")
+
# Multi-threading support
if(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
set(MULTI_THREADED_COMPILE_FLAGS "-pthreads")
set(MULTI_THREADED_LINK_LIBS rt)
+ set(BOOST_PLATFORM "sunos")
elseif(CMAKE_SYSTEM_NAME STREQUAL "BeOS")
# No threading options necessary for BeOS
+ set(BOOST_PLATFORM "beos")
elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSD")
set(MULTI_THREADED_COMPILE_FLAGS "-pthread")
set(MULTI_THREADED_LINK_LIBS pthread)
+ set(BOOST_PLATFORM "bsd")
elseif(CMAKE_SYSTEM_NAME STREQUAL "DragonFly")
- # DragonFly is FreeBSD bariant
+ # DragonFly is a FreeBSD bariant
set(MULTI_THREADED_COMPILE_FLAGS "-pthread")
+ set(BOOST_PLATFORM "dragonfly")
elseif(CMAKE_SYSTEM_NAME STREQUAL "IRIX")
# TODO: GCC on Irix doesn't support multi-threading?
+ set(BOOST_PLATFORM "irix")
elseif(CMAKE_SYSTEM_NAME STREQUAL "HP-UX")
# TODO: gcc on HP-UX does not support multi-threading?
+ set(BOOST_PLATFORM "hpux")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
# No threading options necessary for Mac OS X
+ set(BOOST_PLATFORM "macos")
elseif(UNIX)
# Assume -pthread and -lrt on all other variants
set(MULTI_THREADED_COMPILE_FLAGS "-pthread -D_REENTRANT")
set(MULTI_THREADED_LINK_FLAGS "")
set(MULTI_THREADED_LINK_LIBS pthread rt)
-endif(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
+
+ if (MINGW)
+ set(BOOST_PLATFORM "mingw")
+ elseif(CYGWIN)
+ set(BOOST_PLATFORM "cygwin")
+ elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(BOOST_PLATFORM "linux")
+ else()
+ set(BOOST_PLATFORM "unix")
+ endif()
+elseif(WIN32)
+ set(BOOST_PLATFORM "windows")
+else()
+ set(BOOST_PLATFORM "unknown")
+endif()
+
+message(STATUS "Boost platform: ${BOOST_PLATFORM}")
# Setup DEBUG_COMPILE_FLAGS, RELEASE_COMPILE_FLAGS, DEBUG_LINK_FLAGS and
# and RELEASE_LINK_FLAGS based on the CMake equivalents
@@ -159,3 +214,6 @@
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused by Boost")
set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused by Boost")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused by Boost")
+
+# Set the build name
+set(BUILDNAME "${BOOST_COMPILER}-${BOOST_COMPILER_VERSION}-${BOOST_PLATFORM}")
Modified: trunk/tools/build/CMake/BoostCore.cmake
==============================================================================
--- trunk/tools/build/CMake/BoostCore.cmake (original)
+++ trunk/tools/build/CMake/BoostCore.cmake 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -1,8 +1,8 @@
##########################################################################
# Core Functionality for Boost #
##########################################################################
-# Copyright (C) 2007-2008 Douglas Gregor <doug.gregor_at_[hidden]> #
-# Copyright (C) 2007 Troy Straszheim #
+# Copyright (C) 2007-2009 Douglas Gregor <doug.gregor_at_[hidden]> #
+# Copyright (C) 2007-2009 Troy Straszheim <troy_at_[hidden]> #
# #
# Distributed under the Boost Software License, Version 1.0. #
# See accompanying file LICENSE_1_0.txt or copy at #
@@ -56,7 +56,7 @@
# therefore, will build and install the library binary.
#
# For libraries that have regression tests, and when testing is
-# enabled globally by the BUILD_TESTING option, this macro also
+# enabled globally by the BUILD_REGRESSION_TESTS option, this macro also
# defines the TEST_BOOST_LIBNAME option (defaults to ON). When ON, the
# generated makefiles/project files will contain regression tests for
# this library.
@@ -181,7 +181,8 @@
endif (THIS_PROJECT_DESCRIPTION)
# Create a component group for this library
- cpack_add_component_group(${libname}
+ fix_cpack_component_name(CPACK_COMPONENT_GROUP_NAME ${libname})
+ cpack_add_component_group(${CPACK_COMPONENT_GROUP_NAME}
DISPLAY_NAME "${LIBNAME}"
DESCRIPTION ${THIS_PROJECT_DESCRIPTION})
endif ()
@@ -191,9 +192,18 @@
# Add this module's include directory
include_directories("${Boost_SOURCE_DIR}/libs/${libname}/include")
+ #
+ # Horrible hackery. Make install of headers from modularized directories
+ # OPTIONAL, which only works on cmake >= 2.7
+ #
+ if (${CMAKE_MAJOR_VERSION} GREATER 1 AND ${CMAKE_MINOR_VERSION} GREATER 6)
+ set(_INSTALL_OPTIONAL "OPTIONAL")
+ endif()
+
# Install this module's headers
install(DIRECTORY include/boost
DESTINATION ${BOOST_HEADER_DIR}
+ ${_INSTALL_OPTIONAL}
COMPONENT ${libname}_headers
PATTERN "CVS" EXCLUDE
PATTERN ".svn" EXCLUDE)
@@ -212,9 +222,10 @@
endforeach(DEP)
# Tell CPack about the headers component
+ fix_cpack_component_name(CPACK_COMPONENT_GROUP_NAME ${libname})
cpack_add_component(${libname}_headers
DISPLAY_NAME "Header files"
- GROUP ${libname}
+ GROUP ${CPACK_COMPONENT_GROUP_NAME}
DEPENDS ${THIS_PROJECT_HEADER_DEPENDS})
endif ()
endif ()
@@ -311,7 +322,7 @@
endforeach(SUBDIR ${THIS_PROJECT_SRCDIRS})
endif()
- if(BUILD_TESTING AND THIS_PROJECT_TESTDIRS)
+ if(BUILD_REGRESSION_TESTS AND THIS_PROJECT_TESTDIRS)
# Testing is enabled globally and this project has some
# tests. Check whether we should include these tests.
if (BOOST_TEST_LIBRARIES)
@@ -326,6 +337,14 @@
endforeach ()
endif()
+ # Create a target <library name>-test, which will run all of
+ # this library's tests.
+ if (THIS_PROJECT_TESTDIRS)
+ add_custom_target(${PROJECT_NAME}-test
+ COMMAND ${CMAKE_CTEST_COMMAND} -R "^${PROJECT_NAME}-*"
+ MESSAGE "Running tests for Boost.${PROJECT_NAME}...")
+ endif ()
+
# Include the test directories.
foreach(SUBDIR ${THIS_PROJECT_TESTDIRS})
add_subdirectory(${SUBDIR})
@@ -613,7 +632,7 @@
#
# If any of the features listed conflict with this library, no new
# targets will be built. For example, if the library provides the
-# option NOT_MULTI_THREADED, and one of the features provided is
+# option NO_MULTI_THREADED, and one of the features provided is
# MULTI_THREADED, this macro will essentially be a no-op.
macro(boost_library_variant LIBNAME)
set(THIS_VARIANT_COMPILE_FLAGS "${THIS_LIB_COMPILE_FLAGS}")
@@ -655,15 +674,6 @@
# We handle static vs. dynamic libraries differently
list_contains(THIS_LIB_IS_STATIC "STATIC" ${ARGN})
if (THIS_LIB_IS_STATIC)
- # If the STATIC_TAG flag was set, we append "-s" to the name of
- # the library. This is an unfortunate hack, needed only for the
- # test library.
- if (THIS_LIB_STATIC_TAG)
- set(THIS_LIB_STATIC_TAG "-s")
- else(THIS_LIB_STATIC_TAG)
- set(THIS_LIB_STATIC_TAG "")
- endif(THIS_LIB_STATIC_TAG)
-
# On Windows, we need static and shared libraries to have
# different names, so we follow the Boost.Build version 2 style
# and prepend "lib" to the name.
@@ -679,7 +689,7 @@
# Set properties on this library
set_target_properties(${VARIANT_LIBNAME}
PROPERTIES
- OUTPUT_NAME "${LIBPREFIX}${LIBNAME}${VARIANT_VERSIONED_NAME}${THIS_LIB_STATIC_TAG}"
+ OUTPUT_NAME "${LIBPREFIX}${LIBNAME}${VARIANT_VERSIONED_NAME}"
CLEAN_DIRECT_OUTPUT 1
COMPILE_FLAGS "${THIS_VARIANT_COMPILE_FLAGS}"
LINK_FLAGS "${THIS_VARIANT_LINK_FLAGS}"
@@ -718,7 +728,9 @@
# The basic LIBNAME target depends on each of the variants
add_dependencies(${LIBNAME} ${VARIANT_LIBNAME})
-
+
+ export(TARGETS ${VARIANT_LIBNAME} FILE ${CMAKE_BINARY_DIR}/exports/${VARIANT_LIBNAME}.cmake)
+
# Link against whatever libraries this library depends on
target_link_libraries(${VARIANT_LIBNAME} ${THIS_VARIANT_LINK_LIBS})
foreach(dependency ${THIS_LIB_DEPENDS})
@@ -760,9 +772,10 @@
endforeach(DEP)
if (COMMAND cpack_add_component)
+ fix_cpack_component_name(CPACK_COMPONENT_GROUP_NAME ${libname})
cpack_add_component(${LIB_COMPONENT}
DISPLAY_NAME "${VARIANT_DISPLAY_NAME}"
- GROUP ${libname}
+ GROUP ${CPACK_COMPONENT_GROUP_NAME}
DEPENDS ${THIS_LIB_COMPONENT_DEPENDS})
endif ()
endif(NOT THIS_LIB_NO_INSTALL)
@@ -1038,9 +1051,8 @@
# [LINK_LIBS linklibs]
# [feature_LINK_LIBS linklibs]
# [DEPENDS libdepend1 libdepend2 ...]
-# [STATIC_TAG]
# [MODULE]
-# [NOT_feature]
+# [NO_feature]
# [EXTRA_VARIANTS variant1 variant2 ...]
# [FORCE_VARIANTS variant1])
#
@@ -1107,16 +1119,6 @@
# boost_python, multi-threaded variants of boost_mpi_python will
# link against multi-threaded variants of boost_python.
#
-# STATIC_TAG: States that the name of static library variants on
-# Unix need to be named differently from shared library
-# variants. This particular option should only be used in rare cases
-# where the static and shared library variants are incompatible,
-# such that linking against the shared library rather than the
-# static library will cause features. When this option is provided,
-# static libraries on Unix variants will have "-s" appended to their
-# names. Note: we hope that this is a temporary solution. At
-# present, it is only used by the Test library.
-#
# MODULE: This option states that, when building a shared library,
# the shared library should be built as a module rather than a
# normal shared library. Modules have special meaning an behavior on
@@ -1151,14 +1153,11 @@
macro(boost_add_library LIBNAME)
parse_arguments(THIS_LIB
"DEPENDS;COMPILE_FLAGS;LINK_FLAGS;LINK_LIBS;EXTRA_VARIANTS;FORCE_VARIANTS;${BOOST_ADD_ARG_NAMES}"
- "STATIC_TAG;MODULE;NO_INSTALL;${BOOST_ADDLIB_OPTION_NAMES}"
+ "MODULE;NO_INSTALL;${BOOST_ADDLIB_OPTION_NAMES}"
${ARGN}
)
set(THIS_LIB_SOURCES ${THIS_LIB_DEFAULT_ARGS})
- string(TOUPPER "${LIBNAME}_COMPILED_LIB" compiled_lib)
- set (${compiled_lib} TRUE CACHE INTERNAL "")
-
if (NOT TEST_INSTALLED_TREE)
# A top-level target that refers to all of the variants of the
# library, collectively.
@@ -1212,9 +1211,6 @@
)
set(THIS_LIB_SOURCES ${THIS_LIB_DEFAULT_ARGS})
- string(TOUPPER "${LIBNAME}_COMPILED_LIB" compiled_lib)
- set (${compiled_lib} TRUE CACHE INTERNAL "")
-
if (NOT TEST_INSTALLED_TREE)
boost_select_variant(${LIBNAME} THIS_LIB)
if (THIS_LIB_VARIANT)
@@ -1382,11 +1378,6 @@
endforeach(LIB ${THIS_EXE_DEPENDS})
# Build the executable
- # TODO: the use of ${PROJECT_NAME}/${EXENAME} is a bit strange.
- # It's designed to keep the names of regression tests from one library
- # separate from the regression tests of another library, but this can
- # be handled better with OUTPUT_NAME. This would also allow us to eliminate
- # the directory-creation logic in boost_library_project.
if (THIS_PROJECT_IS_TOOL)
set(THIS_EXE_NAME ${EXENAME})
else()
Modified: trunk/tools/build/CMake/BoostDocs.cmake
==============================================================================
--- trunk/tools/build/CMake/BoostDocs.cmake (original)
+++ trunk/tools/build/CMake/BoostDocs.cmake 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -118,6 +118,9 @@
elseif(THIS_XSL_MAKE_TARGET)
add_custom_target(${THIS_XSL_MAKE_TARGET}
DEPENDS ${THIS_XSL_OUTPUT_FILE})
+ set_target_properties(${THIS_XSL_MAKE_TARGET}
+ PROPERTIES
+ EXCLUDE_FROM_ALL ON)
endif()
endif()
endmacro(xsl_transform)
@@ -166,20 +169,12 @@
file(APPEND ${DOXYFILE} "${PARAM}\n")
endforeach(PARAM)
- set(THIS_DOXY_MODULAR_HEADER_PATH ${CMAKE_SOURCE_DIR}/libs/${libname}/include)
+ set(THIS_DOXY_HEADER_PATH ${CMAKE_SOURCE_DIR}/libs/${libname}/include)
set(THIS_DOXY_HEADER_LIST "")
set(THIS_DOXY_HEADERS)
foreach(HDR ${THIS_DOXY_DEFAULT_ARGS})
- if(EXISTS ${CMAKE_SOURCE_DIR}/${HDR})
- list(APPEND THIS_DOXY_HEADERS ${CMAKE_SOURCE_DIR}/${HDR})
- elseif(EXISTS ${THIS_DOXY_MODULAR_HEADER_PATH}/${HDR})
- list(APPEND THIS_DOXY_HEADERS ${THIS_DOXY_MODULAR_HEADER_PATH}/${HDR})
- else(EXISTS ${CMAKE_SOURCE_DIR}/${HDR})
- message("Warning: Attempting to generate doxygen to boostbook target for header ${HDR},")
- message(" which was not found in the main source directory or in a modularized location")
- endif(EXISTS ${CMAKE_SOURCE_DIR}/${HDR})
-
+ list(APPEND THIS_DOXY_HEADERS ${THIS_DOXY_HEADER_PATH}/${HDR})
set(THIS_DOXY_HEADER_LIST
"${THIS_DOXY_HEADER_LIST} ${THIS_DOXY_HEADER_PATH}/${HDR}")
endforeach(HDR)
@@ -286,17 +281,22 @@
get_filename_component(THIS_DOC_EXT ${SOURCE} EXT)
string(TOUPPER ${THIS_DOC_EXT} THIS_DOC_EXT)
if (THIS_DOC_EXT STREQUAL ".QBK")
- # Transform Quickbook into BoostBook XML
- get_filename_component(SOURCE_FILENAME ${SOURCE} NAME_WE)
- set(BOOSTBOOK_FILE ${SOURCE_FILENAME}.xml)
- add_custom_command(OUTPUT ${BOOSTBOOK_FILE}
- COMMAND quickbook "--output-file=${BOOSTBOOK_FILE}"
- ${THIS_DOC_SOURCE_PATH}
- DEPENDS ${THIS_DOC_SOURCE_PATH} ${THIS_DOC_DEFAULT_ARGS}
- COMMENT "Generating BoostBook documentation for Boost.${PROJECT_NAME}...")
+ if (BUILD_QUICKBOOK)
+ # Transform Quickbook into BoostBook XML
+ get_filename_component(SOURCE_FILENAME ${SOURCE} NAME_WE)
+ set(BOOSTBOOK_FILE ${SOURCE_FILENAME}.xml)
+ add_custom_command(OUTPUT ${BOOSTBOOK_FILE}
+ COMMAND quickbook "--output-file=${BOOSTBOOK_FILE}"
+ ${THIS_DOC_SOURCE_PATH}
+ DEPENDS ${THIS_DOC_SOURCE_PATH} ${THIS_DOC_DEFAULT_ARGS}
+ COMMENT "Generating BoostBook documentation for Boost.${PROJECT_NAME}...")
- # Transform BoostBook into other formats
- boost_add_documentation(${CMAKE_CURRENT_BINARY_DIR}/${BOOSTBOOK_FILE})
+ # Transform BoostBook into other formats
+ 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.")
+ endif()
elseif (THIS_DOC_EXT STREQUAL ".XML")
# Transform BoostBook XML into DocBook XML
get_filename_component(SOURCE_FILENAME ${SOURCE} NAME_WE)
@@ -319,25 +319,17 @@
STYLESHEET ${BOOSTBOOK_XSL_DIR}/html.xsl
CATALOG ${CMAKE_BINARY_DIR}/catalog.xml
DIRECTORY HTML.manifest
- PARAMETERS admon.graphics.path=images/
- navig.graphics.path=images/
+ PARAMETERS admon.graphics.path=images
+ navig.graphics.path=images
boost.image.src=boost.png
- COMMENT "Generating HTML documentation for Boost.${PROJECT_NAME}..."
+ COMMENT "Generating HTML documentaiton for Boost.${PROJECT_NAME}..."
MAKE_TARGET ${PROJECT_NAME}-html)
- add_dependencies(html ${PROJECT_NAME}-html)
- #
- # Install associated stuff
- #
add_custom_command(TARGET ${PROJECT_NAME}-html
POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/src/boostbook.css ${CMAKE_CURRENT_BINARY_DIR}/html/boostbook.css
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/src/docutils.css ${CMAKE_CURRENT_BINARY_DIR}/html/docutils.css
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/src/reference.css ${CMAKE_CURRENT_BINARY_DIR}/html/reference.css
- COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/boost.png ${CMAKE_CURRENT_BINARY_DIR}/html/boost.png
- COMMENT "Copying in associated stuff, boostbook.css and boost.png"
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/doc/src/boostbook.css ${CMAKE_CURRENT_BINARY_DIR}/html
+ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/boost.png ${CMAKE_CURRENT_BINARY_DIR}/html
)
-
# Install generated documentation
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
DESTINATION share/boost-${BOOST_VERSION}
@@ -354,8 +346,7 @@
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)
+ MAKE_TARGET ${PROJECT_NAME}-man)
# Install man pages
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man
@@ -456,9 +447,6 @@
find_program(XSLTPROC xsltproc DOC "xsltproc transforms XML via XSLT")
set(XSLTPROC_FLAGS "--xinclude" CACHE STRING
"Flags to pass to xsltproc to transform XML documents")
-if(NOT XSLTPROC)
- message(STATUS "xsltproc not found... this will disable build of documentation.")
-endif()
# Find the DocBook DTD (version 4.2)
find_path(DOCBOOK_DTD_DIR docbookx.dtd
@@ -489,12 +477,8 @@
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
@@ -520,30 +504,31 @@
endif()
endif()
-set(BUILD_OCUMENTATION_OKAY TRUE)
-if (NOT XSLTPROC)
- message(STATUS "XSLTPROC not found, disabling build of documentation")
- set(BUILD_DOCUMENTATION_OKAY FALSE)
-elseif (NOT DOXYGEN)
- message(STATUS "DOXYGEN not found, disabling build of documentation")
- set(BUILD_DOCUMENTATION_OKAY FALSE)
-elseif (NOT DOCBOOK_DTD_DIR)
- message(STATUS "DOCBOOK_DTD_DIR not found, disabling build of documentation")
- message(STATUS "Set DOCBOOK_AUTOCONFIG to ON to get it automatically")
- set(BUILD_DOCUMENTATION_OKAY FALSE)
-elseif (NOT DOCBOOK_XSL_DIR)
- message(STATUS "DOCBOOK_XSL_DIR not found, disabling build of documentation")
- message(STATUS "Set DOCBOOK_AUTOCONFIG to ON to get it automatically")
- set(BUILD_DOCUMENTATION_OKAY FALSE)
-else()
- message(STATUS "Documentation prerequisites found, enabling docs build.")
+# Turn off BUILD_DOCUMENTATION if it isn't going to succeed.
+if (BUILD_DOCUMENTATION)
set(BUILD_DOCUMENTATION_OKAY TRUE)
-endif()
-
-if (NOT BUILD_DOCUMENTATION_OKAY)
- if (BUILD_DOCUMENTATION)
- set(BUILD_DOCUMENTATION OFF CACHE BOOL
- "Whether to build library documentation" FORCE)
+ if (NOT XSLTPROC)
+ set(BUILD_DOCUMENTATION_OKAY FALSE)
+ message(STATUS "Docs build disabled due to missing xsltproc")
+ elseif (NOT DOXYGEN)
+ set(BUILD_DOCUMENTATION_OKAY FALSE)
+ message(STATUS "Docs build disabled due to missing doxygen")
+ elseif (NOT DOCBOOK_DTD_DIR)
+ set(BUILD_DOCUMENTATION_OKAY FALSE)
+ message(STATUS "Docs build disabled due to missing docbook dtd dir")
+ message(STATUS "You can set DOCBOOK_AUTOCONFIG to attempt this automatically.")
+ elseif (NOT DOCBOOK_XSL_DIR)
+ set(BUILD_DOCUMENTATION_OKAY FALSE)
+ message(STATUS "Docs build disabled due to missing docbook xsl dir")
+ message(STATUS "You can set DOCBOOK_AUTOCONFIG to attempt this automatically.")
+ else()
+ set(BUILD_DOCUMENTATION_OKAY TRUE)
endif()
-endif()
+ if (NOT BUILD_DOCUMENTATION_OKAY)
+ if (BUILD_DOCUMENTATION)
+ set(BUILD_DOCUMENTATION OFF CACHE BOOL
+ "Whether to build library documentation" FORCE)
+ endif()
+ endif()
+endif()
\ No newline at end of file
Modified: trunk/tools/build/CMake/BoostTesting.cmake
==============================================================================
--- trunk/tools/build/CMake/BoostTesting.cmake (original)
+++ trunk/tools/build/CMake/BoostTesting.cmake 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -37,10 +37,11 @@
# want or need to perform regression testing on Boost. The Boost build
# is significantly faster when we aren't also building regression
# tests.
-option(BUILD_TESTING "Enable testing" OFF)
+option(BUILD_REGRESSION_TESTS "Enable regression testing" OFF)
-if (BUILD_TESTING)
+if (BUILD_REGRESSION_TESTS)
enable_testing()
+ mark_as_advanced(BUILD_TESTING)
option(TEST_INSTALLED_TREE "Enable testing of an already-installed tree" OFF)
@@ -50,7 +51,10 @@
if (TEST_INSTALLED_TREE)
include("${CMAKE_INSTALL_PREFIX}/lib/Boost${BOOST_VERSION}/boost-targets.cmake")
endif (TEST_INSTALLED_TREE)
-endif (BUILD_TESTING)
+
+ set(DART_TESTING_TIMEOUT=15 CACHE INTEGER "Timeout after this much madness")
+
+endif (BUILD_REGRESSION_TESTS)
#-------------------------------------------------------------------------------
# This macro adds additional include directories based on the dependencies of
@@ -121,9 +125,9 @@
endwhile()
endforeach()
- foreach (include ${THIS_TEST_DEPENDS_ALL})
- include_directories("${Boost_SOURCE_DIR}/libs/${include}/include")
- endforeach (include ${includes})
+ foreach (include ${THIS_TEST_DEPENDS_ALL})
+ include_directories("${Boost_SOURCE_DIR}/libs/${include}/include")
+ endforeach (include ${includes})
endmacro(boost_additional_test_dependencies libname)
#-------------------------------------------------------------------------------
@@ -140,6 +144,7 @@
# [LINK_FLAGS linkflags]
# [LINK_LIBS linklibs]
# [DEPENDS libdepend1 libdepend2 ...]
+# [KNOWN_FAILURES string1 string2 ...]
# [COMPILE] [RUN] [FAIL])
#
# testname is the name of the test. The remaining arguments passed to
@@ -169,7 +174,7 @@
set(BOOST_TEST_OKAY TRUE)
set(BOOST_TEST_COMPILE_FLAGS "")
parse_arguments(BOOST_TEST
- "BOOST_LIB;LINK_LIBS;LINK_FLAGS;DEPENDS;COMPILE_FLAGS;ARGS;EXTRA_OPTIONS"
+ "BOOST_LIB;LINK_LIBS;LINK_FLAGS;DEPENDS;COMPILE_FLAGS;ARGS;EXTRA_OPTIONS;KNOWN_FAILURES"
"COMPILE;RUN;LINK;FAIL;RELEASE;DEBUG"
${ARGN}
)
@@ -203,12 +208,24 @@
set(BOOST_TEST_TESTNAME "${PROJECT_NAME}-${testname}")
#message("testname: ${BOOST_TEST_TESTNAME}")
# If testing is turned off, this test is not okay
- if (NOT BUILD_TESTING)
+ if (NOT BUILD_REGRESSION_TESTS)
set(BOOST_TEST_OKAY FALSE)
- endif(NOT BUILD_TESTING)
-
+ endif(NOT BUILD_REGRESSION_TESTS)
endmacro(boost_test_parse_args)
+# This macro attaches a the "known-failure" label to the given test
+# target if the build name matches any of the declared, known
+# failures.
+macro(boost_test_known_failures TEST)
+ foreach(PATTERN ${ARGN})
+ if (${BUILDNAME} MATCHES ${PATTERN})
+ set_tests_properties("${PROJECT_NAME}-${TEST}"
+ PROPERTIES LABELS "${PROJECT_NAME};known-failure")
+ endif()
+ endforeach()
+endmacro(boost_test_known_failures)
+
+
# This macro creates a Boost regression test that will be executed. If
# the test can be built, executed, and exits with a return code of
# zero, it will be considered to have passed.
@@ -281,6 +298,11 @@
PROPERTIES
LABELS "${PROJECT_NAME}"
)
+ boost_test_known_failures(${testname} ${BOOST_TEST_KNOWN_FAILURES})
+
+ # Make sure that the -test target that corresponds to this
+ # library or tool depends on this test executable.
+ add_dependencies(${PROJECT_NAME}-test ${THIS_EXE_NAME})
if (BOOST_TEST_FAIL)
set_tests_properties(${BOOST_TEST_TESTNAME} PROPERTIES WILL_FAIL ON)
@@ -352,6 +374,8 @@
LABELS "${PROJECT_NAME}"
)
+ boost_test_known_failures(${testname} ${BOOST_TEST_KNOWN_FAILURES})
+
if (BOOST_TEST_FAIL)
set_tests_properties(${BOOST_TEST_TESTNAME} PROPERTIES WILL_FAIL ON)
endif ()
@@ -372,22 +396,46 @@
#
# boost_test_link:
#
-# Under construction.
+#
+# Each library "exports" itself to
+# ${CMAKE_BINARY_DIR}/exports/<variantname>.cmake
+#
+# The list of 'depends' for these libraries has to match one of those
+# files, this way the export mechanism works. The generated
+# cmakelists will include() those exported .cmake files, for each
+# DEPENDS.
+#
#
macro(boost_test_link testname)
boost_test_parse_args(${testname} ${ARGN} LINK)
if(BOOST_TEST_OKAY)
+ # Determine the include directories to pass along to the underlying
+ # project.
+ # works but not great
+ get_directory_property(BOOST_TEST_INCLUDE_DIRS INCLUDE_DIRECTORIES)
+ set(BOOST_TEST_INCLUDES "")
+ foreach(DIR ${BOOST_TEST_INCLUDE_DIRS})
+ set(BOOST_TEST_INCLUDES "${BOOST_TEST_INCLUDES};${DIR}")
+ endforeach(DIR ${BOOST_TEST_INCLUDE_DIRS})
+
add_test(${BOOST_TEST_TESTNAME}
${CMAKE_CTEST_COMMAND}
+ -VV
--build-and-test
${Boost_SOURCE_DIR}/tools/build/CMake/LinkTest
${Boost_BINARY_DIR}/tools/build/CMake/LinkTest
--build-generator ${CMAKE_GENERATOR}
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
--build-project LinkTest
+ --build-options
+ "-DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}"
+ "-DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}"
+ "-DBOOST_EXPORTS_DIR:FILEPATH=${CMAKE_BINARY_DIR}/exports"
"-DSOURCE:STRING=${CMAKE_CURRENT_SOURCE_DIR}/${BOOST_TEST_SOURCES}"
"-DINCLUDES:STRING=${BOOST_TEST_INCLUDES}"
"-DCOMPILE_FLAGS:STRING=${BOOST_TEST_COMPILE_FLAGS}"
+ "-DLINK_LIBS:STRING=${BOOST_TEST_LINK_LIBS}"
+ "-DDEPENDS:STRING=${BOOST_TEST_DEPENDS}"
)
set_tests_properties(${BOOST_TEST_TESTNAME}
@@ -395,6 +443,8 @@
LABELS "${PROJECT_NAME}"
)
+ boost_test_known_failures(${testname} ${BOOST_TEST_KNOWN_FAILURES})
+
if (BOOST_TEST_FAIL)
set_tests_properties(${BOOST_TEST_TESTNAME} PROPERTIES WILL_FAIL ON)
endif ()
Modified: trunk/tools/build/CMake/BoostUtils.cmake
==============================================================================
--- trunk/tools/build/CMake/BoostUtils.cmake (original)
+++ trunk/tools/build/CMake/BoostUtils.cmake 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -211,3 +211,17 @@
set(${LIST} ${${LIST}} PARENT_SCOPE)
endfunction(topological_sort)
+
+# Small little hack that tweaks a component name (as used for CPack)
+# to make sure to avoid certain names that cause problems. Sets the
+# variable named varname to the "sanitized" name.
+#
+# FIXME: This is a complete hack. We probably need to fix the CPack
+# generators (NSIS in particular) to get rid of the need for this.
+macro(fix_cpack_component_name varname name)
+ if (${name} STREQUAL "foreach")
+ set(${varname} "boost_foreach")
+ else()
+ set(${varname} ${name})
+ endif()
+endmacro()
\ No newline at end of file
Modified: trunk/tools/build/CMake/LinkTest/CMakeLists.txt
==============================================================================
--- trunk/tools/build/CMake/LinkTest/CMakeLists.txt (original)
+++ trunk/tools/build/CMake/LinkTest/CMakeLists.txt 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -1,7 +1,20 @@
cmake_minimum_required(VERSION 2.6)
+file(GLOB BOOST_EXPORTS "${BOOST_EXPORTS_DIR}/*.cmake")
+
+foreach(import
+ ${DEPENDS})
+ include(${BOOST_EXPORTS_DIR}/${import}.cmake)
+endforeach()
+
project(LinkTest)
include_directories (${INCLUDES})
-add_executable(link-test ${SOURCE} COMPILE_FLAGS "${COMPILE_FLAGS}")
+add_executable(link-test ${SOURCE})
set_source_files_properties(${SOURCE}
- PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
\ No newline at end of file
+ PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}")
+
+message("DEPENDS=====${DEPENDS}")
+
+target_link_libraries(link-test
+ ${LINK_LIBS}
+ ${DEPENDS})
Modified: trunk/tools/quickbook/CMakeLists.txt
==============================================================================
--- trunk/tools/quickbook/CMakeLists.txt (original)
+++ trunk/tools/quickbook/CMakeLists.txt 2009-05-21 10:05:15 EDT (Thu, 21 May 2009)
@@ -1,12 +1,13 @@
boost_tool_project(Quickbook
DESCRIPTION "A WikiWiki style documentation tool geared towards C++ documentation"
AUTHORS "Joel de Guzman <joel -at- boost-consulting.com>"
- "Eric Niebler <eric -at- boost-consulting.com>")
+ "Eric Niebler <eric -at- boost-consulting.com>"
+ )
if (MSVC)
add_definitions(/wd4511 /wd4512 /wd4701 /wd4702 /wd4244 /wd4267 /wd4800)
endif (MSVC)
-
+
#
# TDS: this needs fixing... these are the modules that quickbook is
# dependent on. if boost is modularized, you need these, but
@@ -40,7 +41,6 @@
${CMAKE_SOURCE_DIR}/libs/utility/include
)
-
boost_add_executable(quickbook
detail/quickbook.cpp
detail/actions.cpp
@@ -53,3 +53,4 @@
detail/markups.cpp
DEPENDS boost_program_options boost_filesystem
)
+
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk