From 9865f925773aa51294bd05f5ea4ae414c30a100a Mon Sep 17 00:00:00 2001 From: Denis Arnaud Date: Fri, 25 Feb 2011 00:34:55 +0100 Subject: [PATCH] [1.46.0] Updated for (final release of) Boost 1.46.0 --- boost-1.46.0-cmakeify-full.patch | 38483 +++++++++++++++++++++++++++++ boost.spec | 32 +- 2 files changed, 38504 insertions(+), 11 deletions(-) create mode 100644 boost-1.46.0-cmakeify-full.patch diff --git a/boost-1.46.0-cmakeify-full.patch b/boost-1.46.0-cmakeify-full.patch new file mode 100644 index 0000000..6904c27 --- /dev/null +++ b/boost-1.46.0-cmakeify-full.patch @@ -0,0 +1,38483 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +new file mode 100644 +index 0000000..551b8f8 +--- /dev/null ++++ b/CMakeLists.txt +@@ -0,0 +1,402 @@ ++########################################################################## ++# CMake Build Rules for Boost # ++########################################################################## ++# Copyright (C) 2007, 2008 Douglas Gregor # ++# Copyright (C) 2007, 2009 Troy Straszheim # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# Basic Usage: # ++# # ++# On Unix variants: # ++# ccmake BOOST_DIRECTORY # ++# # ++# (c)onfigure options to your liking, then (g)enerate # ++# makefiles. Use "make" to build, "make test" to test, "make # ++# install" to install, and "make package" to build binary # ++# packages. # ++# # ++# On Windows: # ++# run the CMake GUI, load the Boost directory, and generate # ++# project files or makefiles for your environment. # ++# # ++# For more information about CMake, see http://www.cmake.org # ++########################################################################## ++cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR) ++project(Boost) ++ ++########################################################################## ++# Boost CMake modules # ++########################################################################## ++list(APPEND CMAKE_MODULE_PATH ${Boost_SOURCE_DIR}/tools/build/CMake) ++include(BoostUtils) ++ ++message(STATUS "") ++colormsg(_HIBLUE_ "Boost.CMake starting") ++ ++########################################################################## ++# Version information # ++########################################################################## ++ ++# We parse the version information from the boost/version.hpp header. ++file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/boost/version.hpp BOOST_VERSIONSTR ++ REGEX "#define[ ]+BOOST_VERSION[ ]+[0-9]+") ++string(REGEX MATCH "[0-9]+" BOOST_VERSIONSTR ${BOOST_VERSIONSTR}) ++if (BOOST_VERSIONSTR) ++ math(EXPR BOOST_VERSION_MAJOR "${BOOST_VERSIONSTR} / 100000") ++ math(EXPR BOOST_VERSION_MINOR "${BOOST_VERSIONSTR} / 100 % 1000") ++ math(EXPR BOOST_VERSION_SUBMINOR "${BOOST_VERSIONSTR} % 100") ++ set(BOOST_VERSION "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}") ++else() ++ message(FATAL_ERROR ++ "Unable to parse Boost version from ${CMAKE_CURRENT_SOURCE_DIR}/boost/version.hpp") ++endif() ++ ++# ++# This for automatic testing of multiple versioned installs ++# ++if(BOOST_VERSION_OVERRIDE) ++ set(BOOST_VERSION ${BOOST_VERSION_OVERRIDE}) ++ set(BOOST_VERSION_NUMERIC ${BOOST_VERSION_NUMERIC_OVERRIDE}) ++ set(BOOST_VERSION_UNDERSCORES ${BOOST_VERSION_UNDERSCORES_OVERRIDE}) ++ configure_file(tools/build/CMake/install_me/version.hpp.override.in ${CMAKE_BINARY_DIR}/version.hpp) ++endif() ++ ++set(BOOST_CMAKE_VERSION "${BOOST_VERSION}.cmake0") ++ ++# ++# For intermittent deployment of docs ++# ++set(BOOST_CMAKE_HOST sodium.resophonic.com) ++set(BOOST_CMAKE_DOCROOT /var/www/htdocs/boost-cmake/) ++set(BOOST_CMAKE_VERSIONED_DOCROOT ${BOOST_CMAKE_DOCROOT}/${BOOST_CMAKE_VERSION}) ++set(BOOST_CMAKE_URL ${BOOST_CMAKE_HOST}:${BOOST_CMAKE_VERSIONED_DOCROOT}) ++ ++# ++# BOOST_MAINTAINER: undocced variable that sets up maintainer mode ++# ++if(BOOST_MAINTAINER) ++ # ++ # Put the boost.cmake version someplace sphinx can get it ++ # for use in generated documentation ++ # ++ set(CMAKE_DOCS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tools/build/CMake/docs/) ++ set(UPSTREAM_TAG "Boost_1_41_0") ++ ++ set(gitdiff "git diff --stat=100,90 ${UPSTREAM_TAG}") ++ add_custom_target(make-diff ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ++ COMMAND echo "% ${gitdiff}" > ${CMAKE_DOCS_DIR}/source/git_diff.txt ++ COMMAND git diff --stat=100,90 ${UPSTREAM_TAG} >> ${CMAKE_DOCS_DIR}/source/git_diff.txt ++ COMMAND make -C ${CMAKE_DOCS_DIR} html ++ ) ++ ++ add_custom_target(do-release ++ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} ++ COMMAND git archive --format=tar --prefix=boost-${BOOST_CMAKE_VERSION}/ ${BOOST_CMAKE_VERSION} | gzip --best > boost-${BOOST_CMAKE_VERSION}.tar.gz ++ COMMAND git archive --format=zip -9 --prefix=boost-${BOOST_CMAKE_VERSION}/ ${BOOST_CMAKE_VERSION} > boost-${BOOST_CMAKE_VERSION}.zip ++ # COMMAND git log --quiet ${BOOST_CMAKE_VERSION} > /dev/null ++ COMMAND ssh ${BOOST_CMAKE_HOST} mkdir -p ${BOOST_CMAKE_VERSIONED_DOCROOT} ++ COMMAND scp boost-${BOOST_CMAKE_VERSION}.tar.gz boost-${BOOST_CMAKE_VERSION}.zip ${BOOST_CMAKE_URL} ++ COMMAND make -C ${CMAKE_DOCS_DIR} deploy ++ ) ++ ++ colormsg(HIRED "*** MAINTAINER TARGETS ADDED ***") ++ ++endif() ++ ++# ++# Make sure that we reconfigure when boost/version.hpp changes. ++# ++configure_file(boost/version.hpp ++ ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/version.stamp) ++########################################################################## ++ ++# Put the libaries and binaries that get built into directories at the ++# top of the build tree rather than in hard-to-find leaf ++# directories. This simplifies manual testing and the use of the build ++# tree rather than installed Boost libraries. ++set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) ++set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) ++set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) ++ ++ ++message(STATUS "") ++boost_report_pretty("Boost.CMake version" BOOST_CMAKE_VERSION) ++ ++include(BoostConfig) ++include(BoostCore) ++include(BoostDocs) ++include(BoostTesting) ++########################################################################## ++ ++########################################################################## ++# Build Features and Variants # ++########################################################################## ++ ++ ++# User-level options deciding which variants we will build. ++option(ENABLE_STATIC "Whether to build static libraries" ON) ++option(ENABLE_SHARED "Whether to build shared libraries" ON) ++option(ENABLE_DEBUG "Whether to build debugging libraries" ON) ++option(ENABLE_RELEASE "Whether to build release libraries" ON) ++option(ENABLE_SINGLE_THREADED "Whether to build single-threaded libraries" OFF) ++option(ENABLE_MULTI_THREADED "Whether to build multi-threaded libraries" ON) ++ ++if(BUILD_VERSIONED) ++ message(FATAL_ERROR "Option 'BUILD_VERSIONED' has changed, the new name is WINMANGLE_LIBNAMES") ++endif(BUILD_VERSIONED) ++ ++#if(BUILD_TESTING) ++# message(FATAL_ERROR "Option 'BUILD_TESTING' is gone, new name is BUILD_TESTS, see the docs") ++#endif() ++ ++option(WINMANGLE_LIBNAMES ++ "mangle toolset and boost version tags to into library names" ++ ${WIN32}) ++ ++option(BUILD_SOVERSIONED "Create libraries with SONAMES" ${UNIX}) ++ ++if(UNIX) ++ option(INSTALL_VERSIONED "Install to versioned directories" ON) ++endif() ++ ++ ++# the default set of library variants that we will be building ++boost_add_default_variant(RELEASE DEBUG) ++boost_add_default_variant(SHARED STATIC) ++boost_add_default_variant(MULTI_THREADED SINGLE_THREADED) ++ ++if (MSVC) ++ # For now, we only actually support static/dynamic run-time variants for ++ # Visual C++. Provide both options for Visual C++ users, but just fix ++ # the values of the variables for all other platforms. ++ option(ENABLE_STATIC_RUNTIME ++ "Whether to build libraries linking against the static runtime" ++ ON) ++ ++ option(ENABLE_DYNAMIC_RUNTIME ++ "Whether to build libraries linking against the dynamic runtime" ++ ON) ++ ++ boost_add_default_variant(DYNAMIC_RUNTIME STATIC_RUNTIME) ++endif() ++ ++# Extra features used by some libraries ++set(ENABLE_PYTHON_NODEBUG ON) ++boost_add_extra_variant(PYTHON_NODEBUG PYTHON_DEBUG) ++########################################################################## ++ ++########################################################################## ++# Installation # ++########################################################################## ++if (WIN32) ++ set(sep "_") ++else() ++ set(sep ".") ++endif() ++ ++if (BOOST_VERSION_OVERRIDE) ++ set(verdir "boost-${BOOST_VERSION_OVERRIDE}") ++elseif(INSTALL_VERSIONED) ++ set(verdir "boost-${BOOST_VERSION_MAJOR}${sep}${BOOST_VERSION_MINOR}${sep}${BOOST_VERSION_SUBMINOR}") ++else() ++ set(verstring "") ++endif() ++ ++set(BOOST_INCLUDE_INSTALL_DIR ++ "include/${verdir}" ++ CACHE STRING "Destination path under CMAKE_INSTALL_PREFIX for header files" ++ ) ++ ++set(BOOST_LIB_INSTALL_DIR ++ "lib${LIB_SUFFIX}/${verdir}" ++ CACHE STRING "Destination path under CMAKE_INSTALL_PREFIX for libraries" ++ ) ++ ++boost_report_pretty("Install prefix" CMAKE_INSTALL_PREFIX) ++boost_report_pretty("Install include dir" BOOST_INCLUDE_INSTALL_DIR) ++boost_report_pretty("Install lib dir" BOOST_LIB_INSTALL_DIR) ++ ++include(BoostExternals) ++ ++if (BOOST_VERSION_OVERRIDE) ++ install(FILES ${CMAKE_BINARY_DIR}/version.hpp ++ DESTINATION ${BOOST_INCLUDE_INSTALL_DIR}/boost ++ RENAME version.hpp) ++ install(DIRECTORY boost ++ DESTINATION ${BOOST_INCLUDE_INSTALL_DIR} ++ PATTERN "CVS" EXCLUDE ++ PATTERN ".svn" EXCLUDE ++ PATTERN "boost/version.hpp" EXCLUDE) ++else() ++ install(DIRECTORY boost ++ DESTINATION ${BOOST_INCLUDE_INSTALL_DIR} ++ PATTERN "CVS" EXCLUDE ++ PATTERN ".svn" EXCLUDE) ++endif() ++ ++# ++# for testing ++# ++if (BOOST_VERSION_OVERRIDE) ++ install(FILES ${CMAKE_BINARY_DIR}/version.hpp ++ DESTINATION ${BOOST_INCLUDE_INSTALL_DIR}/boost ++ RENAME version.hpp) ++endif() ++ ++ ++########################################################################## ++# Binary packages # ++########################################################################## ++# ++# CPACK_PACKAGE_NAME may not contain spaces when generating rpms ++# ++set(CPACK_PACKAGE_NAME "Boost") ++set(CPACK_PACKAGE_VENDOR "Boost.org") ++set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Boost ${BOOST_VERSION} prerelease") ++set(CPACK_PACKAGE_FILE_NAME "boost-${BOOST_VERSION}-${BOOST_PLATFORM}-${BOOST_TOOLSET}") ++ ++if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README.txt") ++ message(STATUS "Using generic cpack package description file.") ++ set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.txt") ++ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.txt") ++endif () ++ ++set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE_1_0.txt") ++if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Welcome.txt") ++ message(STATUS "Using generic cpack welcome file.") ++ set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/Welcome.txt") ++endif() ++ ++set(CPACK_PACKAGE_VERSION "${BOOST_VERSION}") ++set(CPACK_PACKAGE_VERSION_MAJOR "${BOOST_VERSION_MAJOR}") ++set(CPACK_PACKAGE_VERSION_MINOR "${BOOST_VERSION_MINOR}") ++set(CPACK_PACKAGE_VERSION_PATCH "${BOOST_VERSION_SUBMINOR}") ++set(CPACK_PACKAGE_INSTALL_DIRECTORY "Boost") ++ ++if(WIN32 AND NOT UNIX) ++ # There is a bug in NSI that does not handle full unix paths properly. Make ++ # sure there is at least one set of four (4) backlasshes. ++ # NOTE: No Boost icon yet ++ set(CPACK_MONOLITHIC_INSTALL ON) # don't be modular for now ++ set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/tools/build/CMake\\\\Boost.bmp") ++# set(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\\\MyExecutable.exe") ++ set(CPACK_NSIS_DISPLAY_NAME "Boost ${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR} prerelease") ++ set(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.boost.org") ++ set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.boost.org") ++ set(CPACK_NSIS_CONTACT "boost-users@lists.boost.org") ++ set(CPACK_NSIS_MODIFY_PATH ON) ++ ++ # Encode the compiler name in the package ++ if (MSVC60) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc6") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual C++ 6") ++ elseif (MSVC70) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc7") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2002") ++ elseif (MSVC71) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc71") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2003") ++ elseif (MSVC80) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc8") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2005") ++ elseif (MSVC90) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-vc9") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Microsoft Visual Studio 2008") ++ elseif (BORLAND) ++ set(CPACK_PACKAGE_FILE_NAME "Boost-${BOOST_VERSION}-borland") ++ set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_DISPLAY_NAME} for Borland C++ Builder") ++ endif (MSVC60) ++ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${CPACK_NSIS_DISPLAY_NAME}") ++endif(WIN32 AND NOT UNIX) ++include(CPack) ++ ++if (FALSE) ++ option(BOOST_INSTALLER_ON_THE_FLY ++ "Whether to build installers that download components on-the-fly" OFF) ++ ++ if (BOOST_INSTALLER_ON_THE_FLY) ++ if(COMMAND cpack_configure_downloads) ++ cpack_configure_downloads( ++ "http://www.osl.iu.edu/~dgregor/Boost-CMake/${BOOST_VERSION}/" ++ ALL ADD_REMOVE) ++ endif() ++ endif() ++endif() ++########################################################################## ++ ++########################################################################## ++# Building Boost libraries # ++########################################################################## ++# Always include the directory where Boost's include files will be. ++if (TEST_INSTALLED_TREE) ++ # Use the headers from the installation directory ++ include_directories("${CMAKE_INSTALL_PREFIX}/${BOOST_HEADER_DIR}") ++elseif (BOOST_CMAKE_SELFTEST) ++ # Use selftest headers ++ include_directories("${BOOST_CMAKE_SELFTEST_ROOT}/include") ++ # and regular boost headers ++ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++ ++else() ++ # Use the headers directly from the Boost source tree (in boost/) ++ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++endif (TEST_INSTALLED_TREE) ++ ++# Boost.Build version 2 does this due to trouble with autolinking ++# during building and testing. ++# TODO: See if we can actually use auto-linking in our regression tests. ++add_definitions(-DBOOST_ALL_NO_LIB=1) ++ ++# ++# Get build space set up for exports file ++# ++set(BOOST_EXPORTS_FILE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Exports.cmake ++ CACHE FILEPATH "File to export targets from boost build directory") ++ ++file(MAKE_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) ++file(REMOVE ${BOOST_EXPORTS_FILE}) ++ ++if(NOT INSTALL_VERSIONED) ++ set(pathelem "boost/") ++endif() ++ ++if (NOT BOOST_EXPORTS_INSTALL_DIR) ++ set(BOOST_EXPORTS_INSTALL_DIR ${BOOST_LIB_INSTALL_DIR} ++ CACHE STRING "Install location for cmake exports") ++endif() ++ ++mark_as_advanced(BOOST_EXPORTS_FILE) ++ ++# Add build rules for documentation ++add_subdirectory(doc) ++ ++# Add build rules for all of the Boost libraries ++add_subdirectory(libs) ++ ++# Add build rules for all of the Boost tools ++# TODO: On hold while I work on the modularity code ++add_subdirectory(tools) ++########################################################################## ++ ++if(NOT BOOST_ALL_COMPONENTS) ++ # ++ # This is a dummy target to suppress the warning from ++ # install(EXPORT,....) below. ++ # ++ add_executable(this_is_a_dummy_no_libs_were_built ++ ${CMAKE_CURRENT_SOURCE_DIR}/tools/build/CMake/main.cpp) ++ ++ install(TARGETS this_is_a_dummy_no_libs_were_built ++ EXPORT Boost ++ DESTINATION ${BOOST_LIB_INSTALL_DIR} ++ COMPONENT Boost) ++ ++endif() ++ ++install(EXPORT Boost DESTINATION ${BOOST_EXPORTS_INSTALL_DIR}) ++ ++add_subdirectory(tools/build/CMake) +diff --git a/CTestConfig.cmake b/CTestConfig.cmake +new file mode 100644 +index 0000000..aad2c82 +--- /dev/null ++++ b/CTestConfig.cmake +@@ -0,0 +1,21 @@ ++## This file should be placed in the root directory of your project. ++## Then modify the CMakeLists.txt file in the root directory of your ++## project to incorporate the testing dashboard. ++ ++message("--------------- CTestConfig.cmake --------------") ++set(CTEST_PROJECT_NAME "Boost") ++set(CTEST_NIGHTLY_START_TIME "03:00:00 EST") ++ ++set(CTEST_UPDATE_TYPE "git") ++ ++set(CTEST_DROP_METHOD "http") ++set(CTEST_DROP_SITE "my.cdash.org") ++set(CTEST_DROP_LOCATION "/submit.php?project=Boost") ++set(CTEST_DROP_SITE_CDASH TRUE) ++set(UPDATE_COMMAND "git") ++# ++# You're welcome to set these ++# ++#set(BUILD_PROJECTS "crc") ++#set(BUILD_TESTS "ALL") ++ +diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt +new file mode 100644 +index 0000000..2f40bc0 +--- /dev/null ++++ b/doc/CMakeLists.txt +@@ -0,0 +1,9 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++if (BUILD_DOCUMENTATION) ++ add_subdirectory(src) ++endif () +diff --git a/doc/src/CMakeLists.txt b/doc/src/CMakeLists.txt +new file mode 100644 +index 0000000..45de2eb +--- /dev/null ++++ b/doc/src/CMakeLists.txt +@@ -0,0 +1,19 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++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 ++ PATTERN ".svn" EXCLUDE) ++endif () ++ +diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt +new file mode 100644 +index 0000000..4f0c378 +--- /dev/null ++++ b/libs/CMakeLists.txt +@@ -0,0 +1,117 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# Find each subdirectory containing a CMakeLists.txt file, and include ++# it. This avoids the need to manually list which libraries in Boost ++# have CMakeLists.txt files. ++ ++# return a list of directories that we should add_subdirectory() ++macro(BOOST_COLLECT_SUBPROJECT_DIRECTORY_NAMES dirname varname filename) ++ file(GLOB globbed RELATIVE "${dirname}" "${dirname}/*/${filename}") ++ foreach(file ${globbed}) ++ get_filename_component(dir ${file} PATH) ++ set(${varname} ${${varname}} ${dir}) ++ endforeach() ++endmacro() ++ ++# Find all of the subdirectories with .cmake files in them. These are ++# the libraries with dependencies. ++boost_collect_subproject_directory_names(${BOOST_LIBS_PARENT_DIR} BOOST_MODULE_DIRS "module.cmake") ++foreach(subdir ${BOOST_MODULE_DIRS}) ++ include("${BOOST_LIBS_PARENT_DIR}/${subdir}/module.cmake") ++endforeach(subdir) ++ ++# Find all of the subdirectories with CMakeLists.txt files in ++# them. This contains all of the Boost libraries. ++boost_collect_subproject_directory_names(${BOOST_LIBS_PARENT_DIR} BOOST_SUBPROJECT_DIRS "CMakeLists.txt") ++ ++# Add all of the Boost projects in reverse topological order, so that ++# a library's dependencies show up before the library itself. ++set(CPACK_INSTALL_CMAKE_COMPONENTS_ALL) ++list(SORT BOOST_SUBPROJECT_DIRS) ++topological_sort(BOOST_SUBPROJECT_DIRS BOOST_ _DEPENDS) ++ ++# ++# Sanity-check for typos: all projects in BUILD_PROJECTS must exist ++# ++if ((NOT BUILD_PROJECTS STREQUAL "ALL") AND (NOT BUILD_PROJECTS STREQUAL "NONE")) ++ foreach(project ${BUILD_PROJECTS}) ++ list(FIND BOOST_SUBPROJECT_DIRS ${project} THIS_SUBPROJECT_DIRS_INDEX) ++ if (THIS_SUBPROJECT_DIRS_INDEX LESS 0) ++ message(FATAL_ERROR "Nonexistant project \"${project}\" specified in BUILD_PROJECTS. These project names should be all lowercase.") ++ endif() ++ endforeach() ++endif() ++ ++set(BOOST_TEST_PROJECTS "" CACHE INTERNAL "hi" FORCE) ++ ++# ++# include only directories of projects in BUILD_PROJECTS ++# ++message(STATUS "") ++colormsg(_HIBLUE_ "Reading boost project directories (per BUILD_PROJECTS)") ++message(STATUS "") ++set(BOOST_ALL_COMPONENTS "") ++ ++foreach(subdir ${BOOST_SUBPROJECT_DIRS}) ++ list(FIND BUILD_PROJECTS ${subdir} THIS_BUILD_PROJECTS_INDEX) ++ if ((THIS_BUILD_PROJECTS_INDEX GREATER -1) OR (BUILD_PROJECTS STREQUAL "ALL")) ++ message(STATUS "+ ${subdir}") ++ add_subdirectory(${BOOST_LIBS_PARENT_DIR}/${subdir} ${CMAKE_BINARY_DIR}/libs/${subdir}) ++ endif() ++endforeach() ++ ++# ++# If we're doing selftests, add those selftest dirs ++# ++foreach(project ++ ${BOOST_CMAKE_SELFTEST_PROJECTS}) ++ colormsg(RED "* ${project}") ++ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../tools/build/CMake/selftest_projects/${project} ++ ${CMAKE_BINARY_DIR}/libs/${project}) ++endforeach() ++ ++ ++set(BOOST_ALL_COMPONENTS ${BOOST_ALL_COMPONENTS} PARENT_SCOPE) ++ ++if(BUILD_TESTS AND NOT BUILD_TESTS STREQUAL "NONE") ++ message(STATUS "") ++ colormsg(_HIBLUE_ "Traversing project test directories (per BUILD_TESTS)") ++ message(STATUS "") ++else() ++ message(STATUS "") ++ colormsg(HIGRAY "BUILD_TESTS is NONE: skipping test directories.") ++ message(STATUS "") ++endif() ++ ++foreach(PROJ ${BOOST_TEST_PROJECTS}) ++ string(TOLOWER ${PROJ} proj) ++ project(${proj}) ++ set(BOOST_PROJECT_NAME ${proj}) ++ foreach(dir ${BOOST_${PROJ}_TESTDIRS}) ++ message(STATUS "+ ${proj}") ++ add_subdirectory(${dir} ${CMAKE_BINARY_DIR}/libs/${proj}/test) ++ endforeach() ++endforeach() ++ ++# Write out a GraphViz file containing inter-library dependencies. ++set(BOOST_DEPENDENCY_GRAPHVIZ_FILE "${Boost_BINARY_DIR}/dependencies.dot") ++file(WRITE ${BOOST_DEPENDENCY_GRAPHVIZ_FILE} "digraph boost {\n") ++foreach(SUBDIR ${BOOST_SUBPROJECT_DIRS}) ++ string(TOUPPER "BOOST_${SUBDIR}_COMPILED_LIB" BOOST_COMPILED_LIB_VAR) ++ if (${BOOST_COMPILED_LIB_VAR}) ++ file(APPEND ${BOOST_DEPENDENCY_GRAPHVIZ_FILE} " \"${SUBDIR}\" [style=\"filled\" fillcolor=\"#A3A27C\" shape=\"box\"];\n ") ++ endif (${BOOST_COMPILED_LIB_VAR}) ++ string(TOUPPER "BOOST_${SUBDIR}_DEPENDS" DEPENDS_VAR) ++ if(DEFINED ${DEPENDS_VAR}) ++ foreach(DEP ${${DEPENDS_VAR}}) ++ file(APPEND ${BOOST_DEPENDENCY_GRAPHVIZ_FILE} ++ " \"${SUBDIR}\" -> \"${DEP}\";\n") ++ endforeach() ++ endif() ++endforeach() ++file(APPEND ${BOOST_DEPENDENCY_GRAPHVIZ_FILE} " \"test\" [style=\"filled\" fillcolor=\"#A3A27C\" shape=\"box\"];\n ") ++file(APPEND ${BOOST_DEPENDENCY_GRAPHVIZ_FILE} "}\n") +diff --git a/libs/accumulators/CMakeLists.txt b/libs/accumulators/CMakeLists.txt +new file mode 100644 +index 0000000..373aadb +--- /dev/null ++++ b/libs/accumulators/CMakeLists.txt +@@ -0,0 +1,21 @@ ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ accumulators ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ accumulators ++ TESTDIRS test ++ EXAMPLEDIRS example ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "A framework for incremental calculation, and a collection of statistical accumulators." ++ MODULARIZED ++ AUTHORS "Eric Niebler " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/accumulators/doc/CMakeLists.txt b/libs/accumulators/doc/CMakeLists.txt +new file mode 100644 +index 0000000..c603de0 +--- /dev/null ++++ b/libs/accumulators/doc/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++message(STATUS "accumulators/docs needs love") ++ +diff --git a/libs/accumulators/example/CMakeLists.txt b/libs/accumulators/example/CMakeLists.txt +new file mode 100644 +index 0000000..ee4fff0 +--- /dev/null ++++ b/libs/accumulators/example/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_executable(example main.cpp) ++ +diff --git a/libs/accumulators/module.cmake b/libs/accumulators/module.cmake +new file mode 100644 +index 0000000..30a47c4 +--- /dev/null ++++ b/libs/accumulators/module.cmake +@@ -0,0 +1 @@ ++boost_module(accumulators DEPENDS parameter typeof foreach) +\ No newline at end of file +diff --git a/libs/accumulators/test/CMakeLists.txt b/libs/accumulators/test/CMakeLists.txt +new file mode 100644 +index 0000000..b14dc54 +--- /dev/null ++++ b/libs/accumulators/test/CMakeLists.txt +@@ -0,0 +1,82 @@ ++# (C) Copyright 2005: Eric Niebler ++# Distributed under the Boost Software License, Version 1.0. ++# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ++ ++# bring in rules for testing ++#import testing ; ++#import feature ; ++ ++#feature.feature iterator_debugging ++# : on off ++# : composite propagated optional ++# ; ++ ++#feature.compose off ++# : _HAS_ITERATOR_DEBUGGING=0 ++# ; ++ ++# project ++# : requirements ++# /boost/test//boost_unit_test_framework ++# static ++# ../../.. ++# msvc:_SCL_SECURE_NO_DEPRECATE ++# # MSVC's iterator debugging causes some tests to run forever. ++# msvc:off ++# intel-win:off ++# ; ++ ++boost_additional_test_dependencies(accumulators BOOST_DEPENDS test) ++ ++ ++set(TESTS ++count ++covariance ++droppable ++error_of ++extended_p_square ++extended_p_square_quantile ++external_accumulator ++external_weights ++kurtosis ++max ++mean ++median ++min ++moment ++pot_quantile ++p_square_cumulative_distribution ++p_square_quantile ++reference ++skewness ++sum ++tail ++tail_mean ++tail_quantile ++tail_variate_means ++valarray ++variance ++vector ++weighted_covariance ++weighted_extended_p_square ++weighted_kurtosis ++weighted_mean ++weighted_median ++weighted_moment ++weighted_p_square_cum_dist ++weighted_p_square_quantile ++weighted_skewness ++weighted_sum ++weighted_variance ++weighted_pot_quantile ++weighted_tail_mean ++weighted_tail_quantile ++weighted_tail_variate_means) ++ ++foreach(TEST ${TESTS}) ++ boost_test_run(${TEST} DEPENDS boost_unit_test_framework boost_serialization) ++endforeach(TEST ${TESTS}) ++ ++if(WIN32) ++ message("Need to turn on iterator debugging") ++endif(WIN32) +\ No newline at end of file +diff --git a/libs/algorithm/CMakeLists.txt b/libs/algorithm/CMakeLists.txt +new file mode 100644 +index 0000000..0f8d88c +--- /dev/null ++++ b/libs/algorithm/CMakeLists.txt +@@ -0,0 +1,22 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++ ++# Add a library target to the build system ++boost_library_project( ++ algorithm ++ # SRCDIRS ++ TESTDIRS minmax/test string/test ++ # EXAMPLEDIRS minmax/example string/example ++ HEADERS algorithm ++ # DOCDIRS ++ DESCRIPTION "A library of various algorithms." ++ MODULARIZED ++ AUTHORS "Pavol Droba " ++ "Herve Bronnimann " ++ # MAINTAINERS ++) +diff --git a/libs/algorithm/minmax/test/CMakeLists.txt b/libs/algorithm/minmax/test/CMakeLists.txt +new file mode 100644 +index 0000000..e70ce47 +--- /dev/null ++++ b/libs/algorithm/minmax/test/CMakeLists.txt +@@ -0,0 +1,10 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(algorithm BOOST_DEPENDS test) ++ ++boost_test_run(minmax_element_test) ++boost_test_run(minmax_test) +diff --git a/libs/algorithm/module.cmake b/libs/algorithm/module.cmake +new file mode 100644 +index 0000000..deb4bb2 +--- /dev/null ++++ b/libs/algorithm/module.cmake +@@ -0,0 +1,4 @@ ++boost_module(algorithm DEPENDS regex concept_check range) ++ ++ ++ +diff --git a/libs/algorithm/string/test/CMakeLists.txt b/libs/algorithm/string/test/CMakeLists.txt +new file mode 100644 +index 0000000..bbc383f +--- /dev/null ++++ b/libs/algorithm/string/test/CMakeLists.txt +@@ -0,0 +1,18 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(algorithm BOOST_DEPENDS test) ++ ++ ++boost_test_run(trim_test) ++boost_test_run(conv_test) ++boost_test_run(predicate_test) ++boost_test_run(find_test) ++boost_test_run(split_test) ++boost_test_run(join_test) ++boost_test_run(replace_test) ++boost_test_run(regex_test DEPENDS boost_regex SHARED) ++ +diff --git a/libs/any/CMakeLists.txt b/libs/any/CMakeLists.txt +new file mode 100644 +index 0000000..e6a4152 +--- /dev/null ++++ b/libs/any/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ any.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ any ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Safe, generic container for single values of different value types." ++ MODULARIZED ++ AUTHORS "Kevlin Henney" ++ MAINTAINERS "Alexander Nasonov " ++) ++ ++ +diff --git a/libs/any/module.cmake b/libs/any/module.cmake +new file mode 100644 +index 0000000..f47af03 +--- /dev/null ++++ b/libs/any/module.cmake +@@ -0,0 +1 @@ ++boost_module(any DEPENDS utility) +\ No newline at end of file +diff --git a/libs/any/test/CMakeLists.txt b/libs/any/test/CMakeLists.txt +new file mode 100644 +index 0000000..000fcab +--- /dev/null ++++ b/libs/any/test/CMakeLists.txt +@@ -0,0 +1,11 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(any BOOST_DEPENDS test) ++ ++boost_test_run(any_test ../any_test.cpp) ++boost_test_compile_fail(any_cast_cv_failed) ++ +diff --git a/libs/array/CMakeLists.txt b/libs/array/CMakeLists.txt +new file mode 100644 +index 0000000..ecdd503 +--- /dev/null ++++ b/libs/array/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ array.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ array ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "STL compliant container wrapper for arrays of constant size." ++ MODULARIZED ++ AUTHORS "Nicolai Josuttis" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/array/module.cmake b/libs/array/module.cmake +new file mode 100644 +index 0000000..ccd2813 +--- /dev/null ++++ b/libs/array/module.cmake +@@ -0,0 +1 @@ ++boost_module(array DEPENDS utility) +\ No newline at end of file +diff --git a/libs/array/test/CMakeLists.txt b/libs/array/test/CMakeLists.txt +new file mode 100644 +index 0000000..379e7b1 +--- /dev/null ++++ b/libs/array/test/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(array BOOST_DEPENDS test) ++ ++boost_test_run(array0 array0.cpp) ++boost_test_run(array1 array1.cpp) ++boost_test_run(array2 array2.cpp) ++boost_test_run(array3 array3.cpp) ++boost_test_run(array4 array4.cpp) ++boost_test_run(array5 array5.cpp) +diff --git a/libs/asio/CMakeLists.txt b/libs/asio/CMakeLists.txt +new file mode 100644 +index 0000000..8ec4465 +--- /dev/null ++++ b/libs/asio/CMakeLists.txt +@@ -0,0 +1,64 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ asio.hpp ++ asio ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ asio ++ # SRCDIRS ++ TESTDIRS test ++ EXAMPLEDIRS ++ example/ssl ++ example/chat ++ example/echo ++ example/icmp ++ example/http/server2 ++ example/http/server3 ++ example/http/server4 ++ example/http/client ++ example/http/server ++ example/local ++ example/allocation ++ example/porthopper ++ example/invocation ++ example/multicast ++ example/serialization ++ example/iostreams ++ example/socks4 ++ example/timers ++ example/tutorial/daytime1 ++ example/tutorial/daytime2 ++ example/tutorial/daytime3 ++ example/tutorial/daytime4 ++ example/tutorial/daytime5 ++ example/tutorial/daytime6 ++ example/tutorial/daytime7 ++ example/tutorial/timer1 ++ example/tutorial/timer2 ++ example/tutorial/timer3 ++ example/tutorial/timer4 ++ example/tutorial/timer5 ++ example/services ++ example/timeouts ++ example/windows ++ example/nonblocking ++ example/buffers ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Portable networking, including sockets, timers, hostname resolution and socket iostreams." ++ MODULARIZED ++ AUTHORS "Chris Kohlhoff " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/asio/example/allocation/CMakeLists.txt b/libs/asio/example/allocation/CMakeLists.txt +new file mode 100644 +index 0000000..8c4b9fe +--- /dev/null ++++ b/libs/asio/example/allocation/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "allocation-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/buffers/CMakeLists.txt b/libs/asio/example/buffers/CMakeLists.txt +new file mode 100644 +index 0000000..b79f18f +--- /dev/null ++++ b/libs/asio/example/buffers/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ reference_counted ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/chat/CMakeLists.txt b/libs/asio/example/chat/CMakeLists.txt +new file mode 100644 +index 0000000..21e2118 +--- /dev/null ++++ b/libs/asio/example/chat/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ chat_server ++ chat_client ++ posix_chat_client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_thread ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/echo/CMakeLists.txt b/libs/asio/example/echo/CMakeLists.txt +new file mode 100644 +index 0000000..edd9561 +--- /dev/null ++++ b/libs/asio/example/echo/CMakeLists.txt +@@ -0,0 +1,17 @@ ++foreach( ++ example ++ blocking_udp_echo_server ++ async_udp_echo_server ++ blocking_udp_echo_client ++ blocking_tcp_echo_server ++ async_tcp_echo_server ++ blocking_tcp_echo_client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_thread ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/http/client/CMakeLists.txt b/libs/asio/example/http/client/CMakeLists.txt +new file mode 100644 +index 0000000..7d97665 +--- /dev/null ++++ b/libs/asio/example/http/client/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ async_client ++ sync_client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "client-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/http/server/CMakeLists.txt b/libs/asio/example/http/server/CMakeLists.txt +new file mode 100644 +index 0000000..2a45be8 +--- /dev/null ++++ b/libs/asio/example/http/server/CMakeLists.txt +@@ -0,0 +1,32 @@ ++if( ++ UNIX ++) ++set( ++ main_entry ++ posix_main.cpp ++) ++else( ++) ++set( ++ main_entry ++ win_main.cpp ++) ++endif( ++ UNIX ++) ++boost_add_executable( ++ main ++ ${main_entry} ++ connection.cpp ++ connection_manager.cpp ++ mime_types.cpp ++ reply.cpp ++ request_handler.cpp ++ request_parser.cpp ++ server.cpp ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "server-" ++) +diff --git a/libs/asio/example/http/server2/CMakeLists.txt b/libs/asio/example/http/server2/CMakeLists.txt +new file mode 100644 +index 0000000..e66a1b7 +--- /dev/null ++++ b/libs/asio/example/http/server2/CMakeLists.txt +@@ -0,0 +1,32 @@ ++if( ++ UNIX ++) ++set( ++ main_entry ++ posix_main.cpp ++) ++else( ++) ++set( ++ main_entry ++ win_main.cpp ++) ++endif( ++ UNIX ++) ++boost_add_executable( ++ main ++ ${main_entry} ++ connection.cpp ++ io_service_pool.cpp ++ mime_types.cpp ++ reply.cpp ++ request_handler.cpp ++ request_parser.cpp ++ server.cpp ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "server2-" ++) +diff --git a/libs/asio/example/http/server3/CMakeLists.txt b/libs/asio/example/http/server3/CMakeLists.txt +new file mode 100644 +index 0000000..0bd5667 +--- /dev/null ++++ b/libs/asio/example/http/server3/CMakeLists.txt +@@ -0,0 +1,31 @@ ++if( ++ UNIX ++) ++set( ++ main_entry ++ posix_main.cpp ++) ++else( ++) ++set( ++ main_entry ++ win_main.cpp ++) ++endif( ++ UNIX ++) ++boost_add_executable( ++ main ++ ${main_entry} ++ connection.cpp ++ mime_types.cpp ++ reply.cpp ++ request_handler.cpp ++ request_parser.cpp ++ server.cpp ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "server3-" ++) +diff --git a/libs/asio/example/http/server4/CMakeLists.txt b/libs/asio/example/http/server4/CMakeLists.txt +new file mode 100644 +index 0000000..d0285ee +--- /dev/null ++++ b/libs/asio/example/http/server4/CMakeLists.txt +@@ -0,0 +1,30 @@ ++if( ++ UNIX ++) ++set( ++ main_entry ++ posix_main.cpp ++) ++else( ++) ++set( ++ main_entry ++ win_main.cpp ++) ++endif( ++ UNIX ++) ++boost_add_executable( ++ main ++ ${main_entry} ++ file_handler.cpp ++ mime_types.cpp ++ reply.cpp ++ request_parser.cpp ++ server.cpp ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "server4-" ++) +diff --git a/libs/asio/example/icmp/CMakeLists.txt b/libs/asio/example/icmp/CMakeLists.txt +new file mode 100644 +index 0000000..e665cd4 +--- /dev/null ++++ b/libs/asio/example/icmp/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ ping ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/invocation/CMakeLists.txt b/libs/asio/example/invocation/CMakeLists.txt +new file mode 100644 +index 0000000..175160d +--- /dev/null ++++ b/libs/asio/example/invocation/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ prioritised_handlers ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/iostreams/CMakeLists.txt b/libs/asio/example/iostreams/CMakeLists.txt +new file mode 100644 +index 0000000..9323eb2 +--- /dev/null ++++ b/libs/asio/example/iostreams/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ daytime_server ++ daytime_client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "iostreams-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/local/CMakeLists.txt b/libs/asio/example/local/CMakeLists.txt +new file mode 100644 +index 0000000..e39a130 +--- /dev/null ++++ b/libs/asio/example/local/CMakeLists.txt +@@ -0,0 +1,15 @@ ++foreach( ++ example ++ stream_server ++ iostream_client ++ stream_client ++ connect_pair ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_thread ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/multicast/CMakeLists.txt b/libs/asio/example/multicast/CMakeLists.txt +new file mode 100644 +index 0000000..6b0d070 +--- /dev/null ++++ b/libs/asio/example/multicast/CMakeLists.txt +@@ -0,0 +1,12 @@ ++foreach( ++ example ++ sender ++ receiver ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/nonblocking/CMakeLists.txt b/libs/asio/example/nonblocking/CMakeLists.txt +new file mode 100644 +index 0000000..ea5572e +--- /dev/null ++++ b/libs/asio/example/nonblocking/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ third_party_lib ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/porthopper/CMakeLists.txt b/libs/asio/example/porthopper/CMakeLists.txt +new file mode 100644 +index 0000000..55bccba +--- /dev/null ++++ b/libs/asio/example/porthopper/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ server ++ client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "porthopper-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/serialization/CMakeLists.txt b/libs/asio/example/serialization/CMakeLists.txt +new file mode 100644 +index 0000000..a56ccb5 +--- /dev/null ++++ b/libs/asio/example/serialization/CMakeLists.txt +@@ -0,0 +1,15 @@ ++foreach( ++ example ++ server ++ client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_serialization ++ boost_system ++ TARGET_PREFIX ++ "serialization-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/services/CMakeLists.txt b/libs/asio/example/services/CMakeLists.txt +new file mode 100644 +index 0000000..d5e48dc +--- /dev/null ++++ b/libs/asio/example/services/CMakeLists.txt +@@ -0,0 +1,10 @@ ++boost_add_executable( ++ daytime_client ++ daytime_client.cpp ++ logger_service.cpp ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "services-" ++) +diff --git a/libs/asio/example/socks4/CMakeLists.txt b/libs/asio/example/socks4/CMakeLists.txt +new file mode 100644 +index 0000000..0158f10 +--- /dev/null ++++ b/libs/asio/example/socks4/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ sync_client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "socks4-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/ssl/CMakeLists.txt b/libs/asio/example/ssl/CMakeLists.txt +new file mode 100644 +index 0000000..ac181aa +--- /dev/null ++++ b/libs/asio/example/ssl/CMakeLists.txt +@@ -0,0 +1,17 @@ ++foreach( ++ example ++ server ++ client ++) ++boost_add_executable( ++ ${example} ++ LINK_LIBS ++ crypto ++ ssl ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "ssl-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/timeouts/CMakeLists.txt b/libs/asio/example/timeouts/CMakeLists.txt +new file mode 100644 +index 0000000..4ce73d5 +--- /dev/null ++++ b/libs/asio/example/timeouts/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ async_tcp_client ++ blocking_tcp_client ++ blocking_udp_client ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) +diff --git a/libs/asio/example/timers/CMakeLists.txt b/libs/asio/example/timers/CMakeLists.txt +new file mode 100644 +index 0000000..f945824 +--- /dev/null ++++ b/libs/asio/example/timers/CMakeLists.txt +@@ -0,0 +1,16 @@ ++boost_add_executable( ++ time_t_timer ++ DEPENDS ++ boost_system ++) ++if( ++ WIN32 ++) ++boost_add_executable( ++ tick_count_timer ++ DEPENDS ++ boost_system ++) ++endif( ++ WIN32 ++) +diff --git a/libs/asio/example/tutorial/daytime1/CMakeLists.txt b/libs/asio/example/tutorial/daytime1/CMakeLists.txt +new file mode 100644 +index 0000000..0e837c9 +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime1/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime1-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime2/CMakeLists.txt b/libs/asio/example/tutorial/daytime2/CMakeLists.txt +new file mode 100644 +index 0000000..0258bdd +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime2/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime2-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime3/CMakeLists.txt b/libs/asio/example/tutorial/daytime3/CMakeLists.txt +new file mode 100644 +index 0000000..d40fe01 +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime3/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime3-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime4/CMakeLists.txt b/libs/asio/example/tutorial/daytime4/CMakeLists.txt +new file mode 100644 +index 0000000..ed33fd6 +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime4/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ client ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime4-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime5/CMakeLists.txt b/libs/asio/example/tutorial/daytime5/CMakeLists.txt +new file mode 100644 +index 0000000..775b630 +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime5/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime5-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime6/CMakeLists.txt b/libs/asio/example/tutorial/daytime6/CMakeLists.txt +new file mode 100644 +index 0000000..d8c04bd +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime6/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime6-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/daytime7/CMakeLists.txt b/libs/asio/example/tutorial/daytime7/CMakeLists.txt +new file mode 100644 +index 0000000..12c78dd +--- /dev/null ++++ b/libs/asio/example/tutorial/daytime7/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ server ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "daytime7-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/timer1/CMakeLists.txt b/libs/asio/example/tutorial/timer1/CMakeLists.txt +new file mode 100644 +index 0000000..21e6383 +--- /dev/null ++++ b/libs/asio/example/tutorial/timer1/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ timer ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "timer1-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/timer2/CMakeLists.txt b/libs/asio/example/tutorial/timer2/CMakeLists.txt +new file mode 100644 +index 0000000..1903bef +--- /dev/null ++++ b/libs/asio/example/tutorial/timer2/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ timer ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "timer2-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/timer3/CMakeLists.txt b/libs/asio/example/tutorial/timer3/CMakeLists.txt +new file mode 100644 +index 0000000..60f45b4 +--- /dev/null ++++ b/libs/asio/example/tutorial/timer3/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ timer ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "timer3-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/timer4/CMakeLists.txt b/libs/asio/example/tutorial/timer4/CMakeLists.txt +new file mode 100644 +index 0000000..b1c88dd +--- /dev/null ++++ b/libs/asio/example/tutorial/timer4/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ timer ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++ TARGET_PREFIX ++ "timer4-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/tutorial/timer5/CMakeLists.txt b/libs/asio/example/tutorial/timer5/CMakeLists.txt +new file mode 100644 +index 0000000..8171893 +--- /dev/null ++++ b/libs/asio/example/tutorial/timer5/CMakeLists.txt +@@ -0,0 +1,14 @@ ++foreach( ++ example ++ timer ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_thread ++ boost_system ++ TARGET_PREFIX ++ "timer5-" ++) ++endforeach( ++) +diff --git a/libs/asio/example/windows/CMakeLists.txt b/libs/asio/example/windows/CMakeLists.txt +new file mode 100644 +index 0000000..de980b2 +--- /dev/null ++++ b/libs/asio/example/windows/CMakeLists.txt +@@ -0,0 +1,17 @@ ++if( ++ WIN32 ++) ++foreach( ++ example ++ transmit_file ++) ++boost_add_executable( ++ ${example} ++ DEPENDS ++ boost_system ++) ++endforeach( ++) ++endif( ++ WIN32 ++) +diff --git a/libs/asio/module.cmake b/libs/asio/module.cmake +new file mode 100644 +index 0000000..7946162 +--- /dev/null ++++ b/libs/asio/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(asio DEPENDS system date_time config exception) ++ ++ +diff --git a/libs/asio/test/CMakeLists.txt b/libs/asio/test/CMakeLists.txt +new file mode 100644 +index 0000000..647d5af +--- /dev/null ++++ b/libs/asio/test/CMakeLists.txt +@@ -0,0 +1,127 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(asio BOOST_DEPENDS test system) ++ ++set (dep_libs "") ++ ++if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") ++ set(dep_libs "pthread") ++ set(os_defines "-D_XOPEN_SOURCE=600 -D_GNU_SOURCE=1") ++endif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") ++ ++if (${CMAKE_SYSTEM_NAME} STREQUAL "Solaris") ++ set(dep_libs "socket;nsl") ++ set(os_defines "-D_XOPEN_SOURCE=500 -D__EXTENSIONS__") ++endif(${CMAKE_SYSTEM_NAME} STREQUAL "Solaris") ++ ++if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") ++ set(dep_libs "ws2_32;mswsock") ++ set(os_defines "-D_WIN32_WINNT=0x0501") ++endif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") ++ ++if (CYGWIN) ++ set(os_defines "-D__USE_W32_SOCKETS") ++endif(CYGWIN) ++ ++if (${CMAKE_SYSTEM_NAME} STREQUAL "hpux") ++ set(dep_libs "ipv6") ++ set(os_defines "-D_XOPEN_SOURCE_EXTENDED") ++endif(${CMAKE_SYSTEM_NAME} STREQUAL "hpux") ++ ++message(STATUS "!!!> missing some qnx stuff") ++ ++set (USE_SELECT "-DBOOST_ASIO_DISABLE_DEV_POLL -DBOOST_ASIO_DISABLE_EPOLL -DBOOST_ASIO_DISABLE_KQUEUE -DBOOST_ASIO_DISABLE_IOCP") ++ ++set (depends "boost_system-mt-static;boost_date_time-mt-static;boost_thread-mt-static") ++ ++set (os_defines "${os_defines} -DBOOST_ALL_NO_LIB=1") ++ ++macro(asio_test_run NAME) ++ boost_test_run(${NAME} ${NAME}.cpp ++ COMPILE_FLAGS "${os_defines}" ++ LINK_LIBS "${dep_libs}" ++ DEPENDS ${depends} ++ ) ++ boost_test_run(${NAME}_select ${NAME}.cpp ++ COMPILE_FLAGS "${os_defines} ${USE_SELECT}" ++ LINK_LIBS "${dep_libs}" ++ DEPENDS ${depends} ++ ) ++endmacro(asio_test_run) ++ ++macro(asio_test_link NAME) ++ boost_test_link(${NAME} ${NAME}.cpp ++ COMPILE_FLAGS "${os_defines}" ++ LINK_LIBS "${dep_libs}" ++ DEPENDS "${depends}" ++ ) ++ boost_test_link(${NAME}_select ${NAME}.cpp ++ COMPILE_FLAGS "${os_defines} ${USE_SELECT}" ++ LINK_LIBS "${dep_libs}" ++ DEPENDS "${depends}" ++ ) ++endmacro(asio_test_link) ++ ++foreach(test ++ basic_datagram_socket ++ basic_deadline_timer ++ basic_socket_acceptor ++ basic_stream_socket ++ completion_condition ++ datagram_socket_service ++ deadline_timer_service ++ socket_acceptor_service ++ stream_socket_service ++ time_traits ++ ) ++ asio_test_link(${test}) ++endforeach() ++ ++foreach(test ++ buffer ++ buffered_read_stream ++ buffered_stream ++ buffered_write_stream ++ buffers_iterator ++ deadline_timer ++ error ++ io_service ++ placeholders ++ is_read_buffered ++ is_write_buffered ++ read ++ read_at ++ read_until ++ socket_base ++ strand ++ write ++ write_at ++ ) ++ asio_test_run(${test}) ++endforeach() ++ ++add_subdirectory(ip) ++add_subdirectory(local) ++add_subdirectory(posix) ++ ++# Test Windows specific Behaviors ++if (MSVC) ++ foreach(test ++ windows_basic_handle ++ windows_basic_random_access_handle ++ windows_basic_stream_handle ++ windows_overlapped_ptr ++ windows_random_access_handle ++ windows_random_access_handle_service ++ windows_stream_handle ++ windows_stream_handle_service ++ ) ++ boost_test_link(${test}) ++ endforeach() ++endif (MSVC) ++ ++add_subdirectory(ssl) +\ No newline at end of file +diff --git a/libs/asio/test/ip/CMakeLists.txt b/libs/asio/test/ip/CMakeLists.txt +new file mode 100644 +index 0000000..d68290b +--- /dev/null ++++ b/libs/asio/test/ip/CMakeLists.txt +@@ -0,0 +1,32 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++foreach(test ++ address ++ address_v4 ++ address_v6 ++ basic_endpoint ++ basic_resolver ++ basic_resolver_entry ++ basic_resolver_iterator ++ basic_resolver_query ++ resolver_query_base ++ resolver_service ++ ) ++ asio_test_link(${test}) ++endforeach() ++ ++foreach(test ++ host_name ++ multicast ++ tcp ++ udp ++ unicast ++ v6_only) ++ asio_test_run(${test}) ++endforeach() ++ ++ +diff --git a/libs/asio/test/local/CMakeLists.txt b/libs/asio/test/local/CMakeLists.txt +new file mode 100644 +index 0000000..4ae5436 +--- /dev/null ++++ b/libs/asio/test/local/CMakeLists.txt +@@ -0,0 +1,16 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++foreach(test ++ basic_endpoint ++ connect_pair ++ datagram_protocol ++ stream_protocol ++ ) ++ asio_test_link(${test}) ++endforeach() ++ ++ +diff --git a/libs/asio/test/posix/CMakeLists.txt b/libs/asio/test/posix/CMakeLists.txt +new file mode 100644 +index 0000000..743f822 +--- /dev/null ++++ b/libs/asio/test/posix/CMakeLists.txt +@@ -0,0 +1,17 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++foreach(test ++ basic_descriptor ++ basic_stream_descriptor ++ descriptor_base ++ stream_descriptor ++ stream_descriptor_service ++ ) ++ asio_test_link(${test}) ++endforeach() ++ ++ +diff --git a/libs/asio/test/ssl/CMakeLists.txt b/libs/asio/test/ssl/CMakeLists.txt +new file mode 100644 +index 0000000..d01c7da +--- /dev/null ++++ b/libs/asio/test/ssl/CMakeLists.txt +@@ -0,0 +1,78 @@ ++# ++# Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com) ++# ++# Distributed under the Boost Software License, Version 1.0. (See accompanying ++# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ++# ++ ++# import os ; ++# import feature ; ++# ++# lib ssl ; ++# lib crypto ; ++# ++# if [ os.name ] = SOLARIS ++# { ++# lib socket ; ++# lib nsl ; ++# } ++# else if [ os.name ] = NT ++# { ++# lib ws2_32 ; ++# lib mswsock ; ++# } ++# else if [ os.name ] = HPUX ++# { ++# lib ipv6 ; ++# } ++ ++#local USE_SELECT = ++# BOOST_ASIO_DISABLE_EPOLL ++# BOOST_ASIO_DISABLE_KQUEUE ++# BOOST_ASIO_DISABLE_IOCP ++# ; ++ ++#project ++# : requirements ++# /boost/date_time//boost_date_time ++# /boost/thread//boost_thread ++# BOOST_ALL_NO_LIB=1 ++# multi ++# SOLARIS:socket ++# SOLARIS:nsl ++# NT:_WIN32_WINNT=0x0501 ++# NT,gcc:ws2_32 ++# NT,gcc:mswsock ++# NT,gcc-cygwin:__USE_W32_SOCKETS ++# HPUX,gcc:_XOPEN_SOURCE_EXTENDED ++# HPUX:ipv6 ++# ; ++ ++foreach (test ++ basic_context ++ context_base ++ context_service ++ context ++ stream_base ++ stream_service ++ stream) ++ boost_test_compile(${test}) ++ boost_test_compile(${test}_select ${test}.cpp COMPILE_FLAGS ${USE_SELECT}) ++endforeach() ++ ++ ++# [ compile basic_context.cpp ] ++# [ compile basic_context.cpp : $(USE_SELECT) : basic_context_select ] ++# [ compile context_base.cpp ] ++# [ compile context_base.cpp : $(USE_SELECT) : context_base_select ] ++# [ compile context_service.cpp ] ++# [ compile context_service.cpp : $(USE_SELECT) : context_service_select ] ++# [ compile context.cpp ] ++# [ compile context.cpp : $(USE_SELECT) : context_select ] ++# [ compile stream_base.cpp ] ++# [ compile stream_base.cpp : $(USE_SELECT) : stream_base_select ] ++# [ compile stream_service.cpp ] ++# [ compile stream_service.cpp : $(USE_SELECT) : stream_service_select ] ++# [ compile stream.cpp ] ++# [ compile stream.cpp : $(USE_SELECT) : stream_select ] ++# ; +diff --git a/libs/assign/CMakeLists.txt b/libs/assign/CMakeLists.txt +new file mode 100644 +index 0000000..0bae12d +--- /dev/null ++++ b/libs/assign/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ assign ++ assign.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ assign ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Filling containers with constant or generated data has never been easier." ++ MODULARIZED ++ AUTHORS "Thorsten Ottosen " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/assign/module.cmake b/libs/assign/module.cmake +new file mode 100644 +index 0000000..f67e4bc +--- /dev/null ++++ b/libs/assign/module.cmake +@@ -0,0 +1 @@ ++boost_module(assign DEPENDS ptr_container) +\ No newline at end of file +diff --git a/libs/assign/test/CMakeLists.txt b/libs/assign/test/CMakeLists.txt +new file mode 100644 +index 0000000..9570438 +--- /dev/null ++++ b/libs/assign/test/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(assign BOOST_DEPENDS test multi_index) ++ ++SET(TESTS ++ basic ++ std ++ list_of ++ ptr_list_of ++ static_list_of ++ tuple_list_of ++ list_inserter ++ ptr_list_inserter ++ ptr_map_inserter ++ list_of_workaround ++ email_example ++ my_vector_example) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test} DEPENDS boost_unit_test_framework) ++ENDFOREACH(test ${TESTS}) ++ ++boost_test_run(multi_index_container ++ DEPENDS boost_unit_test_framework boost_serialization) +diff --git a/libs/bimap/CMakeLists.txt b/libs/bimap/CMakeLists.txt +new file mode 100644 +index 0000000..ac963f7 +--- /dev/null ++++ b/libs/bimap/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ bimap.hpp ++ bimap ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ bimap ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Bidirectional map containers" ++ MODULARIZED ++ AUTHORS "Matias Capeletto " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/bimap/module.cmake b/libs/bimap/module.cmake +new file mode 100644 +index 0000000..f796fac +--- /dev/null ++++ b/libs/bimap/module.cmake +@@ -0,0 +1 @@ ++boost_module(bimap DEPENDS xpressive property_map) +\ No newline at end of file +diff --git a/libs/bimap/test/CMakeLists.txt b/libs/bimap/test/CMakeLists.txt +new file mode 100644 +index 0000000..2b3fb41 +--- /dev/null ++++ b/libs/bimap/test/CMakeLists.txt +@@ -0,0 +1,49 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(bimap BOOST_DEPENDS test serialization multi_index functional typeof lambda assign) ++ ++boost_test_run(test_tagged) ++boost_test_run(test_structured_pair) ++boost_test_run(test_mutant) ++boost_test_run(test_mutant_relation) ++boost_test_run(test_bimap_set_of) ++boost_test_run(test_bimap_multiset_of) ++boost_test_run(test_bimap_unordered_set_of) ++boost_test_run(test_bimap_unordered_multiset_of) ++boost_test_run(test_bimap_list_of) ++boost_test_run(test_bimap_vector_of) ++boost_test_run(test_bimap_ordered) ++boost_test_run(test_bimap_unordered) ++boost_test_run(test_bimap_sequenced) ++boost_test_run(test_bimap_unconstrained) ++boost_test_run(test_bimap_assign) ++boost_test_run(test_bimap_property_map) ++boost_test_run(test_bimap_modify) ++boost_test_run(test_bimap_range) ++boost_test_run(test_bimap_operator_bracket) ++boost_test_run(test_bimap_lambda) ++boost_test_run(test_bimap_mutable) ++boost_test_run(test_bimap_extra) ++boost_test_run(test_bimap_convenience_header) ++boost_test_run(test_bimap_project) ++boost_test_run(test_bimap_serialization DEPENDS boost_serialization) ++boost_test_run(test_bimap_info) ++boost_test_compile_fail(test_bimap_mutable_1 compile_fail/test_bimap_mutable_1.cpp) ++boost_test_compile_fail(test_bimap_mutable_2 compile_fail/test_bimap_mutable_2.cpp) ++boost_test_compile_fail(test_bimap_mutable_3 compile_fail/test_bimap_mutable_3.cpp) ++boost_test_compile_fail(test_bimap_info_1 compile_fail/test_bimap_info_1.cpp) ++boost_test_compile_fail(test_bimap_info_2 compile_fail/test_bimap_info_2.cpp) ++boost_test_compile_fail(test_bimap_info_3 compile_fail/test_bimap_info_3.cpp) ++boost_test_run(bimap_and_boost_property_map ../example/bimap_and_boost/property_map.cpp) ++boost_test_run(bimap_and_boost_range ../example/bimap_and_boost/range.cpp) ++boost_test_run(bimap_and_boost_foreach ../example/bimap_and_boost/foreach.cpp) ++boost_test_run(bimap_and_boost_lambda ../example/bimap_and_boost/lambda.cpp) ++boost_test_run(bimap_and_boost_assign ../example/bimap_and_boost/assign.cpp) ++boost_test_run(bimap_and_boost_xpressive ../example/bimap_and_boost/xpressive.cpp) ++boost_test_run(bimap_and_boost_typeof ../example/bimap_and_boost/typeof.cpp) ++boost_test_compile(bimap_and_boost_serialization ++ ../example/bimap_and_boost/serialization.cpp) +diff --git a/libs/bind/CMakeLists.txt b/libs/bind/CMakeLists.txt +new file mode 100644 +index 0000000..127ae27 +--- /dev/null ++++ b/libs/bind/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ bind.hpp ++ bind ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ bind ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A generalization of the standard functions std::bind1st and std::bind2nd. It supports arbitrary function objects, functions, function pointers, and member function pointers, and is able to bind any argument to a specific value or route input arguments into arbitrary positions." ++ MODULARIZED ++ AUTHORS "Peter Dimov " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/bind/module.cmake b/libs/bind/module.cmake +new file mode 100644 +index 0000000..beb4837 +--- /dev/null ++++ b/libs/bind/module.cmake +@@ -0,0 +1 @@ ++boost_module(bind DEPENDS utility mpl detail config) +\ No newline at end of file +diff --git a/libs/bind/test/CMakeLists.txt b/libs/bind/test/CMakeLists.txt +new file mode 100644 +index 0000000..9512e2e +--- /dev/null ++++ b/libs/bind/test/CMakeLists.txt +@@ -0,0 +1,47 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(bind BOOST_DEPENDS test) ++ ++SET(tests ++ bind_test ++ bind_dm_test ++ bind_eq_test ++ bind_const_test ++ bind_cv_test ++ bind_stateful_test ++ bind_dm2_test ++ bind_not_test ++ bind_rel_test ++ bind_function_test ++ bind_lookup_problem_test ++ bind_rv_sp_test ++ bind_dm3_test ++ bind_visit_test ++ bind_placeholder_test ++ bind_rvalue_test ++ bind_and_or_test ++ mem_fn_test ++ mem_fn_void_test ++ mem_fn_derived_test ++ mem_fn_eq_test ++ mem_fn_dm_test ++ mem_fn_rv_test ++ ref_fn_test ++ bind_fnobj2_test ++ bind_fn2_test ++ bind_mf2_test ++ bind_eq2_test ++ mem_fn_ref_test ++ bind_ref_test ++ bind_eq3_test ++ ) ++FOREACH(test ${tests}) ++ boost_test_run(${test}) ++ENDFOREACH(test ${tests}) ++ ++boost_test_compile(bind_unary_addr) ++ +diff --git a/libs/circular_buffer/CMakeLists.txt b/libs/circular_buffer/CMakeLists.txt +new file mode 100644 +index 0000000..cb2fa50c0 +--- /dev/null ++++ b/libs/circular_buffer/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ circular_buffer.hpp ++ circular_buffer_fwd.hpp ++ circular_buffer ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ circular_buffer ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "STL compliant container also known as ring or cyclic buffer." ++ MODULARIZED ++ AUTHORS "Jan Gaspar " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/circular_buffer/module.cmake b/libs/circular_buffer/module.cmake +new file mode 100644 +index 0000000..1d36e4d +--- /dev/null ++++ b/libs/circular_buffer/module.cmake +@@ -0,0 +1 @@ ++boost_module (circular_buffer DEPENDS config thread) +\ No newline at end of file +diff --git a/libs/circular_buffer/test/CMakeLists.txt b/libs/circular_buffer/test/CMakeLists.txt +new file mode 100644 +index 0000000..2637050 +--- /dev/null ++++ b/libs/circular_buffer/test/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(circular_buffer BOOST_DEPENDS test ) ++ ++ ++boost_test_run(base_test SINGLE_THREADED) ++boost_test_run(space_optimized_test SINGLE_THREADED) ++boost_test_run(soft_iterator_invalidation SINGLE_THREADED) ++boost_test_compile(bounded_buffer_comparison) +\ No newline at end of file +diff --git a/libs/compatibility/CMakeLists.txt b/libs/compatibility/CMakeLists.txt +new file mode 100644 +index 0000000..da5bee2 +--- /dev/null ++++ b/libs/compatibility/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ compatibility ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ compatibility ++ # SRCDIRS ++ # TESTDIRS ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/compatibility/module.cmake b/libs/compatibility/module.cmake +new file mode 100644 +index 0000000..2561216 +--- /dev/null ++++ b/libs/compatibility/module.cmake +@@ -0,0 +1,2 @@ ++boost_module(compatibility) ++ +diff --git a/libs/concept_check/CMakeLists.txt b/libs/concept_check/CMakeLists.txt +new file mode 100644 +index 0000000..073ef90 +--- /dev/null ++++ b/libs/concept_check/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ concept_check.hpp ++ concept_archetype.hpp ++ concept_check ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ concept_check ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Tools for generic programming." ++ MODULARIZED ++ AUTHORS "Jeremy Siek " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/concept_check/module.cmake b/libs/concept_check/module.cmake +new file mode 100644 +index 0000000..7deef63 +--- /dev/null ++++ b/libs/concept_check/module.cmake +@@ -0,0 +1 @@ ++boost_module(concept_check DEPENDS preprocessor) +\ No newline at end of file +diff --git a/libs/concept_check/test/CMakeLists.txt b/libs/concept_check/test/CMakeLists.txt +new file mode 100644 +index 0000000..fea159f +--- /dev/null ++++ b/libs/concept_check/test/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(concept_check BOOST_DEPENDS utility) ++ ++# this fails but looks like it isn't the build ++# boost_test_run(../stl_concept_covering) ++boost_test_run(concept_check_test ../concept_check_test.cpp) ++boost_test_run(class_concept_check_test ../class_concept_check_test.cpp) ++boost_test_compile_fail(concept_check_fail_expected ../concept_check_fail_expected.cpp) ++boost_test_compile_fail(class_concept_fail_expected ../class_concept_fail_expected.cpp) +diff --git a/libs/config/CMakeLists.txt b/libs/config/CMakeLists.txt +new file mode 100644 +index 0000000..0933327 +--- /dev/null ++++ b/libs/config/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ config.hpp ++ config ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ config ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users." ++ MODULARIZED ++ AUTHORS "John Maddock " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/config/test/CMakeLists.txt b/libs/config/test/CMakeLists.txt +new file mode 100644 +index 0000000..1e31993 +--- /dev/null ++++ b/libs/config/test/CMakeLists.txt +@@ -0,0 +1,37 @@ ++# Copyright John Maddock and Douglas Gregor. ++# Use, modification and distribution are subject to the ++# Boost Software License, Version 1.0. (See accompanying file ++# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ++if(MSVC) ++ set(BOOST_CONFIG_MSVC_STATIC_OPTIONS STATIC STATIC_RUNTIME) ++endif(MSVC) ++if(BORLAND) ++ set(BOOST_CONFIG_BORLAND_STATIC_OPTIONS STATIC STATIC_RUNTIME) ++endif(BORLAND) ++ ++if(CMAKE_SYSTEM_NAME MATCHES "Linux") ++ set(BOOST_CONFIG_STATIC_THREAD_LIBS LINK_LIBS pthread rt) ++endif(CMAKE_SYSTEM_NAME MATCHES "Linux") ++ ++boost_additional_test_dependencies(config BOOST_DEPENDS test) ++ ++boost_test_run(config_test_threaded config_test.cpp ++ EXTRA_OPTIONS MULTI_THREADED) ++ ++boost_test_run(config_test ++ EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS} ++ ${BOOST_CONFIG_STATIC_THREAD_LIBS}) ++boost_test_run(config_info_threaded config_info.cpp ++ EXTRA_OPTIONS MULTI_THREADED) ++boost_test_run(config_info ++ EXTRA_OPTIONS SINGLE_THREADED ${BOOST_CONFIG_MSVC_STATIC_OPTIONS}) ++boost_test_run(math_info ++ EXTRA_OPTIONS ${BOOST_CONFIG_BORLAND_STATIC_OPTIONS}) ++ ++ ++boost_test_run(limits_test DEPENDS boost_test_exec_monitor) ++boost_test_run(abi_test abi/abi_test.cpp abi/main.cpp) ++ ++# TODO: config_link_test ++boost_test_compile_fail(test_thread_fail1 threads/test_thread_fail1.cpp) ++boost_test_compile_fail(test_thread_fail2 threads/test_thread_fail2.cpp) +\ No newline at end of file +diff --git a/libs/conversion/CMakeLists.txt b/libs/conversion/CMakeLists.txt +new file mode 100644 +index 0000000..3badd19 +--- /dev/null ++++ b/libs/conversion/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ conversion ++ # SRCDIRS ++ TESTDIRS test ++ # HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Polymorphic and lexical casts" ++ # MODULARIZED ++ AUTHORS "David Abrahams " ++ "Kevlin Henney" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/conversion/test/CMakeLists.txt b/libs/conversion/test/CMakeLists.txt +new file mode 100644 +index 0000000..7b10f31 +--- /dev/null ++++ b/libs/conversion/test/CMakeLists.txt +@@ -0,0 +1,20 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(conversion BOOST_DEPENDS test detail numeric) ++ ++boost_test_run(implicit_cast) ++boost_test_compile_fail(implicit_cast_fail) ++boost_test_run(cast_test ../cast_test.cpp) ++boost_test_run(numeric_cast_test ../numeric_cast_test.cpp) ++boost_test_run( ++ lexical_cast_test ++ ../lexical_cast_test.cpp ++ DEPENDS boost_unit_test_framework ++) ++ ++ ++ +diff --git a/libs/crc/CMakeLists.txt b/libs/crc/CMakeLists.txt +new file mode 100644 +index 0000000..e416771 +--- /dev/null ++++ b/libs/crc/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ crc.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ crc ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "The Boost CRC Library provides two implementations of CRC (cyclic redundancy code) computation objects and two implementations of CRC computation functions. The implementations are template-based." ++ MODULARIZED ++ AUTHORS "Daryle Walker " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/crc/module.cmake b/libs/crc/module.cmake +new file mode 100644 +index 0000000..af56199 +--- /dev/null ++++ b/libs/crc/module.cmake +@@ -0,0 +1 @@ ++boost_module(crc DEPENDS integer config) +\ No newline at end of file +diff --git a/libs/crc/test/CMakeLists.txt b/libs/crc/test/CMakeLists.txt +new file mode 100644 +index 0000000..588863b +--- /dev/null ++++ b/libs/crc/test/CMakeLists.txt +@@ -0,0 +1,10 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(crc BOOST_DEPENDS test random) ++ ++boost_test_run(crc_test crc_test.cpp) ++ +diff --git a/libs/date_time/CMakeLists.txt b/libs/date_time/CMakeLists.txt +new file mode 100644 +index 0000000..4fe4364 +--- /dev/null ++++ b/libs/date_time/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ date_time.hpp ++ date_time ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ date_time ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A set of date-time libraries based on generic programming concepts." ++ MODULARIZED ++ AUTHORS "Jeff Garland " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/date_time/module.cmake b/libs/date_time/module.cmake +new file mode 100644 +index 0000000..536947d +--- /dev/null ++++ b/libs/date_time/module.cmake +@@ -0,0 +1 @@ ++boost_module(date_time DEPENDS algorithm smart_ptr tokenizer io bind serialization) +\ No newline at end of file +diff --git a/libs/date_time/src/CMakeLists.txt b/libs/date_time/src/CMakeLists.txt +new file mode 100644 +index 0000000..3a07ef4 +--- /dev/null ++++ b/libs/date_time/src/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++add_definitions(-DBOOST_DATE_TIME_NO_LIB=1) ++boost_add_library( ++ date_time ++ gregorian/greg_month.cpp gregorian/greg_weekday.cpp gregorian/date_generators.cpp ++ STATIC_COMPILE_FLAGS -DBOOST_DATE_TIME_STATIC_LINK ++ SHARED_COMPILE_FLAGS -DBOOST_ALL_DYN_LINK=1 ++ ) +diff --git a/libs/date_time/test/CMakeLists.txt b/libs/date_time/test/CMakeLists.txt +new file mode 100644 +index 0000000..c7d1fe0 +--- /dev/null ++++ b/libs/date_time/test/CMakeLists.txt +@@ -0,0 +1,187 @@ ++boost_additional_test_dependencies(date_time BOOST_DEPENDS test bind) ++ ++# Core ++boost_test_run(testint_adapter) ++boost_test_run(testtime_resolution_traits) ++boost_test_run(testwrapping_int) ++boost_test_run(testconstrained_value) ++boost_test_run(testgregorian_calendar) ++boost_test_run(testgeneric_period) ++ ++set(DATE_TIME_COMPILE_FLAGS ++ "-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -DBOOST_DATE_TIME_STATIC_LINK -DBOOST_ALL_NO_LIB") ++set(DATE_TIME_SHARED_COMPILE_FLAGS ++ "-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -DBOOST_ALL_DYN_LINK -DBOOST_ALL_NO_LIB") ++ ++# A macro that collects the common settings used to build a run test ++# for the Date-Time library that links statically. ++macro(date_time_static_test SUBDIR TESTNAME) ++ boost_test_run(${TESTNAME} ++ "${SUBDIR}/${TESTNAME}.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS ${DATE_TIME_COMPILE_FLAGS}) ++endmacro(date_time_static_test) ++ ++# A macro that collects the common settings used to build a run test ++# for the Date-Time library that links dynamically. ++macro(date_time_shared_test SUBDIR TESTNAME) ++ boost_test_run("${TESTNAME}_dll" ++ "${SUBDIR}/${TESTNAME}.cpp" ++ DEPENDS boost_date_time SHARED ++ COMPILE_FLAGS ${DATE_TIME_SHARED_COMPILE_FLAGS}) ++endmacro(date_time_shared_test) ++ ++# Gregorian ++date_time_static_test(gregorian testdate) ++date_time_static_test(gregorian testdate_duration) ++date_time_static_test(gregorian testgreg_durations) ++date_time_static_test(gregorian testperiod) ++date_time_static_test(gregorian testdate_iterator) ++date_time_static_test(gregorian testformatters) ++### streaming ++date_time_static_test(gregorian testdate_facet_new) ++date_time_static_test(gregorian testdate_input_facet) ++### ++date_time_static_test(gregorian testgenerators) ++date_time_static_test(gregorian testgreg_cal) ++date_time_static_test(gregorian testgreg_day) ++date_time_static_test(gregorian testgreg_month) ++date_time_static_test(gregorian testgreg_year) ++ ++date_time_shared_test(gregorian testdate) ++date_time_shared_test(gregorian testdate_duration) ++date_time_shared_test(gregorian testgreg_durations) ++date_time_shared_test(gregorian testperiod) ++date_time_shared_test(gregorian testdate_iterator) ++date_time_shared_test(gregorian testformatters) ++### streaming ++date_time_shared_test(gregorian testdate_facet_new) ++date_time_shared_test(gregorian testdate_input_facet) ++### ++date_time_shared_test(gregorian testgenerators) ++date_time_shared_test(gregorian testgreg_cal) ++date_time_shared_test(gregorian testgreg_day) ++date_time_shared_test(gregorian testgreg_month) ++date_time_shared_test(gregorian testgreg_year) ++ ++# POSIX Time ++date_time_static_test(posix_time testfiletime_functions) ++date_time_static_test(posix_time testlocal_adjustor) ++date_time_static_test(posix_time testc_local_adjustor) ++date_time_static_test(posix_time testclock) ++date_time_static_test(posix_time testdst_rules) ++date_time_static_test(posix_time testduration) ++date_time_static_test(posix_time testiterator) ++date_time_static_test(posix_time testparse_time) ++date_time_static_test(posix_time testtime_period) ++date_time_static_test(posix_time testtime) ++date_time_static_test(posix_time testmicrosec_time_clock) ++date_time_static_test(posix_time testtime_formatters) ++date_time_static_test(posix_time testgreg_duration_operators) ++### streaming ++date_time_static_test(posix_time testtime_facet) ++date_time_static_test(posix_time testtime_input_facet) ++### ++ ++# Wide streaming ++boost_test_run(testgreg_wstream ++ "gregorian/testgreg_wstream.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++boost_test_run(testtime_wstream ++ "posix_time/testtime_wstream.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++ ++# Pre-1.33 facets ++boost_test_run(testfacet_dll ++ "gregorian/testfacet.cpp" ++ DEPENDS boost_date_time SHARED ++ COMPILE_FLAGS "${DATE_TIME_SHARED_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++# Note: This next test was commented out in the Jamfile.v2 because "it ++# crashes on VC6 (cause unknown)" ++boost_test_run(testparse_date_dll ++ "gregorian/testparse_date.cpp" ++ DEPENDS boost_date_time SHARED ++ COMPILE_FLAGS "${DATE_TIME_SHARED_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++boost_test_run(testfacet ++ "gregorian/testfacet.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++boost_test_run(testparse_date ++ "gregorian/testparse_date.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++boost_test_run(teststreams ++ "posix_time/teststreams.cpp" ++ DEPENDS boost_date_time STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++ ++# Local time ++date_time_static_test(local_time testdst_transition_day_rule) ++date_time_static_test(local_time testcustom_time_zone) ++date_time_static_test(local_time testposix_time_zone) ++date_time_static_test(local_time testwcustom_time_zone) ++date_time_static_test(local_time testwposix_time_zone) ++ ++# we have to copy these into the binary dir because to make the ++# paths inside the tests match ++if (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) ++ FILE(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/libs/date_time/data") ++ execute_process(COMMAND cmake -E copy "${CMAKE_SOURCE_DIR}/libs/date_time/data/date_time_zonespec.csv" "${CMAKE_BINARY_DIR}/libs/date_time/data") ++ FILE(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/libs/date_time/test/local_time") ++ execute_process(COMMAND cmake -E copy "${CMAKE_SOURCE_DIR}/libs/date_time/test/local_time/poorly_formed_zonespec.csv" "${CMAKE_BINARY_DIR}/libs/date_time/test/local_time") ++endif (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) ++ ++date_time_static_test(local_time testtz_database) ++date_time_static_test(local_time testlocal_time) ++date_time_static_test(local_time testlocal_time_iterator) ++date_time_static_test(local_time testlocal_time_period) ++### streaming ++date_time_static_test(local_time testlocal_time_facet) ++date_time_static_test(local_time testlocal_time_input_facet) ++### ++date_time_static_test(local_time testclocks) ++ ++ ++set(DATE_TIME_COMPILE_FLAGS ++ "-DBOOST_DATE_TIME_STATIC_LINK -DBOOST_ALL_NO_LIB -DUSE_DATE_TIME_PRE_1_33_FACET_IO") ++ ++# Serialization ++ # xml archive tests ++boost_test_run(testgreg_serialize_xml ++ "gregorian/testgreg_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DDATE_TIME_XML_SERIALIZE") ++boost_test_run(testtime_serialize_xml_std_config ++ "posix_time/testtime_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -DDATE_TIME_XML_SERIALIZE") ++boost_test_run(testtime_serialize_xml ++ "posix_time/testtime_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DDATE_TIME_XML_SERIALIZE") ++ ++ # text archive tests ++boost_test_run(testgreg_serialize ++ "gregorian/testgreg_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS}") ++boost_test_run(testgreg_serialize_dll ++ "gregorian/testgreg_serialize.cpp" ++ DEPENDS boost_date_time SHARED boost_serialization SHARED ++ COMPILE_FLAGS "${DATE_TIME_SHARED_COMPILE_FLAGS}") ++boost_test_run(testtime_serialize_std_config ++ "posix_time/testtime_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS} -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG") ++boost_test_run(testtime_serialize ++ "posix_time/testtime_serialize.cpp" ++ DEPENDS boost_date_time boost_serialization STATIC ++ COMPILE_FLAGS "${DATE_TIME_COMPILE_FLAGS}") ++ ++# Copyright (c) 2000-2005 ++# CrystalClear Software, Inc. ++# Subject to the Boost Software License, Version 1.0. ++# (See accompanying file LICENSE-1.0 or ++# http://www.boost.org/LICENSE-1.0) +diff --git a/libs/detail/CMakeLists.txt b/libs/detail/CMakeLists.txt +new file mode 100644 +index 0000000..b75d9b9 +--- /dev/null ++++ b/libs/detail/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ detail ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ detail ++ # SRCDIRS ++ # TESTDIRS ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users." ++ MODULARIZED ++ # AUTHORS "John Maddock " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/detail/module.cmake b/libs/detail/module.cmake +new file mode 100644 +index 0000000..123eff6 +--- /dev/null ++++ b/libs/detail/module.cmake +@@ -0,0 +1 @@ ++boost_module(detail DEPENDS integer) +\ No newline at end of file +diff --git a/libs/disjoint_sets/CMakeLists.txt b/libs/disjoint_sets/CMakeLists.txt +new file mode 100644 +index 0000000..88c4030 +--- /dev/null ++++ b/libs/disjoint_sets/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ disjoint_sets ++ # SRCDIRS ++ TESTDIRS test ++# HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Provides disjoint sets operations with union by rank and path compression." ++ # MODULARIZED ++ AUTHORS "Jeremy Siek " ++ "Lie-Quan Lee" ++ "Andrew Lumsdaine" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/disjoint_sets/module.cmake b/libs/disjoint_sets/module.cmake +new file mode 100644 +index 0000000..bbec4d0 +--- /dev/null ++++ b/libs/disjoint_sets/module.cmake +@@ -0,0 +1 @@ ++boost_module (disjoint_sets DEPENDS test graph) +\ No newline at end of file +diff --git a/libs/disjoint_sets/test/CMakeLists.txt b/libs/disjoint_sets/test/CMakeLists.txt +new file mode 100644 +index 0000000..ad5dd5d +--- /dev/null ++++ b/libs/disjoint_sets/test/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_test_run(disjoint_set_test ../disjoint_set_test.cpp) +diff --git a/libs/dynamic_bitset/CMakeLists.txt b/libs/dynamic_bitset/CMakeLists.txt +new file mode 100644 +index 0000000..4a08cf6 +--- /dev/null ++++ b/libs/dynamic_bitset/CMakeLists.txt +@@ -0,0 +1,30 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ dynamic_bitset.hpp ++ dynamic_bitset_fwd.hpp ++ dynamic_bitset ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ dynamic_bitset ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A runtime-sized version of std::bitset" ++ MODULARIZED ++ AUTHORS "Jeremy Siek " ++ "Chuck Allison" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/dynamic_bitset/module.cmake b/libs/dynamic_bitset/module.cmake +new file mode 100644 +index 0000000..20b3200 +--- /dev/null ++++ b/libs/dynamic_bitset/module.cmake +@@ -0,0 +1 @@ ++boost_module(dynamic_bitset DEPENDS detail static_assert) +diff --git a/libs/dynamic_bitset/test/CMakeLists.txt b/libs/dynamic_bitset/test/CMakeLists.txt +new file mode 100644 +index 0000000..8ea25eb +--- /dev/null ++++ b/libs/dynamic_bitset/test/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(dynamic_bitset BOOST_DEPENDS test config) ++ ++ ++boost_test_run(dyn_bitset_unit_tests1 ../dyn_bitset_unit_tests1.cpp) ++boost_test_run(dyn_bitset_unit_tests2 ../dyn_bitset_unit_tests2.cpp) ++boost_test_run(dyn_bitset_unit_tests3 ../dyn_bitset_unit_tests3.cpp) ++boost_test_run(dyn_bitset_unit_tests4 ../dyn_bitset_unit_tests4.cpp) +diff --git a/libs/exception/CMakeLists.txt b/libs/exception/CMakeLists.txt +new file mode 100644 +index 0000000..e3f571f +--- /dev/null ++++ b/libs/exception/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ exception.hpp ++ exception_ptr.hpp ++ exception ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ exception ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "A library for transporting of arbitrary data in exception objects, and transporting of exceptions between threads." ++ MODULARIZED ++ AUTHORS "Emil Dotchevski " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/exception/module.cmake b/libs/exception/module.cmake +new file mode 100644 +index 0000000..89d0eef +--- /dev/null ++++ b/libs/exception/module.cmake +@@ -0,0 +1 @@ ++boost_module(exception DEPENDS smart_ptr detail utility tuple) +\ No newline at end of file +diff --git a/libs/exception/test/CMakeLists.txt b/libs/exception/test/CMakeLists.txt +new file mode 100644 +index 0000000..98e8869 +--- /dev/null ++++ b/libs/exception/test/CMakeLists.txt +@@ -0,0 +1,55 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(exception BOOST_DEPENDS test) ++ ++boost_test_run(is_output_streamable_test) ++boost_test_run(has_to_string_test) ++boost_test_run(to_string_test) ++boost_test_run(to_string_stub_test) ++boost_test_compile_fail(to_string_fail) ++ ++#exception ++ ++boost_test_run(1-throw_exception_test) ++boost_test_run(2-throw_exception_no_exceptions_test) ++boost_test_run(3-throw_exception_no_integration_test) ++boost_test_run(4-throw_exception_no_both_test) ++boost_test_run(cloning_test) ++boost_test_run(copy_exception_test) ++boost_test_run(unknown_exception_test) ++boost_test_run(exception_test) ++boost_test_run(enable_error_info_test enable_error_info_test.cpp helper1.cpp) ++boost_test_run(throw_exception_test throw_exception_test.cpp helper2.cpp) ++boost_test_run(errno_test) ++boost_test_run(error_info_test) ++boost_test_run(diagnostic_information_test) ++boost_test_run(refcount_ptr_test) ++boost_test_run(current_exception_cast_test) ++message(STATUS "!!!> run no_exceptions_test.cpp : : : off ;") ++ ++boost_test_compile_fail(exception_fail) ++boost_test_compile_fail(throw_exception_fail) ++ ++# Compile headers tests ++set (compile_tests ++ exception_ptr_hpp_test ++ diagnostic_information_hpp_test ++ error_info_hpp_test ++ exception_hpp_test ++ get_error_info_hpp_test ++ info_hpp_test ++ info_tuple_hpp_test ++ to_string_hpp_test ++ to_string_stub_hpp_test ++ current_exception_cast_hpp_test ++ ) ++ ++#-- Create a Compile test for each source ++foreach(test ${compile_tests}) ++ boost_test_compile(${test} "${test}.cpp") ++endforeach(test ${compile_tests}) ++ +diff --git a/libs/filesystem/CMakeLists.txt b/libs/filesystem/CMakeLists.txt +new file mode 100644 +index 0000000..4d4138d +--- /dev/null ++++ b/libs/filesystem/CMakeLists.txt +@@ -0,0 +1,42 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ filesystem.hpp ++ filesystem ++ ) ++ ++# Add a library target to the build system ++boost_library_project( ++ filesystem ++ # SRCDIRS v3/src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Provides portable facilities to query and manipulate paths, files, and directories. Note: the default version is now v3: v2 is deprecated." ++ MODULARIZED ++ AUTHORS "Beman Dawes " ++ # MAINTAINERS ++ ) ++ ++boost_add_library( ++ filesystem ++ ++ v2/src/v2_operations.cpp v2/src/v2_path.cpp ++ v2/src/v2_portability.cpp ++ ++ v3/src/codecvt_error_category.cpp v3/src/operations.cpp ++ v3/src/path.cpp v3/src/path_traits.cpp v3/src/portability.cpp ++ v3/src/unique_path.cpp v3/src/utf8_codecvt_facet.cpp ++ v3/src/windows_file_codecvt.cpp ++ ++ SHARED_COMPILE_FLAGS "-DBOOST_FILESYSTEM_DYN_LINK=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_FILESYSTEM_STATIC_LINK=1" ++ DEPENDS boost_system ++ ) +diff --git a/libs/filesystem/module.cmake b/libs/filesystem/module.cmake +new file mode 100644 +index 0000000..6cf6911 +--- /dev/null ++++ b/libs/filesystem/module.cmake +@@ -0,0 +1 @@ ++boost_module(filesystem DEPENDS system smart_ptr) +\ No newline at end of file +diff --git a/libs/filesystem/test/CMakeLists.txt b/libs/filesystem/test/CMakeLists.txt +new file mode 100644 +index 0000000..ac9c951 +--- /dev/null ++++ b/libs/filesystem/test/CMakeLists.txt +@@ -0,0 +1,22 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(filesystem BOOST_DEPENDS test bind) ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_FILESYSTEM_STATIC_LINK ++ ++boost_test_compile(mbcopy ../v3/example/mbcopy.cpp) ++boost_test_compile(mbpath ../v3/example/mbpath.cpp) ++boost_test_compile(tchar ../v3/example/tchar.cpp) ++boost_test_compile(file_size ../v3/example/file_size.cpp) ++boost_test_compile(path_info ../v3/example/path_info.cpp) ++boost_test_compile(error_demo ../v3/example/error_demo.cpp) ++boost_test_compile(tut0 ../v3/example/tut0.cpp) ++boost_test_compile(tut1 ../v3/example/tut1.cpp) ++boost_test_compile(tut2 ../v3/example/tut2.cpp) ++boost_test_compile(tut3 ../v3/example/tut3.cpp) ++boost_test_compile(tut4 ../v3/example/tut4.cpp) ++boost_test_compile(tut5 ../v3/example/tut5.cpp) +diff --git a/libs/filesystem/v2/src/CMakeLists.txt b/libs/filesystem/v2/src/CMakeLists.txt +new file mode 100644 +index 0000000..c11ee66 +--- /dev/null ++++ b/libs/filesystem/v2/src/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_library( ++ filesystem ++ v2_operations.cpp v2_path.cpp v2_portability.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_FILESYSTEM_DYN_LINK=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_FILESYSTEM_STATIC_LINK=1" ++ DEPENDS boost_system ++ ) ++ +diff --git a/libs/filesystem/v2/test/CMakeLists.txt b/libs/filesystem/v2/test/CMakeLists.txt +new file mode 100644 +index 0000000..7ce5102 +--- /dev/null ++++ b/libs/filesystem/v2/test/CMakeLists.txt +@@ -0,0 +1,25 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(filesystem BOOST_DEPENDS test bind) ++ ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_FILESYSTEM_STATIC_LINK ++ ++SET(TESTS path_test operations_test ++ fstream_test convenience_test ++ large_file_support_test) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test}_static ++ ${test}.cpp ++ DEPENDS boost_filesystem STATIC ++ COMPILE_FLAGS -DBOOST_FILESYSTEM_STATIC_LINK) ++ boost_test_run(${test}_dynamic ++ ${test}.cpp ++ DEPENDS boost_filesystem SHARED ++ COMPILE_FLAGS -DBOOST_FILESYSTEM_DYN_LINK) ++ENDFOREACH(test ${TESTS}) +diff --git a/libs/filesystem/v3/test/CMakeLists.txt b/libs/filesystem/v3/test/CMakeLists.txt +new file mode 100644 +index 0000000..95e39b0 +--- /dev/null ++++ b/libs/filesystem/v3/test/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(filesystem BOOST_DEPENDS test bind) ++ ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_FILESYSTEM_STATIC_LINK ++ ++SET(TESTS path_unit_test path_test ++ operations_unit_test operations_test ++ fstream_test convenience_test ++ large_file_support_test deprecated_test ++ simple_ls) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test}_static ++ ${test}.cpp ++ DEPENDS boost_filesystem STATIC ++ COMPILE_FLAGS -DBOOST_FILESYSTEM_STATIC_LINK) ++ boost_test_run(${test}_dynamic ++ ${test}.cpp ++ DEPENDS boost_filesystem SHARED ++ COMPILE_FLAGS -DBOOST_FILESYSTEM_DYN_LINK) ++ENDFOREACH(test ${TESTS}) +diff --git a/libs/flyweight/CMakeLists.txt b/libs/flyweight/CMakeLists.txt +new file mode 100644 +index 0000000..542b728 +--- /dev/null ++++ b/libs/flyweight/CMakeLists.txt +@@ -0,0 +1,18 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# Add a library target to the build system ++boost_library_project( ++ flyweight ++ TESTDIRS test ++ HEADERS flyweight flyweight.hpp ++ # DOCDIRS ++ DESCRIPTION "Flyweights are small-sized handle classes granting constant access to shared common data, thus allowing for the management of large amounts of entities within reasonable memory limits. Boost.Flyweight makes it easy to use this common programming idiom by providing the class template flyweight, which acts as a drop-in replacement for const T." ++ MODULARIZED ++ AUTHORS "Joaquín M López Muñoz " ++) ++ ++ +diff --git a/libs/flyweight/module.cmake b/libs/flyweight/module.cmake +new file mode 100644 +index 0000000..51d4617 +--- /dev/null ++++ b/libs/flyweight/module.cmake +@@ -0,0 +1 @@ ++boost_module(flyweight DEPENDS mpl parameter preprocessor interprocess type_traits) +diff --git a/libs/flyweight/test/CMakeLists.txt b/libs/flyweight/test/CMakeLists.txt +new file mode 100644 +index 0000000..a343357 +--- /dev/null ++++ b/libs/flyweight/test/CMakeLists.txt +@@ -0,0 +1,53 @@ ++# Boost.Flyweight tests Jamfile ++# ++# Copyright 2006-2008 Joaquín M López Muñoz. ++# Distributed under the Boost Software License, Version 1.0. ++# (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++# ++# See http://www.boost.org/libs/flyweight for library home page. ++ ++find_package(Threads) ++ ++macro(flyweight_test testname) ++ boost_test_run(${testname} ++ test_${testname}.cpp test_${testname}_main.cpp ++ LINK_LIBS ${CMAKE_THREAD_LIBS_INIT}) ++endmacro() ++ ++foreach(test ++ basic ++ custom_factory ++ init ++ multictor ++ no_locking ++ no_tracking ++ set_factory) ++ ++ flyweight_test(${test}) ++ ++endforeach() ++ ++# ++# test_assoc_cont_fact_main is irregularly named ++# ++boost_test_run(assoc_cont_factory ++ test_assoc_cont_factory.cpp test_assoc_cont_fact_main.cpp ++ LINK_LIBS ${CMAKE_THREAD_LIBS_INIT}) ++ ++# ++# this one involves a dll ++# ++boost_add_library(intermod_holder_dll ++ intermod_holder_dll.cpp ++ COMPILE_FLAGS "-DBOOST_FLYWEIGHT_TEST_INTERMOD_HOLDER_DLL_SOURCE=1" ++ NO_SINGLE_THREADED ++ NO_STATIC ++ NO_INSTALL ++ ) ++ ++boost_test_run(intermod_holder ++ test_intermod_holder.cpp test_intermod_holder_main.cpp ++ LINK_LIBS ${CMAKE_THREAD_LIBS_INIT} ++ DEPENDS intermod_holder_dll) ++ +diff --git a/libs/foreach/CMakeLists.txt b/libs/foreach/CMakeLists.txt +new file mode 100644 +index 0000000..4006087 +--- /dev/null ++++ b/libs/foreach/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ foreach.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ foreach ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/foreach/module.cmake b/libs/foreach/module.cmake +new file mode 100644 +index 0000000..7501f4d +--- /dev/null ++++ b/libs/foreach/module.cmake +@@ -0,0 +1 @@ ++boost_module(foreach DEPENDS range) +\ No newline at end of file +diff --git a/libs/foreach/test/CMakeLists.txt b/libs/foreach/test/CMakeLists.txt +new file mode 100644 +index 0000000..4be0750 +--- /dev/null ++++ b/libs/foreach/test/CMakeLists.txt +@@ -0,0 +1,40 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(foreach BOOST_DEPENDS test ) ++ ++set(TESTS ++stl_byval ++stl_byval_r ++stl_byref ++stl_byref_r ++array_byval ++array_byval_r ++array_byref ++array_byref_r ++cstr_byval ++cstr_byval_r ++cstr_byref ++cstr_byref_r ++pair_byval ++pair_byval_r ++pair_byref ++pair_byref_r ++user_defined ++call_once ++rvalue_const ++rvalue_const_r ++rvalue_nonconst ++rvalue_nonconst_r ++dependent_type ++misc) ++ ++foreach(test ${TESTS}) ++ boost_test_run(${test}) ++endforeach(test ${TESTS}) ++ ++boost_test_compile(noncopyable) ++ +diff --git a/libs/format/CMakeLists.txt b/libs/format/CMakeLists.txt +new file mode 100644 +index 0000000..e4097e5 +--- /dev/null ++++ b/libs/format/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ format.hpp ++ format ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ format ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/format/module.cmake b/libs/format/module.cmake +new file mode 100644 +index 0000000..6a30d4e +--- /dev/null ++++ b/libs/format/module.cmake +@@ -0,0 +1 @@ ++boost_module(format DEPENDS detail config optional) +\ No newline at end of file +diff --git a/libs/format/test/CMakeLists.txt b/libs/format/test/CMakeLists.txt +new file mode 100644 +index 0000000..6c24f7f +--- /dev/null ++++ b/libs/format/test/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(format BOOST_DEPENDS test) ++ ++boost_test_run(format_test1 DEPENDS boost_test_exec_monitor) ++boost_test_run(format_test2 DEPENDS boost_test_exec_monitor) ++boost_test_run(format_test3 DEPENDS boost_test_exec_monitor) ++boost_test_run(format_test_wstring DEPENDS boost_test_exec_monitor) ++ +diff --git a/libs/function/CMakeLists.txt b/libs/function/CMakeLists.txt +new file mode 100644 +index 0000000..a052a8a +--- /dev/null ++++ b/libs/function/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ function.hpp ++ function ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ function ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/function/doc/CMakeLists.txt b/libs/function/doc/CMakeLists.txt +new file mode 100644 +index 0000000..dd5603f +--- /dev/null ++++ b/libs/function/doc/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_documentation(function.xml ++ faq.xml history.xml misc.xml reference.xml tests.xml tutorial.xml) +diff --git a/libs/function/module.cmake b/libs/function/module.cmake +new file mode 100644 +index 0000000..052e0cf +--- /dev/null ++++ b/libs/function/module.cmake +@@ -0,0 +1 @@ ++boost_module(function DEPENDS detail preprocessor utility) +diff --git a/libs/function/test/CMakeLists.txt b/libs/function/test/CMakeLists.txt +new file mode 100644 +index 0000000..2f3c771 +--- /dev/null ++++ b/libs/function/test/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(function BOOST_DEPENDS test lambda) ++ ++ ++boost_test_run(lib_function_test function_test.cpp) ++boost_test_run(function_n_test) ++boost_test_run(allocator_test) ++boost_test_run(stateless_test) ++boost_test_run(lambda_test) ++boost_test_compile_fail(function_test_fail1) ++boost_test_compile_fail(function_test_fail2) ++boost_test_compile(function_30) ++boost_test_run(function_arith_cxx98) ++boost_test_run(function_arith_portable) ++boost_test_run(sum_avg_cxx98) ++boost_test_run(sum_avg_portable) ++boost_test_run(mem_fun_cxx98) ++boost_test_run(mem_fun_portable) ++boost_test_run(std_bind_cxx98) ++boost_test_run(std_bind_portable) ++boost_test_run(function_ref_cxx98) ++boost_test_run(function_ref_portable) ++boost_test_run(contains_test) ++boost_test_run(contains2_test) +diff --git a/libs/function_types/CMakeLists.txt b/libs/function_types/CMakeLists.txt +new file mode 100644 +index 0000000..6e83c47 +--- /dev/null ++++ b/libs/function_types/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ function_types ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ function_types ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/function_types/module.cmake b/libs/function_types/module.cmake +new file mode 100644 +index 0000000..9943033 +--- /dev/null ++++ b/libs/function_types/module.cmake +@@ -0,0 +1 @@ ++boost_module(function_types DEPENDS mpl detail) +\ No newline at end of file +diff --git a/libs/function_types/test/CMakeLists.txt b/libs/function_types/test/CMakeLists.txt +new file mode 100644 +index 0000000..1a5a0c3 +--- /dev/null ++++ b/libs/function_types/test/CMakeLists.txt +@@ -0,0 +1,76 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# Get the boost dependencies for the tests ++boost_additional_test_dependencies(function_types BOOST_DEPENDS test fusion) ++ ++boost_test_compile(is_function classification/is_function.cpp) ++boost_test_compile(is_function_pointer classification/is_function_pointer.cpp) ++boost_test_compile(is_function_reference classification/is_function_reference.cpp) ++boost_test_compile(is_member_function_pointer classification/is_member_function_pointer.cpp) ++boost_test_compile(is_member_object_pointer classification/is_member_object_pointer.cpp) ++boost_test_compile(is_callable_builtin classification/is_callable_builtin.cpp) ++boost_test_compile(is_nonmember_callable_builtin classification/is_nonmember_callable_builtin.cpp) ++boost_test_compile(is_member_pointer classification/is_member_pointer.cpp) ++ ++boost_test_compile(is_cv_mem_func_ptr classification/is_cv_mem_func_ptr.cpp) ++boost_test_compile(is_variadic classification/is_variadic.cpp) ++boost_test_compile(is_cv_pointer classification/is_cv_pointer.cpp) ++ # [ compile classification/is_cv_function.cpp) ++ ++# Decomposition ++ ++boost_test_compile(components decomposition/components.cpp) ++boost_test_compile(result_type decomposition/result_type.cpp) ++boost_test_compile(function_arity decomposition/function_arity.cpp) ++boost_test_compile(parameter_types decomposition/parameter_types.cpp) ++ ++boost_test_compile(components_seq decomposition/components_seq.cpp) ++boost_test_compile(class_type_transform decomposition/class_type_transform.cpp) ++ ++boost_test_compile_fail(result_type_fail decomposition/result_type_fail.cpp) ++boost_test_compile_fail(parameter_types_fail decomposition/parameter_types_fail.cpp) ++boost_test_compile_fail(function_arity_fail decomposition/function_arity_fail.cpp) ++ ++# Synthesis ++ ++boost_test_compile(function_type synthesis/function_type.cpp) ++boost_test_compile(function_pointer synthesis/function_pointer.cpp) ++boost_test_compile(function_reference synthesis/function_reference.cpp) ++boost_test_compile(member_function_pointer synthesis/member_function_pointer.cpp) ++boost_test_compile(member_object_pointer synthesis/member_object_pointer.cpp) ++ ++boost_test_compile(transformation synthesis/transformation.cpp) ++boost_test_compile(mem_func_ptr_cv1 synthesis/mem_func_ptr_cv1.cpp) ++boost_test_compile(mem_func_ptr_cv2 synthesis/mem_func_ptr_cv2.cpp) ++boost_test_compile(mem_func_ptr_cv_ptr_to_this synthesis/mem_func_ptr_cv_ptr_to_this.cpp) ++boost_test_compile(variadic_function_synthesis synthesis/variadic_function_synthesis.cpp) ++ # [ compile synthesis/cv_function_synthesis.cpp) ++ ++# Reconfiguration ++ ++boost_test_compile(preprocessing_mode reconfiguration/preprocessing_mode.cpp) ++boost_test_compile(partial_arity_preprocessing reconfiguration/partial_arity_preprocessing.cpp) ++boost_test_compile(cc_preprocessing reconfiguration/cc_preprocessing.cpp) ++ ++# Custom calling conventions ++boost_test_compile(nonmember_ccs custom_ccs/nonmember_ccs.cpp) ++boost_test_compile(nonmember_ccs_exact custom_ccs/nonmember_ccs_exact.cpp) ++message(STATUS "Function_Types/test/custom_ccs/member_ccs.cpp Needs love") ++#boost_test_compile(member_ccs custom_ccs/member_ccs.cpp) ++message(STATUS "Function_Types/test/custom_ccs/member_ccs_exact.cpp Needs love") ++#boost_test_compile(member_ccs_exact custom_ccs/member_ccs_exact.cpp) ++ ++ ++# Code from the examples ++# Include the "example" directory ++include_directories("${CMAKE_CURRENT_SOURCE_DIR}/example") ++boost_test_compile(interpreter_example ../example/interpreter_example.cpp) ++boost_test_compile(result_of_example ../example/result_of_example.cpp) ++boost_test_compile(interface_example ../example/interface_example.cpp) ++message(STATUS "Function_Types/example/fast_mem_fn_example.cpp Needs love") ++#boost_test_compile(fast_mem_fn_example ../example/fast_mem_fn_example.cpp) ++boost_test_compile(macro_type_args_example ../example/macro_type_args_example.cpp) +diff --git a/libs/functional/CMakeLists.txt b/libs/functional/CMakeLists.txt +new file mode 100644 +index 0000000..6a28765 +--- /dev/null ++++ b/libs/functional/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ functional.hpp ++ functional ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ functional ++ # SRCDIRS ++ TESTDIRS test hash/test hash/examples ++ HEADERS ${lib_headers} ++ DOCDIRS hash/doc ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/functional/hash/doc/CMakeLists.txt b/libs/functional/hash/doc/CMakeLists.txt +new file mode 100644 +index 0000000..f9e29c0 +--- /dev/null ++++ b/libs/functional/hash/doc/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++message(STATUS "functional/hash docs need love") ++ +diff --git a/libs/functional/hash/examples/CMakeLists.txt b/libs/functional/hash/examples/CMakeLists.txt +new file mode 100644 +index 0000000..347a9b2 +--- /dev/null ++++ b/libs/functional/hash/examples/CMakeLists.txt +@@ -0,0 +1,15 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#------------------------------------------------------------------------- ++#-- Needed include directories for the tests ++boost_additional_test_dependencies(config BOOST_DEPENDS test) ++#------------------------------------------------------------------------- ++boost_test_run(books) ++boost_test_run(point) ++boost_test_run(portable) ++ ++ +diff --git a/libs/functional/hash/test/CMakeLists.txt b/libs/functional/hash/test/CMakeLists.txt +new file mode 100644 +index 0000000..ca45f5d +--- /dev/null ++++ b/libs/functional/hash/test/CMakeLists.txt +@@ -0,0 +1,58 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#project hash-tests ++# : requirements ++# gcc:_GLIBCXX_DEBUG ++# ; ++if (GCC) ++ ADD_DEFINITIONS(-D_GLIBCXX_DEBUG) ++endif(GCC) ++ ++# [ run .cpp : : : always_show_run_output ] ++ ++ ++ ++#------------------------------------------------------------------------- ++#-- Needed include directories for the tests ++ boost_additional_test_dependencies(functional BOOST_DEPENDS test) ++#------------------------------------------------------------------------- ++ ++SET(tests ++hash_fwd_test_1 ++hash_fwd_test_2 ++hash_number_test ++hash_pointer_test ++hash_function_pointer_test ++hash_float_test ++hash_long_double_test ++hash_string_test ++hash_range_test ++hash_custom_test ++hash_global_namespace_test ++hash_friend_test ++hash_built_in_array_test ++hash_value_array_test ++hash_vector_test ++hash_list_test ++hash_deque_test ++hash_set_test ++hash_map_test ++hash_complex_test ++container_fwd_test ++hash_no_ext_macro_1 ++hash_no_ext_macro_2 ++) ++ ++boost_test_run(link_test link_test.cpp link_test_2.cpp) ++boost_test_run(link_ext_test link_ext_test.cpp link_no_ext_test.cpp ++) ++foreach(test ${tests}) ++ boost_test_run(${test}) ++endforeach(test ${tests}) ++ ++boost_test_compile_fail(hash_no_ext_fail_test) ++ +diff --git a/libs/functional/module.cmake b/libs/functional/module.cmake +new file mode 100644 +index 0000000..f10d82e +--- /dev/null ++++ b/libs/functional/module.cmake +@@ -0,0 +1 @@ ++boost_module(functional DEPENDS integer) +\ No newline at end of file +diff --git a/libs/functional/test/CMakeLists.txt b/libs/functional/test/CMakeLists.txt +new file mode 100644 +index 0000000..2bd7a7d +--- /dev/null ++++ b/libs/functional/test/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_test_run(function_test function_test.cpp) +diff --git a/libs/fusion/CMakeLists.txt b/libs/fusion/CMakeLists.txt +new file mode 100644 +index 0000000..2a91cc1 +--- /dev/null ++++ b/libs/fusion/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ fusion ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ fusion ++ # SRCDIRS ++ # TESTDIRS ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Library for working with tuples, including various containers, algorithms, etc." ++ MODULARIZED ++ AUTHORS "Joel de Guzman " ++ "Dan Marsden " ++ "Tobias Schwinger " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/fusion/module.cmake b/libs/fusion/module.cmake +new file mode 100644 +index 0000000..fa210eb +--- /dev/null ++++ b/libs/fusion/module.cmake +@@ -0,0 +1 @@ ++boost_module (fusion DEPENDS function_types) +\ No newline at end of file +diff --git a/libs/gil/CMakeLists.txt b/libs/gil/CMakeLists.txt +new file mode 100644 +index 0000000..3b2f11d +--- /dev/null ++++ b/libs/gil/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ gil ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ gil ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Generic Image Library" ++ MODULARIZED ++ AUTHORS "Lubomir Bourdev " ++ "Hailin Jin " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/gil/module.cmake b/libs/gil/module.cmake +new file mode 100644 +index 0000000..e5c8cec +--- /dev/null ++++ b/libs/gil/module.cmake +@@ -0,0 +1 @@ ++boost_module (gil DEPENDS type_traits mpl) +\ No newline at end of file +diff --git a/libs/gil/test/CMakeLists.txt b/libs/gil/test/CMakeLists.txt +new file mode 100644 +index 0000000..2a167a0 +--- /dev/null ++++ b/libs/gil/test/CMakeLists.txt +@@ -0,0 +1,16 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(gil BOOST_DEPENDS test lambda crc) ++ ++ ++add_definitions(-DBOOST_GIL_NO_IO -D_SCL_SECURE_NO_WARNINGS) ++boost_test_run(channel channel.cpp error_if.cpp) ++boost_test_run(image image.cpp sample_image.cpp error_if.cpp ++ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/gil_reference_checksums.txt) ++boost_test_run(image_io image_io.cpp error_if.cpp) ++boost_test_run(pixel pixel.cpp error_if.cpp) ++boost_test_run(pixel_iterator pixel_iterator.cpp error_if.cpp) +diff --git a/libs/graph/CMakeLists.txt b/libs/graph/CMakeLists.txt +new file mode 100644 +index 0000000..4745fb2 +--- /dev/null ++++ b/libs/graph/CMakeLists.txt +@@ -0,0 +1,24 @@ ++# Copyright (C) 2008 Michael Jackson ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++ ++# Add a library target to the build system ++boost_library_project( ++ graph ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS graph ++ # DOCDIRS ++ DESCRIPTION "The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL)." ++ MODULARIZED ++ AUTHORS "Jeremy Siek " ++ "Lie-Quan Lee" ++ "Andrew Lumsdaine" ++ "Douglas Gregor " ++ # MAINTAINERS ++) +diff --git a/libs/graph/module.cmake b/libs/graph/module.cmake +new file mode 100644 +index 0000000..5a19aea +--- /dev/null ++++ b/libs/graph/module.cmake +@@ -0,0 +1,4 @@ ++boost_module(graph DEPENDS property_map tuple multi_index any random parameter regex) ++boost_module(graph_mpi DEPENDS mpi graph) ++ ++# any is there because of the dependency on boost/property_map/dynamic_property_map.hpp +diff --git a/libs/graph/src/CMakeLists.txt b/libs/graph/src/CMakeLists.txt +new file mode 100644 +index 0000000..f290df8 +--- /dev/null ++++ b/libs/graph/src/CMakeLists.txt +@@ -0,0 +1,38 @@ ++# Copyright (C) 2008 Michael Jackson ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++add_definitions(-DBOOST_GRAPH_NO_LIB=1) ++ ++if (MSVC) ++ # Without these flags, MSVC 7.1 and 8.0 crash ++ add_definitions(-GR-) ++endif (MSVC) ++ ++set(BOOST_GRAPH_OPTIONAL_SOURCES "") ++set(BOOST_GRAPH_OPTIONAL_LIBRARIES "") ++ ++if (EXPAT_FOUND) ++ colormsg(GREEN "+-- expat available, enabling the GraphML parser.") ++ # We have Expat, so build the GraphML parser ++ set(BOOST_GRAPH_OPTIONAL_SOURCES ++ ${BOOST_GRAPH_OPTIONAL_SOURCES} "graphml.cpp") ++ include_directories(${EXPAT_INCLUDE_DIRS}) ++ list(APPEND BOOST_GRAPH_OPTIONAL_LIBRARIES ${EXPAT_LIBRARIES}) ++endif (EXPAT_FOUND) ++ ++boost_add_library(graph ++ ++ read_graphviz_new.cpp ++ ${BOOST_GRAPH_OPTIONAL_SOURCES} ++ ++ NO_STATIC ++ # don't build static, as there might not be a static regex ++ # if ICU is found. Fix this. ++ DEPENDS boost_regex ++ LINK_LIBS ${BOOST_GRAPH_OPTIONAL_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_GRAPH_DYN_LINK=1" ++ ) ++ +diff --git a/libs/graph/test/CMakeLists.txt b/libs/graph/test/CMakeLists.txt +new file mode 100644 +index 0000000..29e3e01 +--- /dev/null ++++ b/libs/graph/test/CMakeLists.txt +@@ -0,0 +1,71 @@ ++# Copyright (C) 2008 Michael Jackson ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++boost_additional_test_dependencies(graph BOOST_DEPENDS test assign) ++ ++boost_test_run(transitive_closure_test) ++boost_test_compile(adj_list_cc) ++boost_test_run(adj_list_edge_list_set) ++boost_test_compile(adj_matrix_cc) ++boost_test_run(bfs) ++boost_test_compile(bfs_cc) ++boost_test_run(bellman-test) ++boost_test_run(betweenness_centrality_test DEPENDS boost_graph SHARED) ++boost_test_run(csr_graph_test) ++boost_test_run(dag_longest_paths) ++boost_test_run(dfs) ++boost_test_compile(dfs_cc) ++boost_test_compile(dijkstra_cc) ++boost_test_run(dijkstra_heap_performance ARGS 10000 DEPENDS boost_graph SHARED) ++boost_test_run(dominator_tree_test) ++boost_test_run(relaxed_heap_test ARGS 5000 15000) ++boost_test_compile(edge_list_cc) ++boost_test_compile(filtered_graph_cc) ++boost_test_run(generator_test) ++boost_test_run(graph) ++boost_test_compile(graph_concepts) ++boost_test_run(graphviz_test ++ DEPENDS boost_test_exec_monitor boost_graph STATIC) ++boost_test_run(gursoy_atun_layout_test) ++boost_test_run(layout_test) ++boost_test_run(serialize DEPENDS boost_serialization) ++boost_test_compile(reverse_graph_cc) ++boost_test_run(sequential_vertex_coloring) ++boost_test_run(subgraph) ++boost_test_run(isomorphism) ++boost_test_run(adjacency_matrix_test) ++boost_test_compile(vector_graph_cc) ++boost_test_compile(copy) ++boost_test_compile(property_iter) ++boost_test_run(bundled_properties) ++boost_test_run(floyd_warshall_test) ++boost_test_run(astar_search_test) ++boost_test_run(biconnected_components_test) ++boost_test_run(cuthill_mckee_ordering) ++boost_test_run(king_ordering) ++boost_test_run(matching_test) ++boost_test_run(mcgregor_subgraphs_test) ++# boost_test_run(max_flow_test) ++# boost_test_run(kolmogorov_max_flow_test) TODO: Boost 1.34.x only ++ ++# GraphML Tests - not for Boost 1.34.x ++#include(FindEXPAT) ++#if (EXPAT_FOUND) ++# include_directories(${EXPAT_INCLUDE_DIRS}) ++# boost_test_run(graphml_test LIBRARIES boost_graph) ++#endif (EXPAT_FOUND) ++ ++# Stanford GraphBase Tests ++if ($ENV{SDB}) ++ include_directories("$ENV{SDB}") ++ boost_test_compile(stanford_graph_cc) ++endif ($ENV{SDB}) ++ ++# LEDA tests ++if ($ENV{LEDA}) ++ include_directories("$ENV{LEDA}/incl") ++ boost_test_compile(leda_graph_cc) ++endif ($ENV{LEDA}) +diff --git a/libs/graph_parallel/CMakeLists.txt b/libs/graph_parallel/CMakeLists.txt +new file mode 100644 +index 0000000..e517ae4 +--- /dev/null ++++ b/libs/graph_parallel/CMakeLists.txt +@@ -0,0 +1,25 @@ ++# Copyright (C) 2008 The Trustees of Indiana University. ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++if (NOT MPI_FOUND) ++ message(STATUS "+-- MPI not found, disabling.") ++else() ++ ++ boost_library_project( ++ graph_parallel ++ SRCDIRS src ++ TESTDIRS test example ++ # HEADERS graph graph/parallel ++ # DOCDIRS doc ++ DESCRIPTION "Parallel support using MPI for Boost.Graph." ++ AUTHORS "Douglas Gregor " ++ "Nicholas Edmonds " ++ "Jeremiah Willcock " ++ "Andrew Lumsdaine" ++ # MAINTAINERS ++ ) ++ ++endif() +diff --git a/libs/graph_parallel/doc/CMakeLists.txt b/libs/graph_parallel/doc/CMakeLists.txt +new file mode 100644 +index 0000000..5b804be +--- /dev/null ++++ b/libs/graph_parallel/doc/CMakeLists.txt +@@ -0,0 +1,70 @@ ++# Copyright (C) 2008 The Trustees of Indiana University. ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++set(PBGL_DOCS ++ DistributedGraph ++ DistributedEdgeListGraph ++ DistributedVertexListGraph ++ GlobalDescriptor ++ boman_et_al_graph_coloring ++ breadth_first_search ++ connected_components ++ dehne_gotz_min_spanning_tree ++ dijkstra_example ++ dijkstra_shortest_paths ++ distributed_adjacency_list ++ distributed_property_map ++ distributed_queue ++ distributedS ++ index ++ local_subgraph ++ metis ++ overview ++ page_rank ++ process_group ++ mpi_bsp_process_group ++ simple_trigger ++ strong_components ++ tsin_depth_first_visit ++ vertex_list_adaptor ++ rmat_generator ++ sorted_rmat_generator ++ unique_rmat_generator ++ sorted_unique_rmat_generator ++ scalable_rmat_generator ++ mesh_generator ++ ssca_generator ++ fruchterman_reingold ++ st_connected ++ betweenness_centrality ++ connected_components_parallel_search ++ ) ++ ++set(PBGL_IMAGES ++ dijkstra_dist3_graph.png dijkstra_seq_graph.png vertex_coloring.png ++ architecture.png dist-adjlist.png dist-pmap.png distributed-graph.png ++ graph.png) ++ ++set(PBGL_DOC_TARGETS) ++separate_arguments(RST2HTML_FLAGS) ++foreach(DOC ${PBGL_DOCS}) ++ add_custom_command(OUTPUT "${PBGL_BINARY_DIR}/libs/graph_parallel/doc/${DOC}.html" ++ COMMAND "${RST2HTML}" ++ ARGS ${RST2HTML_FLAGS} "${PBGL_SOURCE_DIR}/libs/graph_parallel/doc/${DOC}.rst" ++ "${PBGL_BINARY_DIR}/libs/graph/doc/parallel/${DOC}.html" ++ COMMENT "Generating document ${DOC}.html..." ++ ) ++ list(APPEND PBGL_DOC_TARGETS "${PBGL_BINARY_DIR}/libs/graph_parallel/doc/${DOC}.html") ++endforeach(DOC) ++ ++add_custom_target(doc ALL ++ DEPENDS ${PBGL_DOC_TARGETS}) ++ ++install(FILES ${PBGL_DOC_TARGETS} ${PBGL_IMAGES} ++ DESTINATION "doc/pbgl-${PBGL_VERSION}" ++ COMPONENT "Documentation" ++ OPTIONAL ++ ) +diff --git a/libs/graph_parallel/example/CMakeLists.txt b/libs/graph_parallel/example/CMakeLists.txt +new file mode 100644 +index 0000000..c66244e +--- /dev/null ++++ b/libs/graph_parallel/example/CMakeLists.txt +@@ -0,0 +1,59 @@ ++# Copyright (C) 2008 The Trustees of Indiana University. ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++if (MPI_FOUND) ++ ++ boost_additional_test_dependencies(graph_parallel BOOST_DEPENDS test mpi filesystem system) ++ ++ include_directories(${MPI_INCLUDE_PATH}) ++ ++ macro(boost_graph_parallel_example testname) ++ PARSE_ARGUMENTS(MPI_EXAMPLE "NUMPROCS;ARGS" "" ${ARGN}) ++ ++ # Determine the example sources ++ if (MPI_EXAMPLE_DEFAULT_ARGS) ++ set(MPI_EXAMPLE_SOURCES ${MPI_EXAMPLE_DEFAULT_ARGS}) ++ else (MPI_EXAMPLE_DEFAULT_ARGS) ++ set(MPI_EXAMPLE_SOURCES "${testname}.cpp") ++ endif (MPI_EXAMPLE_DEFAULT_ARGS) ++ ++ set(THIS_EXAMPLE_LOCATION tests/${BOOST_PROJECT_NAME}/${testname}) ++ ++ # Build the example executable ++ boost_add_executable(${testname} ++ ${MPI_EXAMPLE_SOURCES} ++ OUTPUT_NAME ${THIS_EXAMPLE_LOCATION} ++ NO_INSTALL ++ DEPENDS boost_graph_parallel boost_system ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1") ++ ++ if (BUILD_TESTING) ++ ++ if (NOT MPI_EXAMPLE_NUMPROCS) ++ set(MPI_EXAMPLE_NUMPROCS ${MPIEXEC_MAX_NUMPROCS}) ++ endif (NOT MPI_EXAMPLE_NUMPROCS) ++ ++ foreach(PROCS ${MPI_EXAMPLE_NUMPROCS}) ++ add_test("${BOOST_PROJECT_NAME}-${testname}-${PROCS}" ++ ${MPIEXEC} ++ -n ${PROCS} ++ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${THIS_EXAMPLE_LOCATION} ++ ${MPI_EXAMPLE_ARGS} ++ ${BOOST_TEST_ARGS} ++ ) ++ endforeach(PROCS) ++ ++ endif(BUILD_TESTING) ++ ++ endmacro(boost_graph_parallel_example) ++ ++ boost_graph_parallel_example(breadth_first_search ARGS ${Boost_SOURCE_DIR}/libs/graph/test/weighted_graph.gr) ++ boost_graph_parallel_example(dijkstra_shortest_paths ARGS ${Boost_SOURCE_DIR}/libs/graph/test/weighted_graph.gr) ++ ++endif (MPI_FOUND) +diff --git a/libs/graph_parallel/module.cmake b/libs/graph_parallel/module.cmake +new file mode 100644 +index 0000000..8049b0f +--- /dev/null ++++ b/libs/graph_parallel/module.cmake +@@ -0,0 +1 @@ ++boost_module(graph_parallel DEPENDS mpi graph) +diff --git a/libs/graph_parallel/src/CMakeLists.txt b/libs/graph_parallel/src/CMakeLists.txt +new file mode 100644 +index 0000000..ffa8b30 +--- /dev/null ++++ b/libs/graph_parallel/src/CMakeLists.txt +@@ -0,0 +1,22 @@ ++# Copyright (C) 2008 The Trustees of Indiana University. ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++add_definitions(-DBOOST_GRAPH_NO_LIB=1) ++ ++if (MSVC) ++ # Without these flags, MSVC 7.1 and 8.0 crash ++ add_definitions(-GR-) ++endif (MSVC) ++ ++# Add Boost.MPI link and add parallel source files ++include_directories(${MPI_INCLUDE_PATH}) ++ ++boost_add_library( ++ graph_parallel ++ mpi_process_group.cpp tag_allocator.cpp ++ DEPENDS boost_mpi ++ SHARED_COMPILE_FLAGS "-DBOOST_GRAPH_DYN_LINK=1" ++ ) +diff --git a/libs/graph_parallel/test/CMakeLists.txt b/libs/graph_parallel/test/CMakeLists.txt +new file mode 100644 +index 0000000..e149b47 +--- /dev/null ++++ b/libs/graph_parallel/test/CMakeLists.txt +@@ -0,0 +1,121 @@ ++# Copyright (C) 2008 The Trustees of Indiana University. ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++if (MPI_FOUND) ++ ++ boost_additional_test_dependencies(graph_parallel BOOST_DEPENDS test mpi filesystem system) ++ ++ include_directories(${MPI_INCLUDE_PATH}) ++ ++ # Declare a test for the Boost.MPI library, which may involve both ++ # building the test and executing it with varying numbers of ++ # processes. Edited to become boost_graph_parallel_test, with a different ++ # default number of processors. ++ # ++ # boost_graph_parallel_test(testname ++ # [source1 source2 ...] ++ # [ARGS arg1 arg2 ...] ++ # [SCHEDULE procs1 procs2 ...] ++ # ++ # testname is the name of the test. source1, source2, etc. are the ++ # source files that will be built and linked into the test ++ # executable. If no source files are provided, the file "testname.cpp" ++ # will be used instead. ++ macro(boost_graph_parallel_test testname) ++ PARSE_ARGUMENTS(MPI_TEST "NUMPROCS;ARGS" "" ${ARGN}) ++ ++ # Determine the test sources ++ if (MPI_TEST_DEFAULT_ARGS) ++ set(MPI_TEST_SOURCES ${MPI_TEST_DEFAULT_ARGS}) ++ else (MPI_TEST_DEFAULT_ARGS) ++ set(MPI_TEST_SOURCES "${testname}.cpp") ++ endif (MPI_TEST_DEFAULT_ARGS) ++ ++ set(THIS_TEST_LOCATION tests/${BOOST_PROJECT_NAME}/${testname}) ++ ++ # Build the test executable ++ boost_add_executable(${testname} ++ ${MPI_TEST_SOURCES} ++ OUTPUT_NAME ${THIS_TEST_LOCATION} ++ NO_INSTALL ++ DEPENDS boost_graph_parallel boost_system ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1") ++ ++ if (NOT MPI_TEST_NUMPROCS) ++ set(MPI_TEST_NUMPROCS ${MPIEXEC_MAX_NUMPROCS}) ++ endif (NOT MPI_TEST_NUMPROCS) ++ ++ foreach(PROCS ${MPI_TEST_NUMPROCS}) ++ add_test("${BOOST_PROJECT_NAME}-${testname}-${PROCS}" ++ ${MPIEXEC} ++ -n ${PROCS} ++ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${THIS_TEST_LOCATION} ++ ${MPI_TEST_ARGS} ++ ${BOOST_TEST_ARGS} ++ ) ++ endforeach(PROCS) ++ ++ endmacro(boost_graph_parallel_test) ++ ++ boost_graph_parallel_test(distributed_property_map_test) ++ boost_graph_parallel_test(distributed_queue_test) ++ boost_graph_parallel_test(process_group_serialization) ++ boost_graph_parallel_test(adjlist_build_test) ++ boost_graph_parallel_test(adjlist_redist_test) ++ boost_graph_parallel_test(adjlist_remove_test NUMPROCS 2) ++ boost_graph_parallel_test(distributed_adjacency_list_test) ++ boost_graph_parallel_test(distributed_connected_components_test) ++ boost_graph_parallel_test(distributed_page_rank_test) ++ boost_graph_parallel_test(distributed_csr_test) ++ boost_graph_parallel_test(distributed_dfs_test) ++ boost_graph_parallel_test(distributed_graph_coloring_test) ++ boost_graph_parallel_test(distributed_mst_test) ++ boost_graph_parallel_test(distributed_strong_components_test) ++ boost_graph_parallel_test(hohberg_biconnected_components_test) ++ boost_graph_parallel_test(mesh_generator_test ARGS 1000 1000 1 0) ++ boost_graph_parallel_test(named_vertices_seq NUMPROCS 1) ++ boost_graph_parallel_test(distributed_shortest_paths_test) ++ boost_graph_parallel_test(distributed_csr_algorithm_test NUMPROCS 1) ++ boost_graph_parallel_test(distributed_betweenness_centrality_test) ++ boost_graph_parallel_test(distributed_dimacs_reader) ++ boost_graph_parallel_test(distributed_rmat_cc_ps) ++ boost_graph_parallel_test(distributed_rmat_cc) ++ boost_graph_parallel_test(distributed_rmat_pagerank) ++ boost_graph_parallel_test(distributed_st_connected_test) ++ ++ boost_add_executable(ssca ++ ssca.cpp ++ OUTPUT_NAME tests/${BOOST_PROJECT_NAME}/ssca ++ NO_INSTALL ++ DEPENDS boost_graph_parallel boost_system ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1") ++ ++ boost_add_executable(algorithm_performance ++ algorithm_performance.cpp ++ OUTPUT_NAME tests/${BOOST_PROJECT_NAME}/algorithm_performance ++ NO_INSTALL ++ DEPENDS boost_graph_parallel boost_system ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1") ++ ++ if(NOT MSVC) ++ # Due to poor handling of partial ordering of class template partial ++ # specializations, we disable these features and tests on Visual C++. ++ # Tested with Visual C++ 9 (Microsoft Visual Studio 2008); earlier ++ # versions are no better. ++ boost_graph_parallel_test(named_vertices_test) ++ boost_graph_parallel_test(named_vertices_hash_test) ++ endif(NOT MSVC) ++ ++endif(MPI_FOUND) +diff --git a/libs/icl/CMakeLists.txt b/libs/icl/CMakeLists.txt +new file mode 100644 +index 0000000..a07079b +--- /dev/null ++++ b/libs/icl/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ icl ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ icl ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "Interval Container Library Reference" ++ MODULARIZED ++ AUTHORS "Joachim Faulhaber <>" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/icl/module.cmake b/libs/icl/module.cmake +new file mode 100644 +index 0000000..3b66616 +--- /dev/null ++++ b/libs/icl/module.cmake +@@ -0,0 +1 @@ ++boost_module(icl DEPENDS ptr_container) +diff --git a/libs/icl/test/CMakeLists.txt b/libs/icl/test/CMakeLists.txt +new file mode 100644 +index 0000000..bf50a87 +--- /dev/null ++++ b/libs/icl/test/CMakeLists.txt +@@ -0,0 +1,41 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(icl BOOST_DEPENDS test date_time) ++ ++SET(TESTS ++ fastest_icl_interval_/fastest_icl_interval ++ fastest_interval_set_/fastest_interval_set ++ fastest_interval_set_infix_/fastest_interval_set_infix ++ fastest_separate_interval_set_/fastest_separate_interval_set ++ fastest_separate_interval_set_infix_/fastest_separate_interval_set_infix ++ fastest_split_interval_set_/fastest_split_interval_set ++ fastest_split_interval_set_infix_/fastest_split_interval_set_infix ++ fastest_interval_set_mixed_/fastest_interval_set_mixed ++ fastest_interval_map_/fastest_interval_map ++ fastest_interval_map_infix_/fastest_interval_map_infix ++ fastest_split_interval_map_/fastest_split_interval_map ++ fastest_split_interval_map_infix_/fastest_split_interval_map_infix ++ fastest_interval_map_mixed_/fastest_interval_map_mixed ++ fastest_interval_map_mixed2_/fastest_interval_map_mixed2 ++ fastest_interval_map_infix_mixed_/fastest_interval_map_infix_mixed ++ fastest_icl_map_/fastest_icl_map ++ fastest_set_interval_set_/fastest_set_interval_set ++ fastest_set_icl_set_/fastest_set_icl_set ++ fastest_partial_interval_quantifier_/fastest_partial_interval_quantifier ++ fastest_total_interval_quantifier_/fastest_total_interval_quantifier ++ fastest_partial_icl_quantifier_/fastest_partial_icl_quantifier ++ fastest_total_icl_quantifier_/fastest_total_icl_quantifier ++ test_misc_/test_misc ++ test_doc_code_/test_doc_code ++ test_type_traits_/test_type_traits ++ test_changing_interval_defaults_/test_changing_interval_defaults) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test} DEPENDS boost_unit_test_framework boost_date_time) ++ENDFOREACH(test ${TESTS}) ++ ++ +diff --git a/libs/integer/CMakeLists.txt b/libs/integer/CMakeLists.txt +new file mode 100644 +index 0000000..c952ed0 +--- /dev/null ++++ b/libs/integer/CMakeLists.txt +@@ -0,0 +1,31 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ integer.hpp ++ integer_fwd.hpp ++ integer_traits.hpp ++ integer ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ integer ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "The organization of boost integer headers and classes is designed to take advantage of types from the 1999 C standard without resorting to undefined behavior in terms of the 1998 C++ standard. The header makes the standard integer types safely available in namespace boost without placing any names in namespace std." ++ MODULARIZED ++ AUTHORS "Beman Dawes " ++ "Daryle Walker " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/integer/module.cmake b/libs/integer/module.cmake +new file mode 100644 +index 0000000..d0c4293 +--- /dev/null ++++ b/libs/integer/module.cmake +@@ -0,0 +1 @@ ++boost_module(integer DEPENDS utility) +\ No newline at end of file +diff --git a/libs/integer/test/CMakeLists.txt b/libs/integer/test/CMakeLists.txt +new file mode 100644 +index 0000000..acc48e6 +--- /dev/null ++++ b/libs/integer/test/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(integer BOOST_DEPENDS test) ++ ++boost_test_run(cstdint_test cstdint_test.cpp) ++boost_test_run(integer_mask_test integer_mask_test.cpp DEPENDS boost_test_exec_monitor) ++boost_test_run(integer_test integer_test.cpp DEPENDS boost_test_exec_monitor) ++boost_test_run(integer_traits_test integer_traits_test.cpp DEPENDS boost_test_exec_monitor) ++boost_test_run(static_log2_test static_log2_test.cpp DEPENDS boost_test_exec_monitor) ++boost_test_run(static_min_max_test static_min_max_test.cpp DEPENDS boost_test_exec_monitor) +diff --git a/libs/interprocess/CMakeLists.txt b/libs/interprocess/CMakeLists.txt +new file mode 100644 +index 0000000..5a2b185 +--- /dev/null ++++ b/libs/interprocess/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ interprocess ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ interprocess ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Shared memory, memory mapped files, process-shared mutexes, condition variables, containers and allocators." ++ MODULARIZED ++ AUTHORS "Ion Gaztanaga " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/interprocess/module.cmake b/libs/interprocess/module.cmake +new file mode 100644 +index 0000000..408603f +--- /dev/null ++++ b/libs/interprocess/module.cmake +@@ -0,0 +1 @@ ++boost_module(interprocess DEPENDS date_time intrusive math) +\ No newline at end of file +diff --git a/libs/interprocess/test/CMakeLists.txt b/libs/interprocess/test/CMakeLists.txt +new file mode 100644 +index 0000000..2435e03 +--- /dev/null ++++ b/libs/interprocess/test/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(interprocess BOOST_DEPENDS test thread date_time multi_index) ++ ++ ++file(GLOB INTERPROCESS_TESTS *.cpp) ++foreach(TEST ${INTERPROCESS_TESTS}) ++ get_filename_component(TEST ${TEST} NAME_WE) ++ boost_test_run(${TEST} DEPENDS boost_thread MULTI_THREADED) ++endforeach() +\ No newline at end of file +diff --git a/libs/intrusive/CMakeLists.txt b/libs/intrusive/CMakeLists.txt +new file mode 100644 +index 0000000..3169cb1 +--- /dev/null ++++ b/libs/intrusive/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ intrusive_ptr.hpp ++ intrusive ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ intrusive ++ # SRCDIRS ++ # TESTDIRS ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/intrusive/module.cmake b/libs/intrusive/module.cmake +new file mode 100644 +index 0000000..edc114f +--- /dev/null ++++ b/libs/intrusive/module.cmake +@@ -0,0 +1 @@ ++boost_module(intrusive DEPENDS utility) +\ No newline at end of file +diff --git a/libs/io/CMakeLists.txt b/libs/io/CMakeLists.txt +new file mode 100644 +index 0000000..a2d73a2 +--- /dev/null ++++ b/libs/io/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ io_fwd.hpp ++ io ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ io ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/io/module.cmake b/libs/io/module.cmake +new file mode 100644 +index 0000000..fd1d4d9 +--- /dev/null ++++ b/libs/io/module.cmake +@@ -0,0 +1 @@ ++boost_module(io DEPENDS detail) +\ No newline at end of file +diff --git a/libs/io/test/CMakeLists.txt b/libs/io/test/CMakeLists.txt +new file mode 100644 +index 0000000..2f1cf09 +--- /dev/null ++++ b/libs/io/test/CMakeLists.txt +@@ -0,0 +1,12 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(io BOOST_DEPENDS test) ++ ++ ++boost_test_run(ios_state_unit_test DEPENDS boost_unit_test_framework) ++boost_test_run(ios_state_test DEPENDS boost_test_exec_monitor) ++ +diff --git a/libs/iostreams/CMakeLists.txt b/libs/iostreams/CMakeLists.txt +new file mode 100644 +index 0000000..657f074 +--- /dev/null ++++ b/libs/iostreams/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ iostreams ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ iostreams ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Framework for defining streams, stream buffers and i/o filters" ++ MODULARIZED ++ AUTHORS "Jonathan Turkanis " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/iostreams/example/CMakeLists.txt b/libs/iostreams/example/CMakeLists.txt +new file mode 100644 +index 0000000..7b154d2 +--- /dev/null ++++ b/libs/iostreams/example/CMakeLists.txt +@@ -0,0 +1,10 @@ ++# Copyright (C) 2009 Troy D. Straszheim ++# Distributed under the Boost Software License, Version 1.0. ++# See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt ++boost_add_executable(boost_back_inserter_example DEPENDS boost_iostreams) ++boost_add_executable(container_device_example ) ++boost_add_executable(container_sink_example ) ++boost_add_executable(container_source_example ) ++boost_add_executable(iterator_range_example ) ++boost_add_executable(std_back_inserter_example ) +diff --git a/libs/iostreams/module.cmake b/libs/iostreams/module.cmake +new file mode 100644 +index 0000000..fae407a +--- /dev/null ++++ b/libs/iostreams/module.cmake +@@ -0,0 +1 @@ ++boost_module(iostreams DEPENDS range random) +diff --git a/libs/iostreams/src/CMakeLists.txt b/libs/iostreams/src/CMakeLists.txt +new file mode 100644 +index 0000000..4b4e473 +--- /dev/null ++++ b/libs/iostreams/src/CMakeLists.txt +@@ -0,0 +1,36 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++set(BOOST_IOSTREAMS_EXTRA_SOURCES) ++set(BOOST_IOSTREAMS_LIBRARIES) ++ ++# ++# These finds are done upstairs in libs/iostreams/CMakeLists.txt ++# ++if (ZLIB_FOUND) ++ include_directories(${ZLIB_INCLUDE_DIR}) ++ set(ZLIB_EXTRA_SOURCES zlib.cpp gzip.cpp) ++ set(ZLIB_EXTRA_LIBRARIES ${ZLIB_LIBRARIES}) ++endif(ZLIB_FOUND) ++ ++if (BZIP2_FOUND) ++ include_directories(${BZIP2_INCLUDE_DIR}) ++ add_definitions(${BZIP2_DEFINITIONS}) ++ set(BZIP2_EXTRA_SOURCES bzip2.cpp) ++ set(BZIP2_EXTRA_LIBRARIES ${BZIP2_LIBRARIES}) ++ # NOTE: What to do about BZIP2_NEED_PREFIX? ++endif(BZIP2_FOUND) ++ ++boost_add_library(iostreams ++ ++ file_descriptor.cpp ++ mapped_file.cpp ++ ${ZLIB_EXTRA_SOURCES} ++ ${BZIP2_EXTRA_SOURCES} ++ ++ LINK_LIBS ${ZLIB_EXTRA_LIBRARIES} ${BZIP2_EXTRA_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_IOSTREAMS_DYN_LINK=1" ++ ) +diff --git a/libs/iostreams/test/CMakeLists.txt b/libs/iostreams/test/CMakeLists.txt +new file mode 100644 +index 0000000..fc166a6 +--- /dev/null ++++ b/libs/iostreams/test/CMakeLists.txt +@@ -0,0 +1,69 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(iostreams BOOST_DEPENDS test) ++ ++ ++# Helper macro to create tests for the iostreams library ++macro(iostreams_test TESTNAME) ++ boost_test_run(${TESTNAME} ++ ${ARGN} ++ DEPENDS boost_unit_test_framework ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++endmacro(iostreams_test) ++ ++iostreams_test(array_test) ++iostreams_test(auto_close_test) ++iostreams_test(buffer_size_test) ++iostreams_test(code_converter_test ++ code_converter_test.cpp detail/utf8_codecvt_facet.cpp) ++iostreams_test(compose_test) ++iostreams_test(component_access_test) ++iostreams_test(copy_test) ++iostreams_test(counter_test) ++iostreams_test(direct_adapter_test) ++iostreams_test(example_test) ++iostreams_test(file_test) ++boost_test_run(file_descriptor_test ++ DEPENDS boost_unit_test_framework boost_iostreams ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++iostreams_test(filtering_stream_test) ++iostreams_test(finite_state_filter_test) ++iostreams_test(flush_test) ++iostreams_test(invert_test) ++iostreams_test(line_filter_test) ++boost_test_run(mapped_file_test ++ DEPENDS boost_unit_test_framework boost_iostreams ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++iostreams_test(newline_test) ++iostreams_test(null_test) ++iostreams_test(pipeline_test) ++boost_test_run(regex_filter_test ++ DEPENDS boost_unit_test_framework boost_regex ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++iostreams_test(restrict_test) ++iostreams_test(seekable_file_test) ++iostreams_test(seekable_filter_test) ++iostreams_test(stdio_filter_test) ++iostreams_test(symmetric_filter_test) ++iostreams_test(tee_test) ++iostreams_test(wide_stream_test) ++ ++if (ZLIB_FOUND) ++ boost_test_run(gzip_test ++ DEPENDS boost_unit_test_framework boost_iostreams ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++ boost_test_run(zlib_test ++ DEPENDS boost_unit_test_framework boost_iostreams ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++endif(ZLIB_FOUND) ++ ++# Find BZip2. If it's available, test it ++if (BZIP2_FOUND) ++ boost_test_run(bzip2_test ++ DEPENDS boost_unit_test_framework boost_iostreams ++ COMPILE_FLAGS "-DBOOST_IOSTREAMS_NO_LIB") ++endif(BZIP2_FOUND) +diff --git a/libs/iterator/CMakeLists.txt b/libs/iterator/CMakeLists.txt +new file mode 100644 +index 0000000..bd83261 +--- /dev/null ++++ b/libs/iterator/CMakeLists.txt +@@ -0,0 +1,30 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ iterator.hpp ++ iterator ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ iterator ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A system of concepts which extend the C++ standard iterator requirementsand a framework of components for building iterators based on these extended concepts and includes several useful iterator adaptors." ++ MODULARIZED ++ AUTHORS "David Abrahams " ++ "Jeremy Siek " ++ "Thomas Witt " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/iterator/module.cmake b/libs/iterator/module.cmake +new file mode 100644 +index 0000000..2e025e3 +--- /dev/null ++++ b/libs/iterator/module.cmake +@@ -0,0 +1 @@ ++boost_module(iterator DEPENDS mpl type_traits function concept_check) +\ No newline at end of file +diff --git a/libs/iterator/test/CMakeLists.txt b/libs/iterator/test/CMakeLists.txt +new file mode 100644 +index 0000000..1b0c5be +--- /dev/null ++++ b/libs/iterator/test/CMakeLists.txt +@@ -0,0 +1,39 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(iterator BOOST_DEPENDS test tuple smart_ptr) ++ ++# These first two tests will run last, and are expected to fail ++# for many less-capable compilers. ++ ++boost_test_compile_fail(interoperable_fail) ++# test uses expected success, so that we catch unrelated ++# compilation problems. ++boost_test_run(is_convertible_fail) ++boost_test_run(zip_iterator_test) ++ ++# These tests should work for just about everything. ++boost_test_compile(is_lvalue_iterator) ++boost_test_compile(is_readable_iterator) ++boost_test_compile(pointee) ++ ++boost_test_run(unit_tests) ++boost_test_run(concept_tests) ++boost_test_run(iterator_adaptor_cc) ++boost_test_run(iterator_adaptor_test) ++boost_test_compile(iterator_archetype_cc) ++boost_test_compile_fail(iter_archetype_default_ctor) ++boost_test_compile_fail(lvalue_concept_fail) ++boost_test_run(transform_iterator_test) ++boost_test_run(indirect_iterator_test) ++boost_test_compile(indirect_iter_member_types) ++boost_test_run(filter_iterator_test) ++boost_test_run(iterator_facade) ++boost_test_run(reverse_iterator_test) ++boost_test_run(counting_iterator_test) ++boost_test_run(interoperable) ++boost_test_run(iterator_traits_test) ++boost_test_run(permutation_iterator_test) +diff --git a/libs/lambda/CMakeLists.txt b/libs/lambda/CMakeLists.txt +new file mode 100644 +index 0000000..e5c6f1a +--- /dev/null ++++ b/libs/lambda/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ lambda ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ lambda ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/lambda/module.cmake b/libs/lambda/module.cmake +new file mode 100644 +index 0000000..9f7a073 +--- /dev/null ++++ b/libs/lambda/module.cmake +@@ -0,0 +1 @@ ++boost_module(lambda DEPENDS tuple) +\ No newline at end of file +diff --git a/libs/lambda/test/CMakeLists.txt b/libs/lambda/test/CMakeLists.txt +new file mode 100644 +index 0000000..4f9a74f +--- /dev/null ++++ b/libs/lambda/test/CMakeLists.txt +@@ -0,0 +1,24 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(lambda BOOST_DEPENDS test any) ++ ++boost_test_run(algorithm_test DEPENDS boost_test_exec_monitor) ++boost_test_run(bind_tests_simple DEPENDS boost_test_exec_monitor) ++boost_test_run(bind_tests_advanced DEPENDS boost_test_exec_monitor) ++boost_test_run(bind_tests_simple_f_refs DEPENDS boost_test_exec_monitor) ++boost_test_run(bll_and_function DEPENDS boost_test_exec_monitor) ++boost_test_run(lambda_cast_test ++ cast_test.cpp DEPENDS boost_test_exec_monitor) ++boost_test_run(constructor_tests DEPENDS boost_test_exec_monitor) ++boost_test_run(control_structures DEPENDS boost_test_exec_monitor) ++boost_test_run(exception_test DEPENDS boost_test_exec_monitor) ++boost_test_run(extending_rt_traits DEPENDS boost_test_exec_monitor) ++boost_test_run(is_instance_of_test DEPENDS boost_test_exec_monitor) ++boost_test_run(member_pointer_test DEPENDS boost_test_exec_monitor) ++boost_test_run(operator_tests_simple DEPENDS boost_test_exec_monitor) ++boost_test_run(phoenix_control_structures DEPENDS boost_test_exec_monitor) ++boost_test_run(switch_construct DEPENDS boost_test_exec_monitor) +diff --git a/libs/logic/CMakeLists.txt b/libs/logic/CMakeLists.txt +new file mode 100644 +index 0000000..da915e5 +--- /dev/null ++++ b/libs/logic/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ logic ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ logic ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/logic/module.cmake b/libs/logic/module.cmake +new file mode 100644 +index 0000000..4b1423f +--- /dev/null ++++ b/libs/logic/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(logic DEPENDS config detail) ++ ++ +diff --git a/libs/logic/test/CMakeLists.txt b/libs/logic/test/CMakeLists.txt +new file mode 100644 +index 0000000..7684320 +--- /dev/null ++++ b/libs/logic/test/CMakeLists.txt +@@ -0,0 +1,12 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(logic BOOST_DEPENDS test) ++ ++ ++boost_test_run(tribool_test) ++boost_test_run(tribool_rename_test) ++boost_test_run(tribool_io_test) +diff --git a/libs/math/CMakeLists.txt b/libs/math/CMakeLists.txt +new file mode 100644 +index 0000000..0f7652e +--- /dev/null ++++ b/libs/math/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ math_fwd.hpp ++ math ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ math ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/math/module.cmake b/libs/math/module.cmake +new file mode 100644 +index 0000000..e222098 +--- /dev/null ++++ b/libs/math/module.cmake +@@ -0,0 +1 @@ ++boost_module(math DEPENDS format array) +\ No newline at end of file +diff --git a/libs/math/test/CMakeLists.txt b/libs/math/test/CMakeLists.txt +new file mode 100644 +index 0000000..88f26b7 +--- /dev/null ++++ b/libs/math/test/CMakeLists.txt +@@ -0,0 +1,33 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(math BOOST_DEPENDS test regex) ++include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++ ++boost_test_run(common_factor_test DEPENDS boost_unit_test_framework) ++boost_test_run(octonion_test ++ ../octonion/octonion_test.cpp ++ DEPENDS boost_unit_test_framework) ++boost_test_run(quaternion_test ++ ../quaternion/quaternion_test.cpp ++ DEPENDS boost_unit_test_framework) ++boost_test_run(special_functions_test ++ ../special_functions/special_functions_test.cpp ++ DEPENDS boost_unit_test_framework) ++boost_test_run(quaternion_multi_incl_test ++ ../quaternion/quaternion_mult_incl_test.cpp ++ ../quaternion/quaternion_mi1.cpp ++ ../quaternion/quaternion_mi2.cpp ++ DEPENDS boost_unit_test_framework) ++foreach(mathtest ++ ++ complex_test ++ hypot_test ++ ) ++ ++ boost_test_run(${mathtest} DEPENDS boost_test_exec_monitor) ++endforeach() ++ +diff --git a/libs/mpi/CMakeLists.txt b/libs/mpi/CMakeLists.txt +new file mode 100644 +index 0000000..21e408e +--- /dev/null ++++ b/libs/mpi/CMakeLists.txt +@@ -0,0 +1,31 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ mpi.hpp ++ mpi ++) ++ ++if (NOT MPI_FOUND) ++ colormsg(RED "+-- MPI not found, disabling.") ++else() ++ ++ boost_library_project( ++ mpi ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++ ) ++ ++endif() +diff --git a/libs/mpi/doc/CMakeLists.txt b/libs/mpi/doc/CMakeLists.txt +new file mode 100644 +index 0000000..22053b4 +--- /dev/null ++++ b/libs/mpi/doc/CMakeLists.txt +@@ -0,0 +1,36 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_documentation(mpi.qbk ++ HEADERS mpi_autodoc.xml ++ boost/mpi.hpp ++ boost/mpi/allocator.hpp ++ boost/mpi/collectives.hpp ++ boost/mpi/collectives_fwd.hpp ++ boost/mpi/communicator.hpp ++ boost/mpi/config.hpp ++ boost/mpi/datatype.hpp ++ boost/mpi/datatype_fwd.hpp ++ boost/mpi/environment.hpp ++ boost/mpi/exception.hpp ++ boost/mpi/graph_communicator.hpp ++ boost/mpi/group.hpp ++ boost/mpi/intercommunicator.hpp ++ boost/mpi/nonblocking.hpp ++ boost/mpi/operations.hpp ++ boost/mpi/packed_iarchive.hpp ++ boost/mpi/packed_oarchive.hpp ++ boost/mpi/skeleton_and_content.hpp ++ boost/mpi/skeleton_and_content_fwd.hpp ++ boost/mpi/status.hpp ++ boost/mpi/request.hpp ++ boost/mpi/timer.hpp ++ boost/mpi/python.hpp ++ DOXYGEN_PARAMETERS ++ MACRO_EXPANSION=YES ++ EXPAND_ONLY_PREDEF=YES ++ "PREDEFINED=BOOST_MPI_HAS_MEMORY_ALLOCATION= BOOST_MPI_HAS_NOARG_INITIALIZATION= MPI_VERSION=2 BOOST_MPI_DOXYGEN=" ++ ) +\ No newline at end of file +diff --git a/libs/mpi/module.cmake b/libs/mpi/module.cmake +new file mode 100644 +index 0000000..20350fa +--- /dev/null ++++ b/libs/mpi/module.cmake +@@ -0,0 +1 @@ ++boost_module(mpi DEPENDS graph) +\ No newline at end of file +diff --git a/libs/mpi/src/CMakeLists.txt b/libs/mpi/src/CMakeLists.txt +new file mode 100644 +index 0000000..fe5ea87 +--- /dev/null ++++ b/libs/mpi/src/CMakeLists.txt +@@ -0,0 +1,77 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++add_definitions(-DBOOST_MPI_SOURCE=1) ++include_directories(${MPI_INCLUDE_PATH}) ++ ++boost_add_library( ++ mpi ++ broadcast.cpp ++ communicator.cpp ++ computation_tree.cpp ++ content_oarchive.cpp ++ environment.cpp ++ exception.cpp ++ graph_communicator.cpp ++ group.cpp ++ intercommunicator.cpp ++ mpi_datatype_cache.cpp ++ mpi_datatype_oarchive.cpp ++ packed_iarchive.cpp ++ packed_oarchive.cpp ++ packed_skeleton_iarchive.cpp ++ packed_skeleton_oarchive.cpp ++ point_to_point.cpp ++ request.cpp ++ text_skeleton_oarchive.cpp ++ timer.cpp ++ DEPENDS boost_serialization ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1" ++ ) ++ ++if(PYTHON_FOUND) ++ ++ colormsg (GREEN "+-- Python available, enabling boost_mpi_python.") ++ include_directories(${PYTHON_INCLUDE_PATH}) ++ ++ boost_add_library(mpi_python ++ ++ python/serialize.cpp ++ ++ DEPENDS boost_python boost_mpi ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1" ++ LINK_FLAGS ${MPI_LINK_FLAGS} ++ LINK_LIBS ${MPI_LIBRARIES} ${PYTHON_LIBRARIES} ++ NO_STATIC) ++ ++ boost_python_extension(mpi ++ ++ python/collectives.cpp ++ python/py_communicator.cpp ++ python/datatypes.cpp ++ python/documentation.cpp ++ python/py_environment.cpp ++ python/py_nonblocking.cpp ++ python/py_exception.cpp ++ python/module.cpp ++ python/py_request.cpp ++ python/skeleton_and_content.cpp ++ python/status.cpp ++ python/py_timer.cpp ++ ++ DEPENDS boost_python boost_mpi ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1 -DBOOST_MPI_PYTHON_DYN_LINK=1 -DBOOST_PYTHON_DYN_LINK=1" ++ LINK_FLAGS ${MPI_LINK_FLAGS} ++ LINK_LIBS ${MPI_LIBRARIES} ${PYTHON_LIBRARIES}) ++ ++else() ++ colormsg(RED "+-- optional python bindings disabled since PYTHON_FOUND is false.") ++endif() ++ +diff --git a/libs/mpi/test/CMakeLists.txt b/libs/mpi/test/CMakeLists.txt +new file mode 100644 +index 0000000..5ff2b9a +--- /dev/null ++++ b/libs/mpi/test/CMakeLists.txt +@@ -0,0 +1,77 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++if (MPI_FOUND) ++message(STATUS "MPI Found") ++ ++boost_additional_test_dependencies(mpi BOOST_DEPENDS test ) ++ ++include_directories(${MPI_INCLUDE_PATH}) ++ ++# Declare a test for the Boost.MPI library, which may involve both ++# building the test and executing it with varying numbers of ++# processes. ++# ++# boost_mpi_test(testname ++# [source1 source2 ...] ++# [ARGS arg1 arg2 ...] ++# [SCHEDULE procs1 procs2 ...] ++# ++# testname is the name of the test. source1, source2, etc. are the ++# source files that will be built and linked into the test ++# executable. If no source files are provided, the file "testname.cpp" ++# will be used instead. ++macro(boost_mpi_test testname) ++ PARSE_ARGUMENTS(MPI_TEST "SCHEDULE;ARGS" "" ${ARGN}) ++ ++ # Determine the test sources ++ if (MPI_TEST_DEFAULT_ARGS) ++ set(MPI_TEST_SOURCES ${MPI_TEST_DEFAULT_ARGS}) ++ else (MPI_TEST_DEFAULT_ARGS) ++ set(MPI_TEST_SOURCES "${testname}.cpp") ++ endif (MPI_TEST_DEFAULT_ARGS) ++ ++ # Build the test executable ++ boost_add_executable(${testname} ++ ${MPI_TEST_SOURCES} ++ OUTPUT_NAME tests/${PROJECT_NAME}/${testname} ++ NO_INSTALL ++ DEPENDS boost_mpi ++ COMPILE_FLAGS "${MPI_COMPILE_FLAGS}" ++ LINK_FLAGS "${MPI_LINK_FLAGS}" ++ LINK_LIBS ${MPI_LIBRARIES} ++ SHARED_COMPILE_FLAGS "-DBOOST_MPI_DYN_LINK=1") ++ if (THIS_EXE_OKAY) ++ if (NOT MPI_TEST_SCHEDULE) ++ set(MPI_TEST_SCHEDULE 1 2 3 4 7 8 13 17) ++ endif (NOT MPI_TEST_SCHEDULE) ++ ++ foreach(PROCS ${MPI_TEST_SCHEDULE}) ++ add_test("${PROJECT_NAME}::${testname}-${PROCS}" ++ ${MPIEXEC} ++ -n ${PROCS} ++ ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/tests/${PROJECT_NAME}/${testname} ++ ${BOOST_TEST_ARGS} ++ ) ++ endforeach(PROCS) ++ endif (THIS_EXE_OKAY) ++endmacro(boost_mpi_test) ++ ++boost_mpi_test(all_gather_test) ++boost_mpi_test(all_reduce_test) ++boost_mpi_test(all_to_all_test) ++boost_mpi_test(broadcast_test SCHEDULE 2 17) ++boost_mpi_test(graph_topology_test SCHEDULE 2 7 13) ++boost_mpi_test(is_mpi_op_test SCHEDULE 1) ++boost_mpi_test(nonblocking_test) ++boost_mpi_test(reduce_test) ++boost_mpi_test(ring_test SCHEDULE 2 3 4 7 8 13 17) ++boost_mpi_test(scan_test) ++boost_mpi_test(scatter_test) ++boost_mpi_test(skeleton_content_test SCHEDULE 2 3 4 7 8 13 17) ++ ++ ++endif (MPI_FOUND) +\ No newline at end of file +diff --git a/libs/mpl/CMakeLists.txt b/libs/mpl/CMakeLists.txt +new file mode 100644 +index 0000000..ea43e88 +--- /dev/null ++++ b/libs/mpl/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ mpl ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ mpl ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language." ++ MODULARIZED ++ AUTHORS "Aleksey Gurtovoy " ++ "David Abrahams " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/mpl/module.cmake b/libs/mpl/module.cmake +new file mode 100644 +index 0000000..afa88fd +--- /dev/null ++++ b/libs/mpl/module.cmake +@@ -0,0 +1 @@ ++boost_module(mpl DEPENDS preprocessor config detail) +\ No newline at end of file +diff --git a/libs/mpl/test/CMakeLists.txt b/libs/mpl/test/CMakeLists.txt +new file mode 100644 +index 0000000..e8b182b +--- /dev/null ++++ b/libs/mpl/test/CMakeLists.txt +@@ -0,0 +1,97 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(mpl BOOST_DEPENDS test bind) ++ ++boost_test_compile(largest_int aux_/largest_int.cpp) ++boost_test_compile(msvc_is_class aux_/msvc_is_class.cpp) ++boost_test_compile(template_arity aux_/template_arity.cpp) ++ ++boost_test_compile(advance) ++boost_test_compile(always) ++boost_test_compile(apply) ++boost_test_compile(apply_wrap) ++boost_test_compile(arithmetic) ++boost_test_compile(as_sequence) ++boost_test_compile(assert) ++boost_test_compile(at) ++boost_test_compile(back) ++boost_test_compile(bind) ++boost_test_compile(bitwise) ++boost_test_run(bool) ++boost_test_compile(comparison) ++boost_test_compile(contains) ++boost_test_compile(copy) ++boost_test_compile(copy_if) ++boost_test_compile(count) ++boost_test_compile(count_if) ++boost_test_compile(deque) ++boost_test_compile(distance) ++boost_test_compile(empty) ++boost_test_compile(equal) ++boost_test_compile(erase) ++boost_test_compile(erase_range) ++boost_test_compile(eval_if) ++boost_test_compile(filter_view) ++boost_test_compile(find) ++boost_test_compile(find_if) ++boost_test_compile(fold) ++boost_test_run(for_each) ++boost_test_compile(front) ++boost_test_compile(has_xxx) ++boost_test_compile(identity) ++boost_test_compile(if) ++boost_test_compile(index_of) ++boost_test_compile(inherit) ++boost_test_compile(insert) ++boost_test_compile(insert_range) ++boost_test_run(int) ++boost_test_run(integral_c) ++boost_test_compile(is_placeholder) ++boost_test_compile(is_sequence) ++boost_test_compile(iterator_tags) ++boost_test_compile(joint_view) ++boost_test_compile(lambda) ++boost_test_compile(lambda_args) ++boost_test_compile(list) ++boost_test_compile(list_c) ++boost_test_compile(logical) ++boost_test_compile(lower_bound) ++boost_test_compile(map) ++boost_test_compile(max_element) ++boost_test_compile(min_max) ++boost_test_compile(multiset) ++boost_test_compile(next) ++boost_test_compile(no_has_xxx) ++boost_test_compile(numeric_ops) ++boost_test_compile(pair_view) ++boost_test_compile(partition) ++boost_test_compile(pop_front) ++boost_test_compile(push_front) ++boost_test_compile(quote) ++boost_test_compile(range_c) ++boost_test_compile(remove) ++boost_test_compile(remove_if) ++boost_test_compile(replace) ++boost_test_compile(replace_if) ++boost_test_compile(reverse) ++boost_test_compile(same_as) ++boost_test_compile(set) ++boost_test_compile(set_c) ++boost_test_compile(single_view) ++boost_test_compile(size) ++boost_test_run(size_t) ++boost_test_compile(sizeof) ++boost_test_compile(sort) ++boost_test_compile(stable_partition) ++boost_test_compile(transform) ++boost_test_compile(transform_view) ++boost_test_compile(unique) ++boost_test_compile(unpack_args) ++boost_test_compile(upper_bound) ++boost_test_compile(vector) ++boost_test_compile(vector_c) ++boost_test_compile(zip_view) +diff --git a/libs/msm/CMakeLists.txt b/libs/msm/CMakeLists.txt +new file mode 100644 +index 0000000..456588c +--- /dev/null ++++ b/libs/msm/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ msm ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ msm ++ # SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "Meta State Machine (MSM)." ++ MODULARIZED ++ AUTHORS "Christophe Henry " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/msm/module.cmake b/libs/msm/module.cmake +new file mode 100644 +index 0000000..01c64ff +--- /dev/null ++++ b/libs/msm/module.cmake +@@ -0,0 +1 @@ ++boost_module(msm DEPENDS smart_ptr) +\ No newline at end of file +diff --git a/libs/msm/test/CMakeLists.txt b/libs/msm/test/CMakeLists.txt +new file mode 100644 +index 0000000..e2c46b1 +--- /dev/null ++++ b/libs/msm/test/CMakeLists.txt +@@ -0,0 +1,25 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(msm BOOST_DEPENDS test) ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_MSM_STATIC_LINK ++ ++SET(TESTS ++ Anonymous AnonymousEuml ++ CompositeEuml CompositeMachine Constructor ++ Entries History ++ OrthogonalDeferred OrthogonalDeferred2 OrthogonalDeferredEuml ++ SimpleEuml SimpleEuml2 SimpleInternal SimpleInternalEuml ++ SimpleInternalFunctors SimpleMachine SimpleWithFunctors) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test} ++ ${test}.cpp ++ DEPENDS boost_unit_test_framework STATIC ++ COMPILE_FLAGS -ftemplate-depth-300 -g0 ++ ) ++ENDFOREACH(test ${TESTS}) +diff --git a/libs/multi_array/CMakeLists.txt b/libs/multi_array/CMakeLists.txt +new file mode 100644 +index 0000000..96fc47d +--- /dev/null ++++ b/libs/multi_array/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ multi_array.hpp ++ multi_array ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ multi_array ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/multi_array/module.cmake b/libs/multi_array/module.cmake +new file mode 100644 +index 0000000..a7e6bf9 +--- /dev/null ++++ b/libs/multi_array/module.cmake +@@ -0,0 +1,2 @@ ++boost_module(multi_array DEPENDS array iterator detail concept_check mpl static_assert functional) ++ +diff --git a/libs/multi_array/test/CMakeLists.txt b/libs/multi_array/test/CMakeLists.txt +new file mode 100644 +index 0000000..451646c +--- /dev/null ++++ b/libs/multi_array/test/CMakeLists.txt +@@ -0,0 +1,47 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(multi_array BOOST_DEPENDS test) ++ ++ ++boost_test_compile_fail(fail_cbracket) ++boost_test_compile_fail(fail_cdata) ++boost_test_compile_fail(fail_citerator) ++boost_test_compile_fail(fail_cparen) ++boost_test_compile_fail(fail_criterator) ++boost_test_compile_fail(fail_csubarray) ++boost_test_compile_fail(fail_csubarray2) ++boost_test_compile_fail(fail_csubarray3) ++boost_test_compile_fail(fail_cview) ++boost_test_compile_fail(fail_cview2) ++boost_test_compile_fail(fail_cview3) ++boost_test_compile_fail(fail_ref_cbracket) ++boost_test_compile_fail(fail_ref_cdata) ++boost_test_compile_fail(fail_ref_citerator) ++boost_test_compile_fail(fail_ref_cparen) ++boost_test_compile_fail(fail_ref_criterator) ++boost_test_compile_fail(fail_ref_csubarray) ++boost_test_compile_fail(fail_ref_csubarray2) ++boost_test_compile_fail(fail_ref_csubarray3) ++boost_test_compile_fail(fail_ref_cview) ++boost_test_compile_fail(fail_ref_cview2) ++boost_test_compile_fail(fail_ref_cview3) ++ ++boost_test_run(constructors DEPENDS boost_test_exec_monitor) ++boost_test_run(access DEPENDS boost_test_exec_monitor) ++boost_test_run(compare DEPENDS boost_test_exec_monitor) ++boost_test_run(iterators DEPENDS boost_test_exec_monitor) ++boost_test_run(slice DEPENDS boost_test_exec_monitor) ++boost_test_run(assign DEPENDS boost_test_exec_monitor) ++boost_test_run(assign_to_array DEPENDS boost_test_exec_monitor) ++boost_test_run(index_bases DEPENDS boost_test_exec_monitor) ++boost_test_run(storage_order DEPENDS boost_test_exec_monitor) ++boost_test_run(reshape DEPENDS boost_test_exec_monitor) ++boost_test_run(range1 DEPENDS boost_test_exec_monitor) ++boost_test_run(idxgen1 DEPENDS boost_test_exec_monitor) ++boost_test_run(stl_interaction DEPENDS boost_test_exec_monitor) ++boost_test_run(resize DEPENDS boost_test_exec_monitor) ++boost_test_compile(concept_checks) +diff --git a/libs/multi_index/CMakeLists.txt b/libs/multi_index/CMakeLists.txt +new file mode 100644 +index 0000000..9bb688a +--- /dev/null ++++ b/libs/multi_index/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ multi_index_container.hpp ++ multi_index_container_fwd.hpp ++ multi_index ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ multi_index ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/multi_index/module.cmake b/libs/multi_index/module.cmake +new file mode 100644 +index 0000000..ce8ee4b +--- /dev/null ++++ b/libs/multi_index/module.cmake +@@ -0,0 +1 @@ ++boost_module(multi_index DEPENDS serialization functional math) +\ No newline at end of file +diff --git a/libs/multi_index/test/CMakeLists.txt b/libs/multi_index/test/CMakeLists.txt +new file mode 100644 +index 0000000..09103af +--- /dev/null ++++ b/libs/multi_index/test/CMakeLists.txt +@@ -0,0 +1,34 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(multi_index BOOST_DEPENDS test) ++ ++ ++boost_test_run(test_basic test_basic.cpp test_basic_main.cpp) ++boost_test_run(test_capacity test_capacity.cpp test_capacity_main.cpp) ++boost_test_run(test_comparison test_comparison.cpp test_comparison_main.cpp) ++boost_test_run(test_composite_key test_composite_key.cpp test_composite_key_main.cpp) ++boost_test_run(test_conv_iterators test_conv_iterators.cpp test_conv_iterators_main.cpp) ++boost_test_run(test_copy_assignment test_copy_assignment.cpp test_copy_assignment_main.cpp) ++boost_test_run(test_hash_ops test_hash_ops.cpp test_hash_ops_main.cpp) ++boost_test_run(test_iterators test_iterators.cpp test_iterators_main.cpp) ++boost_test_run(test_key_extractors test_key_extractors.cpp test_key_extractors_main.cpp) ++boost_test_run(test_list_ops test_list_ops.cpp test_list_ops_main.cpp) ++boost_test_run(test_modifiers test_modifiers.cpp test_modifiers_main.cpp) ++boost_test_run(test_mpl_ops test_mpl_ops.cpp test_mpl_ops_main.cpp) ++boost_test_run(test_observers test_observers.cpp test_observers_main.cpp) ++boost_test_run(test_projection test_projection.cpp test_projection_main.cpp) ++boost_test_run(test_range test_range.cpp test_range_main.cpp) ++boost_test_run(test_rearrange test_rearrange.cpp test_rearrange_main.cpp) ++boost_test_run(test_safe_mode test_safe_mode.cpp test_safe_mode_main.cpp) ++boost_test_run(test_serialization ++ test_serialization.cpp test_serialization1.cpp ++ test_serialization2.cpp test_serialization3.cpp ++ test_serialization_main.cpp ++ DEPENDS boost_serialization) ++boost_test_run(test_set_ops test_set_ops.cpp test_set_ops_main.cpp) ++boost_test_run(test_special_set_ops test_special_set_ops.cpp test_special_set_ops_main.cpp) ++boost_test_run(test_update test_update.cpp test_update_main.cpp) +diff --git a/libs/numeric/CMakeLists.txt b/libs/numeric/CMakeLists.txt +new file mode 100644 +index 0000000..a5e5689 +--- /dev/null ++++ b/libs/numeric/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ numeric ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ numeric ++ # SRCDIRS ++ TESTDIRS conversion/test interval/test ublas/test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/numeric/conversion/test/CMakeLists.txt b/libs/numeric/conversion/test/CMakeLists.txt +new file mode 100644 +index 0000000..ca88052 +--- /dev/null ++++ b/libs/numeric/conversion/test/CMakeLists.txt +@@ -0,0 +1,17 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#------------------------------------------------------------------------- ++#-- Needed include directories for the tests ++boost_additional_test_dependencies(numeric BOOST_DEPENDS test) ++#------------------------------------------------------------------------- ++ ++boost_test_run(bounds_test) ++boost_test_run(traits_test) ++boost_test_run(converter_test) ++boost_test_run(udt_support_test) ++boost_test_run(numeric_conv_cast_test numeric_cast_test.cpp) ++boost_test_run(udt_example_0) +diff --git a/libs/numeric/interval/test/CMakeLists.txt b/libs/numeric/interval/test/CMakeLists.txt +new file mode 100644 +index 0000000..e0c4e54 +--- /dev/null ++++ b/libs/numeric/interval/test/CMakeLists.txt +@@ -0,0 +1,34 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#TODO: Deal with these on OSF ++# hp_cxx,OSF:"-fprm d" ++ # gcc,OSF:-mfp-rounding-mode=d ++ ++#------------------------------------------------------------------------- ++#-- Needed include directories for the tests ++boost_additional_test_dependencies(numeric BOOST_DEPENDS test) ++#------------------------------------------------------------------------- ++ ++boost_test_compile(integer) ++ ++boost_test_run(add) ++boost_test_run(det) ++boost_test_run(fmod) ++message(STATUS "numeric/interval/test/mul needs love") ++#boost_test_run(mul) ++message(STATUS "numeric/interval/test/overflow needs love") ++#boost_test_run(overflow) ++boost_test_run(pi) ++boost_test_run(pow) ++ ++boost_test_run(cmp DEPENDS boost_test_exec_monitor) ++boost_test_run(cmp_exn DEPENDS boost_test_exec_monitor) ++boost_test_run(cmp_exp DEPENDS boost_test_exec_monitor) ++boost_test_run(cmp_lex DEPENDS boost_test_exec_monitor) ++boost_test_run(cmp_set DEPENDS boost_test_exec_monitor) ++boost_test_run(cmp_tribool DEPENDS boost_test_exec_monitor) ++boost_test_run(test_float DEPENDS boost_test_exec_monitor) +diff --git a/libs/numeric/module.cmake b/libs/numeric/module.cmake +new file mode 100644 +index 0000000..cab15aa +--- /dev/null ++++ b/libs/numeric/module.cmake +@@ -0,0 +1 @@ ++boost_module(numeric DEPENDS logic serialization) +\ No newline at end of file +diff --git a/libs/numeric/ublas/test/CMakeLists.txt b/libs/numeric/ublas/test/CMakeLists.txt +new file mode 100644 +index 0000000..adb7b7a +--- /dev/null ++++ b/libs/numeric/ublas/test/CMakeLists.txt +@@ -0,0 +1,86 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# Define features to test: ++# Value types: USE_FLOAT USE_DOUBLE USE_STD_COMPLEX ++# Proxies: USE_RANGE USE_SLICE ++# Storage types: USE_BOUNDED_ARRAY USE_UNBOUNDED_ARRAY ++# Vector types: USE_STD_VECTOR USE_BOUNDED_VECTOR ++# Matrix types: USE_MATRIX USE_BOUNDED_MATRIX USE_VECTOR_OF_VECTOR ++# Adaptors: USE_ADAPTOR ++ ++set(UBLAS_TESTSET_DEFINES ++ "-DUSE_DOUBLE -DUSE_STD_COMPLEX -DUSE_RANGE -DUSE_SLICE -DUSE_UNBOUNDED_ARRAY -DUSE_STD_VECTOR -DUSE_BOUNDED_VECTOR -DUSE_MATRIX") ++ ++# Sparse storage: USE_MAP_ARRAY USE_STD_MAP ++# Sparse vectors: USE_MAPPED_VECTOR USE_COMPRESSED_VECTOR USE_COORDINATE_VECTOR ++# Sparse matrices: USE_MAPPED_MATRIX USE_COMPRESSED_MATRIX USE_COORDINATE_MATRIX USE_MAPPED_VECTOR_OF_MAPPED_VECTOR USE_GENERALIZED_VECTOR_OF_VECTOR ++ ++set(UBLAS_TESTSET_SPARSE_DEFINES ++ "-DUSE_DOUBLE -DUSE_STD_COMPLEX -DUSE_UNBOUNDED_ARRAY -DUSE_MAP_ARRAY -DUSE_STD_MAP -DUSE_MAPPED_VECTOR -DUSE_COMPRESSED_VECTOR -DUSE_COORDINATE_VECTOR -DUSE_MAPPED_MATRIX -DUSE_COMPRESSED_MATRIX -DUSE_COORDINATE_MATRIX") ++ ++# Definitions for uBLAS tests ++add_definitions(-DBOOST_UBLAS_NO_EXCEPTIONS) ++# TODO: vacpp:"BOOST_UBLAS_NO_ELEMENT_PROXIES" ++ ++#------------------------------------------------------------------------- ++#-- Needed include directories for the tests ++boost_additional_test_dependencies(numeric BOOST_DEPENDS test) ++#------------------------------------------------------------------------- ++ ++ ++boost_test_run(ublas_test1 ++ test1.cpp test11.cpp test12.cpp test13.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_DEFINES}") ++ ++boost_test_run(ublas_test2 ++ test2.cpp test21.cpp test22.cpp test23.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_DEFINES}") ++ ++boost_test_run(ublas_test3 ++ test3.cpp test31.cpp test32.cpp test33.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_SPARSE_DEFINES}") ++ ++boost_test_run(ublas_test4 ++ test4.cpp test42.cpp test43.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_DEFINES}") ++ ++boost_test_run(ublas_test5 ++ test5.cpp test52.cpp test53.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_DEFINES}") ++ ++boost_test_run(ublas_test6 ++ test6.cpp test62.cpp test63.cpp ++ COMPILE_FLAGS "${UBLAS_TESTSET_DEFINES}") ++ ++# Test commented out because boost::interval does not behave like a scalar ++# boost_test_run(test7 ++# test7.cpp test71.cpp test72.cpp test73.cpp ++# COMPILE_FLAGS "-DBOOST_UBLAS_USE_INTERVAL ${UBLAS_TESTSET_DEFINES}") ++ ++boost_test_run(placement_new) ++ ++boost_test_run(test_lu) ++ ++boost_test_run(triangular_access ++ triangular_access.cpp ++ COMPILE_FLAGS "-DNOMESSAGES") ++ ++boost_test_run(triangular_layout ++ triangular_layout.cpp) ++ ++ ++SET(test_compile_flags "-DEXTERNAL") ++#-- Intel Compiler flags ++IF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ SET(test_compile_flags "${test_compile_flags} -Xc") ++ENDIF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ ++IF (APPLE) ++ SET(test_compile_flags "${test_compile_flags} -fabi-version=0") ++ENDIF (APPLE) ++ ++boost_test_compile(concepts COMPILE_FLAGS "-DEXTERNAL") +diff --git a/libs/optional/CMakeLists.txt b/libs/optional/CMakeLists.txt +new file mode 100644 +index 0000000..3e08aa8 +--- /dev/null ++++ b/libs/optional/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ optional.hpp ++ optional ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ optional ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/optional/module.cmake b/libs/optional/module.cmake +new file mode 100644 +index 0000000..59d630b +--- /dev/null ++++ b/libs/optional/module.cmake +@@ -0,0 +1 @@ ++boost_module(optional DEPENDS utility) +\ No newline at end of file +diff --git a/libs/optional/test/CMakeLists.txt b/libs/optional/test/CMakeLists.txt +new file mode 100644 +index 0000000..1a2d09a +--- /dev/null ++++ b/libs/optional/test/CMakeLists.txt +@@ -0,0 +1,23 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(optional BOOST_DEPENDS test tuple) ++ ++ ++boost_test_run(optional_test) ++boost_test_run(optional_test_tie) ++boost_test_run(optional_test_ref ++ KNOWN_FAILURES "gcc-4.[0-3].[0-9]-.*") ++boost_test_run(optional_test_inplace) ++boost_test_run(optional_test_io) ++boost_test_compile_fail(optional_test_fail1) ++boost_test_compile_fail(optional_test_fail3a) ++boost_test_compile_fail(optional_test_fail3b) ++boost_test_compile_fail(optional_test_ref_fail1) ++boost_test_compile_fail(optional_test_ref_fail3) ++boost_test_compile_fail(optional_test_ref_fail4) ++boost_test_compile_fail(optional_test_inplace_fail) ++boost_test_compile_fail(optional_test_inplace_fail2) +diff --git a/libs/parameter/CMakeLists.txt b/libs/parameter/CMakeLists.txt +new file mode 100644 +index 0000000..4e3e89b +--- /dev/null ++++ b/libs/parameter/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ parameter.hpp ++ parameter ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ parameter ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Write functions that accept arguments by name." ++ MODULARIZED ++ AUTHORS "David Abrahams " ++ "Daniel Wallin " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/parameter/module.cmake b/libs/parameter/module.cmake +new file mode 100644 +index 0000000..c72dba5 +--- /dev/null ++++ b/libs/parameter/module.cmake +@@ -0,0 +1 @@ ++boost_module(parameter DEPENDS python) +\ No newline at end of file +diff --git a/libs/parameter/test/CMakeLists.txt b/libs/parameter/test/CMakeLists.txt +new file mode 100644 +index 0000000..b11e21b +--- /dev/null ++++ b/libs/parameter/test/CMakeLists.txt +@@ -0,0 +1,113 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(optional BOOST_DEPENDS test timer) ++ ++ ++boost_test_run(basics) ++boost_test_run(sfinae) ++boost_test_run(macros) ++boost_test_run(earwicker) ++boost_test_run(tutorial) ++boost_test_run(singular) ++boost_test_run(mpl) ++boost_test_run(preprocessor) ++boost_test_run(preprocessor_deduced) ++boost_test_run(efficiency COMPILE_FLAGS "${RELEASE_COMPILE_FLAGS}") ++boost_test_run(maybe) ++boost_test_run(deduced) ++boost_test_run(optional_deduced_sfinae) ++boost_test_run(deduced_dependent_predicate) ++boost_test_run(normalized_argument_types) ++boost_test_compile(ntp) ++boost_test_compile(unwrap_cv_reference) ++boost_test_compile_fail(duplicates) ++boost_test_compile_fail(deduced_unmatched_arg) ++boost_test_compile(compose) ++ ++if (PYTHON_FOUND) ++ ++ include_directories(${PYTHON_INCLUDE_PATH}) ++ ++ # ++ # This came from libs/python/test/CMakeLists.txt ++ # ++ # copy-pasting this kind of code is of course an awful idea. ++ # ++ macro(bpl_test TESTNAME) ++ parse_arguments(BPL_TEST ++ "ARGS" ++ "" ++ ${ARGN}) ++ ++ # Determine the Python and C++ source files for this test ++ if (BPL_TEST_DEFAULT_ARGS) ++ # First argument is the Python source we will run, the rest are ++ # either extra Python sources we're dependent on or C++ files from ++ # which we will build extension modules. ++ car(BPL_TEST_PYSOURCE ${BPL_TEST_DEFAULT_ARGS}) ++ cdr(BPL_TEST_DEFAULT_ARGS ${BPL_TEST_DEFAULT_ARGS}) ++ ++ get_filename_component(BPL_TEST_PYBASE ${BPL_TEST_PYSOURCE} NAME_WE) ++ ++ # Process all the .cpp file and extension module names ++ foreach(SRC ${BPL_TEST_DEFAULT_ARGS}) ++ get_filename_component(BPL_SRC_EXT ${SRC} EXT) ++ if (BPL_SRC_EXT STREQUAL ".cpp") ++ ++ # Build a Python extension module from this source file ++ get_filename_component(BPL_SRC_NAME ${SRC} NAME_WE) ++ ++ if(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ set(BPL_EXTENSION_MODULE ${BPL_SRC_NAME}_ext) ++ else(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ set(BPL_EXTENSION_MODULE ${BPL_SRC_NAME}) ++ endif(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ ++ boost_python_extension(${BPL_EXTENSION_MODULE} ${SRC}) ++ ++ else (BPL_SRC_EXT STREQUAL ".cpp") ++ set(BPL_EXTENSION_MODULE ${SRC}) ++ ++ endif (BPL_SRC_EXT STREQUAL ".cpp") ++ ++ endforeach(SRC ${BPL_TEST_DEFAULT_ARGS}) ++ ++ else (BPL_TEST_DEFAULT_ARGS) ++ ++ set(BPL_TEST_PYSOURCE "${TESTNAME}.py") ++ ++ # Build a Python extension module from this source file ++ boost_python_extension(${TESTNAME}_ext "${TESTNAME}.cpp") ++ ++ endif(BPL_TEST_DEFAULT_ARGS) ++ ++ # We'll need the full patch to run the Python test ++ set(BPL_TEST_PYSOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${BPL_TEST_PYSOURCE}) ++ ++ # Run the test itself ++ file(TO_NATIVE_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" PYTHONPATH) ++ if(WIN32 AND NOT UNIX) ++ string(REPLACE "\\" "\\\\" PYTHONPATH "${PYTHONPATH}") ++ endif(WIN32 AND NOT UNIX) ++ set(FULL_TESTNAME ${PROJECT_NAME}-${TESTNAME}) ++ add_test(${FULL_TESTNAME} ++ ${VALGRIND_EXECUTABLE} ++ ${VALGRIND_FLAGS} ++ ${PYTHON_EXECUTABLE} ++ "${CMAKE_CURRENT_SOURCE_DIR}/pyrun.py" ++ "${PYTHONPATH}" ++ ${BPL_TEST_PYSOURCE} ${BPL_TEST_ARGS}) ++ ++ set_tests_properties(${FULL_TESTNAME} ++ PROPERTIES ++ LABELS "${PROJECT_NAME}" ++ ) ++ endmacro(bpl_test) ++ ++ bpl_test(python_test) ++ ++endif() +\ No newline at end of file +diff --git a/libs/polygon/CMakeLists.txt b/libs/polygon/CMakeLists.txt +new file mode 100644 +index 0000000..ce3b9da +--- /dev/null ++++ b/libs/polygon/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ polygon ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ polygon ++ # SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "Algorithms focused on manipulating planar polygon geometry data." ++ MODULARIZED ++ AUTHORS "Intel Corporation" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/polygon/module.cmake b/libs/polygon/module.cmake +new file mode 100644 +index 0000000..4b60760 +--- /dev/null ++++ b/libs/polygon/module.cmake +@@ -0,0 +1 @@ ++boost_module(polygon DEPENDS smart_ptr) +\ No newline at end of file +diff --git a/libs/polygon/test/CMakeLists.txt b/libs/polygon/test/CMakeLists.txt +new file mode 100644 +index 0000000..63e354b +--- /dev/null ++++ b/libs/polygon/test/CMakeLists.txt +@@ -0,0 +1,12 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(polygon BOOST_DEPENDS test) ++ ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_POLYGON_STATIC_LINK ++ ++boost_test_run(gtl_boost_unit_test gtl_boost_unit_test.cpp) +diff --git a/libs/pool/CMakeLists.txt b/libs/pool/CMakeLists.txt +new file mode 100644 +index 0000000..ccf6649 +--- /dev/null ++++ b/libs/pool/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ pool ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ pool ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/pool/module.cmake b/libs/pool/module.cmake +new file mode 100644 +index 0000000..cb1c034 +--- /dev/null ++++ b/libs/pool/module.cmake +@@ -0,0 +1 @@ ++boost_module(pool DEPENDS config detail exception) +\ No newline at end of file +diff --git a/libs/pool/test/CMakeLists.txt b/libs/pool/test/CMakeLists.txt +new file mode 100644 +index 0000000..b101cd3 +--- /dev/null ++++ b/libs/pool/test/CMakeLists.txt +@@ -0,0 +1,9 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(pool BOOST_DEPENDS test) ++ ++boost_test_run(test_pool_alloc DEPENDS boost_test_exec_monitor) +diff --git a/libs/preprocessor/CMakeLists.txt b/libs/preprocessor/CMakeLists.txt +new file mode 100644 +index 0000000..78b1676 +--- /dev/null ++++ b/libs/preprocessor/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ preprocessor.hpp ++ preprocessor ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ preprocessor ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/preprocessor/module.cmake b/libs/preprocessor/module.cmake +new file mode 100644 +index 0000000..5dc6e3d +--- /dev/null ++++ b/libs/preprocessor/module.cmake +@@ -0,0 +1,4 @@ ++# Preprocessor does not depend on anything else ++ ++ ++ +\ No newline at end of file +diff --git a/libs/preprocessor/test/CMakeLists.txt b/libs/preprocessor/test/CMakeLists.txt +new file mode 100644 +index 0000000..3a50ea7 +--- /dev/null ++++ b/libs/preprocessor/test/CMakeLists.txt +@@ -0,0 +1,23 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(preprocessor BOOST_DEPENDS test) ++ ++ ++boost_test_compile(arithmetic) ++boost_test_compile(array) ++boost_test_compile(comparison) ++boost_test_compile(control) ++boost_test_compile(debug) ++boost_test_compile(facilities) ++boost_test_compile(iteration) ++boost_test_compile(list) ++boost_test_compile(logical) ++boost_test_compile(repetition) ++boost_test_compile(selection) ++boost_test_compile(seq) ++boost_test_compile(slot) ++boost_test_compile(tuple) +diff --git a/libs/program_options/CMakeLists.txt b/libs/program_options/CMakeLists.txt +new file mode 100644 +index 0000000..85d1806 +--- /dev/null ++++ b/libs/program_options/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ program_options.hpp ++ program_options ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ program_options ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Access to configuration data given on command line, in config files and other sources." ++ MODULARIZED ++ AUTHORS "Vladimir Prus " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/program_options/module.cmake b/libs/program_options/module.cmake +new file mode 100644 +index 0000000..cf44a1e +--- /dev/null ++++ b/libs/program_options/module.cmake +@@ -0,0 +1 @@ ++boost_module(program_options DEPENDS any bind smart_ptr test tokenizer) +diff --git a/libs/program_options/src/CMakeLists.txt b/libs/program_options/src/CMakeLists.txt +new file mode 100644 +index 0000000..9a20ec2 +--- /dev/null ++++ b/libs/program_options/src/CMakeLists.txt +@@ -0,0 +1,11 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_library(program_options ++ cmdline.cpp config_file.cpp options_description.cpp parsers.cpp ++ variables_map.cpp value_semantic.cpp positional_options.cpp ++ utf8_codecvt_facet.cpp convert.cpp winmain.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_PROGRAM_OPTIONS_DYN_LINK=1") +diff --git a/libs/program_options/test/CMakeLists.txt b/libs/program_options/test/CMakeLists.txt +new file mode 100644 +index 0000000..48ec7b1 +--- /dev/null ++++ b/libs/program_options/test/CMakeLists.txt +@@ -0,0 +1,39 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(program_options BOOST_DEPENDS test) ++ ++set(PROGRAM_OPTIONS_LIBRARIES ++ boost_program_options ++ boost_test_exec_monitor) ++ ++set(BOOST_TEST_EXEC_MONITOR_SUFFIX "") ++if (NOT BUILD_SINGLE_THREADED) ++ set(BOOST_TEST_EXEC_MONITOR_SUFFIX "-mt") ++endif() ++set(BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-static") ++if (NOT BUILD_RELEASE) ++ set(BOOST_TEST_EXEC_MONITOR_SUFFIX "${BOOST_TEST_EXEC_MONITOR_SUFFIX}-debug") ++endif() ++ ++macro(program_options_test_run TESTNAME) ++ boost_test_run(${TESTNAME} ++ STATIC ++ DEPENDS boost_program_options boost_test_exec_monitor ) ++ boost_test_run("${TESTNAME}_dll" ++ ${TESTNAME}.cpp ++ SHARED ++ DEPENDS boost_program_options ++ "boost_test_exec_monitor${BOOST_TEST_EXEC_MONITOR_SUFFIX}") ++endmacro(program_options_test_run) ++ ++program_options_test_run(options_description_test) ++program_options_test_run(parsers_test) ++program_options_test_run(variable_map_test) ++program_options_test_run(cmdline_test) ++program_options_test_run(positional_options_test) ++program_options_test_run(unicode_test) ++program_options_test_run(winmain) +diff --git a/libs/property_map/CMakeLists.txt b/libs/property_map/CMakeLists.txt +new file mode 100644 +index 0000000..719c431 +--- /dev/null ++++ b/libs/property_map/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# Copyright (C) 2008 Michael Jackson ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ property_map ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/property_map/module.cmake b/libs/property_map/module.cmake +new file mode 100644 +index 0000000..ea68026 +--- /dev/null ++++ b/libs/property_map/module.cmake +@@ -0,0 +1 @@ ++boost_module(property_map DEPENDS concept_check) +\ No newline at end of file +diff --git a/libs/property_map/test/CMakeLists.txt b/libs/property_map/test/CMakeLists.txt +new file mode 100644 +index 0000000..ff09b3c +--- /dev/null ++++ b/libs/property_map/test/CMakeLists.txt +@@ -0,0 +1,11 @@ ++# Copyright (C) 2008 Michael Jackson ++# ++# Use, modification and distribution is subject to the Boost Software ++# License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt) ++ ++boost_additional_test_dependencies(property_map BOOST_DEPENDS test concept_check any) ++ ++boost_test_compile(property_map_cc) ++ ++boost_test_run(dynamic_properties_test) +diff --git a/libs/property_tree/CMakeLists.txt b/libs/property_tree/CMakeLists.txt +new file mode 100644 +index 0000000..1dc18c5 +--- /dev/null ++++ b/libs/property_tree/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ property_tree ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ property_tree ++ # SRCDIRS src ++ TESTDIRS test ++ EXAMPLEDIRS example ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "Data structure storing an arbitrarily deeply nested tree of values, indexed at each level by some key." ++ MODULARIZED ++ AUTHORS "Marcin Kalicinski " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/property_tree/module.cmake b/libs/property_tree/module.cmake +new file mode 100644 +index 0000000..e26d8ad +--- /dev/null ++++ b/libs/property_tree/module.cmake +@@ -0,0 +1 @@ ++boost_module(property_tree DEPENDS smart_ptr) +\ No newline at end of file +diff --git a/libs/property_tree/test/CMakeLists.txt b/libs/property_tree/test/CMakeLists.txt +new file mode 100644 +index 0000000..d94092d +--- /dev/null ++++ b/libs/property_tree/test/CMakeLists.txt +@@ -0,0 +1,23 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(property_tree BOOST_DEPENDS test serialization) ++ ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_PROPERTY_TREE_STATIC_LINK ++ ++SET(TEST_SUFFIXES ++ info_parser json_parser ini_parser xml_parser_rapidxml ++ multi_module1 multi_module2 ++ # registry_parser ++ ) ++ ++FOREACH(test_suffix ${TEST_SUFFIXES}) ++ boost_test_run(test_${test_suffix} test_${test_suffix}.cpp) ++ENDFOREACH(test_suffix ${TEST_SUFFIXES}) ++ ++boost_test_run(test_property_tree test_property_tree.cpp ++ DEPENDS boost_serialization SHARED) +diff --git a/libs/proto/CMakeLists.txt b/libs/proto/CMakeLists.txt +new file mode 100644 +index 0000000..36d5060 +--- /dev/null ++++ b/libs/proto/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ proto ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ proto ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ # DESCRIPTION "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users." ++ MODULARIZED ++ # AUTHORS "John Maddock " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/proto/module.cmake b/libs/proto/module.cmake +new file mode 100644 +index 0000000..2061b60 +--- /dev/null ++++ b/libs/proto/module.cmake +@@ -0,0 +1,2 @@ ++boost_module(proto DEPENDS fusion typeof) ++ +diff --git a/libs/proto/test/CMakeLists.txt b/libs/proto/test/CMakeLists.txt +new file mode 100644 +index 0000000..c219435 +--- /dev/null ++++ b/libs/proto/test/CMakeLists.txt +@@ -0,0 +1,58 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(proto BOOST_DEPENDS test) ++ ++################################################################################ ++#--- Compiler specific settings ++ ++# GCC ++IF(CMAKE_COMPILER_IS_GNUCC) ++ SET(test_compile_flags "-ftemplate-depth-1024") ++ENDIF(CMAKE_COMPILER_IS_GNUCC) ++ ++# Microsoft Visual Studio ++IF (MSVC71) ++ #TODO// Turn off debug symbols? ++ENDIF(MSVC71) ++IF (MSVC80) ++ SET(test_compile_flags "-D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE") ++ENDIF(MSVC80) ++IF (MSVC90) ++ SET(test_compile_flags "-D_SCL_SECURE_NO_DEPRECATE") ++ENDIF (MSVC90) ++ ++# Intel ++IF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ #TODO// Turn off debug symbols? ++ENDIF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ ++set (tests ++ calculator ++ deep_copy ++ examples ++ lambda ++ make_expr ++ matches ++ proto_fusion ++ proto_fusion_s ++ toy_spirit ++ toy_spirit2 ++ noinvoke ++) ++ ++ ++ ++ ++#-- Create an executable test for each source ++foreach(test ${tests}) ++ boost_test_run(${test} "${test}.cpp" ++ COMPILE_FLAGS ${test_compile_flags} ++ DEPENDS boost_unit_test_framework) ++endforeach(test ${tests}) ++ ++ ++ +diff --git a/libs/ptr_container/CMakeLists.txt b/libs/ptr_container/CMakeLists.txt +new file mode 100644 +index 0000000..ecf0077 +--- /dev/null ++++ b/libs/ptr_container/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ ptr_container ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ ptr_container ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Containers for storing heap-allocated polymorphic objects to ease OO-programming." ++ MODULARIZED ++ AUTHORS "Thorsten Ottosen " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/ptr_container/module.cmake b/libs/ptr_container/module.cmake +new file mode 100644 +index 0000000..407a75b +--- /dev/null ++++ b/libs/ptr_container/module.cmake +@@ -0,0 +1 @@ ++boost_module(ptr_container DEPENDS circular_buffer range) +\ No newline at end of file +diff --git a/libs/ptr_container/test/CMakeLists.txt b/libs/ptr_container/test/CMakeLists.txt +new file mode 100644 +index 0000000..91456a6 +--- /dev/null ++++ b/libs/ptr_container/test/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(ptr_container BOOST_DEPENDS test assign numeric) ++ ++boost_test_run(ptr_inserter DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_vector DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_list DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_deque DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_set DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_map DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_map_adapter DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_array DEPENDS boost_unit_test_framework) ++boost_test_run(tree_test DEPENDS boost_unit_test_framework) ++boost_test_run(incomplete_type_test DEPENDS boost_unit_test_framework) ++boost_test_run(view_example) ++boost_test_run(iterator_test DEPENDS boost_unit_test_framework) ++boost_test_run(tut1) ++boost_test_run(indirect_fun DEPENDS boost_unit_test_framework) ++boost_test_run(serialization DEPENDS boost_unit_test_framework boost_serialization) ++boost_test_run(no_exceptions DEPENDS boost_unit_test_framework) ++ ++boost_test_run(ptr_unordered_set DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_unordered_map DEPENDS boost_unit_test_framework) ++boost_test_run(ptr_circular_buffer DEPENDS boost_unit_test_framework) +diff --git a/libs/python/CMakeLists.txt b/libs/python/CMakeLists.txt +new file mode 100644 +index 0000000..b313d4c +--- /dev/null ++++ b/libs/python/CMakeLists.txt +@@ -0,0 +1,21 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++if (PYTHON_FOUND) ++ include_directories(${PYTHON_INCLUDE_PATH}) ++ ++ boost_library_project( ++ Python ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS python.hpp python ++ MODULARIZED ++ DESCRIPTION "A framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++ classes functions and objects to Python, and vice-versa, using no special tools -- just your C++ compiler." ++ AUTHORS "David Abrahams " ++ ) ++else () ++ colormsg(RED "+-- disabled since PYTHON_FOUND is false") ++endif () +diff --git a/libs/python/module.cmake b/libs/python/module.cmake +new file mode 100644 +index 0000000..5bfa0c7 +--- /dev/null ++++ b/libs/python/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(python DEPENDS graph numeric) ++ ++# numeric is there because of boost/cast.hpp from libs/python/src/errors.cpp:11 +\ No newline at end of file +diff --git a/libs/python/src/CMakeLists.txt b/libs/python/src/CMakeLists.txt +new file mode 100644 +index 0000000..e4326a4 +--- /dev/null ++++ b/libs/python/src/CMakeLists.txt +@@ -0,0 +1,70 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++if (PYTHON_DEBUG_LIBRARIES AND BUILD_BOOST_PYTHON) ++ # We have detected that there might be Python debug libraries ++ # available, but check for ourselves whether this is true by trying ++ # to compile/link a program against them. ++ set(CMAKE_REQUIRED_DEFINITIONS "-DBOOST_DEBUG_PYTHON -DPy_DEBUG") ++ get_directory_property(CMAKE_REQUIRED_INCLUDES INCLUDE_DIRECTORIES) ++ set(CMAKE_REQUIRED_LIBRARIES ${PYTHON_DEBUG_LIBRARIES}) ++ set(CHECK_PYDEBUG_SOURCE ++ "#include ") ++ check_cxx_source_compiles( ++ "#include ++ void check(PyObject *obj) { Py_INCREF(obj); } int main() { }" ++ PYDEBUG_CAN_BUILD) ++ ++ # Setup an option to enable/disable building variants with Python ++ # debugging. If we were able to link against the debug libraries, ++ # default to ON; otherwise, default to OFF. ++ option(BUILD_PYTHON_DEBUG ++ "Build an additional Boost.Python library with Python debugging enabled" ++ ${PYDEBUG_CAN_BUILD}) ++endif (PYTHON_DEBUG_LIBRARIES AND BUILD_BOOST_PYTHON) ++ ++# Always build the non-debug variants of the boost_python library ++set(BUILD_PYTHON_NODEBUG ON) ++ ++boost_add_library(python ++ numeric.cpp ++ list.cpp ++ long.cpp ++ dict.cpp ++ tuple.cpp ++ str.cpp ++ slice.cpp ++ converter/from_python.cpp ++ converter/registry.cpp ++ converter/type_id.cpp ++ object/enum.cpp ++ object/class.cpp ++ object/function.cpp ++ object/inheritance.cpp ++ object/life_support.cpp ++ object/pickle_support.cpp ++ errors.cpp ++ module.cpp ++ converter/builtin_converters.cpp ++ converter/arg_to_python_base.cpp ++ object/iterator.cpp ++ object/stl_iterator.cpp ++ object_protocol.cpp ++ object_operators.cpp ++ wrapper.cpp ++ import.cpp ++ exec.cpp ++ object/function_doc_signature.cpp ++ ++ STATIC_COMPILE_FLAGS "-DBOOST_PYTHON_SOURCE -DBOOST_PYTHON_STATIC_LIB" ++ SHARED_COMPILE_FLAGS "-DBOOST_PYTHON_SOURCE" ++ PYTHON_NODEBUG_LINK_LIBS "${PYTHON_LIBRARIES}" ++ ++ # Support for Python debugging ++ EXTRA_VARIANTS PYTHON_NODEBUG:PYTHON_DEBUG ++ PYTHON_DEBUG_COMPILE_FLAGS "-DBOOST_DEBUG_PYTHON -DPy_DEBUG" ++ PYTHON_DEBUG_LINK_LIBS "${PYTHON_DEBUG_LIBRARIES}" ++ ) +diff --git a/libs/python/test/CMakeLists.txt b/libs/python/test/CMakeLists.txt +new file mode 100644 +index 0000000..1a27e71 +--- /dev/null ++++ b/libs/python/test/CMakeLists.txt +@@ -0,0 +1,246 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++include_directories(${PYTHON_INCLUDE_PATH}) ++ ++macro(bpl_test TESTNAME) ++ parse_arguments(BPL_TEST ++ "ARGS" ++ "" ++ ${ARGN}) ++ ++ # Determine the Python and C++ source files for this test ++ if (BPL_TEST_DEFAULT_ARGS) ++ # First argument is the Python source we will run, the rest are ++ # either extra Python sources we're dependent on or C++ files from ++ # which we will build extension modules. ++ car(BPL_TEST_PYSOURCE ${BPL_TEST_DEFAULT_ARGS}) ++ cdr(BPL_TEST_DEFAULT_ARGS ${BPL_TEST_DEFAULT_ARGS}) ++ ++ get_filename_component(BPL_TEST_PYBASE ${BPL_TEST_PYSOURCE} NAME_WE) ++ ++ # Process all the .cpp file and extension module names ++ foreach(SRC ${BPL_TEST_DEFAULT_ARGS}) ++ get_filename_component(BPL_SRC_EXT ${SRC} EXT) ++ if (BPL_SRC_EXT STREQUAL ".cpp") ++ ++ # Build a Python extension module from this source file ++ get_filename_component(BPL_SRC_NAME ${SRC} NAME_WE) ++ ++ if(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ set(BPL_EXTENSION_MODULE ${BPL_SRC_NAME}_ext) ++ else(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ set(BPL_EXTENSION_MODULE ${BPL_SRC_NAME}) ++ endif(BPL_TEST_PYBASE STREQUAL "${BPL_SRC_NAME}") ++ ++ boost_python_extension(${BPL_EXTENSION_MODULE} ${SRC}) ++ ++ else (BPL_SRC_EXT STREQUAL ".cpp") ++ set(BPL_EXTENSION_MODULE ${SRC}) ++ ++ endif (BPL_SRC_EXT STREQUAL ".cpp") ++ ++ endforeach(SRC ${BPL_TEST_DEFAULT_ARGS}) ++ ++ else (BPL_TEST_DEFAULT_ARGS) ++ ++ set(BPL_TEST_PYSOURCE "${TESTNAME}.py") ++ ++ # Build a Python extension module from this source file ++ boost_python_extension(${TESTNAME}_ext "${TESTNAME}.cpp") ++ ++ endif(BPL_TEST_DEFAULT_ARGS) ++ ++ # We'll need the full patch to run the Python test ++ set(BPL_TEST_PYSOURCE ${CMAKE_CURRENT_SOURCE_DIR}/${BPL_TEST_PYSOURCE}) ++ ++ # Run the test itself ++ ++ if(WIN32) ++ ++ get_target_property(THIS_TEST_LOCATION ${TESTNAME}_ext-mt-shared ++ LOCATION) ++ get_filename_component(THIS_TEST_LOCATION ${THIS_TEST_LOCATION} PATH) ++ ++ string(REGEX REPLACE "\\$\\(.*\\)" "\${CTEST_CONFIGURATION_TYPE}" ++ THIS_TEST_LOCATION "${THIS_TEST_LOCATION}") ++ ++ set(PYTHONPATH ${THIS_TEST_LOCATION}) ++ else() ++ file(TO_NATIVE_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" PYTHONPATH) ++ endif() ++ ++ if(WIN32 AND NOT UNIX) ++ string(REPLACE "\\" "\\\\" PYTHONPATH "${PYTHONPATH}") ++ endif(WIN32 AND NOT UNIX) ++ set(FULL_TESTNAME ${PROJECT_NAME}-${TESTNAME}) ++ add_test(${FULL_TESTNAME} ++ ${VALGRIND_EXECUTABLE} ++ ${VALGRIND_FLAGS} ++ ${PYTHON_EXECUTABLE} ++ "${CMAKE_CURRENT_SOURCE_DIR}/pyrun.py" ++ "${PYTHONPATH}" ++ ${BPL_TEST_PYSOURCE} ${BPL_TEST_ARGS}) ++ ++ set_tests_properties(${FULL_TESTNAME} ++ PROPERTIES ++ LABELS "${PROJECT_NAME}" ++ ) ++endmacro(bpl_test) ++ ++macro(py_run TESTNAME) ++ boost_test_run(${TESTNAME} ++ ${TESTNAME}.cpp ++ DEPENDS boost_python STATIC ++ LINK_LIBS ${PYTHON_LIBRARIES}) ++endmacro(py_run) ++ ++boost_test_run(exec ++ DEPENDS boost_python STATIC ++ ARGS "${CMAKE_CURRENT_SOURCE_DIR}/exec.py" ++ LINK_LIBS ${PYTHON_LIBRARIES}) ++boost_test_run(exec-dynamic ++ exec.cpp ++ ARGS "${CMAKE_CURRENT_SOURCE_DIR}/exec.py" ++ DEPENDS boost_python SHARED ++ LINK_LIBS ${PYTHON_LIBRARIES}) ++ ++bpl_test(crossmod_exception ++ crossmod_exception.py crossmod_exception_a.cpp crossmod_exception_b.cpp) ++ ++bpl_test(injected) ++bpl_test(properties) ++bpl_test(return_arg) ++bpl_test(staticmethod) ++bpl_test(shared_ptr) ++bpl_test(andreas_beyer) ++bpl_test(polymorphism) ++bpl_test(polymorphism2) ++ ++bpl_test(wrapper_held_type) ++bpl_test(polymorphism2_auto_ptr) ++ ++bpl_test(auto_ptr) ++ ++bpl_test(minimal) ++bpl_test(args) ++bpl_test(raw_ctor) ++bpl_test(numpy numpy.py printer.py numeric_tests.py numarray_tests.py numpy.cpp) ++bpl_test(enum) ++bpl_test(exception_translator) ++bpl_test(pearu1 test_cltree.py cltree.cpp) ++bpl_test(try newtest.py m1.cpp m2.cpp) ++bpl_test(const_argument) ++bpl_test(keywords keywords_test.py keywords.cpp) ++ ++boost_python_extension(builtin_converters_ext test_builtin_converters.cpp) ++bpl_test(builtin_converters test_builtin_converters.py builtin_converters_ext) ++ ++# ++# See the contents of this file for more details on an existing ++# overload resoluton bug. ++# ++# boost_python_extension(overload_resolution test_overload_resolution.cpp) ++# ++ ++bpl_test(test_pointer_adoption) ++bpl_test(operators) ++bpl_test(callbacks) ++bpl_test(defaults) ++ ++bpl_test(object) ++bpl_test(list) ++bpl_test(long) ++bpl_test(dict) ++bpl_test(str) ++bpl_test(slice) ++ ++bpl_test(virtual_functions) ++bpl_test(back_reference) ++bpl_test(implicit) ++bpl_test(data_members) ++ ++bpl_test(ben_scott1) ++ ++bpl_test(bienstman1) ++bpl_test(bienstman2) ++bpl_test(bienstman3) ++ ++bpl_test(multi_arg_constructor) ++# TODO: A bug in the Win32 intel compilers causes compilation of one ++# of our tests to take forever when debug symbols are ++# enabled. This rule turns them off when added to the requirements ++# section ++# intel-win:off ++ ++bpl_test(iterator iterator.py iterator.cpp input_iterator.cpp) ++ ++bpl_test(stl_iterator stl_iterator.py stl_iterator.cpp) ++ ++bpl_test(extract) ++ ++bpl_test (crossmod_opaque ++ crossmod_opaque.py crossmod_opaque_a.cpp crossmod_opaque_b.cpp) ++ ++bpl_test(opaque) ++bpl_test(voidptr) ++ ++bpl_test(pickle1) ++bpl_test(pickle2) ++bpl_test(pickle3) ++bpl_test(pickle4) ++ ++bpl_test(nested) ++ ++bpl_test(docstring) ++ ++bpl_test(vector_indexing_suite) ++ ++bpl_test(pointer_vector) ++# TODO: Turn off this test on HP CXX, as the test hangs when executing. ++# Whenever the cause for the failure of the polymorphism test is found ++# and fixed, this should be retested. ++# hp_cxx:no ++ ++boost_python_extension(map_indexing_suite_ext ++ map_indexing_suite.cpp int_map_indexing_suite.cpp a_map_indexing_suite.cpp) ++ ++bpl_test(map_indexing_suite ++ map_indexing_suite.py map_indexing_suite_ext) ++ ++ ++# --- unit tests of library components --- ++ ++boost_test_compile(indirect_traits_test) ++boost_test_run(destroy_test) ++py_run(pointer_type_id_test) ++py_run(bases) ++boost_test_run(if_else) ++py_run(pointee) ++boost_test_run(result) ++ ++boost_test_compile(string_literal) ++boost_test_compile(borrowed) ++boost_test_compile(object_manager) ++boost_test_compile(copy_ctor_mutates_rhs) ++ ++py_run(upcast) ++ ++boost_test_compile(select_holder) ++ ++boost_test_run(select_from_python_test ++ select_from_python_test.cpp ../src/converter/type_id.cpp ++ COMPILE_FLAGS "-DBOOST_PYTHON_STATIC_LIB" ++ LINK_LIBS ${PYTHON_LIBRARIES}) ++ ++boost_test_compile(select_arg_to_python_test) ++ ++boost_test_compile_fail(raw_pyobject_fail1) ++boost_test_compile_fail(raw_pyobject_fail2) ++boost_test_compile_fail(as_to_python_function) ++boost_test_compile_fail(object_fail1) ++ ++bpl_test(tuple) +diff --git a/libs/random/CMakeLists.txt b/libs/random/CMakeLists.txt +new file mode 100644 +index 0000000..1d9e48d +--- /dev/null ++++ b/libs/random/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ random.hpp ++ random ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ random ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A complete system for random number generation." ++ MODULARIZED ++ AUTHORS "Jens Maurer " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/random/module.cmake b/libs/random/module.cmake +new file mode 100644 +index 0000000..0aad03b +--- /dev/null ++++ b/libs/random/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(random DEPENDS detail integer type_traits static_assert) ++ ++ +diff --git a/libs/random/src/CMakeLists.txt b/libs/random/src/CMakeLists.txt +new file mode 100644 +index 0000000..08f889e +--- /dev/null ++++ b/libs/random/src/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++add_definitions(-DBOOST_DATE_TIME_NO_LIB=1) ++boost_add_library( ++ random ++ random_device.cpp ++ STATIC_COMPILE_FLAGS -DBOOST_DATE_TIME_STATIC_LINK ++ SHARED_COMPILE_FLAGS -DBOOST_ALL_DYN_LINK=1 ++ ) +diff --git a/libs/random/test/CMakeLists.txt b/libs/random/test/CMakeLists.txt +new file mode 100644 +index 0000000..3511057 +--- /dev/null ++++ b/libs/random/test/CMakeLists.txt +@@ -0,0 +1,52 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(random BOOST_DEPENDS test) ++ ++foreach(urngs ++ rand48 ++ minstd_rand0 ++ minstd_rand ++ ecuyer1988 ++ kreutzer1986 ++ hellekalek1995 ++ mt11213b ++ mt19937 ++ lagged_fibonacci ++ lagged_fibonacci607 ++ ranlux3 ++ ranlux4 ++ ranlux3_01 ++ ranlux4_01 ++ ranlux64_3_01 ++ ranlux64_4_01 ++ taus88) ++ boost_test_run(test_${urngs} ++ instantiate.cpp ++ COMPILE_FLAGS -DBOOST_RANDOM_URNG_TEST=${urngs} ++ ) ++endforeach() ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_RANDOM_STATIC_LINK ++ ++SET(TESTS test_random_device) ++ ++FOREACH(test ${TESTS}) ++ boost_test_run(${test}_static ++ ${test}.cpp ++ DEPENDS boost_random STATIC ++ COMPILE_FLAGS -DBOOST_RANDOM_STATIC_LINK) ++ boost_test_run(${test}_dynamic ++ ${test}.cpp ++ DEPENDS boost_random SHARED ++ COMPILE_FLAGS -DBOOST_RANDOM_DYN_LINK) ++ENDFOREACH(test ${TESTS}) ++ ++boost_test_run(random_demo ../example/random_demo.cpp) ++boost_test_run(random_test random_test.cpp) ++boost_test_run(validate validate.cpp) ++#boost_test_run(test_random_device test_random_device.cpp) ++#boost_test_run(statistic_tests statistic_tests.cpp) +diff --git a/libs/range/CMakeLists.txt b/libs/range/CMakeLists.txt +new file mode 100644 +index 0000000..44214cf +--- /dev/null ++++ b/libs/range/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ range.hpp ++ range ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ range ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ DOCDIRS doc ++ DESCRIPTION "A new infrastructure for generic algorithms that builds on top of the new iterator concepts." ++ MODULARIZED ++ AUTHORS "Thorsten Ottosen " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/range/doc/CMakeLists.txt b/libs/range/doc/CMakeLists.txt +new file mode 100644 +index 0000000..2a15cc3 +--- /dev/null ++++ b/libs/range/doc/CMakeLists.txt +@@ -0,0 +1,7 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_documentation(boost_range.qbk) +\ No newline at end of file +diff --git a/libs/range/module.cmake b/libs/range/module.cmake +new file mode 100644 +index 0000000..49c9bc9 +--- /dev/null ++++ b/libs/range/module.cmake +@@ -0,0 +1 @@ ++boost_module(range DEPENDS algorithm) +\ No newline at end of file +diff --git a/libs/range/test/CMakeLists.txt b/libs/range/test/CMakeLists.txt +new file mode 100644 +index 0000000..0907adc +--- /dev/null ++++ b/libs/range/test/CMakeLists.txt +@@ -0,0 +1,25 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(range BOOST_DEPENDS test) ++ ++message(STATUS "libs/range/test: need -Wall -Wunused here when under gcc") ++set( test_compile_flags "") ++IF(CMAKE_COMPILER_IS_GNUCC) ++ SET(test_compile_flags "-Wall -Wunused") ++ENDIF(CMAKE_COMPILER_IS_GNUCC) ++ ++boost_test_run(array DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(iterator_pair DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(std_container DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(string DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(iterator_range DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(sub_range DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(partial_workaround DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(algorithm_example DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(reversible_range DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(const_ranges DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) ++boost_test_run(extension_mechanism DEPENDS boost_unit_test_framework COMPILE_FLAGS ${test_compile_flags}) +diff --git a/libs/rational/CMakeLists.txt b/libs/rational/CMakeLists.txt +new file mode 100644 +index 0000000..53c440d +--- /dev/null ++++ b/libs/rational/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ rational.hpp ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ rational ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/rational/module.cmake b/libs/rational/module.cmake +new file mode 100644 +index 0000000..94a8c9f +--- /dev/null ++++ b/libs/rational/module.cmake +@@ -0,0 +1 @@ ++boost_module (rational DEPENDS config math static_assert utility) +\ No newline at end of file +diff --git a/libs/rational/test/CMakeLists.txt b/libs/rational/test/CMakeLists.txt +new file mode 100644 +index 0000000..2e0850f +--- /dev/null ++++ b/libs/rational/test/CMakeLists.txt +@@ -0,0 +1,14 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(gil BOOST_DEPENDS test) ++ ++ ++boost_test_run(rational_example rational_example.cpp) ++boost_test_run(rational_test ++ rational_test.cpp ++ DEPENDS boost_unit_test_framework ++ ) +diff --git a/libs/regex/CMakeLists.txt b/libs/regex/CMakeLists.txt +new file mode 100644 +index 0000000..481417e +--- /dev/null ++++ b/libs/regex/CMakeLists.txt +@@ -0,0 +1,51 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ regex.h ++ regex.hpp ++ regex_fwd.hpp ++ regex ++ cregex.hpp ++) ++ ++# TODO: Default to multi-threaded? ++# ++# Used in test/ and examples/ ++# ++macro(regex_test TESTNAME) ++ parse_arguments(REGEX_TEST "" "" ${ARGN}) ++ ++ if (REGEX_TEST_DEFAULT_ARGS) ++ set(REGEX_TEST_SOURCES ${REGEX_TEST_DEFAULT_ARGS}) ++ else (REGEX_TEST_DEFAULT_ARGS) ++ set(REGEX_TEST_SOURCES "${TESTNAME}.cpp") ++ endif (REGEX_TEST_DEFAULT_ARGS) ++ ++ boost_test_run(${TESTNAME} ${REGEX_TEST_SOURCES} ++ COMPILE_FLAGS "-DBOOST_REGEX_DYN_LINK=1" ++ DEPENDS boost_regex ++ EXTRA_OPTIONS SHARED) ++endmacro(regex_test) ++ ++# Add a library target to the build system ++boost_library_project( ++ regex ++ SRCDIRS src ++ TESTDIRS test ++ EXAMPLEDIRS example ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A regular expression library" ++ MODULARIZED ++ AUTHORS "John Maddock " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/regex/example/CMakeLists.txt b/libs/regex/example/CMakeLists.txt +new file mode 100644 +index 0000000..5c3d442 +--- /dev/null ++++ b/libs/regex/example/CMakeLists.txt +@@ -0,0 +1,76 @@ ++# # copyright John Maddock 2003 ++# # Distributed under the Boost Software License, Version 1.0. ++# # (See accompanying file LICENSE_1_0.txt or copy at ++# # http://www.boost.org/LICENSE_1_0.txt. ++# ++# project ++# : requirements ++# multi ++# shared:BOOST_REGEX_DYN_LINK=1 ++# # There are unidentified linker problems on these platforms: ++# mipspro-7.4:static ++# sun-5.9:static ++# ; ++# ++# ++# rule regex-test-run ( sources + : input * : name * ) ++# { ++# return [ ++# run ++# # sources ++# $(sources) ++# # dependencies ++# ../build//boost_regex ++# : # additional args ++# $(input) ++# : # test-files ++# : # requirements ++# msvc-7.1:TEST_MFC=1 msvc-7.0:TEST_MFC=1 ++# : # test name ++# $(name) ++# ] ; ++# } ++# ++# test-suite regex-examples : ++ ++ ++ ++regex_test(regex_timer timer/regex_timer.cpp ARGS ${CMAKE_SOURCE_DIR}/libs/regex/example/timer/input_script.txt ) ++#regex_test(regex-test-run grep/grep.cpp ../../program_options/build//boost_program_options/static -n -b ${CMAKE_SOURCE_DIR}/boost/regex.hpp ${CMAKE_SOURCE_DIR}/boost/type_traits.hpp : test_grep ) ++regex_test(credit_card_example snippets/credit_card_example.cpp DEPENDS boost_regex) ++regex_test(mfc_example snippets/mfc_example.cpp ) ++regex_test(icu_example snippets/icu_example.cpp ) ++regex_test(partial_regex_grep snippets/partial_regex_grep.cpp ARGS ${CMAKE_SOURCE_DIR}/libs/regex/index.htm ) ++regex_test(partial_regex_iterate snippets/partial_regex_iterate.cpp ARGS ${CMAKE_SOURCE_DIR}/libs/regex/index.htm ) ++regex_test(partial_regex_match snippets/partial_regex_match.cpp ARGS 1234-5678-8765-4 ) ++regex_test(regex_grep_example_1 snippets/regex_grep_example_1.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_grep_example_2 snippets/regex_grep_example_2.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_grep_example_3 snippets/regex_grep_example_3.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_grep_example_4 snippets/regex_grep_example_4.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_match_example snippets/regex_match_example.cpp ARGS -auto ) ++regex_test(regex_merge_example snippets/regex_merge_example.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_replace_example snippets/regex_replace_example.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_search_example snippets/regex_search_example.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++regex_test(regex_split_example_1 snippets/regex_split_example_1.cpp ARGS -auto ) ++regex_test(regex_split_example_2 snippets/regex_split_example_2.cpp ARGS ${CMAKE_SOURCE_DIR}/libs/regex/doc/html/index.html ) ++regex_test(regex_token_iterator_eg_1 snippets/regex_token_iterator_eg_1.cpp ARGS -auto ) ++regex_test(regex_token_iterator_eg_2 snippets/regex_token_iterator_eg_2.cpp ARGS ${CMAKE_SOURCE_DIR}/libs/regex/doc/html/index.html ) ++regex_test(regex_iterator_example snippets/regex_iterator_example.cpp ARGS ${CMAKE_SOURCE_DIR}/boost/rational.hpp ) ++ ++#boost_test_run(run snippets/captures_example.cpp ++# ../test/captures//boost_regex_extra ++# : : : multi BOOST_REGEX_MATCH_EXTRA=1 ] ++ ++#; ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/libs/regex/module.cmake b/libs/regex/module.cmake +new file mode 100644 +index 0000000..3c9c0ae +--- /dev/null ++++ b/libs/regex/module.cmake +@@ -0,0 +1 @@ ++boost_module(regex DEPENDS date_time thread) +\ No newline at end of file +diff --git a/libs/regex/src/CMakeLists.txt b/libs/regex/src/CMakeLists.txt +new file mode 100644 +index 0000000..12bf067 +--- /dev/null ++++ b/libs/regex/src/CMakeLists.txt +@@ -0,0 +1,51 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++set(BOOST_REGEX_ICU_LIBRARIES) ++ ++if (ICU_FOUND AND ICU_I18N_FOUND) ++ ++ add_definitions(-DBOOST_HAS_ICU=1) ++ include_directories(${ICU_INCLUDE_DIRS}) ++ set(BOOST_REGEX_ICU_LIBRARIES ${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}) ++ colormsg(GREEN "+-- ICU (unicode) available, enabling support.") ++ set(NO_STATIC_IF_ICU_FOUND "NO_STATIC") ++ ++else() ++ ++ colormsg(CYAN "+-- ICU (unicode) not available, disabling support.") ++ ++endif() ++ ++boost_add_library(regex ++ ++ c_regex_traits.cpp ++ cpp_regex_traits.cpp ++ cregex.cpp ++ fileiter.cpp ++ icu.cpp ++ instances.cpp ++ posix_api.cpp ++ regex.cpp ++ regex_debug.cpp ++ regex_raw_buffer.cpp ++ regex_traits_defaults.cpp ++ static_mutex.cpp ++ w32_regex_traits.cpp ++ wc_regex_traits.cpp ++ wide_posix_api.cpp ++ winstances.cpp ++ usinstances.cpp ++ ++ LINK_LIBS ${BOOST_REGEX_ICU_LIBRARIES} ++ SHARED_COMPILE_FLAGS -DBOOST_REGEX_DYN_LINK=1 ++ ${NO_STATIC_IF_ICU_FOUND} ++ ) ++ ++ ++ ++ +diff --git a/libs/regex/test/CMakeLists.txt b/libs/regex/test/CMakeLists.txt +new file mode 100644 +index 0000000..5c55149 +--- /dev/null ++++ b/libs/regex/test/CMakeLists.txt +@@ -0,0 +1,93 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(regex BOOST_DEPENDS test) ++ ++set(R_SOURCES ++ regress/basic_tests.cpp ++ regress/main.cpp ++ regress/test_alt.cpp ++ regress/test_anchors.cpp ++ regress/test_asserts.cpp ++ regress/test_backrefs.cpp ++ regress/test_deprecated.cpp ++ regress/test_emacs.cpp ++ regress/test_escapes.cpp ++ regress/test_grep.cpp ++ regress/test_locale.cpp ++ regress/test_mfc.cpp ++ regress/test_non_greedy_repeats.cpp ++ regress/test_perl_ex.cpp ++ regress/test_replace.cpp ++ regress/test_sets.cpp ++ regress/test_simple_repeats.cpp ++ regress/test_tricky_cases.cpp ++ regress/test_icu.cpp ++ regress/test_unicode.cpp ++ regress/test_overloads.cpp ++ regress/test_operators.cpp ++ ) ++ ++if (NOT ICU_FOUND) ++ # static tests eliminiated if ICU is found ++ boost_test_run(regex_regress ${R_SOURCES} ++ DEPENDS boost_regex STATIC) ++endif() ++ ++boost_test_run(regex_regress_dll ${R_SOURCES} ++ COMPILE_FLAGS "-DBOOST_REGEX_DYN_LINK=1" ++ DEPENDS boost_regex ++ EXTRA_OPTIONS SHARED) ++ ++boost_test_run(regex_regress_threaded ${R_SOURCES} ++ COMPILE_FLAGS "-DTEST_THREADS -DBOOST_REGEX_DYN_LINK=1" ++ DEPENDS boost_regex boost_thread ++ EXTRA_OPTIONS SHARED MULTI_THREADED) ++ ++regex_test(posix_api_check c_compiler_checks/posix_api_check.c) ++boost_test_compile(wide_posix_api_check_c c_compiler_checks/wide_posix_api_check.c) ++regex_test(posix_api_check_cpp c_compiler_checks/wide_posix_api_check.cpp) ++regex_test(bad_expression_test pathology/bad_expression_test.cpp) ++regex_test(recursion_test pathology/recursion_test.cpp) ++regex_test(unicode_iterator_test unicode/unicode_iterator_test.cpp) ++ ++boost_test_run(static_mutex_test static_mutex/static_mutex_test.cpp ++ COMPILE_FLAGS "-DBOOST_REGEX_DYN_LINK=1" ++ DEPENDS boost_regex boost_thread ++ EXTRA_OPTIONS MULTI_THREADED SHARED) ++ ++regex_test(object_cache_test object_cache/object_cache_test.cpp) ++ ++if(NOT ICU_FOUND) ++ boost_test_run(regex_config_info config_info/regex_config_info.cpp ++ DEPENDS boost_regex ++ EXTRA_OPTIONS STATIC) ++endif() ++ ++boost_test_run(regex_dll_config_info config_info/regex_config_info.cpp ++ COMPILE_FLAGS "-DBOOST_REGEX_DYN_LINK=1" ++ DEPENDS boost_regex ++ EXTRA_OPTIONS SHARED) ++ ++regex_test(test_collate_info collate_info/collate_info.cpp) ++ ++boost_test_compile(concept_check concepts/concept_check.cpp) ++boost_test_compile(ice_concept_check concepts/icu_concept_check.cpp) ++ ++# TODO: Deal with this ++ # [ run ++ # sources ++# captures/captures_test.cpp ++ # captures//boost_regex_extra ++ #: # additional args ++ #: # test-files ++ #: # requirements ++ # multi ++ # BOOST_REGEX_MATCH_EXTRA=1 ++ # BOOST_REGEX_NO_LIB=1 ++# : # test name ++ # captures_test ++# ] +diff --git a/libs/serialization/CMakeLists.txt b/libs/serialization/CMakeLists.txt +new file mode 100644 +index 0000000..938c5f4 +--- /dev/null ++++ b/libs/serialization/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ serialization ++ archive ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ serialization ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Serialization for persistence and marshalling." ++ MODULARIZED ++ AUTHORS "" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/serialization/module.cmake b/libs/serialization/module.cmake +new file mode 100644 +index 0000000..d640eb1 +--- /dev/null ++++ b/libs/serialization/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(serialization DEPENDS spirit io bind array variant) ++ ++# bind is in there because we have a dependency on boost/mem_fn.hpp +diff --git a/libs/serialization/src/CMakeLists.txt b/libs/serialization/src/CMakeLists.txt +new file mode 100644 +index 0000000..fec7fe5 +--- /dev/null ++++ b/libs/serialization/src/CMakeLists.txt +@@ -0,0 +1,56 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++boost_add_library(serialization ++ ++ basic_archive.cpp ++ basic_iarchive.cpp ++ basic_iserializer.cpp ++ basic_oarchive.cpp ++ basic_oserializer.cpp ++ basic_pointer_iserializer.cpp ++ basic_pointer_oserializer.cpp ++ basic_serializer_map.cpp ++ basic_text_iprimitive.cpp ++ basic_text_oprimitive.cpp ++ basic_xml_archive.cpp ++ binary_iarchive.cpp ++ binary_oarchive.cpp ++ extended_type_info.cpp ++ extended_type_info_typeid.cpp ++ extended_type_info_no_rtti.cpp ++ polymorphic_iarchive.cpp ++ polymorphic_oarchive.cpp ++ stl_port.cpp ++ text_iarchive.cpp ++ text_oarchive.cpp ++ void_cast.cpp ++ archive_exception.cpp ++ xml_grammar.cpp ++ xml_iarchive.cpp ++ xml_oarchive.cpp ++ xml_archive_exception.cpp ++ shared_ptr_helper.cpp ++ ++ SHARED_COMPILE_FLAGS -DBOOST_SERIALIZATION_DYN_LINK=1 ++ ) ++ ++boost_add_library(wserialization ++ ++ basic_text_wiprimitive.cpp ++ basic_text_woprimitive.cpp ++ text_wiarchive.cpp ++ text_woarchive.cpp ++ utf8_codecvt_facet.cpp ++ xml_wgrammar.cpp ++ xml_wiarchive.cpp ++ xml_woarchive.cpp ++ codecvt_null.cpp ++ ++ SHARED_COMPILE_FLAGS -DBOOST_SERIALIZATION_DYN_LINK=1 ++ DEPENDS boost_serialization ++ ) +diff --git a/libs/serialization/test/CMakeLists.txt b/libs/serialization/test/CMakeLists.txt +new file mode 100644 +index 0000000..a0dc65e +--- /dev/null ++++ b/libs/serialization/test/CMakeLists.txt +@@ -0,0 +1,184 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# The set of archives that we will use for testing the Serialization ++# library ++set(BOOST_ARCHIVE_LIST ++ "text_archive" ++ "text_warchive" ++ "binary_archive" ++ "xml_archive" ++ "xml_warchive" ++ ) ++ ++# The serialization_test macro declares a set of tests of the ++# serialization library. For each invocation of serialization_test, ++# this macro will build separate static and dynamic tests. ++macro(serialization_test testname) ++ parse_arguments(BSL_TEST "" "NO_LIBS;POLYMORPHIC" ${ARGN}) ++ ++ if(NOT BSL_TEST_DEFAULT_ARGS) ++ set(BSL_TEST_SOURCES "${testname}.cpp") ++ else(NOT BSL_TEST_DEFAULT_ARGS) ++ set(BSL_TEST_SOURCES "${BSL_TEST_DEFAULT_ARGS}") ++ endif(NOT BSL_TEST_DEFAULT_ARGS) ++ ++ if (BSL_TEST_POLYMORPHIC) ++ set(BSL_TEST_POLY "polymorphic_") ++ elseif(BSL_TEST_POLYMORPHIC) ++ set(BSL_TEST_POLY "") ++ endif(BSL_TEST_POLYMORPHIC) ++ ++ set(BSL_TEST_LIBRARIES) ++ if(NOT BSL_NO_LIBS) ++ set(BSL_TEST_LIBRARIES "boost_serialization") ++ endif(NOT BSL_NO_LIBS) ++ ++ # Tests linking against the static serialization library ++ boost_test_run("${testname}" ++ ${BSL_TEST_SOURCES} ++ STATIC ++ DEPENDS ${BSL_TEST_LIBRARIES} ++ COMPILE_FLAGS "-DBOOST_LIB_DIAGNOSTIC=1") ++ ++ # Tests linking against the shared serialization library ++ boost_test_run("${testname}_dll" ++ ${BSL_TEST_SOURCES} ++ SHARED ++ DEPENDS ${BSL_TEST_LIBRARIES} ++ COMPILE_FLAGS "-DBOOST_LIB_DIAGNOSTIC=1 -DBOOST_ALL_DYN_LINK=1") ++endmacro(serialization_test) ++ ++# Like serialization_test, but runs the same test for all archive types. ++macro(serialization_test_allarchives testname) ++ parse_arguments(BSL_TEST "" "NO_LIBS;POLYMORPHIC" ${ARGN}) ++ ++ if(NOT BSL_TEST_DEFAULT_ARGS) ++ set(BSL_TEST_SOURCES "${testname}.cpp") ++ else(NOT BSL_TEST_DEFAULT_ARGS) ++ set(BSL_TEST_SOURCES "${BSL_TEST_DEFAULT_ARGS}") ++ endif(NOT BSL_TEST_DEFAULT_ARGS) ++ ++ if (BSL_TEST_POLYMORPHIC) ++ set(BSL_TEST_POLY "polymorphic_") ++ elseif(BSL_TEST_POLYMORPHIC) ++ set(BSL_TEST_POLY "") ++ endif(BSL_TEST_POLYMORPHIC) ++ ++ foreach(ARCHIVE ${BOOST_ARCHIVE_LIST}) ++ set(BSL_TEST_LIBRARIES) ++ if(NOT BSL_NO_LIBS) ++ set(BSL_TEST_LIBRARIES "boost_serialization") ++ if(ARCHIVE MATCHES ".*warchive") ++ set(BSL_TEST_LIBRARIES "boost_wserialization" ${BSL_TEST_LIBRARIES}) ++ endif(ARCHIVE MATCHES ".*warchive") ++ endif(NOT BSL_NO_LIBS) ++ ++ # Tests linking against the static serialization library ++ boost_test_run("${testname}_${ARCHIVE}" ++ ${BSL_TEST_SOURCES} ++ STATIC ++ DEPENDS ${BSL_TEST_LIBRARIES} ++ COMPILE_FLAGS "-DBOOST_ARCHIVE_TEST=${BSL_TEST_POLY}${ARCHIVE}.hpp -DBOOST_LIB_DIAGNOSTIC=1") ++ ++ # Tests linking against the shared serialization library ++ boost_test_run("${testname}_${ARCHIVE}_dll" ++ ${BSL_TEST_SOURCES} ++ SHARED ++ DEPENDS ${BSL_TEST_LIBRARIES} ++ COMPILE_FLAGS "-DBOOST_ARCHIVE_TEST=${BSL_TEST_POLY}${ARCHIVE}.hpp -DBOOST_LIB_DIAGNOSTIC=1 -DBOOST_ALL_DYN_LINK=1") ++ endforeach(ARCHIVE ${BOOST_ARCHIVE_LIST}) ++endmacro(serialization_test_allarchives) ++ ++boost_additional_test_dependencies(serialization BOOST_DEPENDS test) ++ ++ ++serialization_test_allarchives(test_array test_array.cpp A.cpp) ++serialization_test_allarchives(test_binary) ++serialization_test_allarchives(test_complex) ++serialization_test_allarchives(test_contained_class test_contained_class.cpp A.cpp) ++serialization_test_allarchives(test_cyclic_ptrs test_cyclic_ptrs.cpp A.cpp) ++serialization_test_allarchives(test_delete_pointer) ++serialization_test_allarchives(test_deque test_deque.cpp A.cpp) ++# serialization_test_allarchives(test_derived) ++serialization_test_allarchives(test_derived_class test_derived_class.cpp A.cpp) ++serialization_test_allarchives(test_derived_class_ptr test_derived_class_ptr.cpp A.cpp) ++serialization_test_allarchives(test_diamond) ++serialization_test_allarchives(test_exported test_exported.cpp polymorphic_base.cpp) ++serialization_test_allarchives(test_class_info_save) ++serialization_test_allarchives(test_class_info_load) ++serialization_test_allarchives(test_object) ++serialization_test_allarchives(test_primitive) ++serialization_test_allarchives(test_list test_list.cpp A.cpp) ++serialization_test_allarchives(test_list_ptrs test_list_ptrs.cpp A.cpp) ++serialization_test_allarchives(test_map test_map.cpp A.cpp) ++serialization_test_allarchives(test_mi) ++serialization_test_allarchives(test_multiple_ptrs test_multiple_ptrs.cpp A.cpp) ++serialization_test_allarchives(test_no_rtti test_no_rtti.cpp ++ polymorphic_base.cpp polymorphic_derived1.cpp polymorphic_derived2.cpp) ++serialization_test_allarchives(test_non_intrusive) ++serialization_test_allarchives(test_non_default_ctor) ++serialization_test_allarchives(test_non_default_ctor2) ++serialization_test_allarchives(test_null_ptr) ++serialization_test_allarchives(test_nvp test_nvp.cpp A.cpp) ++serialization_test_allarchives(test_recursion test_recursion.cpp A.cpp) ++serialization_test_allarchives(test_registered) ++serialization_test_allarchives(test_set test_set.cpp A.cpp) ++serialization_test_allarchives(test_simple_class test_simple_class.cpp A.cpp) ++serialization_test_allarchives(test_simple_class_ptr test_simple_class_ptr.cpp A.cpp) ++serialization_test_allarchives(test_split) ++serialization_test_allarchives(test_tracking) ++serialization_test_allarchives(test_unregistered) ++serialization_test_allarchives(test_valarray) ++serialization_test_allarchives(test_variant test_variant.cpp A.cpp) ++serialization_test_allarchives(test_vector test_vector.cpp A.cpp) ++serialization_test_allarchives(test_optional) ++serialization_test_allarchives(test_shared_ptr) ++serialization_test_allarchives(test_shared_ptr_132) ++serialization_test_allarchives(test_polymorphic POLYMORPHIC ++ test_polymorphic.cpp test_polymorphic_A.cpp A.cpp) ++ ++serialization_test(test_private_ctor) ++serialization_test(test_reset_object_address test_reset_object_address.cpp A.cpp) ++serialization_test(test_void_cast) ++serialization_test(test_mult_archive_types) ++ ++serialization_test(test_iterators NO_LIBS) ++serialization_test(test_iterators_base64 NO_LIBS) ++serialization_test(test_inclusion NO_LIBS) ++serialization_test(test_smart_cast NO_LIBS) ++ ++serialization_test(test_utf8_codecvt ++ test_utf8_codecvt.cpp ../src/utf8_codecvt_facet.cpp NO_LIBS) ++ ++serialization_test(test_serialization_iterators test_iterators.cpp NO_LIBS) ++serialization_test(test_static_warning NO_LIBS) ++serialization_test(test_codecvt_null ++ test_codecvt_null.cpp ../src/codecvt_null.cpp NO_LIBS) ++ ++# should fail compilation ++boost_test_compile_fail(test_not_serializable) ++boost_test_compile_fail(test_traits_fail) ++boost_test_compile_fail(test_const_load_fail1) ++boost_test_compile_fail(test_const_load_fail2) ++boost_test_compile_fail(test_const_load_fail3) ++boost_test_compile_fail(test_const_load_fail1_nvp) ++boost_test_compile_fail(test_const_load_fail2_nvp) ++boost_test_compile_fail(test_const_load_fail3_nvp) ++ ++boost_test_compile(test_static_warning) ++boost_test_compile(test_const_save_warn1) ++boost_test_compile(test_const_save_warn2) ++boost_test_compile(test_const_save_warn3) ++ ++# note - library unable to detect there errors for now ++#boost_test_compile_fail(test_const_save_fail1_nvp) ++#boost_test_compile_fail(test_const_save_fail2_nvp) ++#boost_test_compile_fail(test_const_save_fail3_nvp) ++ ++# should compile ++boost_test_compile(test_traits_pass) ++boost_test_compile(test_const_pass) +diff --git a/libs/signals/CMakeLists.txt b/libs/signals/CMakeLists.txt +new file mode 100644 +index 0000000..b8cb463 +--- /dev/null ++++ b/libs/signals/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ signals.hpp ++ signal.hpp ++ signals ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ signals ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Managed signals & slots callback implementation." ++ MODULARIZED ++ AUTHORS "Douglas Gregor " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/signals/module.cmake b/libs/signals/module.cmake +new file mode 100644 +index 0000000..0c18da8 +--- /dev/null ++++ b/libs/signals/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(signals DEPENDS smart_ptr any intrusive bind) ++ ++# bind is here due to a dependency on /boost/mem_fn.hpp +diff --git a/libs/signals/src/CMakeLists.txt b/libs/signals/src/CMakeLists.txt +new file mode 100644 +index 0000000..d4d4769 +--- /dev/null ++++ b/libs/signals/src/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++add_definitions(-DBOOST_SIGNALS_NO_LIB=1) ++ ++boost_add_library( ++ signals ++ trackable.cpp connection.cpp named_slot_map.cpp signal_base.cpp slot.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_SIGNALS_DYN_LINK=1" ++ ) +diff --git a/libs/signals/test/CMakeLists.txt b/libs/signals/test/CMakeLists.txt +new file mode 100644 +index 0000000..91c513b +--- /dev/null ++++ b/libs/signals/test/CMakeLists.txt +@@ -0,0 +1,15 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(signals BOOST_DEPENDS test optional) ++ ++ ++boost_test_run(dead_slot_test DEPENDS boost_signals) ++boost_test_run(deletion_test DEPENDS boost_signals) ++boost_test_run(ordering_test DEPENDS boost_signals) ++boost_test_run(signal_n_test DEPENDS boost_signals) ++boost_test_run(signal_test DEPENDS boost_signals) ++boost_test_run(trackable_test DEPENDS boost_signals) +diff --git a/libs/signals2/CMakeLists.txt b/libs/signals2/CMakeLists.txt +new file mode 100644 +index 0000000..1e7910d +--- /dev/null ++++ b/libs/signals2/CMakeLists.txt +@@ -0,0 +1,19 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++# Add a library target to the build system ++boost_library_project( ++ signals2 ++ TESTDIRS test ++ HEADERS signals2.hpp signals2 ++ # DOCDIRS ++ DESCRIPTION "The Boost.Signals2 library is an implementation of a managed signals and slots system. Signals represent callbacks with multiple targets, and are also called publishers or events in similar systems. Signals are connected to some set of slots, which are callback receivers (also called event targets or subscribers), which are called when the signal is \"emitted.\"" ++ MODULARIZED ++ AUTHORS "Frank Mori Hess " ++) ++ ++ +diff --git a/libs/signals2/module.cmake b/libs/signals2/module.cmake +new file mode 100644 +index 0000000..7b720d8 +--- /dev/null ++++ b/libs/signals2/module.cmake +@@ -0,0 +1 @@ ++boost_module(signals2 DEPENDS thread) +\ No newline at end of file +diff --git a/libs/signals2/test/CMakeLists.txt b/libs/signals2/test/CMakeLists.txt +new file mode 100644 +index 0000000..5e0b610 +--- /dev/null ++++ b/libs/signals2/test/CMakeLists.txt +@@ -0,0 +1,26 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++foreach(test ++ connection_test ++ dead_slot_test ++ deconstruct_test ++ deletion_test ++ ordering_test ++ regression_test ++ shared_connection_block_test ++ signal_n_test ++ signal_test ++ signal_type_test ++ slot_compile_test ++ trackable_test ++ track_test ++ ) ++ boost_test_run(${test} DEPENDS boost_test_exec_monitor) ++endforeach() ++ ++boost_test_run(mutex_test DEPENDS boost_thread) ++boost_test_run(threading_models_test DEPENDS boost_thread) +diff --git a/libs/smart_ptr/CMakeLists.txt b/libs/smart_ptr/CMakeLists.txt +new file mode 100644 +index 0000000..1c039fc +--- /dev/null ++++ b/libs/smart_ptr/CMakeLists.txt +@@ -0,0 +1,36 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ enable_shared_from_this.hpp ++ pointer_cast.hpp ++ scoped_array.hpp ++ scoped_ptr.hpp ++ shared_array.hpp ++ shared_ptr.hpp ++ weak_ptr.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ smart_ptr ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Five smart pointer class templates." ++ MODULARIZED ++ AUTHORS "Greg Colvin" ++ "Beman Dawes " ++ "Peter Dimov " ++ "Darin Adler" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/smart_ptr/module.cmake b/libs/smart_ptr/module.cmake +new file mode 100644 +index 0000000..d83266c +--- /dev/null ++++ b/libs/smart_ptr/module.cmake +@@ -0,0 +1 @@ ++boost_module(smart_ptr DEPENDS utility) +\ No newline at end of file +diff --git a/libs/smart_ptr/test/CMakeLists.txt b/libs/smart_ptr/test/CMakeLists.txt +new file mode 100644 +index 0000000..b89394e +--- /dev/null ++++ b/libs/smart_ptr/test/CMakeLists.txt +@@ -0,0 +1,56 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(tokenizer BOOST_DEPENDS test intrusive) ++ ++ ++boost_test_run(smart_ptr_test) ++boost_test_run(shared_ptr_basic_test) ++boost_test_run(shared_ptr_test) ++boost_test_run(weak_ptr_test) ++boost_test_run(shared_from_this_test) ++boost_test_run(get_deleter_test) ++boost_test_run(intrusive_ptr_test) ++boost_test_run(atomic_count_test) ++boost_test_run(lw_mutex_test) ++boost_test_compile_fail(shared_ptr_assign_fail) ++boost_test_compile_fail(shared_ptr_delete_fail) ++boost_test_compile_fail(shared_ptr_compare_fail) ++boost_test_run(shared_ptr_alloc2_test) ++boost_test_run(pointer_cast_test) ++boost_test_compile(pointer_to_other_test) ++boost_test_run(auto_ptr_rv_test) ++boost_test_run(shared_ptr_alias_test) ++boost_test_run(shared_ptr_rv_test) ++boost_test_run(shared_ptr_move_test) ++boost_test_compile_fail(shared_ptr_pv_fail) ++boost_test_run(sp_unary_addr_test) ++boost_test_compile_fail(scoped_ptr_eq_fail) ++boost_test_compile_fail(scoped_array_eq_fail) ++boost_test_run(esft_regtest) ++boost_test_run(yield_k_test) ++message(STATUS "!!!> yield_k_test multhreaded") ++boost_test_run(spinlock_test) ++boost_test_run(spinlock_try_test) ++message(STATUS "!!!> spinlock_try_test multithreaded") ++boost_test_run(spinlock_pool_test) ++boost_test_run(make_shared_test) ++boost_test_run(sp_convertible_test) ++boost_test_run(wp_convertible_test) ++boost_test_run(ip_convertible_test) ++boost_test_run(allocate_shared_test) ++boost_test_run(sp_atomic_test) ++boost_test_run(esft_void_test) ++boost_test_run(esft_second_ptr_test) ++boost_test_run(make_shared_esft_test) ++boost_test_run(allocate_shared_esft_test) ++boost_test_run(sp_recursive_assign_test) ++boost_test_run(sp_recursive_assign2_test) ++boost_test_run(sp_recursive_assign_rv_test) ++boost_test_run(sp_recursive_assign2_rv_test) ++boost_test_compile_fail(auto_ptr_lv_fail) ++boost_test_run(atomic_count_test2) ++ +diff --git a/libs/spirit/CMakeLists.txt b/libs/spirit/CMakeLists.txt +new file mode 100644 +index 0000000..d70794c +--- /dev/null ++++ b/libs/spirit/CMakeLists.txt +@@ -0,0 +1,46 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ spirit.hpp ++ spirit ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ spirit ++ # SRCDIRS ++ TESTDIRS test ++ EXAMPLEDIRS ++ example/qi/calc6 ++ example/qi/calc7 ++ example/qi ++ example/qi/mini_c ++ example/lex/static_lexer ++ example/lex ++ example/karma ++ example/support ++ # example/scheme/test/qi ++ example/scheme/test/utree ++ example/scheme/test/scheme ++ example/scheme/example/sexpr ++ # example/scheme/example/generate_qiexpr ++ example/scheme/example/scheme ++ # example/scheme/example/parse_qiexpr ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "LL parser framework represents parsers directly as EBNF grammars in inlined C++." ++ MODULARIZED ++ AUTHORS "Joel de Guzman " ++ "Hartmut Kaiser " ++ "Dan Nuffer" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/spirit/example/karma/CMakeLists.txt b/libs/spirit/example/karma/CMakeLists.txt +new file mode 100644 +index 0000000..eefcf36 +--- /dev/null ++++ b/libs/spirit/example/karma/CMakeLists.txt +@@ -0,0 +1,37 @@ ++foreach( ++ example ++ complex_number ++ # complex_number_adapt ++ # calc2_ast_dump ++ generate_code ++ quick_start1 ++ customize_use_as_container ++ # printf_style_double_format ++ num_list1 ++ num_list2 ++ num_list3 ++ classify_char ++ customize_counter ++ # calc2_ast_vm ++ # simple_columns_directive ++ escaped_string ++ reorder_struct ++ actions ++ complex_number_easier ++ # auto_facilities ++ num_matrix ++ customize_embedded_container ++ # reference ++ mini_xml_karma ++ key_value_sequence ++ quoted_strings ++ # calc2_ast_rpn ++ # basic_facilities ++) ++boost_add_executable( ++ ${example} ++ TARGET_PREFIX ++ "karma-" ++) ++endforeach( ++) +diff --git a/libs/spirit/example/lex/CMakeLists.txt b/libs/spirit/example/lex/CMakeLists.txt +new file mode 100644 +index 0000000..4219473 +--- /dev/null ++++ b/libs/spirit/example/lex/CMakeLists.txt +@@ -0,0 +1,25 @@ ++foreach( ++ example ++ word_count_functor_flex ++ #word_count ++ #word_count_lexer ++ #strip_comments ++ #strip_comments_lexer ++ #example1 ++ #example2 ++ #example3 ++ #example4 ++ #example5 ++ #example6 ++ reference ++ #custom_token_attribute ++ #print_numbers ++ #word_count_functor ++) ++boost_add_executable( ++ ${example} ++ TARGET_PREFIX ++ "lex-" ++) ++endforeach( ++) +diff --git a/libs/spirit/example/lex/static_lexer/CMakeLists.txt b/libs/spirit/example/lex/static_lexer/CMakeLists.txt +new file mode 100644 +index 0000000..2d6903c +--- /dev/null ++++ b/libs/spirit/example/lex/static_lexer/CMakeLists.txt +@@ -0,0 +1,12 @@ ++foreach( ++ example ++ word_count_lexer_generate ++ word_count_generate ++ word_count_lexer_static ++ word_count_static ++) ++boost_add_executable( ++ ${example} ++) ++endforeach( ++) +diff --git a/libs/spirit/example/qi/CMakeLists.txt b/libs/spirit/example/qi/CMakeLists.txt +new file mode 100644 +index 0000000..ccb61c5 +--- /dev/null ++++ b/libs/spirit/example/qi/CMakeLists.txt +@@ -0,0 +1,43 @@ ++foreach( ++ example ++ employee ++ complex_number ++ mini_xml1 ++ mini_xml2 ++ mini_xml3 ++ porting_guide_qi ++ key_value_sequence_empty_value ++ parse_date ++ # adapt_template_struct ++ num_list1 ++ num_list2 ++ num_list3 ++ num_list4 ++ calc2_ast ++ iter_pos_parser ++ display_attribute_type ++ reorder_struct ++ key_value_sequence_ordered ++ sum ++ actions ++ calc1 ++ calc2 ++ calc3 ++ calc4 ++ calc5 ++ calc4_debug ++ # reference ++ # boost_array ++ roman ++ nabialek ++ typeof ++ key_value_sequence ++ porting_guide_classic ++) ++boost_add_executable( ++ ${example} ++ TARGET_PREFIX ++ "qi-" ++) ++endforeach( ++) +diff --git a/libs/spirit/example/qi/calc6/CMakeLists.txt b/libs/spirit/example/qi/calc6/CMakeLists.txt +new file mode 100644 +index 0000000..d1bd010 +--- /dev/null ++++ b/libs/spirit/example/qi/calc6/CMakeLists.txt +@@ -0,0 +1,7 @@ ++boost_add_executable( ++ calc6 ++ calc6.cpp ++ calc6a.cpp ++ calc6b.cpp ++ calc6c.cpp ++) +diff --git a/libs/spirit/example/qi/calc7/CMakeLists.txt b/libs/spirit/example/qi/calc7/CMakeLists.txt +new file mode 100644 +index 0000000..f967fe4 +--- /dev/null ++++ b/libs/spirit/example/qi/calc7/CMakeLists.txt +@@ -0,0 +1,7 @@ ++boost_add_executable( ++ calc7 ++ calc7.cpp ++ calc7a.cpp ++ calc7b.cpp ++ calc7c.cpp ++) +diff --git a/libs/spirit/example/qi/mini_c/CMakeLists.txt b/libs/spirit/example/qi/mini_c/CMakeLists.txt +new file mode 100644 +index 0000000..8ddb7d6 +--- /dev/null ++++ b/libs/spirit/example/qi/mini_c/CMakeLists.txt +@@ -0,0 +1,8 @@ ++boost_add_executable( ++ mini_c ++ mini_c.cpp ++ mini_ca.cpp ++ mini_cb.cpp ++ mini_cc.cpp ++ mini_cd.cpp ++) +diff --git a/libs/spirit/example/scheme/example/generate_qiexpr/CMakeLists.txt b/libs/spirit/example/scheme/example/generate_qiexpr/CMakeLists.txt +new file mode 100644 +index 0000000..1008458 +--- /dev/null ++++ b/libs/spirit/example/scheme/example/generate_qiexpr/CMakeLists.txt +@@ -0,0 +1,7 @@ ++boost_add_executable( ++ generate_qi_test ++ generate_qi_test.cpp ++ generate_qiexpr.cpp ++ COMPILE_FLAGS ++ "-I../.." ++) +diff --git a/libs/spirit/example/scheme/example/parse_qiexpr/CMakeLists.txt b/libs/spirit/example/scheme/example/parse_qiexpr/CMakeLists.txt +new file mode 100644 +index 0000000..5f361e8 +--- /dev/null ++++ b/libs/spirit/example/scheme/example/parse_qiexpr/CMakeLists.txt +@@ -0,0 +1,8 @@ ++boost_add_executable( ++ parse_qi_test ++ parse_qi_test.cpp ++ generate_sexpr_to_ostream.cpp ++ parse_qiexpr.cpp ++ COMPILE_FLAGS ++ "-I../.." ++) +diff --git a/libs/spirit/example/scheme/example/scheme/CMakeLists.txt b/libs/spirit/example/scheme/example/scheme/CMakeLists.txt +new file mode 100644 +index 0000000..ca7c00e +--- /dev/null ++++ b/libs/spirit/example/scheme/example/scheme/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ try_scheme ++ factorial1 ++ factorial2 ++) ++boost_add_executable( ++ ${example} ++ COMPILE_FLAGS ++ "-I../.." ++) ++endforeach( ++) +diff --git a/libs/spirit/example/scheme/example/sexpr/CMakeLists.txt b/libs/spirit/example/scheme/example/sexpr/CMakeLists.txt +new file mode 100644 +index 0000000..f8f0aeb +--- /dev/null ++++ b/libs/spirit/example/scheme/example/sexpr/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ # sexpr_output_test ++ sexpr_input_test ++ sexpr_error_test ++) ++boost_add_executable( ++ ${example} ++ COMPILE_FLAGS ++ "-I../.." ++) ++endforeach( ++) +diff --git a/libs/spirit/example/scheme/test/qi/CMakeLists.txt b/libs/spirit/example/scheme/test/qi/CMakeLists.txt +new file mode 100644 +index 0000000..376b5a6 +--- /dev/null ++++ b/libs/spirit/example/scheme/test/qi/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ qi_interpreter ++) ++boost_add_executable( ++ ${example} ++ COMPILE_FLAGS ++ "-I../.." ++) ++endforeach( ++) +diff --git a/libs/spirit/example/scheme/test/scheme/CMakeLists.txt b/libs/spirit/example/scheme/test/scheme/CMakeLists.txt +new file mode 100644 +index 0000000..5063398 +--- /dev/null ++++ b/libs/spirit/example/scheme/test/scheme/CMakeLists.txt +@@ -0,0 +1,13 @@ ++foreach( ++ example ++ scheme_test1 ++ scheme_test2 ++ scheme_test3 ++) ++boost_add_executable( ++ ${example} ++ COMPILE_FLAGS ++ "-I../.." ++) ++endforeach( ++) +diff --git a/libs/spirit/example/scheme/test/utree/CMakeLists.txt b/libs/spirit/example/scheme/test/utree/CMakeLists.txt +new file mode 100644 +index 0000000..9b058dd +--- /dev/null ++++ b/libs/spirit/example/scheme/test/utree/CMakeLists.txt +@@ -0,0 +1,11 @@ ++foreach( ++ example ++ utree_test ++) ++boost_add_executable( ++ ${example} ++ COMPILE_FLAGS ++ "-I../.." ++) ++endforeach( ++) +diff --git a/libs/spirit/example/support/CMakeLists.txt b/libs/spirit/example/support/CMakeLists.txt +new file mode 100644 +index 0000000..725363f +--- /dev/null ++++ b/libs/spirit/example/support/CMakeLists.txt +@@ -0,0 +1,9 @@ ++foreach( ++ example ++ multi_pass ++) ++boost_add_executable( ++ ${example} ++) ++endforeach( ++) +diff --git a/libs/spirit/module.cmake b/libs/spirit/module.cmake +new file mode 100644 +index 0000000..895f666 +--- /dev/null ++++ b/libs/spirit/module.cmake +@@ -0,0 +1 @@ ++boost_module(spirit DEPENDS xpressive optional foreach array unordered pool) +\ No newline at end of file +diff --git a/libs/spirit/test/CMakeLists.txt b/libs/spirit/test/CMakeLists.txt +new file mode 100644 +index 0000000..46265c9 +--- /dev/null ++++ b/libs/spirit/test/CMakeLists.txt +@@ -0,0 +1,121 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(spirit ++ BOOST_DEPENDS ++ test variant function_types intrusive ++ lambda assign iostreams math random dynamic_bitset fusion ++ ) ++ ++set( test_compile_flags "") ++ ++if(CMAKE_COMPILER_IS_GNUCC) ++ set(test_compile_flags "-ftemplate-depth-300") ++endif() ++ ++ ++boost_test_run(qi_actions qi/actions.cpp COMPILE_FLAGS ${test_compile_flags} BOOST_LIB spirit COMPILE_FLAGS ${test_compile_flags} ) ++ ++foreach(qi_run_test ++ char ++ char_class ++ lit ++ int ++ uint ++ real ++ eps ++ lazy ++ tst ++ symbols ++ range_run ++ no_case ++ lexeme ++ raw ++ sequence ++ alternative ++ sequential_or ++ permutation ++ difference ++ list ++ optional ++ kleene ++ plus ++ and_predicate ++ not_predicate ++ expect ++ rule ++ grammar ++ match_manip ++ binary ++ debug ++ end) ++ boost_test_run(qi_${qi_run_test} qi/${qi_run_test}.cpp COMPILE_FLAGS ${test_compile_flags}) ++endforeach() ++ ++foreach(qi_compile_fail_test ++ qi_grammar_fail ++ qi_rule_fail) ++ boost_test_compile_fail(${qi_compile_fail_test} qi/${qi_compiler_fail_test}.cpp ++ COMPILE_FLAGS ${test_compile_flags}) ++endforeach() ++ ++foreach(karma_run_test ++ actions ++ alternative ++ binary ++ case_handling ++ center_alignment ++ char ++ delimiter ++ eol ++ eps ++ format_manip ++ grammar ++ int_numerics ++ kleene ++ lazy ++ left_alignment ++ list ++ lit ++ optional ++ pattern ++ real_numerics ++ right_alignment ++ sequence) ++ boost_test_run(karma_${karma_run_test} karma/${karma_run_test}.cpp COMPILE_FLAGS ${test_compile_flags}) ++endforeach() ++ ++foreach(karma_compile_fail_test ++ karma_grammar_fail ++ karma_rule_fail) ++ boost_test_compile_fail(${karma_compile_fail_test} ++ karma/${karma_compile_fail_test}.cpp ++ COMPILE_FLAGS ${test_compile_flags}) ++endforeach() ++ ++# boost_test_run(support_hold_any support/hold_any.cpp COMPILE_FLAGS ${test_compile_flags}) ++ ++# the multi_pass tests are not completed yet ++# [ run support/multi_pass_compile.cpp COMPILE_FLAGS ${test_compile_flags} : : : : ] ++# [ run support/multi_pass.cpp COMPILE_FLAGS ${test_compile_flags} : : : : ] ++ ++if(CMAKE_COMPILER_IS_INTEL) ++ list(APPEND test_compile_flags "-no-vec") ++endif() ++ ++foreach(lex_run_test ++ lexertl1 ++ lexertl2 ++ lexertl3 ++ lexertl4 ++ lexertl5 ++ state_switcher_test) ++ boost_test_run(lex_${lex_run_test} lex/${lex_run_test}.cpp ++ COMPILE_FLAGS ${test_compile_flags}) ++endforeach() ++ ++ ++ +diff --git a/libs/statechart/CMakeLists.txt b/libs/statechart/CMakeLists.txt +new file mode 100644 +index 0000000..7f97e3b +--- /dev/null ++++ b/libs/statechart/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ statechart ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ statechart ++ # SRCDIRS ++ TESTDIRS test example ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Arbitrarily complex finite state machines can be implemented in easily readable and maintainable C++ code." ++ MODULARIZED ++ AUTHORS "Andreas Huber " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/statechart/example/CMakeLists.txt b/libs/statechart/example/CMakeLists.txt +new file mode 100644 +index 0000000..2a6281e +--- /dev/null ++++ b/libs/statechart/example/CMakeLists.txt +@@ -0,0 +1,31 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++macro(statechart_example TESTNAME) ++ set(SOURCES) ++ foreach(ARG ${ARGN}) ++ set(SOURCES ${SOURCES} "${TESTNAME}/${ARG}.cpp") ++ endforeach(ARG ${ARGN}) ++ ++ if (NOT SOURCES) ++ set(SOURCES "${TESTNAME}/${TESTNAME}.cpp") ++ endif () ++ ++ boost_test_link("${TESTNAME}Example" ++ ${SOURCES} ++ COMPILE_FLAGS "-DBOOST_DISABLE_THREADS" ++ ) ++endmacro(statechart_example) ++ ++statechart_example(BitMachine) ++#statechart_example(Camera ++# : Camera : Camera Configuring Main Shooting) ++#statechart_example(Handcrafted : Handcrafted : Handcrafted) ++#statechart_example(Keyboard : Keyboard : Keyboard :) ++#statechart_example(Performance : Performance : Performance) ++#statechart_example(PingPong : PingPong : PingPong) ++#statechart_example(StopWatch : StopWatch : StopWatch) ++#statechart_example(StopWatch2 : StopWatch : StopWatch2) ; +diff --git a/libs/statechart/module.cmake b/libs/statechart/module.cmake +new file mode 100644 +index 0000000..9462b13 +--- /dev/null ++++ b/libs/statechart/module.cmake +@@ -0,0 +1 @@ ++boost_module (statechart DEPENDS type_traits mpl static_assert intrusive smart_ptr bind function numeric) +diff --git a/libs/statechart/test/CMakeLists.txt b/libs/statechart/test/CMakeLists.txt +new file mode 100644 +index 0000000..a661a74 +--- /dev/null ++++ b/libs/statechart/test/CMakeLists.txt +@@ -0,0 +1,93 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(statechart BOOST_DEPENDS test numeric) ++ ++ ++ ++macro(statechart_compile_fail TESTNAME) ++ boost_test_compile_fail("${TESTNAME}Normal" ++ ${TESTNAME}.cpp ++ ) ++ boost_test_compile_fail("${TESTNAME}Native" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_STATECHART_USE_NATIVE_RTTI" ++ ) ++ boost_test_compile_fail("${TESTNAME}Relaxed" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT" ++ ) ++ boost_test_compile_fail("${TESTNAME}Both" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_STATECHART_USE_NATIVE_RTTI -DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT" ++ ) ++endmacro(statechart_compile_fail) ++ ++macro(statechart_run TESTNAME) ++ boost_test_run("${TESTNAME}Normal" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_DISABLE_THREADS" ++ DEPENDS boost_test_exec_monitor ++ ) ++ boost_test_run("${TESTNAME}Native" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_USE_NATIVE_RTTI" ++ DEPENDS boost_test_exec_monitor ++ ) ++ boost_test_run("${TESTNAME}Relaxed" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT" ++ DEPENDS boost_test_exec_monitor ++ ) ++ boost_test_run("${TESTNAME}Both" ++ ${TESTNAME}.cpp ++ COMPILE_FLAGS "-DBOOST_DISABLE_THREADS -DBOOST_STATECHART_USE_NATIVE_RTTI -DBOOST_STATECHART_RELAX_TRANSITION_CONTEXT" ++ DEPENDS boost_test_exec_monitor ++ ) ++endmacro(statechart_run) ++ ++ ++statechart_compile_fail(InvalidChartTest1) ++statechart_compile_fail(InvalidChartTest2) ++statechart_compile_fail(InvalidChartTest3) ++statechart_run(TransitionTest) ++statechart_compile_fail(InvalidTransitionTest1) ++statechart_compile_fail(InvalidTransitionTest2) ++statechart_run(InStateReactionTest) ++statechart_run(TerminationTest) ++statechart_run(DeferralTest) ++statechart_run(CustomReactionTest) ++statechart_compile_fail(InvalidResultAssignTest) ++statechart_compile_fail(InvalidResultDefCtorTest) ++statechart_run(InvalidResultCopyTest) ++statechart_run(UnconsumedResultTest) ++statechart_run(HistoryTest) ++statechart_compile_fail(InconsistentHistoryTest1) ++statechart_compile_fail(InconsistentHistoryTest2) ++statechart_compile_fail(InconsistentHistoryTest3) ++statechart_compile_fail(InconsistentHistoryTest4) ++statechart_compile_fail(InconsistentHistoryTest5) ++statechart_compile_fail(InconsistentHistoryTest6) ++statechart_compile_fail(InconsistentHistoryTest7) ++statechart_compile_fail(InconsistentHistoryTest8) ++statechart_compile_fail(UnsuppDeepHistoryTest) ++statechart_run(StateCastTest) ++statechart_run(TypeInfoTest) ++statechart_run(StateIterationTest) ++statechart_run(FifoSchedulerTest) ++ ++message(STATUS "Statechart Testing needs intermediate libraries created") ++# TODO: We need to create some libraries (just for testing!?), then link ++# and run tests against them. Ick. ++#statechart-st-lib-run LibTestNormal ++# : TuTestMain : TuTest : static $(normal)) ++#statechart-st-lib-run LibTestNative ++# : TuTestMain : TuTest : static $(native)) ++#statechart-st-lib-run DllTestNormal ++# : TuTestMain : TuTest : shared $(normal)) ++#statechart-st-lib-run DllTestNative ++# : TuTestMain : TuTest : shared $(native)) ++ +diff --git a/libs/static_assert/CMakeLists.txt b/libs/static_assert/CMakeLists.txt +new file mode 100644 +index 0000000..dbc799c +--- /dev/null ++++ b/libs/static_assert/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ static_assert.hpp ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ static_assert ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/static_assert/module.cmake b/libs/static_assert/module.cmake +new file mode 100644 +index 0000000..e68fe53 +--- /dev/null ++++ b/libs/static_assert/module.cmake +@@ -0,0 +1 @@ ++boost_module(static_assert DEPENDS config detail) +\ No newline at end of file +diff --git a/libs/static_assert/test/CMakeLists.txt b/libs/static_assert/test/CMakeLists.txt +new file mode 100644 +index 0000000..a9afaf2 +--- /dev/null ++++ b/libs/static_assert/test/CMakeLists.txt +@@ -0,0 +1,19 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_test_run(static_assert_test ../static_assert_test.cpp) ++boost_test_run(static_assert_example_2 ../static_assert_example_2.cpp) ++boost_test_run(static_assert_example_3 ../static_assert_example_3.cpp) ++boost_test_compile_fail(static_assert_test_fail_1 ../static_assert_test_fail_1.cpp) ++boost_test_compile_fail(static_assert_test_fail_2 ../static_assert_test_fail_2.cpp) ++boost_test_compile_fail(static_assert_test_fail_3 ../static_assert_test_fail_3.cpp) ++boost_test_compile_fail(static_assert_test_fail_4 ../static_assert_test_fail_4.cpp) ++boost_test_compile_fail(static_assert_test_fail_5 ../static_assert_test_fail_5.cpp) ++boost_test_compile_fail(static_assert_test_fail_6 ../static_assert_test_fail_6.cpp) ++boost_test_compile_fail(static_assert_test_fail_7 ../static_assert_test_fail_7.cpp) ++boost_test_compile_fail(static_assert_test_fail_8 ../static_assert_test_fail_8.cpp) ++boost_test_compile_fail(static_assert_test_fail_9 ../static_assert_test_fail_9.cpp) ++boost_test_compile_fail(static_assert_test_fail_10 ../static_assert_test_fail_10.cpp) +diff --git a/libs/system/CMakeLists.txt b/libs/system/CMakeLists.txt +new file mode 100644 +index 0000000..b4f92f3 +--- /dev/null ++++ b/libs/system/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ system ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ system ++ SRCDIRS src ++ # TESTDIRS ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/system/module.cmake b/libs/system/module.cmake +new file mode 100644 +index 0000000..9a50a96 +--- /dev/null ++++ b/libs/system/module.cmake +@@ -0,0 +1 @@ ++boost_module(system DEPENDS utility) +\ No newline at end of file +diff --git a/libs/system/src/CMakeLists.txt b/libs/system/src/CMakeLists.txt +new file mode 100644 +index 0000000..66f7c9f +--- /dev/null ++++ b/libs/system/src/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_library( ++ system ++ error_code.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_SYSTEM_DYN_LINK=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_SYSTEM_STATIC_LINK=1" ++ ) ++ +diff --git a/libs/test/CMakeLists.txt b/libs/test/CMakeLists.txt +new file mode 100644 +index 0000000..556dbbc +--- /dev/null ++++ b/libs/test/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ test ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ test ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Support for simple program testing, full unit testing, and for program execution monitoring." ++ MODULARIZED ++ AUTHORS "Gennadiy Rozental " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/test/module.cmake b/libs/test/module.cmake +new file mode 100644 +index 0000000..39ee26e +--- /dev/null ++++ b/libs/test/module.cmake +@@ -0,0 +1,5 @@ ++# ++# module.cmake for test ++# ++boost_module(test DEPENDS smart_ptr timer io bind numeric) ++ +diff --git a/libs/test/src/CMakeLists.txt b/libs/test/src/CMakeLists.txt +new file mode 100644 +index 0000000..45ec7c6 +--- /dev/null ++++ b/libs/test/src/CMakeLists.txt +@@ -0,0 +1,70 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# Test library configuration ++# add_definitions(-DBOOST_TEST_NO_AUTO_LINK=1) ++ ++# Compiler-specific configuration ++set(BOOST_SHARED_COMPILE_FLAGS "") ++if(MSVC) ++ add_definitions(/EHac) ++ set(BOOST_SHARED_COMPILE_FLAGS "${BOOST_SHARED_COMPILE_FLAGS} -wd4275") ++endif(MSVC) ++ ++if (BORLAND) ++ add_definitions(-w-8080) ++endif(BORLAND) ++ ++boost_add_library(prg_exec_monitor ++ execution_monitor.cpp ++ debug.cpp ++ cpp_main.cpp ++ SHARED_COMPILE_FLAGS -DBOOST_TEST_DYN_LINK=1 ${BOOST_SHARED_COMPILE_FLAGS}) ++ ++boost_add_library(test_exec_monitor ++ compiler_log_formatter.cpp ++ debug.cpp ++ execution_monitor.cpp ++ framework.cpp ++ plain_report_formatter.cpp ++ progress_monitor.cpp ++ results_collector.cpp ++ results_reporter.cpp ++ test_main.cpp ++ test_tools.cpp ++ unit_test_log.cpp ++ unit_test_main.cpp ++ unit_test_monitor.cpp ++ unit_test_parameters.cpp ++ unit_test_suite.cpp ++ xml_log_formatter.cpp ++ xml_report_formatter.cpp ++ NO_SHARED ++ ) ++ ++boost_add_library(unit_test_framework ++ compiler_log_formatter.cpp ++ debug.cpp ++ exception_safety.cpp ++ execution_monitor.cpp ++ framework.cpp ++ interaction_based.cpp ++ logged_expectations.cpp ++ plain_report_formatter.cpp ++ progress_monitor.cpp ++ results_collector.cpp ++ results_reporter.cpp ++ test_tools.cpp ++ unit_test_log.cpp ++ unit_test_main.cpp ++ unit_test_monitor.cpp ++ unit_test_parameters.cpp ++ unit_test_suite.cpp ++ xml_log_formatter.cpp ++ xml_report_formatter.cpp ++ SHARED_COMPILE_FLAGS -DBOOST_TEST_DYN_LINK=1 ${BOOST_SHARED_COMPILE_FLAGS} ++ ) ++ +diff --git a/libs/thread/CMakeLists.txt b/libs/thread/CMakeLists.txt +new file mode 100644 +index 0000000..7b3935a +--- /dev/null ++++ b/libs/thread/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ thread.hpp ++ thread ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ thread ++ SRCDIRS src ++ TESTDIRS test ++ EXAMPLEDIRS example ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Boost.Thread" ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/thread/example/CMakeLists.txt b/libs/thread/example/CMakeLists.txt +new file mode 100644 +index 0000000..7d4b8bd +--- /dev/null ++++ b/libs/thread/example/CMakeLists.txt +@@ -0,0 +1,17 @@ ++foreach(example ++ ++ monitor ++ starvephil ++ # tennis this doesn't build on linux for some stupid reason ++ condition ++ mutex ++ once ++ recursive_mutex ++ thread ++ thread_group ++ tss ++ xtime) ++ ++ boost_add_executable(${example} DEPENDS boost_thread MULTI_THREADED) ++ ++endforeach() +\ No newline at end of file +diff --git a/libs/thread/module.cmake b/libs/thread/module.cmake +new file mode 100644 +index 0000000..32b0535 +--- /dev/null ++++ b/libs/thread/module.cmake +@@ -0,0 +1 @@ ++boost_module(thread DEPENDS date_time bind optional range) +\ No newline at end of file +diff --git a/libs/thread/src/CMakeLists.txt b/libs/thread/src/CMakeLists.txt +new file mode 100644 +index 0000000..d02c4b0 +--- /dev/null ++++ b/libs/thread/src/CMakeLists.txt +@@ -0,0 +1,20 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++if (WIN32) ++ set(THREAD_SOURCES win32/thread.cpp win32/tss_dll.cpp win32/tss_pe.cpp) ++else (WIN32) ++ set(THREAD_SOURCES pthread/thread.cpp pthread/once.cpp) ++endif (WIN32) ++ ++boost_add_library( ++ thread ++ ${THREAD_SOURCES} ++ SHARED_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_DLL=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_LIB=1" ++ NO_SINGLE_THREADED ++ ) ++ +diff --git a/libs/thread/test/CMakeLists.txt b/libs/thread/test/CMakeLists.txt +new file mode 100644 +index 0000000..23f2939 +--- /dev/null ++++ b/libs/thread/test/CMakeLists.txt +@@ -0,0 +1,39 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(thread BOOST_DEPENDS test ) ++ ++ ++ ++set(TESTS ++test_thread ++test_thread_id ++test_hardware_concurrency ++test_thread_move ++test_thread_launching ++test_thread_mf ++test_move_function ++test_mutex ++test_condition_notify_one ++test_condition_timed_wait_times_out ++test_condition_notify_all ++test_condition ++test_tss ++test_once ++test_xtime ++test_barrier ++test_shared_mutex ++test_shared_mutex_part_2 ++test_shared_mutex_timed_locks ++test_lock_concept ++test_generic_locks) ++ ++foreach (TEST ${TESTS}) ++ boost_test_run(${TEST} MULTI_THREADED DEPENDS boost_thread boost_unit_test_framework) ++endforeach (TEST ${TESTS}) ++ ++boost_test_compile_fail(no_implicit_move_from_lvalue_thread) ++boost_test_compile_fail(no_implicit_assign_from_lvalue_thread) +diff --git a/libs/timer/CMakeLists.txt b/libs/timer/CMakeLists.txt +new file mode 100644 +index 0000000..02967a6 +--- /dev/null ++++ b/libs/timer/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ timer.hpp ++ ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ timer ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/timer/module.cmake b/libs/timer/module.cmake +new file mode 100644 +index 0000000..0ce8984 +--- /dev/null ++++ b/libs/timer/module.cmake +@@ -0,0 +1 @@ ++boost_module(timer DEPENDS config) +diff --git a/libs/timer/test/CMakeLists.txt b/libs/timer/test/CMakeLists.txt +new file mode 100644 +index 0000000..bfa115a +--- /dev/null ++++ b/libs/timer/test/CMakeLists.txt +@@ -0,0 +1,9 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# boost_additional_test_dependencies(timer BOOST_DEPENDS test) ++ ++boost_test_compile(timer_test ../timer_test.cpp) +diff --git a/libs/tokenizer/CMakeLists.txt b/libs/tokenizer/CMakeLists.txt +new file mode 100644 +index 0000000..b9bc1ba +--- /dev/null ++++ b/libs/tokenizer/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ tokenizer.hpp ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ tokenizer ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/tokenizer/module.cmake b/libs/tokenizer/module.cmake +new file mode 100644 +index 0000000..068d901 +--- /dev/null ++++ b/libs/tokenizer/module.cmake +@@ -0,0 +1 @@ ++boost_module(tokenizer DEPENDS utility) +\ No newline at end of file +diff --git a/libs/tokenizer/test/CMakeLists.txt b/libs/tokenizer/test/CMakeLists.txt +new file mode 100644 +index 0000000..a2743d2 +--- /dev/null ++++ b/libs/tokenizer/test/CMakeLists.txt +@@ -0,0 +1,15 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(tokenizer BOOST_DEPENDS test config detail iterator utility array intrusive) ++ ++boost_test_run(examples examples.cpp ++ DEPENDS boost_test_exec_monitor) ++boost_test_run(simple_example_1 simple_example_1.cpp) ++boost_test_run(simple_example_2 simple_example_2.cpp) ++boost_test_run(simple_example_3 simple_example_3.cpp) ++boost_test_run(simple_example_4 simple_example_4.cpp) ++boost_test_run(simple_example_5 simple_example_5.cpp) +diff --git a/libs/tr1/CMakeLists.txt b/libs/tr1/CMakeLists.txt +new file mode 100644 +index 0000000..58727a7 +--- /dev/null ++++ b/libs/tr1/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ tr1 ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ tr1 ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "An implementation of the C++ Technical Report on Standard Library Extensions. This library does not itself implement the TR1 components, rather it's a thin wrapper that will include your standard library's TR1 implementation (if it has one), otherwise it will include the Boost Library equivalents, and import them into namespace std::tr1." ++ MODULARIZED ++ AUTHORS "John Maddock " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/tr1/module.cmake b/libs/tr1/module.cmake +new file mode 100644 +index 0000000..c2aa4c2 +--- /dev/null ++++ b/libs/tr1/module.cmake +@@ -0,0 +1 @@ ++boost_module(tr1 DEPENDS fusion random math functional) +diff --git a/libs/tr1/test/CMakeLists.txt b/libs/tr1/test/CMakeLists.txt +new file mode 100644 +index 0000000..d60bdb9 +--- /dev/null ++++ b/libs/tr1/test/CMakeLists.txt +@@ -0,0 +1,75 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(tr1 BOOST_DEPENDS test) ++ ++ ++include_directories(${Boost_SOURCE_DIR}/boost/tr1/tr1) ++include_directories(${Boost_SOURCE_DIR}/libs/tr1/include/boost/tr1/tr1) ++ ++if (BORLAND) ++ # Borland's broken include mechanism needs these extra headers: ++ include_directories(${Boost_SOURCE_DIR}/boost/tr1/tr1/bcc32) ++ include_directories(${Boost_SOURCE_DIR}/libs/tr1/include/boost/tr1/tr1/bcc32) ++endif (BORLAND) ++ ++macro(boost_glob_test_compile path glob_par compile_flags) ++ list_contains(WITH_STD "WITH_STD" ${ARGN}) ++ list_contains(STD_HEADER_TEST "STD_HEADER_TEST" ${ARGN}) ++ file(GLOB file_list ${path}/${glob_par}) ++ foreach (current_file ${file_list}) ++ get_filename_component(file_name ${current_file} NAME_WE) ++ set(test_name "${file_name}") ++ if (${STD_HEADER_TEST}) ++ set(test_name "${file_name}_header") ++ endif () ++ boost_test_compile(${test_name} ${path}/${file_name}.cpp ++ COMPILE_FLAGS "${compile_flags}") ++ if (WITH_STD) ++ boost_test_compile(${file_name}_std ${path}/${file_name}.cpp ++ COMPILE_FLAGS ${compile_flags} -DTEST_STD_HEADERS=1) ++ endif (WITH_STD) ++ endforeach (current_file) ++endmacro(boost_glob_test_compile) ++ ++macro(boost_glob_test_compile_fail patch glob_par compile_flags) ++ file(GLOB file_list ${glob_par}) ++ foreach (current_file ${file_list}) ++ get_filename_component(file_name ${current_file} NAME_WE) ++ boost_test_compile_fail(${file_name} ${path}/${file_name}.cpp COMPILE_FLAGS "${compile_flags}") ++ endforeach (current_file) ++endmacro(boost_glob_test_compile_fail) ++ ++macro(boost_glob_test_run path glob_par compile_flags) ++ list_contains(WITH_STD "WITH_STD" ${ARGN}) ++ file(GLOB file_list ${path}/${glob_par}) ++ foreach (current_file ${file_list}) ++ get_filename_component(file_name ${current_file} NAME_WE) ++ boost_test_run(${file_name} ${path}/${file_name}.cpp COMPILE_FLAGS "${compile_flags}") ++ if (WITH_STD) ++ boost_test_run(${file_name}_std ${path}/${file_name}.cpp ++ COMPILE_FLAGS ${compile_flags} -DTEST_STD_HEADERS=1) ++ endif (WITH_STD) ++ endforeach (current_file) ++endmacro(boost_glob_test_run) ++ ++ ++boost_glob_test_compile(. test*.cpp "" WITH_STD) ++boost_glob_test_run(. run*.cpp "" WITH_STD) ++boost_glob_test_compile_fail(config tr1_has_tr1*fail.cpp "") ++boost_glob_test_compile(config tr1_has_tr1*pass.cpp "") ++boost_glob_test_run(type_traits *.cpp "") ++ ++# TODO: there's a problem here where the testing code is generating duplicate ++# target names. ++message(STATUS "TR1 tests need some love") ++# boost_glob_test_compile(std_headers *.cpp "-DTEST_STD=1" STD_HEADER_TEST) ++boost_glob_test_compile(cyclic_depend *.cpp "") ++ ++# Known failures ++boost_test_known_failures(test_cmath_tricky_std "gcc-4.0.[0-9]-.*") ++boost_test_known_failures(test_mem_fn_tricky_std "gcc-4.0.[0-9]-.*") ++boost_test_known_failures(test_ref_wrapper_tricky_std "gcc-4.0.[0-9]-.*") +\ No newline at end of file +diff --git a/libs/tuple/CMakeLists.txt b/libs/tuple/CMakeLists.txt +new file mode 100644 +index 0000000..a0321f4 +--- /dev/null ++++ b/libs/tuple/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ tuple ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ tuple ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Ease definition of functions returning multiple values, and more." ++ MODULARIZED ++ AUTHORS "Jaakko Jarvi " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/tuple/module.cmake b/libs/tuple/module.cmake +new file mode 100644 +index 0000000..4c52344 +--- /dev/null ++++ b/libs/tuple/module.cmake +@@ -0,0 +1,2 @@ ++boost_module(tuple DEPENDS static_assert) ++ +diff --git a/libs/tuple/test/CMakeLists.txt b/libs/tuple/test/CMakeLists.txt +new file mode 100644 +index 0000000..0896726 +--- /dev/null ++++ b/libs/tuple/test/CMakeLists.txt +@@ -0,0 +1,11 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(tuple BOOST_DEPENDS test) ++ ++ ++boost_test_run(tuple_test_bench DEPENDS boost_test_exec_monitor) ++boost_test_run(io_test DEPENDS boost_test_exec_monitor) +diff --git a/libs/type_traits/CMakeLists.txt b/libs/type_traits/CMakeLists.txt +new file mode 100644 +index 0000000..951be8e +--- /dev/null ++++ b/libs/type_traits/CMakeLists.txt +@@ -0,0 +1,40 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ type_traits.hpp ++ type_traits ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ type_traits ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Templates for fundamental properties of types." ++ MODULARIZED ++ AUTHORS "David Abrahams " ++ "Steve Cleary" ++ "Beman Dawes " ++ "Aleksey Gurtovoy " ++ "Howard Hinnant" ++ "Jesse Jones" ++ "Mat Marcus" ++ "Itay Maman" ++ "John Maddock " ++ "Alexander Nasonov " ++ "Thorsten Ottosen " ++ "Robert Ramey " ++ "Jeremy Siek " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/type_traits/module.cmake b/libs/type_traits/module.cmake +new file mode 100644 +index 0000000..c1f1b3c +--- /dev/null ++++ b/libs/type_traits/module.cmake +@@ -0,0 +1 @@ ++boost_module(type_traits DEPENDS config static_assert) +\ No newline at end of file +diff --git a/libs/type_traits/test/CMakeLists.txt b/libs/type_traits/test/CMakeLists.txt +new file mode 100644 +index 0000000..69fc8b9 +--- /dev/null ++++ b/libs/type_traits/test/CMakeLists.txt +@@ -0,0 +1,13 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++file(GLOB TEST_FILES "*_test.cpp") ++foreach(TEST_FILE ${TEST_FILES}) ++ get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) ++ boost_test_run(${TEST_NAME}) ++endforeach(TEST_FILE ${TEST_FILES}) ++ ++boost_test_run(udt_specialisations) +diff --git a/libs/typeof/CMakeLists.txt b/libs/typeof/CMakeLists.txt +new file mode 100644 +index 0000000..a912c12 +--- /dev/null ++++ b/libs/typeof/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ typeof ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ typeof ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/typeof/module.cmake b/libs/typeof/module.cmake +new file mode 100644 +index 0000000..41dc168 +--- /dev/null ++++ b/libs/typeof/module.cmake +@@ -0,0 +1 @@ ++boost_module(typeof DEPENDS mpl config detail preprocessor) +\ No newline at end of file +diff --git a/libs/typeof/test/CMakeLists.txt b/libs/typeof/test/CMakeLists.txt +new file mode 100644 +index 0000000..417d1be +--- /dev/null ++++ b/libs/typeof/test/CMakeLists.txt +@@ -0,0 +1,30 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(typeof BOOST_DEPENDS test) ++ ++ ++file(GLOB TEST_FILES "*.cpp") ++foreach(TEST_FILE ${TEST_FILES}) ++ if (TEST_FILE MATCHES "odr.*cpp") ++ # Skip ODR tests; we'll handle them separately ++ else (TEST_FILE MATCHES "odr.*cpp") ++ get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE) ++ boost_test_compile("${TEST_NAME}_native" ++ "${TEST_NAME}.cpp" COMPILE_FLAGS "-DBOOST_TYPEOF_NATIVE") ++ boost_test_compile("${TEST_NAME}_emulation" ++ "${TEST_NAME}.cpp" COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION") ++ endif (TEST_FILE MATCHES "odr.*cpp") ++endforeach(TEST_FILE ${TEST_FILES}) ++ ++boost_test_run(odr_native ++ odr1.cpp odr2.cpp COMPILE_FLAGS "-DBOOST_TYPEOF_NATIVE") ++boost_test_run(odr_emulation ++ odr1.cpp odr2.cpp COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION") ++boost_test_run(odr_no_uns ++ odr_no_uns1.cpp odr_no_uns2.cpp ++ COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION") ++ +diff --git a/libs/units/CMakeLists.txt b/libs/units/CMakeLists.txt +new file mode 100644 +index 0000000..e28a106 +--- /dev/null ++++ b/libs/units/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ units ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ units ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Zero-overhead dimensional analysis and unit/quantity manipulation and conversion." ++ MODULARIZED ++ AUTHORS "Matthias Schabel " ++ "Steven Watanabe " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/units/doc/CMakeLists.txt b/libs/units/doc/CMakeLists.txt +new file mode 100644 +index 0000000..5591ef5 +--- /dev/null ++++ b/libs/units/doc/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++message(STATUS "libs/units/doc needs love") ++ +diff --git a/libs/units/module.cmake b/libs/units/module.cmake +new file mode 100644 +index 0000000..c72828e +--- /dev/null ++++ b/libs/units/module.cmake +@@ -0,0 +1,2 @@ ++boost_module(units DEPENDS math serialization lambda) ++ +diff --git a/libs/units/test/CMakeLists.txt b/libs/units/test/CMakeLists.txt +new file mode 100644 +index 0000000..c3b9e17 +--- /dev/null ++++ b/libs/units/test/CMakeLists.txt +@@ -0,0 +1,80 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(units BOOST_DEPENDS test) ++ ++set(COMPILE_TESTS ++ test_predicates ++ test_negative_denominator ++ test_dimensionless_ice1 ++ test_dimensionless_ice2 ++ test_mixed_value_types ++ test_complicated_system ++ test_reduce_unit ++ test_unscale ++ test_constants ++ ) ++ ++foreach(C ${COMPILE_TESTS}) ++ boost_test_compile(${C}) ++endforeach(C ${COMPILE_TESTS}) ++ ++set(RUN_TESTS ++ test_dimensionless_quantity ++ test_implicit_conversion ++ test_quantity ++ test_unit ++ test_base_dimension ++ test_absolute ++ test_default_conversion ++ test_cmath ++ test_limits ++ test_custom_unit ++ test_scaled_conversion ++ test_lambda ++ ) ++ ++foreach(R ${RUN_TESTS}) ++ boost_test_run(${R}) ++endforeach(R ${RUN_TESTS}) ++ ++set(RUN_TESTS_WITH_DEPS ++ test_conversion ++ test_scaled_unit ++ test_output ++ test_trig ++) ++ ++foreach(RD ${RUN_TESTS_WITH_DEPS}) ++ boost_test_run(${RD} DEPENDS boost_unit_test_framework) ++endforeach(RD ${RUN_TESTS_WITH_DEPS}) ++ ++set(COMPILE_FAIL_TESTS ++ fail_implicit_conversion ++ fail_quantity_construct ++ fail_quantity_assign ++ fail_quantity_add ++ fail_quantity_subtract ++ fail_quantity_add_assign ++ fail_quantity_sub_assign ++ fail_quantity_scalar_add ++ fail_quantity_scalar_sub ++ fail_quantity_unit_add ++ fail_quantity_unit_subtract ++ fail_scalar_quantity_add ++ fail_scalar_quantity_sub ++ fail_unit_quantity_add ++ fail_unit_quantity_subtract ++ fail_adl_detail ++ fail_heterogeneous_unit ++ fail_base_dimension ++ fail_add_temperature ++ fail_quantity_non_unit ++ ) ++ ++foreach(F ${COMPILE_FAIL_TESTS}) ++ boost_test_compile_fail(${F}) ++endforeach(F ${COMPILE_FAIL_TESTS}) +diff --git a/libs/unordered/CMakeLists.txt b/libs/unordered/CMakeLists.txt +new file mode 100644 +index 0000000..b7dd577 +--- /dev/null ++++ b/libs/unordered/CMakeLists.txt +@@ -0,0 +1,29 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ unordered_map.hpp ++ unordered_set.hpp ++ unordered ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ unordered ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/unordered/module.cmake b/libs/unordered/module.cmake +new file mode 100644 +index 0000000..30e2769 +--- /dev/null ++++ b/libs/unordered/module.cmake +@@ -0,0 +1 @@ ++boost_module(unordered DEPENDS config functional) +diff --git a/libs/unordered/test/CMakeLists.txt b/libs/unordered/test/CMakeLists.txt +new file mode 100644 +index 0000000..a941b96 +--- /dev/null ++++ b/libs/unordered/test/CMakeLists.txt +@@ -0,0 +1,24 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(unordered BOOST_DEPENDS test) ++ ++# GCC Compilers ++IF(CMAKE_COMPILER_IS_GNUCC) ++ SET(test_compile_flags "-Wsign-promo -Wunused-parameter") ++ENDIF(CMAKE_COMPILER_IS_GNUCC) ++ ++# Intel Compiler flags ++IF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ SET(test_compile_flags "${test_compile_flags} -strict_ansi -cxxlib-icc") ++ENDIF( ${CMAKE_CXX_COMPILER} MATCHES "icpc" ) ++ ++set (swap_compile_flags "${test_compile_flags} -DBOOST_UNORDERED_SWAP_METHOD=2") ++ ++ ++ ++add_subdirectory(exception) ++add_subdirectory(unordered) +\ No newline at end of file +diff --git a/libs/unordered/test/exception/CMakeLists.txt b/libs/unordered/test/exception/CMakeLists.txt +new file mode 100644 +index 0000000..aacdf3d +--- /dev/null ++++ b/libs/unordered/test/exception/CMakeLists.txt +@@ -0,0 +1,25 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++foreach(test ++ constructor_exception_tests ++ copy_exception_tests ++ assign_exception_tests ++ insert_exception_tests ++ erase_exception_tests ++ rehash_exception_tests ++ ) ++ boost_test_run(${test} ++ COMPILE_FLAGS ${test_compile_flags} ++ DEPENDS boost_unit_test_framework) ++endforeach(test ${unordered_tests}) ++ ++#-- run the swap test ++boost_test_run(swap_exception_tests ++ COMPILE_FLAGS ${swap_compile_flags} ++ DEPENDS boost_unit_test_framework) ++ +diff --git a/libs/unordered/test/unordered/CMakeLists.txt b/libs/unordered/test/unordered/CMakeLists.txt +new file mode 100644 +index 0000000..68d92be +--- /dev/null ++++ b/libs/unordered/test/unordered/CMakeLists.txt +@@ -0,0 +1,43 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#------------------------------------------------------------------------------- ++# Unordered Tests ++foreach(test ++ fwd_set_test ++ fwd_map_test ++ compile_set ++ compile_map ++ simple_tests ++ equivalent_keys_tests ++ constructor_tests ++ copy_tests ++ move_tests ++ assign_tests ++ insert_tests ++ insert_stable_tests ++ unnecessary_copy_tests ++ erase_tests ++ erase_equiv_tests ++ find_tests ++ at_tests ++ bucket_tests ++ load_factor_tests ++ rehash_tests ++ equality_tests ++ ) ++ boost_test_run(${test} ++ COMPILE_FLAGS ${test_compile_flags} ++ DEPENDS boost_unit_test_framework) ++endforeach() ++ ++boost_test_run(link_test link_test_1.cpp link_test_2.cpp) ++ ++#-- run the swap test ++boost_test_run(swap_tests ++ COMPILE_FLAGS ${swap_compile_flags} ++ DEPENDS boost_unit_test_framework) ++ +diff --git a/libs/utility/CMakeLists.txt b/libs/utility/CMakeLists.txt +new file mode 100644 +index 0000000..f6285c4 +--- /dev/null ++++ b/libs/utility/CMakeLists.txt +@@ -0,0 +1,37 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ assert.hpp ++ call_traits.hpp ++ checked_delete.hpp ++ compressed_pair.hpp ++ current_function.hpp ++ operators.hpp ++ throw_exception.hpp ++ utility.hpp ++ utility ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ utility ++ # SRCDIRS ++ TESTDIRS test swap/test enable_if/test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Various small utilities for C++ programming." ++ MODULARIZED ++ AUTHORS "David Abrahams " ++ "Brad King" ++ "Douglas Gregor " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/utility/enable_if/test/CMakeLists.txt b/libs/utility/enable_if/test/CMakeLists.txt +new file mode 100644 +index 0000000..be95145 +--- /dev/null ++++ b/libs/utility/enable_if/test/CMakeLists.txt +@@ -0,0 +1,20 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++foreach(T ++ constructors ++ dummy_arg_disambiguation ++ lazy ++ lazy_test ++ member_templates ++ namespace_disambiguation ++ no_disambiguation ++ partial_specializations ++ ) ++ boost_test_run(${T} DEPENDS boost_test_exec_monitor) ++endforeach() ++ ++ +diff --git a/libs/utility/module.cmake b/libs/utility/module.cmake +new file mode 100644 +index 0000000..4d78340 +--- /dev/null ++++ b/libs/utility/module.cmake +@@ -0,0 +1 @@ ++boost_module(utility DEPENDS iterator exception detail ) +\ No newline at end of file +diff --git a/libs/utility/swap/test/CMakeLists.txt b/libs/utility/swap/test/CMakeLists.txt +new file mode 100644 +index 0000000..2562313 +--- /dev/null ++++ b/libs/utility/swap/test/CMakeLists.txt +@@ -0,0 +1,41 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++foreach(T ++ root_header_1 root_header_2 ++ lib_header_1 lib_header_2 ++ mixed_headers_1 mixed_headers_2) ++ boost_test_compile(${T}) ++endforeach() ++ ++ ++# [ run primitive.cpp ../../../test/build//boost_test_exec_monitor/static ] ++ ++ ++foreach(T ++ primitive ++ specialized_in_boost ++ specialized_in_global ++ specialized_in_other ++ specialized_in_std ++ specialized_in_boost_and_other ++ std_bitset ++ std_dateorder ++ std_string ++ std_typeinfo_ptr ++ std_vector_of_boost ++ std_vector_of_global ++ std_vector_of_other ++ no_ambiguity_in_boost ++ array_of_array_of_class ++ array_of_array_of_int ++ array_of_class ++ array_of_int ++ array_of_template) ++ boost_test_run(${T} DEPENDS boost_test_exec_monitor) ++endforeach() ++ +diff --git a/libs/utility/test/CMakeLists.txt b/libs/utility/test/CMakeLists.txt +new file mode 100644 +index 0000000..4ed28b6 +--- /dev/null ++++ b/libs/utility/test/CMakeLists.txt +@@ -0,0 +1,47 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(utility BOOST_DEPENDS test) ++ ++boost_test_run(addressof_fn_test ../addressof_fn_test.cpp) ++boost_test_run(addressof_test ../addressof_test.cpp) ++boost_test_run(addressof_test2 ../addressof_test2.cpp) ++boost_test_run(assert_test ../assert_test.cpp) ++boost_test_run(base_from_member_test ../base_from_member_test.cpp) ++boost_test_run(binary_search_test ../binary_search_test.cpp) ++boost_test_run(call_traits_test ../call_traits_test.cpp ARGS -u) ++boost_test_compile_fail(checked_delete_test ../checked_delete_test.cpp) ++boost_test_run(compressed_pair_test ++ ../compressed_pair_test ++ DEPENDS boost_test_exec_monitor) ++boost_test_run(current_function_test ../current_function_test.cpp) ++boost_test_run(iterators_test ++ ../iterators_test.cpp ++ DEPENDS boost_test_exec_monitor) ++boost_test_run(next_prior_test DEPENDS boost_test_exec_monitor) ++boost_test_compile_fail(noncopyable_test ../noncopyable_test.cpp) ++boost_test_run(numeric_traits_test ../numeric_traits_test.cpp) ++if (${CMAKE_SYSTEM} MATCHES "FreeBSD-.*") ++boost_test_compile_fail("operators_test_compilerbug") ++elseif(${CMAKE_SYSTEM} MATCHES "FreeBSD-.*") ++boost_test_run(operators_test ++ ../operators_test.cpp ++ DEPENDS boost_test_exec_monitor) ++endif(${CMAKE_SYSTEM} MATCHES "FreeBSD-.*") ++boost_test_compile(ref_ct_test ../ref_ct_test.cpp) ++boost_test_run(ref_test ++ ../ref_test.cpp ++ DEPENDS boost_test_exec_monitor) ++boost_test_compile(result_of_test) ++boost_test_run(shared_iterator_test ../shared_iterator_test.cpp) ++boost_test_run(value_init_test ../value_init_test.cpp) ++boost_test_compile_fail(value_init_test_fail1 ++ ../value_init_test_fail1.cpp) ++boost_test_compile_fail(value_init_test_fail2 ++ ../value_init_test_fail2.cpp) ++boost_test_compile_fail(value_init_test_fail3 ++ ../value_init_test_fail3.cpp) ++boost_test_run(verify_test ../verify_test.cpp) +\ No newline at end of file +diff --git a/libs/uuid/CMakeLists.txt b/libs/uuid/CMakeLists.txt +new file mode 100644 +index 0000000..7e68b86 +--- /dev/null ++++ b/libs/uuid/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright (c) 2010 Isidor Zeuner ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ uuid ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ uuid ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "The header uuid.hpp provides an implementation of Universally Unique Identifiers." ++ MODULARIZED ++ AUTHORS "Andy Tompkins" ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/uuid/module.cmake b/libs/uuid/module.cmake +new file mode 100644 +index 0000000..dd00dfc +--- /dev/null ++++ b/libs/uuid/module.cmake +@@ -0,0 +1,3 @@ ++boost_module(uuid) ++ ++ +diff --git a/libs/uuid/test/CMakeLists.txt b/libs/uuid/test/CMakeLists.txt +new file mode 100644 +index 0000000..fe5475d +--- /dev/null ++++ b/libs/uuid/test/CMakeLists.txt +@@ -0,0 +1,52 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(uuid BOOST_DEPENDS test serialization) ++ ++ ++ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB) # -DBOOST_UUID_STATIC_LINK) ++ ++ ++# Make sure each header file is self-contained ++SET(UUID_SUFFIXES uuid uuid_io uuid_serialize uuid_generators nil_generator ++ name_generator string_generator random_generator) ++ ++FOREACH(uuid_suffix ${UUID_SUFFIXES}) ++ boost_test_compile(compile_${uuid_suffix} compile_${uuid_suffix}.cpp) ++ENDFOREACH(uuid_suffix ${UUID_SUFFIXES}) ++ ++boost_test_compile(compile_uuid_no_type_traits ++ compile_uuid.cpp ++ COMPILE_FLAGS -DBOOST_UUID_NO_TYPE_TRAITS ++ ) ++ ++# ++SET(TEST_SUFFIXES ++ uuid # main test ++ io # uuid_io.hpp ++ nil_generator name_generator string_generator random_generator # generators ++ tagging # tagging an object ++ uuid_class # test uuid class ++ sha1 # test sha1 hash function ++ ) ++ ++FOREACH(test_suffix ${TEST_SUFFIXES}) ++ boost_test_run(test_${test_suffix} test_${test_suffix}.cpp) ++ENDFOREACH(test_suffix ${TEST_SUFFIXES}) ++ ++# Test inclucing all .hpp files in 2 translations units ++# to look for issues when using multiple translation units ++# eg. missing inline on a global functionstate is not missing ++boost_test_run(test_include test_include1.cpp test_include2.cpp) ++ ++# Test serializing uuids ++boost_test_run(test_serialization test_serialization.cpp ++ DEPENDS boost_serialization SHARED) ++ ++# TODO - This test fails to like with boost_wserialization ++#boost_test_run(test_serialization test_serialization.cpp ++# DEPENDS boost_serialization boost_wserialization SHARED ++# COMPILE_FLAGS -DBOOST_NO_STD_WSTREAMBUF) +diff --git a/libs/variant/CMakeLists.txt b/libs/variant/CMakeLists.txt +new file mode 100644 +index 0000000..cbd2edb +--- /dev/null ++++ b/libs/variant/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ variant.hpp ++ variant ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ variant ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ # DESCRIPTION ++ MODULARIZED ++ # AUTHORS ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/variant/module.cmake b/libs/variant/module.cmake +new file mode 100644 +index 0000000..0d9b7c3 +--- /dev/null ++++ b/libs/variant/module.cmake +@@ -0,0 +1 @@ ++boost_module(variant DEPENDS utility) +\ No newline at end of file +diff --git a/libs/variant/test/CMakeLists.txt b/libs/variant/test/CMakeLists.txt +new file mode 100644 +index 0000000..ec6ec1c +--- /dev/null ++++ b/libs/variant/test/CMakeLists.txt +@@ -0,0 +1,15 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_additional_test_dependencies(variant BOOST_DEPENDS test) ++ ++boost_test_run(test1 test1.cpp class_a.cpp) ++boost_test_run(test4 test4.cpp class_a.cpp) ++set(tests test2 test3 test5 test6 test7 test8 recursive_variant_test variant_reference_test variant_comparison_test variant_visit_test) ++ ++foreach(test ${tests}) ++ boost_test_run(${test}) ++endforeach(test ${tests}) +diff --git a/libs/wave/CMakeLists.txt b/libs/wave/CMakeLists.txt +new file mode 100644 +index 0000000..0190577 +--- /dev/null ++++ b/libs/wave/CMakeLists.txt +@@ -0,0 +1,28 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ wave.hpp ++ wave ++) ++ ++# Add a library target to the build system ++boost_library_project(wave ++ ++ SRCDIRS src ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "A standards-conformant and highly-configurable implementation of the mandated C99/C++ preprocessor functionality packed behind an easy to use iterator interface." ++ MODULARIZED ++ AUTHORS "Hartmut Kaiser " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/wave/module.cmake b/libs/wave/module.cmake +new file mode 100644 +index 0000000..32a3502 +--- /dev/null ++++ b/libs/wave/module.cmake +@@ -0,0 +1 @@ ++boost_module(wave DEPENDS filesystem program_options spirit thread intrusive) +\ No newline at end of file +diff --git a/libs/wave/src/CMakeLists.txt b/libs/wave/src/CMakeLists.txt +new file mode 100644 +index 0000000..63a2115 +--- /dev/null ++++ b/libs/wave/src/CMakeLists.txt +@@ -0,0 +1,24 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_add_library(wave ++ ++ instantiate_cpp_exprgrammar.cpp ++ instantiate_cpp_grammar.cpp ++ instantiate_cpp_literalgrs.cpp ++ instantiate_defined_grammar.cpp ++ instantiate_predef_macros.cpp ++ instantiate_re2c_lexer.cpp ++ instantiate_re2c_lexer_str.cpp ++ token_ids.cpp ++ wave_config_constant.cpp ++ cpplexer/re2clex/aq.cpp ++ cpplexer/re2clex/cpp_re.cpp ++ ++ DEPENDS boost_filesystem boost_thread boost_date_time ++ SHARED_COMPILE_FLAGS "-DBOOST_ALL_DYN_LINK=1" ++ NO_SINGLE_THREADED ++ ) +diff --git a/libs/wave/test/CMakeLists.txt b/libs/wave/test/CMakeLists.txt +new file mode 100644 +index 0000000..880cf8d +--- /dev/null ++++ b/libs/wave/test/CMakeLists.txt +@@ -0,0 +1,8 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++message(STATUS "wave tests need love") ++ +diff --git a/libs/xpressive/CMakeLists.txt b/libs/xpressive/CMakeLists.txt +new file mode 100644 +index 0000000..c59fcaa +--- /dev/null ++++ b/libs/xpressive/CMakeLists.txt +@@ -0,0 +1,27 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++#---------------------------------------------------------------------------- ++# This file was automatically generated from the original CMakeLists.txt file ++# Add a variable to hold the headers for the library ++set (lib_headers ++ xpressive ++) ++ ++# Add a library target to the build system ++boost_library_project( ++ xpressive ++ # SRCDIRS ++ TESTDIRS test ++ HEADERS ${lib_headers} ++ # DOCDIRS ++ DESCRIPTION "Regular expressions that can be written as strings or as expression templates, and which can refer to each other and themselves recursively with the power of context-free grammars." ++ MODULARIZED ++ AUTHORS "Eric Niebler " ++ # MAINTAINERS ++) ++ ++ +diff --git a/libs/xpressive/module.cmake b/libs/xpressive/module.cmake +new file mode 100644 +index 0000000..ecd1f5e +--- /dev/null ++++ b/libs/xpressive/module.cmake +@@ -0,0 +1 @@ ++boost_module(xpressive DEPENDS fusion proto intrusive numeric) +\ No newline at end of file +diff --git a/libs/xpressive/test/CMakeLists.txt b/libs/xpressive/test/CMakeLists.txt +new file mode 100644 +index 0000000..66cb9d3 +--- /dev/null ++++ b/libs/xpressive/test/CMakeLists.txt +@@ -0,0 +1,84 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++# : requirements ++# intel:off ++# msvc,stlport:_STLP_EXPOSE_GLOBALS_IMPLEMENTATION ++ ++# [ linkp multiple_defs1.cpp multiple_defs2.cpp : : multiple_defs ] ++ ++# TODO: Fix these ++# boost_test_fail("multipledefs") ++# boost_test_fail("msvc-stlport") ++boost_additional_test_dependencies(xpressive BOOST_DEPENDS test intrusive numeric range typeof function_types) ++ ++if (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) ++ FILE(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/libs/date_time/data") ++ execute_process(COMMAND cmake -E copy "${CMAKE_SOURCE_DIR}/libs/xpressive/test/regress.txt" "${CMAKE_CURRENT_BINARY_DIR}") ++endif (NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) ++ ++SET(runtests ++ regress ++ c_traits ++ test1 ++ test2 ++ test3 ++ test4 ++ test5 ++ test6 ++ test7 ++ test8 ++ test9 ++ test10 ++ test11 ++ test1u ++ test2u ++ test3u ++ test4u ++ test5u ++ test6u ++ test7u ++ test8u ++ test9u ++ test10u ++ test11u ++ misc1 ++ misc2 ++ test_format ++ test_cycles ++ test_non_char ++ test_static ++ test_actions ++ test_assert ++ test_symbols ++ test_dynamic ++ test_dynamic_grammar ++ test_skip ++ ) ++ ++foreach(runtest ${runtests}) ++ boost_test_run(${runtest} DEPENDS boost_unit_test_framework ) ++endforeach(runtest ${runtests}) ++ ++boost_test_link(multiple_defs multiple_defs1.cpp multiple_defs2.cpp) ++ ++set(compiletests ++ test_basic_regex ++ test_match_results ++ test_regex_algorithms ++ test_regex_compiler ++ test_regex_constants ++ test_regex_error ++ test_regex_iterator ++ test_regex_primitives ++ test_regex_token_iterator ++ test_regex_traits ++ test_sub_match ++ ) ++ ++foreach(compiletest ${compiletests}) ++ boost_test_compile(${compiletest}) ++endforeach(compiletest ${compiletests}) +diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt +new file mode 100644 +index 0000000..31ac39f +--- /dev/null ++++ b/tools/CMakeLists.txt +@@ -0,0 +1,122 @@ ++# ++# Copyright Troy D. Straszheim, Doug Gregor ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++ ++macro(boost_collect_lib_dependencies varname filename) ++ #message(STATUS "boost_collect_lib_dependencies.... ${Boost_SOURCE_DIR}/libs") ++ file(GLOB BOOST_LIBRARY_CMAKE_FILES ++ RELATIVE "${CMAKE_LIBS_SOURCE_DIR}" "${BOOST_LIBS_SOURCE_DIR}/*/${filename}") ++ foreach(BOOST_LIB_CMAKE_FILE ${BOOST_LIBRARY_CMAKE_FILES}) ++ #message(STATUS "-- BOOST_LIB_CMAKE_FILE: ${BOOST_LIB_CMAKE_FILE}") ++ get_filename_component(BOOST_LIB_DIR ${BOOST_LIB_CMAKE_FILE} PATH) ++ set(${varname} ${${varname}} ${BOOST_LIB_DIR}) ++ endforeach(BOOST_LIB_CMAKE_FILE ${BOOST_LIBRARY_CMAKE_FILES}) ++endmacro(boost_collect_lib_dependencies varname) ++ ++ ++# Find all of the subdirectories with .cmake files in them. These are ++# the libraries with dependencies. ++boost_collect_lib_dependencies(BOOST_MODULE_DIRS "module.cmake") ++foreach(subdir ${BOOST_MODULE_DIRS}) ++ #message("BOOST_MODULE_DIRS=${BOOST_MODULE_DIRS}") ++ include("${subdir}/module.cmake") ++endforeach(subdir) ++ ++ ++############################################################################### ++# This macro is an internal utility macro ++# TODO: Document this if it stays around ++# ++# example usage: ++# boost_tool_dependencies( BOOST_DEPENDS test) ++# ++macro(boost_tool_dependencies) ++ parse_arguments(BOOST_TEST ++ "BOOST_DEPENDS" ++ "" ++ ${ARGN} ++ ) ++ set (THIS_TEST_DEPENDS_ALL "") ++ # message (STATUS "BOOST_TEST_BOOST_DEPENDS: ${BOOST_TEST_BOOST_DEPENDS}") ++ foreach(libname ${BOOST_TEST_BOOST_DEPENDS}) ++ # message(STATUS "libname: ${libname}") ++ string(TOUPPER "BOOST_${libname}_DEPENDS" THIS_PROJECT_DEPENDS) ++ # message(STATUS "${THIS_PROJECT_DEPENDS}: ${${THIS_PROJECT_DEPENDS}}") ++ # set(THIS_TEST_DEPENDS_ALL ${libname} ${${THIS_PROJECT_DEPENDS}} ) ++ # message(STATUS "${THIS_TEST_DEPENDS_ALL}: ${${THIS_TEST_DEPENDS_ALL}}") ++ ++ list(FIND THIS_TEST_DEPENDS_ALL ${libname} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_TEST_DEPENDS_ALL ${libname}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ string(TOUPPER "BOOST_${libname}_DEPENDS" THIS_PROJECT_DEPENDS) ++ # message(STATUS "${additional_lib}: ===> ${${THIS_PROJECT_DEPENDS}}") ++ set(ADDED_DEPS TRUE) ++ while (ADDED_DEPS) ++ set(ADDED_DEPS FALSE) ++ foreach(DEP ${THIS_TEST_DEPENDS_ALL}) ++ string(TOUPPER "BOOST_${DEP}_DEPENDS" DEP_DEPENDS) ++ foreach(DEPDEP ${${DEP_DEPENDS}}) ++ list(FIND THIS_TEST_DEPENDS_ALL ${DEPDEP} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_TEST_DEPENDS_ALL ${DEPDEP}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ endforeach() ++ endforeach() ++ endwhile() ++ # message(STATUS "-> Dependencies for ${libname}") ++ # message(STATUS "-> THIS_TEST_DEPENDS_ALL: ${THIS_TEST_DEPENDS_ALL}") ++ ++ endforeach(libname ${BOOST_TEST_BOOST_DEPENDS}) ++ foreach (include ${THIS_TEST_DEPENDS_ALL}) ++ # ++ # Modularization temporarily disabled ++ # ++ # include_directories("${Boost_SOURCE_DIR}/libs/${include}/include") ++ # ++ endforeach (include ${includes}) ++ ++endmacro(boost_tool_dependencies) ++# ++############################################################################### ++ ++set(BUILD_TOOLS "NONE" CACHE STRING "Semicolon-separated list of tools to build") ++ ++message(STATUS "") ++if (BUILD_TOOLS STREQUAL "NONE") ++ ++ colormsg(HIGRAY "BUILD_TOOLS is NONE: skipping tools.") ++ ++else() ++ ++ colormsg(_HIBLUE_ "Reading tools...") ++ message(STATUS "") ++ ++ file(GLOB BOOST_TOOL_CMAKE_FILES ++ RELATIVE "${CMAKE_TOOLS_PARENT_DIR}" "${BOOST_TOOLS_PARENT_DIR}/*/CMakeLists.txt") ++ foreach(BOOST_TOOL_CMAKE_FILE ${BOOST_TOOL_CMAKE_FILES}) ++ get_filename_component(BOOST_TOOL_DIR ${BOOST_TOOL_CMAKE_FILE} PATH) ++ set(tooldirs ${tooldirs} ${BOOST_TOOL_DIR}) ++ endforeach() ++ ++ foreach(tooldir ++ ${tooldirs} ++ ) ++ get_filename_component(tooldirname ${tooldir} NAME) ++ list(FIND BUILD_TOOLS ${tooldir} THIS_BUILD_TOOLS_INDEX) ++ if ((THIS_BUILD_TOOLS_INDEX GREATER -1) OR (BUILD_TOOLS STREQUAL "ALL")) ++ message(STATUS "+ ${tooldirname}") ++ add_subdirectory(${tooldir}) ++ endif() ++ ++ endforeach() ++ ++endif() ++ ++message(STATUS "") ++ +diff --git a/tools/bcp/CMakeLists.txt b/tools/bcp/CMakeLists.txt +new file mode 100644 +index 0000000..8c435b7 +--- /dev/null ++++ b/tools/bcp/CMakeLists.txt +@@ -0,0 +1,32 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++boost_tool_project(bcp ++ DESCRIPTION "The bcp utility is a tool for extracting subsets of Boost." ++ AUTHORS "John Maddock" ++ ) ++ ++add_definitions(-DBOOST_REGEX_DYN_LINK=1 -DBOOST_TEST_NO_AUTO_LINK=1) ++ ++boost_add_executable( bcp ++ ++ add_path.cpp ++ bcp_imp.cpp ++ copy_path.cpp ++ file_types.cpp ++ fileview.cpp ++ main.cpp ++ path_operations.cpp ++ scan_cvs_path.cpp ++ licence_info.cpp ++ scan_licence.cpp ++ output_licence_info.cpp ++ ++ DEPENDS boost_system boost_filesystem boost_prg_exec_monitor boost_regex ++ STATIC_COMPILE_FLAGS -DBOOST_SYSTEM_STATIC_LINK=1 ++ RELEASE ++ STATIC ++ ) +diff --git a/tools/build/CMake/.gitignore b/tools/build/CMake/.gitignore +new file mode 100644 +index 0000000..5b99088 +--- /dev/null ++++ b/tools/build/CMake/.gitignore +@@ -0,0 +1,12 @@ ++/build ++tmp ++*.pyc ++._* ++bjam ++project-config.jam ++bin.v2/ ++dist/ ++.\#* ++*.tar.* ++*.zip ++ +diff --git a/tools/build/CMake/Boost.bmp b/tools/build/CMake/Boost.bmp +new file mode 100644 +index 0000000..944ab5e +Binary files /dev/null and b/tools/build/CMake/Boost.bmp differ +diff --git a/tools/build/CMake/Boost.png b/tools/build/CMake/Boost.png +new file mode 100644 +index 0000000..b4d51fc +Binary files /dev/null and b/tools/build/CMake/Boost.png differ +diff --git a/tools/build/CMake/BoostConfig.cmake b/tools/build/CMake/BoostConfig.cmake +new file mode 100644 +index 0000000..3519294 +--- /dev/null ++++ b/tools/build/CMake/BoostConfig.cmake +@@ -0,0 +1,249 @@ ++########################################################################## ++# Boost Configuration Support # ++########################################################################## ++# Copyright (C) 2007 Douglas Gregor # ++# Copyright (C) 2007 Troy Straszheim # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# This module defines several variables that provide information about # ++# the target compiler and platform. # ++# # ++# Variables defined: # ++# # ++# BOOST_TOOLSET: # ++# The Boost toolset name, used by the library version mechanism to # ++# encode the compiler and version into the name of the # ++# library. This toolset name will correspond with Boost.Build # ++# version 2's toolset name, including version number. # ++# # ++# MULTI_THREADED_COMPILE_FLAGS: # ++# Compilation flags when building multi-threaded programs. # ++# # ++# MULTI_THREADED_LINK_FLAGS: # ++# Linker flags when building multi-threaded programs. # ++########################################################################## ++include(CheckCXXSourceCompiles) ++ ++ ++# 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" ++ OUTPUT_VARIABLE GCC_VERSION_STRING) ++ ++ # 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 ++ "${GCC_MAJOR_MINOR_VERSION_STRING}") ++ ++ # 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$" ++ OR CMAKE_CXX_COMPILER MATCHES "/icl.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) ++ ++boost_report_pretty("Boost compiler" BOOST_COMPILER) ++boost_report_pretty("Boost toolset" BOOST_TOOLSET) ++ ++# create cache entry ++set(BOOST_PLATFORM "unknown") ++ ++# 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 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) ++ ++ 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() ++ ++# create cache entry ++set(BOOST_PLATFORM ${BOOST_PLATFORM} CACHE STRING "Boost platform name") ++ ++boost_report_pretty("Boost platform" BOOST_PLATFORM) ++ ++# Setup DEBUG_COMPILE_FLAGS, RELEASE_COMPILE_FLAGS, DEBUG_LINK_FLAGS and ++# and RELEASE_LINK_FLAGS based on the CMake equivalents ++if(CMAKE_CXX_FLAGS_DEBUG) ++ if(MSVC) ++ # Eliminate the /MDd flag; we'll add it back when we need it ++ string(REPLACE "/MDd" "" CMAKE_CXX_FLAGS_DEBUG ++ "${CMAKE_CXX_FLAGS_DEBUG}") ++ endif(MSVC) ++ set(DEBUG_COMPILE_FLAGS "${CMAKE_CXX_FLAGS_DEBUG}" CACHE STRING "Compilation flags for debug libraries") ++endif(CMAKE_CXX_FLAGS_DEBUG) ++if(CMAKE_CXX_FLAGS_RELEASE) ++ if(MSVC) ++ # Eliminate the /MD flag; we'll add it back when we need it ++ string(REPLACE "/MD" "" CMAKE_CXX_FLAGS_RELEASE ++ "${CMAKE_CXX_FLAGS_RELEASE}") ++ endif(MSVC) ++ set(RELEASE_COMPILE_FLAGS "${CMAKE_CXX_FLAGS_RELEASE}" CACHE STRING "Compilation flags for release libraries") ++endif(CMAKE_CXX_FLAGS_RELEASE) ++if(CMAKE_SHARED_LINKER_FLAGS_DEBUG) ++ set(DEBUG_LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}" CACHE STRING "Linker flags for debug libraries") ++endif(CMAKE_SHARED_LINKER_FLAGS_DEBUG) ++if(CMAKE_SHARED_LINKER_FLAGS_RELEASE) ++ set(RELEASE_LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}" CACHE STRING "Link flags for release libraries") ++endif(CMAKE_SHARED_LINKER_FLAGS_RELEASE) ++ ++# Set DEBUG_EXE_LINK_FLAGS, RELEASE_EXE_LINK_FLAGS ++if (CMAKE_EXE_LINKER_FLAGS_DEBUG) ++ set(DEBUG_EXE_LINK_FLAGS "${CMAKE_EXE_LINKER_FLAGS_DEBUG}") ++endif (CMAKE_EXE_LINKER_FLAGS_DEBUG) ++if (CMAKE_EXE_LINKER_FLAGS_RELEASE) ++ set(RELEASE_EXE_LINK_FLAGS "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") ++endif (CMAKE_EXE_LINKER_FLAGS_RELEASE) ++ ++# Tweak the configuration and build types appropriately. ++if(CMAKE_CONFIGURATION_TYPES) ++ # Limit CMAKE_CONFIGURATION_TYPES to Debug and Release ++ set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Semicolon-separate list of supported configuration types" FORCE) ++else(CMAKE_CONFIGURATION_TYPES) ++ # Build in release mode by default ++ if (NOT CMAKE_BUILD_TYPE) ++ set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are Release or Debug" FORCE) ++ endif (NOT CMAKE_BUILD_TYPE) ++endif(CMAKE_CONFIGURATION_TYPES) ++ ++# Clear out the built-in C++ compiler and link flags for each of the ++# configurations. ++set(CMAKE_CXX_FLAGS_DEBUG "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_CXX_FLAGS_RELEASE "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_EXE_LINKER_FLAGS_RELEASE "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "Unused by Boost") ++set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused by Boost") ++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}") ++boost_report_pretty("Build name" BUILDNAME) ++ ++set(BUILD_EXAMPLES "NONE" CACHE STRING "Semicolon-separated list of lowercase project names that should have their examples built, or \"ALL\"") ++ ++set(BUILD_PROJECTS "ALL" CACHE STRING "Semicolon-separated list of project to build, or \"ALL\"") ++ ++set(LIB_SUFFIX "" CACHE STRING "Name of suffix on 'lib' directory to which libs will be installed (e.g. add '64' here on certain 64 bit unices)") ++if(LIB_SUFFIX) ++ boost_report_pretty("Lib suffix" LIB_SUFFIX) ++endif() ++ ++# ++# Only modify these if you're testing the cmake build itself ++# ++if(BOOST_CMAKE_SELFTEST) ++ colormsg(HIMAG "***") ++ colormsg(HIMAG "*** SELFTEST ENABLED") ++ colormsg(HIMAG "***") ++ set(root "${CMAKE_CURRENT_SOURCE_DIR}/tools/build/CMake/test") ++ set(BOOST_CMAKE_SELFTEST_ROOT ${root}) ++else() ++ set(root "${CMAKE_CURRENT_SOURCE_DIR}") ++endif() ++ ++set(BOOST_LIBS_PARENT_DIR "${root}/libs" CACHE INTERNAL ++ "Directory to glob tools from... only change to test the build system itself") ++ ++set(BOOST_TOOLS_PARENT_DIR "${root}/tools" CACHE INTERNAL ++ "Directory to glob tools from... only change to test the build system itself") ++ +diff --git a/tools/build/CMake/BoostCore.cmake b/tools/build/CMake/BoostCore.cmake +new file mode 100644 +index 0000000..5c810c6 +--- /dev/null ++++ b/tools/build/CMake/BoostCore.cmake +@@ -0,0 +1,1579 @@ ++########################################################################## ++# Core Functionality for Boost # ++########################################################################## ++# Copyright (C) 2007-2009 Douglas Gregor # ++# Copyright (C) 2007-2009 Troy Straszheim # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# Important developer macros in this file: # ++# # ++# boost_library_project: Defines a Boost library project (e.g., # ++# Boost.Python). # ++# # ++# boost_add_library: Builds library binaries for Boost libraries # ++# with compiled sources (e.g., boost_filesystem). # ++# # ++# boost_add_executable: Builds executables. # ++########################################################################## ++ ++# Defines a Boost library project (e.g., for Boost.Python). Use as: ++# ++# boost_library_project(libname ++# [SRCDIRS srcdir1 srcdir2 ...] ++# [TESTDIRS testdir1 testdir2 ...] ++# [DEPENDS lib1 lib2 ...] ++# [DESCRIPTION description] ++# [AUTHORS author1 author2 ...] ++# [MAINTAINERS maint1 maint2 ...] ++# [MODULARIZED]) ++# ++# where libname is the name of the library (e.g., Python, or ++# Filesystem), srcdir1, srcdir2, etc, are subdirectories containing ++# library sources (for Boost libraries that build actual library ++# binaries), and testdir1, testdir2, etc, are subdirectories ++# containing regression tests. DEPENDS lists the names of the other ++# Boost libraries that this library depends on. If the dependencies ++# are not satisfied (e.g., because the library isn't present or its ++# build is turned off), this library won't be built. ++# ++# DESCRIPTION provides a brief description of the library, which can ++# be used to summarize the behavior of the library for a user. AUTHORS ++# lists the authors of the library, while MAINTAINERS lists the active ++# maintainers. If MAINTAINERS is left empty, it is assumed that the ++# authors are still maintaining the library. Both authors and maintainers ++# should have their name followed by their current e-mail address in ++# angle brackets, with -at- instead of the at sign, e.g., ++# Douglas Gregor ++# ++# Example: ++# boost_library_project( ++# Thread ++# SRCDIRS src ++# TESTDIRS test ++# ) ++macro(boost_library_project LIBNAME) ++ parse_arguments(THIS_PROJECT ++ "SRCDIRS;TESTDIRS;EXAMPLEDIRS;HEADERS;DOCDIRS;DESCRIPTION;AUTHORS;MAINTAINERS" ++ "MODULARIZED" ++ ${ARGN} ++ ) ++ ++ # Set THIS_PROJECT_DEPENDS_ALL to the set of all of its ++ # dependencies, its dependencies' dependencies, etc., transitively. ++ string(TOUPPER "BOOST_${LIBNAME}_DEPENDS" THIS_PROJECT_DEPENDS) ++ set(THIS_PROJECT_DEPENDS_ALL ${${THIS_PROJECT_DEPENDS}}) ++ set(ADDED_DEPS TRUE) ++ while (ADDED_DEPS) ++ set(ADDED_DEPS FALSE) ++ foreach(DEP ${THIS_PROJECT_DEPENDS_ALL}) ++ string(TOUPPER "BOOST_${DEP}_DEPENDS" DEP_DEPENDS) ++ foreach(DEPDEP ${${DEP_DEPENDS}}) ++ list(FIND THIS_PROJECT_DEPENDS_ALL ${DEPDEP} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_PROJECT_DEPENDS_ALL ${DEPDEP}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ endforeach() ++ endforeach() ++ endwhile() ++ ++ string(TOLOWER "${LIBNAME}" libname) ++ string(TOLOWER "${LIBNAME}" BOOST_PROJECT_NAME) ++ string(TOUPPER "${LIBNAME}" ULIBNAME) ++ project(${LIBNAME}) ++ ++ ++ if (THIS_PROJECT_MODULARIZED OR THIS_PROJECT_SRCDIRS) ++ ++ # We only build a component group for modularized libraries or libraries ++ # that have compiled parts. ++ if (COMMAND cpack_add_component_group) ++ # Compute a reasonable description for this library. ++ if (THIS_PROJECT_DESCRIPTION) ++ set(THIS_PROJECT_DESCRIPTION "Boost.${LIBNAME}\n\n${THIS_PROJECT_DESCRIPTION}") ++ ++ if (THIS_PROJECT_AUTHORS) ++ list(LENGTH THIS_PROJECT_AUTHORS THIS_PROJECT_NUM_AUTHORS) ++ if (THIS_PROJECT_NUM_AUTHORS EQUAL 1) ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthor: ") ++ else() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n\nAuthors: ") ++ endif() ++ set(THIS_PROJECT_FIRST_AUTHOR TRUE) ++ foreach(AUTHOR ${THIS_PROJECT_AUTHORS}) ++ string(REGEX REPLACE " *-at- *" "@" AUTHOR ${AUTHOR}) ++ if (THIS_PROJECT_FIRST_AUTHOR) ++ set(THIS_PROJECT_FIRST_AUTHOR FALSE) ++ else() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n ") ++ endif() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${AUTHOR}") ++ endforeach(AUTHOR) ++ endif (THIS_PROJECT_AUTHORS) ++ ++ if (THIS_PROJECT_MAINTAINERS) ++ list(LENGTH THIS_PROJECT_MAINTAINERS THIS_PROJECT_NUM_MAINTAINERS) ++ if (THIS_PROJECT_NUM_MAINTAINERS EQUAL 1) ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainer: ") ++ else() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\nMaintainers: ") ++ endif() ++ set(THIS_PROJECT_FIRST_MAINTAINER TRUE) ++ foreach(MAINTAINER ${THIS_PROJECT_MAINTAINERS}) ++ string(REGEX REPLACE " *-at- *" "@" MAINTAINER ${MAINTAINER}) ++ if (THIS_PROJECT_FIRST_MAINTAINER) ++ set(THIS_PROJECT_FIRST_MAINTAINER FALSE) ++ else() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}\n ") ++ endif() ++ set(THIS_PROJECT_DESCRIPTION "${THIS_PROJECT_DESCRIPTION}${MAINTAINER}") ++ endforeach(MAINTAINER) ++ endif (THIS_PROJECT_MAINTAINERS) ++ endif (THIS_PROJECT_DESCRIPTION) ++ ++ # Create a component group for this library ++ 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 () # COMMAND cpake_add_component_group ++ endif () # THIS_PROJECT_MODULARIZED OR THIS_PROJECT_SRCDIRS ++ ++ if (THIS_PROJECT_MODULARIZED) ++ # ++ # Don't add this module's include directory ++ # until modularization makes sense ++ # ++ # 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 ++ # ++ # ++ # TDS 20091009: disable this modularized stuff, as forcing ++ # people to make modularize (which wastes your source directory) ++ # is a huge hassle and anyway it looks like the 'modularization' ++ # of boost is dead for a while. ++ # ++ ++ # if (${CMAKE_MAJOR_VERSION} GREATER 1 AND ${CMAKE_MINOR_VERSION} GREATER 6) ++ # # Install this module's headers ++ # install(DIRECTORY include/boost ++ # DESTINATION ${BOOST_HEADER_DIR} ++ # ${_INSTALL_OPTIONAL} ++ # COMPONENT ${libname}_headers ++ # PATTERN "CVS" EXCLUDE ++ # PATTERN ".svn" EXCLUDE) ++ # else() ++ # if (EXISTS include/boost) ++ # # Install this module's headers ++ # install(DIRECTORY include/boost ++ # DESTINATION ${BOOST_HEADER_DIR} ++ # ${_INSTALL_OPTIONAL} ++ # COMPONENT ${libname}_headers ++ # PATTERN "CVS" EXCLUDE ++ # PATTERN ".svn" EXCLUDE) ++ # endif() ++ # endif() ++ ++ ++ if (COMMAND cpack_add_component) ++ # Determine the header dependencies ++ set(THIS_PROJECT_HEADER_DEPENDS) ++ foreach(DEP ${${THIS_PROJECT_DEPENDS}}) ++ string(TOLOWER ${DEP} dep) ++ if (${dep} STREQUAL "serialization") ++ # TODO: Ugly, ugly hack until the serialization library is modularized ++ elseif (${dep} STREQUAL "thread") ++ else() ++ list(APPEND THIS_PROJECT_HEADER_DEPENDS ${dep}_headers) ++ endif() ++ 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 ${CPACK_COMPONENT_GROUP_NAME} ++ DEPENDS ${THIS_PROJECT_HEADER_DEPENDS}) ++ endif () ++ endif () # THIS_PROJECT_MODULARIZED ++ ++ #-- This is here to debug the modularize code ++ set(modularize_debug FALSE) ++ if (modularize_debug) ++ set(modularize_output ${Boost_BINARY_DIR}) ++ set(modularize_libs_dir "modularize") ++ else (modularize_debug) ++ set(modularize_output ${Boost_SOURCE_DIR}) ++ set(modularize_libs_dir "libs") ++ endif(modularize_debug) ++ ++ # ++ # Modularization code ++ # ++ if(THIS_PROJECT_HEADERS) ++ set(${LIBNAME}-modularize-commands) ++ foreach(item ${THIS_PROJECT_HEADERS}) ++ if(EXISTS "${Boost_SOURCE_DIR}/boost/${item}") ++ if(IS_DIRECTORY "${Boost_SOURCE_DIR}/boost/${item}") ++ list(APPEND ${LIBNAME}-modularize-commands ++ COMMAND "${CMAKE_COMMAND}" -E copy_directory ++ "${Boost_SOURCE_DIR}/boost/${item}" ++ "${modularize_output}/${modularize_libs_dir}/${libname}/include/boost/${item}" ++ ) ++ if (NOT modularize_debug) ++ list(APPEND ${LIBNAME}-modularize-commands ++ COMMAND "${CMAKE_COMMAND}" -E remove_directory "${Boost_SOURCE_DIR}/boost/${item}" ++ ) ++ endif (NOT modularize_debug) ++ else(IS_DIRECTORY "${Boost_SOURCE_DIR}/boost/${item}") ++ list(APPEND ${LIBNAME}-modularize-commands ++ COMMAND "${CMAKE_COMMAND}" -E copy ++ "${Boost_SOURCE_DIR}/boost/${item}" ++ "${modularize_output}/${modularize_libs_dir}/${libname}/include/boost/${item}" ++ ) ++ if (NOT modularize_debug) ++ list(APPEND ${LIBNAME}-modularize-commands ++ COMMAND "${CMAKE_COMMAND}" -E remove "${Boost_SOURCE_DIR}/boost/${item}" ++ ) ++ endif (NOT modularize_debug) ++ ++ endif(IS_DIRECTORY "${Boost_SOURCE_DIR}/boost/${item}") ++ elseif(EXISTS "${Boost_SOURCE_DIR}/${modularize_libs_dir}/${libname}/include/boost/${item}") ++ # Okay; already modularized ++ else() ++ message(SEND_ERROR ++ "Header or directory boost/${item} does not exist. The HEADERS argument in ${Boost_SOURCE_DIR}/${modularize_libs_dir}/${libname}/CMakeLists.txt should be updated.") ++ endif() ++ endforeach(item) ++ ++ if (${LIBNAME}-modularize-commands) ++ set(${LIBNAME}-modularize-commands ++ # COMMAND "${CMAKE_COMMAND}" -E remove_directory "${modularize_output}/libs/${libname}/include" ++ COMMAND "${CMAKE_COMMAND}" -E make_directory ++ "${modularize_output}/${modularize_libs_dir}/${libname}/include/boost" ++ ${${LIBNAME}-modularize-commands} ++ ) ++ if (NOT modularize_debug) ++ set(${LIBNAME}-modularize-commands ++ COMMAND "${CMAKE_COMMAND}" -E remove_directory "${modularize_output}/${modularize_libs_dir}/${libname}/include" ++ ${${LIBNAME}-modularize-commands} ++ ) ++ endif (NOT modularize_debug) ++ # disable modularization ++ # add_custom_target(${LIBNAME}-modularize ++ # ${${LIBNAME}-modularize-commands} ++ # COMMENT "Modularizing ${LIBNAME} headers to project-local dir from monolithic boost dir" ++ # ) ++ ++ if(THIS_PROJECT_MODULARIZED) ++ # ++ # Temporarily disable modularization ++ # ++ # add_dependencies(modularize ${LIBNAME}-modularize) ++ # ++ endif(THIS_PROJECT_MODULARIZED) ++ endif() ++ endif(THIS_PROJECT_HEADERS) ++ ++ # For each of the modular libraries on which this project depends, ++ # add the include path for that library. ++ set(THIS_PROJECT_HAS_HEADER_DEPENDS FALSE) ++ # Temporarily disable modularization stuff. ++ # foreach(DEP ${THIS_PROJECT_DEPENDS_ALL}) ++ # include_directories("${modularize_output}/${modularize_libs_dir}/${DEP}/include") ++ # endforeach(DEP) ++ ++ # TODO: is this still necessary? ++ if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests) ++ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests) ++ endif(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests) ++ if(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests/${BOOST_PROJECT_NAME}) ++ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin/tests/${BOOST_PROJECT_NAME}) ++ endif(NOT EXISTS ${CMAKE_BINARY_DIR}/bin/tests/${BOOST_PROJECT_NAME}) ++ ++ # Include each of the source directories ++ if(THIS_PROJECT_SRCDIRS) ++ foreach(SUBDIR ${THIS_PROJECT_SRCDIRS}) ++ add_subdirectory(${SUBDIR}) ++ endforeach(SUBDIR ${THIS_PROJECT_SRCDIRS}) ++ endif() ++ ++ set(BOOST_ALL_COMPONENTS ${BOOST_ALL_COMPONENTS} PARENT_SCOPE) ++ ++ #set(BOOST_${LIBNAME}_COMPONENTS ${THIS_PROJECT_COMPONENTS} PARENT_SCOPE) ++ #message("BOOST_${LIBNAME}_COMPONENTS ${THIS_PROJECT_COMPONENTS}") ++ #set(BOOST_ALL_COMPONENTS ${LIBNAME} ${BOOST_ALL_COMPONENTS} PARENT_SCOPE) ++ ++ list(FIND BUILD_TESTS ${libname} BUILD_TESTS_INDEX) ++ if ((BUILD_TESTS_INDEX GREATER -1) OR (BUILD_TESTS STREQUAL "ALL")) ++ # set the tests directories list for later inclusion ++ # project(${libname}-tests) ++ if (THIS_PROJECT_TESTDIRS) ++ set(BOOST_TEST_PROJECTS ${ULIBNAME} ${BOOST_TEST_PROJECTS} PARENT_SCOPE) ++ endif() ++ foreach(SUBDIR ${THIS_PROJECT_TESTDIRS}) ++ # message(STATUS "+-- ${SUBDIR}") ++ # add_subdirectory(${SUBDIR}) ++ set(BOOST_${ULIBNAME}_TESTDIRS ++ ${BOOST_${ULIBNAME}_TESTDIRS} ++ ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIR} ++ PARENT_SCOPE) ++ endforeach() ++ endif() ++ ++ list(FIND BUILD_EXAMPLES ${libname} BUILD_EXAMPLES_INDEX) ++ if ((BUILD_EXAMPLES_INDEX GREATER -1) OR (BUILD_EXAMPLES STREQUAL "ALL")) ++ project(${libname}-examples) ++ # Include the example directories. ++ foreach(SUBDIR ${THIS_PROJECT_EXAMPLEDIRS}) ++ message(STATUS "+-- ${SUBDIR}") ++ add_subdirectory(${SUBDIR}) ++ endforeach() ++ endif() ++ ++ if (BUILD_DOCUMENTATION AND THIS_PROJECT_DOCDIRS) ++ foreach(SUBDIR ${THIS_PROJECT_DOCDIRS}) ++ add_subdirectory(${SUBDIR}) ++ endforeach(SUBDIR) ++ endif () ++endmacro(boost_library_project) ++ ++macro(boost_tool_project TOOLNAME) ++ parse_arguments(THIS_PROJECT ++ "DESCRIPTION;AUTHORS;MAINTAINERS" ++ "" ++ ${ARGN} ++ ) ++ ++ set(THIS_PROJECT_IS_TOOL TRUE) ++ ++ string(TOUPPER ${TOOLNAME} UTOOLNAME) ++ project(${TOOLNAME}) ++ ++ include_directories(${CMAKE_CURRENT_SOURCE_DIR}) ++ ++ set(THIS_PROJECT_OKAY ON) ++ set(THIS_PROJECT_FAILED_DEPS "") ++ ++ # message(">>> ${BOOST_${UTOOLNAME}_DEPENDS}") ++ # foreach(DEP ${BOOST_${UTOOLNAME}_DEPENDS}) ++ # get_target_property(dep_location boost_${DEP} TYPE) ++ # message("${DEP} TYPE=${dep_location}") ++ # if (NOT ${dep_location}) ++ # set(THIS_PROJECT_OKAY OFF) ++ # set(THIS_PROJECT_FAILED_DEPS "${THIS_PROJECT_FAILED_DEPS} ${DEP}\n") ++ # endif (NOT ${dep_location}) ++ # endforeach(DEP) ++ # ++ # if (NOT THIS_PROJECT_OKAY) ++ # #if (BUILD_${UTOOLNAME}) ++ # # The user explicitly turned on this tool in a prior ++ # # iteration, but it can no longer be built because one of the ++ # # dependencies was turned off. Force this option off and ++ # # complain about it. ++ # set(BUILD_${UTOOLNAME} OFF CACHE BOOL "Build ${TOOLNAME}" FORCE) ++ # message(SEND_ERROR "Cannot build ${TOOLNAME} due to missing library dependencies:\n${THIS_PROJECT_FAILED_DEPS}") ++ # #endif () ++ # endif (NOT THIS_PROJECT_OKAY) ++ # ++ # if(BUILD_${UTOOLNAME} AND THIS_PROJECT_OKAY) ++ # string(TOLOWER "${TOOLNAME}" toolname) ++ # ++ # # Add this module's include directory ++ # ++ # # For each of the modular libraries on which this project depends, ++ # # add the include path for that library. ++ # foreach(DEP ${BOOST_${UTOOLNAME}_DEPENDS}) ++ # string(TOUPPER ${DEP} UDEP) ++ # # ++ # # Modularization disabled ++ # # ++ # # include_directories("${Boost_SOURCE_DIR}/libs/${DEP}/include") ++ # # ++ # endforeach(DEP) ++ # endif() ++endmacro(boost_tool_project) ++ ++#TODO: Finish this documentation ++# Defines dependencies of a boost project and testing targets. Use as: ++# ++# boost_module(libname ++# DEPENDS srcdir1 srcdir2 ... ++# TEST_DEPENDS testdir1 testdir2 ... ++# ++# Example: ++# boost_library_project( ++# Thread ++# SRCDIRS src ++# TESTDIRS test ++# ) ++# ++macro(boost_module LIBNAME) ++ parse_arguments(THIS_MODULE ++ "DEPENDS" ++ "" ++ ${ARGN} ++ ) ++ ++ # Export BOOST_${LIBNAME}_DEPENDS ++ string(TOUPPER "BOOST_${LIBNAME}_DEPENDS" THIS_MODULE_LIBNAME_DEPENDS) ++ set(${THIS_MODULE_LIBNAME_DEPENDS} ${THIS_MODULE_DEPENDS}) ++ ++ # message(STATUS "----------------------------------------------------------------") ++ # message(STATUS "LIBNAME: ${LIBNAME}") ++ # message(STATUS "THIS_MODULE_DEPENDS: ${THIS_MODULE_DEPENDS}") ++ # message(STATUS "THIS_MODULE_LIBNAME_DEPENDS: ${THIS_MODULE_LIBNAME_DEPENDS}") ++ # message(STATUS "${THIS_MODULE_LIBNAME_DEPENDS}: ${${THIS_MODULE_LIBNAME_DEPENDS}}") ++ # message(STATUS "THIS_MODULE_TEST_DEPENDS: ${THIS_MODULE_TEST_DEPENDS}") ++ # message(STATUS "THIS_MODULE_LIBNAME_TEST_DEPENDS: ${THIS_MODULE_LIBNAME_TEST_DEPENDS}") ++ # message(STATUS "${THIS_MODULE_LIBNAME_TEST_DEPENDS}: ${${THIS_MODULE_LIBNAME_TEST_DEPENDS}}") ++endmacro(boost_module) ++ ++# This macro is an internal utility macro that builds the name of a ++# particular variant of a library ++# ++# boost_library_variant_target_name(feature1 feature2 ...) ++# ++# where feature1, feature2, etc. are the names of features to be ++# included in this variant, e.g., MULTI_THREADED, DEBUG. ++# ++# This macro sets three macros: ++# ++# VARIANT_TARGET_NAME: The suffix that should be appended to the ++# name of the library target to name this variant of the ++# library. For example, this might be "-mt-static" for a static, ++# multi-threaded variant. It should be used to name the CMake ++# library target, e.g., boost_signals-mt-static. ++# ++# VARIANT_VERSIONED_NAME: The suffix that will be added to the name ++# of the generated library, containing information about the ++# particular version of the library and the toolset used to build ++# this library. For example, this might be "-gcc41-mt-1_34" for the ++# multi-threaded, release variant of the library in Boost 1.34.0 as ++# compiled with GCC 4.1. If option MANGLE_LIBNAMES is OFF, this ++# variable is set to the empty string. ++# ++# VARIANT_DISPLAY_NAME: The display name that describes this ++# variant, e.g., "Debug, static, multi-threaded". ++# ++macro(boost_library_variant_target_name) ++ set(VARIANT_TARGET_NAME "") ++ ++ # The versioned name starts with the full Boost toolset ++ if(WINMANGLE_LIBNAMES) ++ set(VARIANT_VERSIONED_NAME "-${BOOST_TOOLSET}") ++ else(WINMANGLE_LIBNAMES) ++ set(VARIANT_VERSIONED_NAME "") ++ endif(WINMANGLE_LIBNAMES) ++ ++ # Add -mt for multi-threaded libraries ++ list_contains(VARIANT_IS_MT MULTI_THREADED ${ARGN}) ++ if (VARIANT_IS_MT) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-mt") ++ ++ # If we're creating versioned names, tack on "-mt" ++ set(VARIANT_VERSIONED_NAME "${VARIANT_VERSIONED_NAME}-mt") ++ endif (VARIANT_IS_MT) ++ ++ # Add -static for static libraries, -shared for shared libraries ++ list_contains(VARIANT_IS_STATIC STATIC ${ARGN}) ++ if (VARIANT_IS_STATIC) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-static") ++ set(VARIANT_DISPLAY_NAME "Static") ++ else (VARIANT_IS_STATIC) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-shared") ++ set(VARIANT_DISPLAY_NAME "Shared") ++ endif (VARIANT_IS_STATIC) ++ ++ # Add "multi-threaded" to the display name for multithreaded libraries. ++ if (VARIANT_IS_MT) ++ set(VARIANT_DISPLAY_NAME "${VARIANT_DISPLAY_NAME}, multi-threaded") ++ endif () ++ ++ # Compute the ABI tag, which depends on various kinds of options ++ set(VARIANT_ABI_TAG "") ++ ++ # Linking statically to the runtime library ++ list_contains(VARIANT_IS_STATIC_RUNTIME STATIC_RUNTIME ${ARGN}) ++ if (VARIANT_IS_STATIC_RUNTIME) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-staticrt") ++ set(VARIANT_ABI_TAG "${VARIANT_ABI_TAG}s") ++ set(VARIANT_DISPLAY_NAME "${VARIANT_DISPLAY_NAME}, static runtime") ++ endif (VARIANT_IS_STATIC_RUNTIME) ++ ++ # Using the debug version of the runtime library. ++ # With Visual C++, this comes automatically with debug ++ if (MSVC) ++ list_contains(VARIANT_IS_DEBUG DEBUG ${ARGN}) ++ if (VARIANT_IS_DEBUG) ++ set(VARIANT_ABI_TAG "${VARIANT_ABI_TAG}g") ++ endif (VARIANT_IS_DEBUG) ++ endif (MSVC) ++ ++ # Add -pydebug for debug builds of Python ++ list_contains(VARIANT_IS_PYDEBUG PYTHON_DEBUG ${ARGN}) ++ if (VARIANT_IS_PYDEBUG) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-pydebug") ++ set(VARIANT_ABI_TAG "${VARIANT_ABI_TAG}y") ++ set(VARIANT_DISPLAY_NAME "${VARIANT_DISPLAY_NAME}, Python debugging") ++ endif (VARIANT_IS_PYDEBUG) ++ ++ # TODO: STLport rather than default library ++ # TODO: STLport's deprecated iostreams ++ ++ # Add -debug for debug libraries ++ list_contains(VARIANT_IS_DEBUG DEBUG ${ARGN}) ++ # message("ARGN=${ARGN}") ++ if (VARIANT_IS_DEBUG) ++ set(VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}-debug") ++ ++ set(VARIANT_ABI_TAG "${VARIANT_ABI_TAG}d") ++ ++ set(VARIANT_DISPLAY_NAME "${VARIANT_DISPLAY_NAME}, debug") ++ else() ++ set(VARIANT_DISPLAY_NAME "${VARIANT_DISPLAY_NAME}, release") ++ endif() ++ ++ # If there is an ABI tag, append it to the versioned name ++ if (VARIANT_ABI_TAG) ++ set(VARIANT_VERSIONED_NAME "${VARIANT_VERSIONED_NAME}-${VARIANT_ABI_TAG}") ++ endif (VARIANT_ABI_TAG) ++ ++ if(WINMANGLE_LIBNAMES) ++ # Append the Boost version number to the versioned name ++ if(BOOST_VERSION_SUBMINOR GREATER 0) ++ set(VARIANT_VERSIONED_NAME ++ "${VARIANT_VERSIONED_NAME}-${BOOST_VERSION_MAJOR}_${BOOST_VERSION_MINOR}_${BOOST_VERSION_SUBMINOR}") ++ else(BOOST_VERSION_SUBMINOR GREATER 0) ++ set(VARIANT_VERSIONED_NAME ++ "${VARIANT_VERSIONED_NAME}-${BOOST_VERSION_MAJOR}_${BOOST_VERSION_MINOR}") ++ endif(BOOST_VERSION_SUBMINOR GREATER 0) ++ endif(WINMANGLE_LIBNAMES) ++endmacro(boost_library_variant_target_name) ++ ++# This macro is an internal utility macro that updates compilation and ++# linking flags based on interactions among the features in a variant. ++# ++# boost_feature_interactions(prefix ++# feature1 feature2 ...) ++# ++# where "prefix" is the prefix of the compilation and linking flags ++# that will be updated (e.g., ${prefix}_COMPILE_FLAGS). feature1, ++# feature2, etc. are the names of the features used in this particular ++# variant. If the features in this variant conflict, set ++# ${prefix}_OKAY to FALSE. ++macro(boost_feature_interactions PREFIX) ++ # Don't build or link against a shared library and a static run-time ++ list_contains(IS_SHARED SHARED ${ARGN}) ++ list_contains(IS_STATIC_RUNTIME STATIC_RUNTIME ${ARGN}) ++ if (IS_SHARED AND IS_STATIC_RUNTIME) ++ set(${PREFIX}_OKAY FALSE) ++ endif (IS_SHARED AND IS_STATIC_RUNTIME) ++ ++ # With Visual C++, the dynamic runtime is multi-threaded only ++ if (MSVC) ++ list_contains(IS_DYNAMIC_RUNTIME DYNAMIC_RUNTIME ${ARGN}) ++ list_contains(IS_SINGLE_THREADED SINGLE_THREADED ${ARGN}) ++ if (IS_DYNAMIC_RUNTIME AND IS_SINGLE_THREADED) ++ set(${PREFIX}_OKAY FALSE) ++ endif (IS_DYNAMIC_RUNTIME AND IS_SINGLE_THREADED) ++ endif (MSVC) ++ ++ # Visual C++-specific runtime library flags ++ if(MSVC) ++ list_contains(IS_STATIC_RUNTIME STATIC_RUNTIME ${ARGN}) ++ list_contains(IS_DEBUG DEBUG ${ARGN}) ++ if(IS_DEBUG) ++ if(IS_STATIC_RUNTIME) ++ set(${PREFIX}_COMPILE_FLAGS "/MTd ${${PREFIX}_COMPILE_FLAGS}") ++ else(IS_STATIC_RUNTIME) ++ set(${PREFIX}_COMPILE_FLAGS "/MDd ${${PREFIX}_COMPILE_FLAGS}") ++ endif(IS_STATIC_RUNTIME) ++ else(IS_DEBUG) ++ if(IS_STATIC_RUNTIME) ++ set(${PREFIX}_COMPILE_FLAGS "/MT ${${PREFIX}_COMPILE_FLAGS}") ++ else(IS_STATIC_RUNTIME) ++ set(${PREFIX}_COMPILE_FLAGS "/MD ${${PREFIX}_COMPILE_FLAGS}") ++ endif(IS_STATIC_RUNTIME) ++ endif(IS_DEBUG) ++ endif(MSVC) ++endmacro(boost_feature_interactions) ++ ++# This macro is an internal utility macro that builds a particular ++# variant of a boost library. ++# ++# boost_library_variant(libname ++# feature1 feature2 ...) ++# ++# where libname is the name of the Boost library (e.g., ++# "boost_filesystem") and feature1, feature2, ... are the features ++# that will be used in this variant. ++# ++# This macro will define a new library target based on libname and the ++# specific variant name (see boost_library_variant_target_name), which ++# depends on the utility target libname. The compilation and linking ++# flags for this library are defined by THIS_LIB_COMPILE_FLAGS, ++# THIS_LIB_LINK_FLAGS, THIS_LIB_LINK_LIBS, and all of the compile and ++# linking flags implied by the features provided. ++# ++# If any of the features listed conflict with this library, no new ++# targets will be built. For example, if the library provides the ++# 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}") ++ set(THIS_VARIANT_LINK_FLAGS "${THIS_LIB_LINK_FLAGS}") ++ set(THIS_VARIANT_LINK_LIBS ${THIS_LIB_LINK_LIBS}) ++ ++ # Determine if it is okay to build this variant ++ set(THIS_VARIANT_OKAY TRUE) ++ foreach(ARG ${ARGN}) ++ # If the library itself stated that we cannot build this variant, ++ # don't. For example, we're trying to build a shared library ++ # variant, but the user specified NO_SHARED in the requirements of ++ # the library. ++ if (THIS_LIB_NO_${ARG}) ++ set(THIS_VARIANT_OKAY FALSE) ++ set(SELECT_VARIANT_FAILURE_REASONS "NO_${ARG}") ++ endif (THIS_LIB_NO_${ARG}) ++ ++ # If the user specified that we should not build any variants of ++ # this kind, don't. For example, if the ENABLE_SHARED option is ++ # off, don't build shared libraries. ++ if(NOT ENABLE_${ARG}) ++ set(THIS_VARIANT_OKAY FALSE) ++ set(SELECT_VARIANT_FAILURE_REASONS "variant disabled because ENABLE_${ARG} is OFF") ++ endif(NOT ENABLE_${ARG}) ++ ++ # Accumulate compile and link flags ++ set(THIS_VARIANT_COMPILE_FLAGS "${THIS_VARIANT_COMPILE_FLAGS} ${THIS_LIB_${ARG}_COMPILE_FLAGS} ${${ARG}_COMPILE_FLAGS}") ++ set(THIS_VARIANT_LINK_FLAGS "${THIS_VARIANT_LINK_FLAGS} ${THIS_LIB_${ARG}_LINK_FLAGS} ${${ARG}_LINK_FLAGS}") ++ set(THIS_VARIANT_LINK_LIBS ${THIS_VARIANT_LINK_LIBS} ${THIS_LIB_${ARG}_LINK_LIBS} ${${ARG}_LINK_LIBS}) ++ endforeach(ARG ${ARGN}) ++ ++ # message("boost_library_variant(${LIBNAME} ${ARGN})") ++ ++ # Handle feature interactions ++ boost_feature_interactions("THIS_VARIANT" ${ARGN}) ++ boost_library_variant_target_name(${ARGN}) ++ # Determine the suffix for this library target ++ set(VARIANT_LIBNAME "${LIBNAME}${VARIANT_TARGET_NAME}") ++ trace(VARIANT_LIBNAME) ++ ++ set(DEPENDENCY_FAILURES "") ++ foreach(dep ${THIS_LIB_DEPENDS}) ++ trace(dep) ++ dependency_check("${dep}${VARIANT_TARGET_NAME}") ++ endforeach() ++ trace(THIS_VARIANT_OKAY) ++ trace(DEPENDENCY_FAILURES) ++ ++ # ++ # Announce dependency failures only if this variant ++ # is otherwise OK ++ # ++ if(THIS_VARIANT_OKAY AND DEPENDENCY_FAILURES) ++ set(THIS_VARIANT_OKAY FALSE) ++ # separate_arguments(DEPENDENCY_FAILURES) ++ colormsg(HIRED " ${LIBNAME}${VARIANT_TARGET_NAME}" RED "(library) disabled due to dependency failures:") ++ foreach (depfail ${DEPENDENCY_FAILURES}) ++ colormsg(RED " " YELLOW "${depfail}") ++ endforeach() ++ endif() ++ ++ if (THIS_VARIANT_OKAY) ++ ++ # We handle static vs. dynamic libraries differently ++ list_contains(THIS_LIB_IS_STATIC "STATIC" ${ARGN}) ++ ++ if (THIS_LIB_IS_STATIC) ++ ++ add_library(${VARIANT_LIBNAME} STATIC ${THIS_LIB_SOURCES}) ++ ++ # 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. ++ if(WIN32 AND NOT (CYGWIN OR MINGW)) ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ PREFIX "${LIBPREFIX}" ++ ) ++ endif() ++ ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ OUTPUT_NAME "${LIBNAME}${VARIANT_VERSIONED_NAME}" ++ CLEAN_DIRECT_OUTPUT 1 ++ COMPILE_FLAGS "${THIS_VARIANT_COMPILE_FLAGS}" ++ LINK_FLAGS "${THIS_VARIANT_LINK_FLAGS}" ++ LABELS "${BOOST_PROJECT_NAME}" ++ ) ++ ++ elseif (THIS_LIB_MODULE) ++ ++ add_library(${VARIANT_LIBNAME} MODULE ${THIS_LIB_SOURCES}) ++ ++ # ++ # You don't set SOVERSION here... nothing links "to" these things ++ # ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ OUTPUT_NAME ${LIBNAME} ++ CLEAN_DIRECT_OUTPUT 1 ++ COMPILE_FLAGS "${THIS_VARIANT_COMPILE_FLAGS}" ++ LINK_FLAGS "${THIS_VARIANT_LINK_FLAGS}" ++ LABELS "${BOOST_PROJECT_NAME}" ++ PREFIX "" ++ ) ++ ++ else () # shared ++ ++ add_library(${VARIANT_LIBNAME} SHARED ${THIS_LIB_SOURCES}) ++ ++ if(MINGW) ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ PREFIX "" ++ ) ++ endif() ++ ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ OUTPUT_NAME "${LIBNAME}${VARIANT_VERSIONED_NAME}" ++ CLEAN_DIRECT_OUTPUT 1 ++ COMPILE_FLAGS "${THIS_VARIANT_COMPILE_FLAGS}" ++ LINK_FLAGS "${THIS_VARIANT_LINK_FLAGS}" ++ LABELS "${BOOST_PROJECT_NAME}" ++ ) ++ ++ if (BUILD_SOVERSIONED) ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ SOVERSION "${BOOST_VERSION}" ++ ) ++ endif() ++ endif () ++ ++ # The basic LIBNAME target depends on each of the variants ++ add_dependencies(${LIBNAME} ${VARIANT_LIBNAME}) ++ ++ # Link against whatever libraries this library depends on ++ target_link_libraries(${VARIANT_LIBNAME} ${THIS_VARIANT_LINK_LIBS}) ++ ++ foreach(d ${THIS_LIB_DEPENDS}) ++ # message(STATUS "linking ${d}") ++ target_link_libraries(${VARIANT_LIBNAME} "${d}${VARIANT_TARGET_NAME}") ++ endforeach() ++ ++ export(TARGETS ${VARIANT_LIBNAME} ++ APPEND ++ FILE ${BOOST_EXPORTS_FILE}) ++ ++ if(NOT THIS_LIB_NO_INSTALL) ++ # Setup installation properties ++ string(TOLOWER "${BOOST_PROJECT_NAME}${VARIANT_TARGET_NAME}" LIB_COMPONENT) ++ string(REPLACE "-" "_" LIB_COMPONENT ${LIB_COMPONENT}) ++ ++ # Installation of this library variant ++ string(TOLOWER ${BOOST_PROJECT_NAME} libname) ++ ++ # ++ # tds: componentization disabled for the moment ++ # ++ install(TARGETS ${VARIANT_LIBNAME} ++ EXPORT Boost ++ DESTINATION ${BOOST_LIB_INSTALL_DIR} ++ COMPONENT Boost) #${LIB_COMPONENT}) ++ ++ # set_property( ++ # TARGET ${VARIANT_LIBNAME} ++ # PROPERTY BOOST_CPACK_COMPONENT ++ # ${LIB_COMPONENT}) ++ ++ # Make the library installation component dependent on the library ++ # installation components of dependent libraries. ++ trace(THIS_LIB_DEPENDS) ++ set(THIS_LIB_COMPONENT_DEPENDS) ++ foreach(DEP ${THIS_LIB_DEPENDS}) ++ # We ask the library variant that this library depends on to tell us ++ # what it's associated installation component is. We depend on that ++ # installation component. ++ get_property(DEP_COMPONENT ++ TARGET "${DEP}${VARIANT_TARGET_NAME}" ++ PROPERTY BOOST_CPACK_COMPONENT) ++ ++ if (DEP_COMPONENT) ++ if (DEP_COMPONENT STREQUAL LIB_COMPONENT) ++ # Do nothing: we have library dependencies within one ++ # Boost library ++ else() ++ list(APPEND THIS_LIB_COMPONENT_DEPENDS ${DEP_COMPONENT}) ++ endif() ++ endif() ++ 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 ${CPACK_COMPONENT_GROUP_NAME} ++ DEPENDS ${THIS_LIB_COMPONENT_DEPENDS}) ++ endif () ++ endif(NOT THIS_LIB_NO_INSTALL) ++ endif () ++endmacro(boost_library_variant) ++ ++# Updates the set of default build variants to account for variations ++# in the given feature. ++# ++# boost_add_default_variant(feature-val1 feature-val2 ...) ++# ++# Each new feature creates a new set of build variants using that ++# feature. For example, writing: ++# ++# boost_add_default_variant(SINGLE_THREADED MULTI_THREADED) ++# ++# will create single- and multi-threaded variants of every default ++# library variant already defined, doubling the number of variants ++# that will be built. See the top-level CMakeLists.txt for the set of ++# default variants. ++# ++# Variables affected: ++# ++# BOOST_DEFAULT_VARIANTS: ++# This variable describes all of the variants that will be built ++# by default, and will be updated with each invocation of ++# boost_add_default_variant. The variable itself is a list, where ++# each element in the list contains a colon-separated string ++# naming a specific set of features for that variant, e.g., ++# STATIC:DEBUG:SINGLE_THREADED. ++# ++# BOOST_FEATURES: ++# This variable describes all of the feature sets that we know about, ++# and will be extended each time ither boost_add_default_variant or ++# boost_add_extra_variant is invoked. This macro will contain a list ++# of feature sets, each containing the values for a given feature ++# separated by colons, e.g., "DEBUG:RELEASE". ++# ++# BOOST_ADD_ARG_NAMES: ++# This variable describes all of the feature-specific arguments ++# that can be used for the boost_add_library macro, separated by ++# semicolons. For example, given the use of ++# boost_add_default_variant above, this variable will contain (at ++# least) ++# ++# SINGLE_THREADED_COMPILE_FLAGS;SINGLE_THREADED_LINK_FLAGS; ++# MULTI_THREADED_COMPILE_FLAGS;MULTI_THREADED_LINK_FLAGS ++# ++# When this variable is used in boost_add_library, it turns these ++# names into feature-specific options. For example, ++# MULTI_THREADED_COMPILE_FLAGS provides extra compile flags to be ++# used only for multi-threaded variants of the library. ++# ++# BOOST_ADDLIB_OPTION_NAMES: ++# Like BOOST_ADD_ARG_NAMES, this variable describes ++# feature-specific options to boost_add_library that can be used to ++# turn off building of the library when the variant would require ++# certain features. For example, the NO_SINGLE_THREADED option ++# turns off building of single-threaded variants for a library. ++# ++# BOOST_ADDEXE_OPTION_NAMES: ++# Like BOOST_ADDLIB_OPTION_NAMES, except that that variable ++# describes options to boost_add_executable that can be used to ++# describe which features are needed to build the executable. ++# For example, the MULTI_THREADED option requires that the ++# executable be built against multi-threaded libraries and with ++# multi-threaded options. ++macro(boost_add_default_variant) ++ # Update BOOST_DEFAULT_VARIANTS ++ if (BOOST_DEFAULT_VARIANTS) ++ set(BOOST_DEFAULT_VARIANTS_ORIG ${BOOST_DEFAULT_VARIANTS}) ++ set(BOOST_DEFAULT_VARIANTS) ++ foreach(VARIANT ${BOOST_DEFAULT_VARIANTS_ORIG}) ++ foreach(FEATURE ${ARGN}) ++ list(APPEND BOOST_DEFAULT_VARIANTS "${VARIANT}:${FEATURE}") ++ endforeach(FEATURE ${ARGN}) ++ endforeach(VARIANT ${BOOST_DEFAULT_VARIANTS_ORIG}) ++ set(BOOST_DEFAULT_VARIANTS_ORIG) ++ else (BOOST_DEFAULT_VARIANTS) ++ set(BOOST_DEFAULT_VARIANTS ${ARGN}) ++ endif (BOOST_DEFAULT_VARIANTS) ++ ++ # Set Feature flag options used by the boost_library macro and the ++ # BOOST_FEATURES variable ++ set(BOOST_DEFVAR_FEATURES) ++ foreach(FEATURE ${ARGN}) ++ set(BOOST_ADD_ARG_NAMES ++ "${BOOST_ADD_ARG_NAMES};${FEATURE}_COMPILE_FLAGS;${FEATURE}_LINK_FLAGS;${FEATURE}_LINK_LIBS") ++ set(BOOST_ADDLIB_OPTION_NAMES "${BOOST_ADDLIB_OPTION_NAMES};NO_${FEATURE}") ++ set(BOOST_ADDEXE_OPTION_NAMES "${BOOST_ADDEXE_OPTION_NAMES};${FEATURE}") ++ if (BOOST_DEFVAR_FEATURES) ++ set(BOOST_DEFVAR_FEATURES "${BOOST_DEFVAR_FEATURES}:${FEATURE}") ++ else (BOOST_DEFVAR_FEATURES) ++ set(BOOST_DEFVAR_FEATURES "${FEATURE}") ++ endif (BOOST_DEFVAR_FEATURES) ++ endforeach(FEATURE ${ARGN}) ++ list(APPEND BOOST_FEATURES ${BOOST_DEFVAR_FEATURES}) ++endmacro(boost_add_default_variant) ++ ++# Updates the set of "extra" build variants, which may be used to ++# generate extra, library-specific variants of libraries. ++# ++# boost_add_extra_variant(feature-val1 feature-val2 ...) ++# ++# Each extra viarant makes it possible for libraries to define extra ++# variants. For example, writing: ++# ++# boost_add_extra_variant(PYTHON_NODEBUG PYTHON_DEBUG) ++# ++# creates a PYTHON_NODEBUG/PYTHON_DEBUG feature pair as an extra ++# variant, used by the Boost.Python library, which generates separate ++# variants of the Boost.Python library: one variant uses the Python ++# debug libraries, the other does not. ++# ++# The difference between boost_add_default_variant and ++# boost_add_extra_variant is that adding a new default variant ++# introduces additional variants to *all* Boost libraries, unless ++# those variants are explicitly excluded by the library. Adding a new ++# extra variant, on the other hand, allows libraries to specifically ++# request extra variants using that feature. ++# ++# Variables affected: ++# ++# BOOST_FEATURES: ++# See boost_add_default_variant. ++# ++# BOOST_ADD_ARG_NAMES: ++# See boost_add_default_variant. ++# ++# BOOST_ADDLIB_OPTION_NAMES: ++# See boost_add_default_variant. ++# ++# BOOST_ADDEXE_OPTION_NAMES: ++# See boost_add_default_variant. ++macro(boost_add_extra_variant) ++ set(BOOST_EXTVAR_FEATURES) ++ foreach(FEATURE ${ARGN}) ++ set(BOOST_ADD_ARG_NAMES ++ "${BOOST_ADD_ARG_NAMES};${FEATURE}_COMPILE_FLAGS;${FEATURE}_LINK_FLAGS;${FEATURE}_LINK_LIBS") ++ set(BOOST_ADDLIB_OPTION_NAMES "${BOOST_ADDLIB_OPTION_NAMES};NO_${FEATURE}") ++ set(BOOST_ADDEXE_OPTION_NAMES "${BOOST_ADDEXE_OPTION_NAMES};${FEATURE}") ++ if (BOOST_EXTVAR_FEATURES) ++ set(BOOST_EXTVAR_FEATURES "${BOOST_EXTVAR_FEATURES}:${FEATURE}") ++ else (BOOST_EXTVAR_FEATURES) ++ set(BOOST_EXTVAR_FEATURES "${FEATURE}") ++ endif (BOOST_EXTVAR_FEATURES) ++ endforeach(FEATURE ${ARGN}) ++ list(APPEND BOOST_FEATURES ${BOOST_EXTVAR_FEATURES}) ++endmacro(boost_add_extra_variant) ++ ++# Compute the variant that will be used to build this executable or ++# module, taking into account both the requested features passed to ++# boost_add_executable or boost_add_library and what options the user ++# has set. ++macro(boost_select_variant NAME PREFIX) ++ set(${PREFIX}_DEBUG_AND_RELEASE FALSE) ++ set(SELECT_VARIANT_OKAY TRUE) ++ set(SELECT_VARIANT_FAILURE_REASONS) ++ set(${PREFIX}_VARIANT) ++ ++ foreach(FEATURESET_STR ${BOOST_FEATURES}) ++ trace(FEATURESET_STR) ++ ++ string(REPLACE ":" ";" FEATURESET ${FEATURESET_STR}) ++ separate_arguments(FEATURESET) ++ set(${PREFIX}_REQUESTED_FROM_SET FALSE) ++ foreach (FEATURE ${FEATURESET}) ++ trace(FEATURE) ++ ++ if (${PREFIX}_${FEATURE} AND ENABLE_${FEATURE}) ++ trace(${PREFIX}_${FEATURE}) ++ set(${PREFIX}_REQUESTED_FROM_SET TRUE) ++ list(APPEND ${PREFIX}_VARIANT ${FEATURE}) ++ endif() ++ ++ # if ((NOT userpref_selected) AND ENABLE_${FEATURE}) ++ # # message("YES ${PREFIX}_${FEATURE}") ++ # # Make this feature part of the variant ++ # list(APPEND ${PREFIX}_VARIANT ${FEATURE}) ++ # set(${PREFIX}_REQUESTED_FROM_SET TRUE) ++ # ++ # # The caller has requested this particular feature be used ++ # # when building the executable or module. If we can't satisfy ++ # # that request (because the user has turned off the build ++ # # variants with that feature), then we won't build this ++ # # executable or module. ++ # if (NOT ENABLE_${FEATURE}) ++ # message("NOT ENABLE_${FEATURE}") ++ # set(SELECT_VARIANT_OKAY FALSE) ++ # list(APPEND SELECT_VARIANT_FAILURE_REASONS ++ # "ENABLE_${FEATURE} iz FALSE") ++ # else() ++ # set(unselected FALSE) ++ # endif() ++ # endif() ++ endforeach() ++ ++ if (NOT ${PREFIX}_REQUESTED_FROM_SET) ++ # The caller did not specify which feature value to use from ++ # this set, so find the first feature value that actually works. ++ set(${PREFIX}_FOUND_FEATURE FALSE) ++ ++ trace(${PREFIX}_FOUND_FEATURE) ++ # If this feature set decides between Release and Debug, we ++ # either query CMAKE_BUILD_TYPE to determine which to use (for ++ # makefile targets) or handle both variants separately (for IDE ++ # targets). We only build both variants separately for executable targets. ++ if (FEATURESET_STR STREQUAL "RELEASE:DEBUG") ++ trace(CMAKE_CONFIGURATION_TYPES) ++ if (CMAKE_CONFIGURATION_TYPES) ++ # IDE target: can we build both debug and release? ++ if (ENABLE_DEBUG AND ENABLE_RELEASE) ++ if (${PREFIX} STREQUAL "THIS_EXE") ++ # Remember that we're capable of building both configurations ++ set(${PREFIX}_DEBUG_AND_RELEASE TRUE) ++ ++ # Don't add RELEASE or DEBUG to the variant (yet) ++ set(${PREFIX}_FOUND_FEATURE TRUE) ++ endif () ++ endif () ++ else () ++ # Makefile target: CMAKE_BUILD_TYPE tells us which variant to build ++ trace(CMAKE_BUILD_TYPE) ++ if (CMAKE_BUILD_TYPE STREQUAL "Release" AND ENABLE_RELEASE) ++ # Okay, build the release variant ++ list(APPEND ${PREFIX}_VARIANT RELEASE) ++ set(${PREFIX}_FOUND_FEATURE TRUE) ++ elseif (CMAKE_BUILD_TYPE STREQUAL "Debug" AND ENABLE_DEBUG) ++ # Okay, build the debug variant ++ list(APPEND ${PREFIX}_VARIANT DEBUG) ++ set(${PREFIX}_FOUND_FEATURE TRUE) ++ endif () ++ endif () ++ endif () ++ ++ # Search through all of the features in the set to find one that works ++ foreach (FEATURE ${FEATURESET}) ++ # We only care about the first feature value we find... ++ if (NOT ${PREFIX}_FOUND_FEATURE) ++ # Are we allowed to build this feature? ++ if (ENABLE_${FEATURE}) ++ # Found it: we're done ++ list(APPEND ${PREFIX}_VARIANT ${FEATURE}) ++ set(${PREFIX}_FOUND_FEATURE TRUE) ++ endif (ENABLE_${FEATURE}) ++ endif (NOT ${PREFIX}_FOUND_FEATURE) ++ endforeach (FEATURE ${FEATURESET}) ++ ++ if (NOT ${PREFIX}_FOUND_FEATURE) ++ # All of the features in this set were turned off. ++ # Just don't build anything. ++ set(SELECT_VARIANT_OKAY FALSE) ++ # message("NOT ${PREFIX}_FOUND_FEATURE") ++ endif (NOT ${PREFIX}_FOUND_FEATURE) ++ endif (NOT ${PREFIX}_REQUESTED_FROM_SET) ++ endforeach(FEATURESET_STR ${BOOST_FEATURES}) ++ ++ # Propagate flags from each of the features ++ if (SELECT_VARIANT_OKAY) ++ foreach (FEATURE ${${PREFIX}_VARIANT}) ++ # Add all of the flags for this feature ++ set(${PREFIX}_COMPILE_FLAGS ++ "${${PREFIX}_COMPILE_FLAGS} ${${PREFIX}_${FEATURE}_COMPILE_FLAGS} ${${FEATURE}_COMPILE_FLAGS}") ++ set(${PREFIX}_LINK_FLAGS ++ "${${PREFIX}_LINK_FLAGS} ${${PREFIX}_${FEATURE}_LINK_FLAGS} ${${FEATURE}_LINK_FLAGS}") ++ if (${PREFIX} STREQUAL "THIS_EXE") ++ set(${PREFIX}_LINK_FLAGS ++ "${${PREFIX}_LINK_FLAGS} ${${FEATURE}_EXE_LINK_FLAGS}") ++ endif() ++ set(${PREFIX}_LINK_LIBS ++ ${${PREFIX}_LINK_LIBS} ${${PREFIX}_${FEATURE}_LINK_LIBS} ${${FEATURE}_LINK_LIBS}) ++ endforeach (FEATURE ${${PREFIX}_VARIANT}) ++ ++ # Handle feature interactions ++ boost_feature_interactions("${PREFIX}" ${${PREFIX}_VARIANT}) ++ else () ++ set(${PREFIX}_VARIANT) ++ endif () ++endmacro(boost_select_variant) ++ ++# Creates a new Boost library target that generates a compiled library ++# (.a, .lib, .dll, .so, etc) from source files. This routine will ++# actually build several different variants of the same library, with ++# different compilation options, as determined by the set of "default" ++# library variants. ++# ++# boost_add_library(libname ++# source1 source2 ... ++# [COMPILE_FLAGS compileflags] ++# [feature_COMPILE_FLAGS compileflags] ++# [LINK_FLAGS linkflags] ++# [feature_LINK_FLAGS linkflags] ++# [LINK_LIBS linklibs] ++# [feature_LINK_LIBS linklibs] ++# [DEPENDS libdepend1 libdepend2 ...] ++# [MODULE] ++# [NO_feature] ++# [EXTRA_VARIANTS variant1 variant2 ...] ++# [FORCE_VARIANTS variant1]) ++# ++# where libname is the name of Boost library binary (e.g., ++# "boost_regex") and source1, source2, etc. are the source files used ++# to build the library, e.g., cregex.cpp. ++# ++# This macro has a variety of options that affect its behavior. In ++# several cases, we use the placeholder "feature" in the option name ++# to indicate that there are actually several different kinds of ++# options, each referring to a different build feature, e.g., shared ++# libraries, multi-threaded, debug build, etc. For a complete listing ++# of these features, please refer to the CMakeLists.txt file in the ++# root of the Boost distribution, which defines the set of features ++# that will be used to build Boost libraries by default. ++# ++# The options that affect this macro's behavior are: ++# ++# COMPILE_FLAGS: Provides additional compilation flags that will be ++# used when building all variants of the library. For example, one ++# might want to add "-DBOOST_SIGNALS_NO_LIB=1" through this option ++# (which turns off auto-linking for the Signals library while ++# building it). ++# ++# feature_COMPILE_FLAGS: Provides additional compilation flags that ++# will be used only when building variants of the library that ++# include the given feature. For example, ++# MULTI_THREADED_COMPILE_FLAGS are additional flags that will be ++# used when building a multi-threaded variant, while ++# SHARED_COMPILE_FLAGS will be used when building a shared library ++# (as opposed to a static library). ++# ++# LINK_FLAGS: Provides additional flags that will be passed to the ++# linker when linking each variant of the library. This option ++# should not be used to link in additional libraries; see LINK_LIBS ++# and DEPENDS. ++# ++# feature_LINK_FLAGS: Provides additional flags that will be passed ++# to the linker when building variants of the library that contain a ++# specific feature, e.g., MULTI_THREADED_LINK_FLAGS. This option ++# should not be used to link in additional libraries; see ++# feature_LINK_LIBS. ++# ++# LINK_LIBS: Provides additional libraries against which each of the ++# library variants will be linked. For example, one might provide ++# "expat" as options to LINK_LIBS, to state that each of the library ++# variants will link against the expat library binary. Use LINK_LIBS ++# for libraries external to Boost; for Boost libraries, use DEPENDS. ++# ++# feature_LINK_LIBS: Provides additional libraries for specific ++# variants of the library to link against. For example, ++# MULTI_THREADED_LINK_LIBS provides extra libraries to link into ++# multi-threaded variants of the library. ++# ++# DEPENDS: States that this Boost library depends on and links ++# against another Boost library. The arguments to DEPENDS should be ++# the unversioned name of the Boost library, such as ++# "boost_filesystem". Like LINK_LIBS, this option states that all ++# variants of the library being built will link against the stated ++# libraries. Unlike LINK_LIBS, however, DEPENDS takes particular ++# library variants into account, always linking the variant of one ++# Boost library against the same variant of the other Boost ++# library. For example, if the boost_mpi_python library DEPENDS on ++# boost_python, multi-threaded variants of boost_mpi_python will ++# link against multi-threaded variants of boost_python. ++# ++# 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 ++# some platforms, such as Mac OS X. ++# ++# NO_feature: States that library variants containing a particular ++# feature should not be built. For example, passing ++# NO_SINGLE_THREADED suppresses generation of single-threaded ++# variants of this library. ++# ++# EXTRA_VARIANTS: Specifies that extra variants of this library ++# should be built, based on the features listed. Each "variant" is a ++# colon-separated list of features. For example, passing ++# EXTRA_VARIANTS "PYTHON_NODEBUG:PYTHON_DEBUG" ++# will result in the creation of an extra set of library variants, ++# some with the PYTHON_NODEBUG feature and some with the ++# PYTHON_DEBUG feature. ++# ++# FORCE_VARIANTS: This will force the build system to ALWAYS build this ++# variant of the library not matter what variants are set. ++# ++# Example: ++# boost_add_library( ++# boost_thread ++# barrier.cpp condition.cpp exceptions.cpp mutex.cpp once.cpp ++# recursive_mutex.cpp thread.cpp tss_hooks.cpp tss_dll.cpp tss_pe.cpp ++# tss.cpp xtime.cpp ++# SHARED_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_DLL=1" ++# STATIC_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_LIB=1" ++# NO_SINGLE_THREADED ++# ) ++macro(boost_add_library SHORT_LIBNAME) ++ set(LIBNAME "boost_${SHORT_LIBNAME}") ++ parse_arguments(THIS_LIB ++ "DEPENDS;COMPILE_FLAGS;LINK_FLAGS;LINK_LIBS;EXTRA_VARIANTS;FORCE_VARIANTS;${BOOST_ADD_ARG_NAMES}" ++ "MODULE;NO_INSTALL;${BOOST_ADDLIB_OPTION_NAMES}" ++ ${ARGN} ++ ) ++ ++ set(THIS_LIB_SOURCES ${THIS_LIB_DEFAULT_ARGS}) ++ ++ # ++ # cmake BoostConfig.cmake generation needs to know which ++ # libraries are available ++ # ++ set(BOOST_ALL_COMPONENTS ${SHORT_LIBNAME} ${BOOST_ALL_COMPONENTS} ++ PARENT_SCOPE) ++ ++ # A top-level target that refers to all of the variants of the ++ # library, collectively. ++ add_custom_target(${LIBNAME}) ++ ++ if (THIS_LIB_EXTRA_VARIANTS) ++ # Build the set of variants that we will generate for this library ++ set(THIS_LIB_VARIANTS) ++ foreach(VARIANT ${BOOST_DEFAULT_VARIANTS}) ++ foreach(EXTRA_VARIANT ${THIS_LIB_EXTRA_VARIANTS}) ++ string(REPLACE ":" ";" FEATURES "${EXTRA_VARIANT}") ++ separate_arguments(FEATURES) ++ foreach(FEATURE ${FEATURES}) ++ list(APPEND THIS_LIB_VARIANTS "${VARIANT}:${FEATURE}") ++ endforeach(FEATURE ${FEATURES}) ++ endforeach(EXTRA_VARIANT ${THIS_LIB_EXTRA_VARIANTS}) ++ endforeach(VARIANT ${BOOST_DEFAULT_VARIANTS}) ++ else (THIS_LIB_EXTRA_VARIANTS) ++ set(THIS_LIB_VARIANTS ${BOOST_DEFAULT_VARIANTS}) ++ endif (THIS_LIB_EXTRA_VARIANTS) ++ ++ if (THIS_LIB_FORCE_VARIANTS) ++ # string(TOUPPER "${LIBNAME}_FORCE_VARIANTS" force_variants) ++ # set(${force_variants} ${THIS_LIB_FORCE_VARIANTS} CACHE INTERNAL "") ++ set(ENABLE_${THIS_LIB_FORCE_VARIANTS}_PREV ${ENABLE_${THIS_LIB_FORCE_VARIANTS}} ) ++ set(ENABLE_${THIS_LIB_FORCE_VARIANTS} TRUE) ++ endif (THIS_LIB_FORCE_VARIANTS) ++ ++ # Build each of the library variants ++ foreach(VARIANT_STR ${THIS_LIB_VARIANTS}) ++ string(REPLACE ":" ";" VARIANT ${VARIANT_STR}) ++ separate_arguments(VARIANT) ++ # message("VARIANT=${VARIANT}") ++ boost_library_variant(${LIBNAME} ${VARIANT}) ++ endforeach(VARIANT_STR ${THIS_LIB_VARIANTS}) ++ ++ if (THIS_LIB_FORCE_VARIANTS) ++ set(ENABLE_${THIS_LIB_FORCE_VARIANTS} ${ENABLE_${THIS_LIB_FORCE_VARIANTS}_PREV} ) ++ # message(STATUS "* ^^ ENABLE_${THIS_LIB_FORCE_VARIANTS} ${ENABLE_${THIS_LIB_FORCE_VARIANTS}}") ++ endif (THIS_LIB_FORCE_VARIANTS) ++endmacro(boost_add_library) ++ ++# Creates a new executable from source files. ++# ++# boost_add_executable(exename ++# source1 source2 ... ++# [COMPILE_FLAGS compileflags] ++# [feature_COMPILE_FLAGS compileflags] ++# [LINK_FLAGS linkflags] ++# [feature_LINK_FLAGS linkflags] ++# [LINK_LIBS linklibs] ++# [feature_LINK_LIBS linklibs] ++# [DEPENDS libdepend1 libdepend2 ...] ++# [feature] ++# [NO_INSTALL]) ++# ++# where exename is the name of the executable (e.g., "wave"). source1, ++# source2, etc. are the source files used to build the executable, e.g., ++# cpp.cpp. If no source files are provided, "exename.cpp" will be ++# used. ++# ++# This macro has a variety of options that affect its behavior. In ++# several cases, we use the placeholder "feature" in the option name ++# to indicate that there are actually several different kinds of ++# options, each referring to a different build feature, e.g., shared ++# libraries, multi-threaded, debug build, etc. For a complete listing ++# of these features, please refer to the CMakeLists.txt file in the ++# root of the Boost distribution, which defines the set of features ++# that will be used to build Boost libraries by default. ++# ++# The options that affect this macro's behavior are: ++# ++# COMPILE_FLAGS: Provides additional compilation flags that will be ++# used when building the executable. ++# ++# feature_COMPILE_FLAGS: Provides additional compilation flags that ++# will be used only when building the executable with the given ++# feature (e.g., SHARED_COMPILE_FLAGS when we're linking against ++# shared libraries). Note that the set of features used to build the ++# executable depends both on the arguments given to ++# boost_add_executable (see the "feature" argument description, ++# below) and on the user's choice of variants to build. ++# ++# LINK_FLAGS: Provides additional flags that will be passed to the ++# linker when linking the executable. This option should not be used ++# to link in additional libraries; see LINK_LIBS and DEPENDS. ++# ++# feature_LINK_FLAGS: Provides additional flags that will be passed ++# to the linker when linking the executable with the given feature ++# (e.g., MULTI_THREADED_LINK_FLAGS when we're linking a ++# multi-threaded executable). ++# ++# LINK_LIBS: Provides additional libraries against which the ++# executable will be linked. For example, one might provide "expat" ++# as options to LINK_LIBS, to state that the executable will link ++# against the expat library binary. Use LINK_LIBS for libraries ++# external to Boost; for Boost libraries, use DEPENDS. ++# ++# feature_LINK_LIBS: Provides additional libraries to link against ++# when linking an executable built with the given feature. ++# ++# DEPENDS: States that this executable depends on and links against ++# a Boostlibrary. The arguments to DEPENDS should be the unversioned ++# name of the Boost library, such as "boost_filesystem". Like ++# LINK_LIBS, this option states that the executable will link ++# against the stated libraries. Unlike LINK_LIBS, however, DEPENDS ++# takes particular library variants into account, always linking to ++# the appropriate variant of a Boost library. For example, if the ++# MULTI_THREADED feature was requested in the call to ++# boost_add_executable, DEPENDS will ensure that we only link ++# against multi-threaded libraries. ++# ++# feature: States that the executable should always be built using a ++# given feature, e.g., SHARED linking (against its libraries) or ++# MULTI_THREADED (for multi-threaded builds). If that feature has ++# been turned off by the user, the executable will not build. ++# ++# NO_INSTALL: Don't install this executable with the rest of Boost. ++# ++# OUTPUT_NAME: If you want the executable to be generated somewhere ++# other than the binary directory, pass the path (including ++# directory and file name) via the OUTPUT_NAME parameter. ++# ++# Example: ++# boost_add_executable(wave cpp.cpp ++# DEPENDS boost_wave boost_program_options boost_filesystem ++# boost_serialization ++# ) ++macro(boost_add_executable EXENAME) ++ # Note: ARGS is here to support the use of boost_add_executable in ++ # the testing code. ++ parse_arguments(THIS_EXE ++ "DEPENDS;COMPILE_FLAGS;LINK_FLAGS;LINK_LIBS;OUTPUT_NAME;ARGS;TARGET_PREFIX;${BOOST_ADD_ARG_NAMES}" ++ "NO_INSTALL;${BOOST_ADDEXE_OPTION_NAMES}" ++ ${ARGN} ++ ) ++ ++ # Determine the list of sources ++ if (THIS_EXE_DEFAULT_ARGS) ++ set(THIS_EXE_SOURCES ${THIS_EXE_DEFAULT_ARGS}) ++ else (THIS_EXE_DEFAULT_ARGS) ++ set(THIS_EXE_SOURCES ${EXENAME}.cpp) ++ endif (THIS_EXE_DEFAULT_ARGS) ++ ++ # Whether we can build both debug and release versions of this ++ # executable within an IDE (based on the selected configuration ++ # type). ++ set(THIS_EXE_DEBUG_AND_RELEASE FALSE) ++ ++ # Compute the variant that will be used to build this executable, ++ # taking into account both the requested features passed to ++ # boost_add_executable and what options the user has set. ++ boost_select_variant(${EXENAME} THIS_EXE) ++ ++ # message("THIS_EXE_VARIANT=${THIS_EXE_VARIANT}") ++ # Possibly hyphenate exe's name ++ if (THIS_PROJECT_IS_TOOL) ++ set(THIS_EXE_NAME ${THIS_EXE_TARGET_PREFIX}${EXENAME}) ++ else() ++ set(THIS_EXE_NAME ${BOOST_PROJECT_NAME}-${THIS_EXE_TARGET_PREFIX}${EXENAME}) ++ endif() ++ ++ # Compute the name of the variant targets that we'll be linking ++ # against. We'll use this to link against the appropriate ++ # dependencies. For IDE targets where we can build both debug and ++ # release configurations, create DEBUG_ and RELEASE_ versions of ++ # the macros. ++ if (THIS_EXE_DEBUG_AND_RELEASE) ++ boost_library_variant_target_name(RELEASE ${THIS_EXE_VARIANT}) ++ set(RELEASE_VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}") ++ boost_library_variant_target_name(DEBUG ${THIS_EXE_VARIANT}) ++ set(DEBUG_VARIANT_TARGET_NAME "${VARIANT_TARGET_NAME}") ++ else (THIS_EXE_DEBUG_AND_RELEASE) ++ boost_library_variant_target_name(${THIS_EXE_VARIANT}) ++ endif (THIS_EXE_DEBUG_AND_RELEASE) ++ ++ # Compute the actual set of library dependencies, based on the ++ # variant name we computed above. The RELEASE and DEBUG versions ++ # only apply when THIS_EXE_DEBUG_AND_RELEASE. ++ set(THIS_EXE_ACTUAL_DEPENDS) ++ set(THIS_EXE_RELEASE_ACTUAL_DEPENDS) ++ set(THIS_EXE_DEBUG_ACTUAL_DEPENDS) ++ set(DEPENDENCY_FAILURES "") ++ foreach(LIB ${THIS_EXE_DEPENDS}) ++ if (LIB MATCHES ".*-.*") ++ # The user tried to state exactly which variant to use. Just ++ # propagate the dependency and hope that s/he was ++ # right. Eventually, this should at least warn, because it is ++ # not the "proper" way to do things ++ list(APPEND THIS_EXE_ACTUAL_DEPENDS ${LIB}) ++ list(APPEND THIS_EXE_RELEASE_ACTUAL_DEPENDS ${LIB}) ++ list(APPEND THIS_EXE_DEBUG_ACTUAL_DEPENDS ${LIB}) ++ dependency_check(${LIB}) ++ else () ++ # The user has given the name of just the library target, ++ # e.g., "boost_filesystem". We add on the appropriate variant ++ # name(s). ++ list(APPEND THIS_EXE_ACTUAL_DEPENDS "${LIB}${VARIANT_TARGET_NAME}") ++ list(APPEND THIS_EXE_RELEASE_ACTUAL_DEPENDS "${LIB}${RELEASE_VARIANT_TARGET_NAME}") ++ list(APPEND THIS_EXE_DEBUG_ACTUAL_DEPENDS "${LIB}${DEBUG_VARIANT_TARGET_NAME}") ++ if(THIS_EXE_RELEASE_AND_DEBUG) ++ dependency_check("${LIB}${RELEASE_VARIANT_TARGET_NAME}") ++ dependency_check("${LIB}${DEBUG_VARIANT_TARGET_NAME}") ++ else() ++ dependency_check("${LIB}${VARIANT_TARGET_NAME}") ++ endif() ++ endif () ++ endforeach() ++ ++ set(THIS_EXE_OKAY TRUE) ++ ++ if(DEPENDENCY_FAILURES) ++ set(THIS_EXE_OKAY FALSE) ++ # separate_arguments(DEPENDENCY_FAILURES) ++ colormsg(HIRED " ${THIS_EXE_NAME}" RED "(executable) disabled due to dependency failures:") ++ colormsg(" ${DEPENDENCY_FAILURES}") ++ endif() ++ ++ trace(THIS_EXE_VARIANT) ++ trace(THIS_EXE_OUTPUT_NAME) ++ if (THIS_EXE_VARIANT AND (NOT DEPENDENCY_FAILURES)) ++ # It's okay to build this executable ++ ++ add_executable(${THIS_EXE_NAME} ${THIS_EXE_SOURCES}) ++ ++ # Set the various compilation and linking flags ++ set_target_properties(${THIS_EXE_NAME} ++ PROPERTIES ++ COMPILE_FLAGS "${THIS_EXE_COMPILE_FLAGS}" ++ LINK_FLAGS "${THIS_EXE_LINK_FLAGS}" ++ LABELS "${BOOST_PROJECT_NAME}" ++ ) ++ ++ # For IDE generators where we can build both debug and release ++ # configurations, pass the configurations along separately. ++ if (THIS_EXE_DEBUG_AND_RELEASE) ++ set_target_properties(${THIS_EXE_NAME} ++ PROPERTIES ++ COMPILE_FLAGS_DEBUG "${DEBUG_COMPILE_FLAGS} ${THIS_EXE_COMPILE_FLAGS}" ++ COMPILE_FLAGS_RELEASE "${RELEASE_COMPILE_FLAGS} ${THIS_EXE_COMPILE_FLAGS}" ++ LINK_FLAGS_DEBUG "${DEBUG_LINK_FLAGS} ${DEBUG_EXE_LINK_FLAGS} ${THIS_EXE_LINK_FLAGS}" ++ LINK_FLAGS_RELEASE "${RELEASE_LINK_FLAGS} ${RELEASE_EXE_LINK_FLAGS} ${THIS_EXE_LINK_FLAGS}" ++ ) ++ endif (THIS_EXE_DEBUG_AND_RELEASE) ++ ++ # If the user gave an output name, use it. ++ if(THIS_EXE_OUTPUT_NAME) ++ set_target_properties(${THIS_EXE_NAME} ++ PROPERTIES ++ OUTPUT_NAME ${THIS_EXE_OUTPUT_NAME} ++ ) ++ endif() ++ ++ # Link against the various libraries ++ if (THIS_EXE_DEBUG_AND_RELEASE) ++ # Configuration-agnostic libraries ++ target_link_libraries(${THIS_EXE_NAME} ${THIS_EXE_LINK_LIBS}) ++ ++ foreach(LIB ${THIS_EXE_RELEASE_ACTUAL_DEPENDS} ${THIS_EXE_RELEASE_LINK_LIBS}) ++ target_link_libraries(${THIS_EXE_NAME} optimized ${LIB}) ++ endforeach(LIB ${THIS_EXE_RELEASE_ACTUAL_DEPENDS} ${THIS_EXE_RELEASE_LINK_LIBS}) ++ ++ foreach(LIB ${THIS_EXE_DEBUG_ACTUAL_DEPENDS} ${THIS_EXE_DEBUG_LINK_LIBS}) ++ target_link_libraries(${THIS_EXE_NAME} debug ${LIB}) ++ endforeach(LIB ${THIS_EXE_DEBUG_ACTUAL_DEPENDS} ${THIS_EXE_DEBUG_LINK_LIBS}) ++ ++ else (THIS_EXE_DEBUG_AND_RELEASE) ++ target_link_libraries(${THIS_EXE_NAME} ++ ${THIS_EXE_ACTUAL_DEPENDS} ++ ${THIS_EXE_LINK_LIBS}) ++ endif (THIS_EXE_DEBUG_AND_RELEASE) ++ ++ endif () ++endmacro(boost_add_executable) ++ ++ ++# Like boost_add_library, but builds a single library variant ++# FIXME: I'm not sure if I like this or not. Document it if it survives. ++macro(boost_add_single_library LIBNAME) ++ parse_arguments(THIS_LIB ++ "DEPENDS;COMPILE_FLAGS;LINK_FLAGS;LINK_LIBS;${BOOST_ADD_ARG_NAMES}" ++ "NO_INSTALL;MODULE;${BOOST_ADDEXE_OPTION_NAMES}" ++ ${ARGN} ++ ) ++ set(THIS_LIB_SOURCES ${THIS_LIB_DEFAULT_ARGS}) ++ ++ boost_select_variant(${LIBNAME} THIS_LIB) ++ trace(THIS_LIB_VARIANT) ++ if (THIS_LIB_VARIANT) ++ add_custom_target(${LIBNAME}) ++ separate_arguments(THIS_LIB_VARIANT) ++ boost_library_variant(${LIBNAME} ${THIS_LIB_VARIANT}) ++ endif () ++endmacro(boost_add_single_library) ++ ++ ++# ++# Macro for building boost.python extensions ++# ++macro(boost_python_extension MODULE_NAME) ++ parse_arguments(BPL_EXT ++ "" ++ "" ++ ${ARGN}) ++ ++ if (WIN32) ++ set(extlibtype SHARED) ++ else() ++ set(extlibtype MODULE) ++ endif() ++ ++ boost_add_single_library( ++ ${MODULE_NAME} ++ ${BPL_EXT_DEFAULT_ARGS} ++ ${extlibtype} ++ LINK_LIBS ${PYTHON_LIBRARIES} ++ DEPENDS boost_python ++ SHARED ++ MULTI_THREADED ++ ) ++ ++ if(WIN32) ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ OUTPUT_NAME "${MODULE_NAME}" ++ PREFIX "" ++ SUFFIX .pyd ++ IMPORT_SUFFIX .pyd ++ ) ++ else() ++ set_target_properties(${VARIANT_LIBNAME} ++ PROPERTIES ++ OUTPUT_NAME "${MODULE_NAME}" ++ PREFIX "" ++ ) ++ endif() ++ if (NOT THIS_VARIANT_OKAY) ++ colormsg(HIRED " ${MODULE_NAME}" RED "(python extension) disabled because:") ++ foreach(msg ${SELECT_VARIANT_FAILURE_REASONS}) ++ colormsg(YELLOW " ${msg}") ++ endforeach() ++ endif() ++ ++endmacro() +diff --git a/tools/build/CMake/BoostDocs.cmake b/tools/build/CMake/BoostDocs.cmake +new file mode 100644 +index 0000000..1eb0f56 +--- /dev/null ++++ b/tools/build/CMake/BoostDocs.cmake +@@ -0,0 +1,530 @@ ++########################################################################## ++# Boost Documentation Generation # ++########################################################################## ++# Copyright (C) 2008 Douglas Gregor # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# Important developer macros in this file: # ++# # ++########################################################################## ++ ++# Transforms the source XML file by applying the given XSL stylesheet. ++# ++# xsl_transform(output input [input2 input3 ...] ++# STYLESHEET stylesheet ++# [CATALOG catalog] ++# [DIRECTORY mainfile] ++# [PARAMETERS param1=value1 param2=value2 ...] ++# [[MAKE_ALL_TARGET | MAKE_TARGET] target] ++# [COMMENT comment]) ++# ++# This macro builds a custom command that transforms an XML file ++# (input) via the given XSL stylesheet. The output will either be a ++# single file (the default) or a directory (if the DIRECTION argument ++# is specified). The STYLESBEET stylesheet must be a valid XSL ++# stylesheet. Any extra input files will be used as additional ++# dependencies for the target. For example, these extra input files ++# might refer to other XML files that are included by the input file ++# through XInclude. ++# ++# When the XSL transform output is going to a directory, the mainfile ++# argument provides the name of a file that will be generated within ++# the output directory. This file will be used for dependency tracking. ++# ++# XML catalogs can be used to remap parts of URIs within the ++# stylesheet to other (typically local) entities. To provide an XML ++# 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. The parameter names ++# that can be used correspond to the elements within the ++# 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 ++# differs from MAKE_TARGET in that MAKE_ALL_TARGET will make the ++# resulting target a part of the default build. ++# ++# 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 OUTPUT INPUT) ++ parse_arguments(THIS_XSL ++ "STYLESHEET;CATALOG;MAKE_ALL_TARGET;MAKE_TARGET;PARAMETERS;DIRECTORY;COMMENT" ++ "" ++ ${ARGN} ++ ) ++ ++ # TODO: Is this the best way to handle catalogs? The alternative is ++ # that we could provide explicit remappings to the xsl_transform ++ # macro, and it could generate a temporary XML catalog file. ++ if (THIS_XSL_CATALOG) ++ set(THIS_XSL_CATALOG "XML_CATALOG_FILES=${THIS_XSL_CATALOG}") ++ endif () ++ ++ # Translate XSL parameters into a form that xsltproc can use. ++ 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 the user didn't provide a comment for this transformation, ++ # create a default one. ++ if(NOT THIS_XSL_COMMENT) ++ 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 ${OUTPUT}/${THIS_XSL_DIRECTORY}) ++ set(THIS_XSL_OUTPUT ${OUTPUT}/) ++ else() ++ set(THIS_XSL_OUTPUT_FILE ${OUTPUT}) ++ set(THIS_XSL_OUTPUT ${OUTPUT}) ++ endif() ++ ++ if(NOT THIS_XSL_STYLESHEET) ++ message(SEND_ERROR ++ "xsl_transform macro invoked without a STYLESHEET argument") ++ else() ++ # Run the XSLT processor to do the XML transformation. ++ add_custom_command(OUTPUT ${THIS_XSL_OUTPUT_FILE} ++ COMMAND ${THIS_XSL_CATALOG} ${XSLTPROC_EXECUTABLE} ${XSLTPROC_FLAGS} ++ ${THIS_XSL_EXTRA_FLAGS} -o ${THIS_XSL_OUTPUT} ++ --path ${CMAKE_CURRENT_BINARY_DIR} ++ ${THIS_XSL_STYLESHEET} ${INPUT} ++ COMMENT ${THIS_XSL_COMMENT} ++ DEPENDS ${INPUT} ${THIS_XSL_DEFAULT_ARGS}) ++ set_source_files_properties(${THIS_XSL_OUTPUT_FILE} ++ PROPERTIES GENERATED TRUE) ++ ++ # Create a custom target to refer to the result of this ++ # transformation. ++ if (THIS_XSL_MAKE_ALL_TARGET) ++ add_custom_target(${THIS_XSL_MAKE_ALL_TARGET} ALL ++ DEPENDS ${THIS_XSL_OUTPUT_FILE}) ++ 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) ++ ++# Use Doxygen to parse header files and produce BoostBook output. ++# ++# doxygen_to_boostbook(output header1 header2 ... ++# [PARAMETERS param1=value1 param2=value2 ... ]) ++# ++# This macro sets up rules to transform a set of C/C++ header files ++# into BoostBook reference documentation. The resulting BoostBook XML ++# file will be named by the "output" parameter, and the set of headers ++# is provided following the output file. The actual parsing of header ++# files is provided by Doxygen, and is transformed into XML through ++# various XSLT transformations. ++# ++# Doxygen has a variety of configuration parameters. One can supply ++# extra Doxygen configuration parameters by providing NAME=VALUE pairs ++# following the PARAMETERS argument. These parameters will be added to ++# the Doxygen configuration file. ++# ++# This macro is intended to be used internally by ++# boost_add_documentation. ++macro(doxygen_to_boostbook OUTPUT) ++ parse_arguments(THIS_DOXY ++ "PARAMETERS" ++ "" ++ ${ARGN}) ++ ++ # Create a Doxygen configuration file template ++ # TODO: We would like to create this file at build time rather ++ # than at configuration time ++ get_filename_component(DOXYFILE_PATH ${OUTPUT} PATH) ++ get_filename_component(DOXYFILE_NAME ${OUTPUT} NAME_WE) ++ set(DOXYFILE ${DOXYFILE_PATH}/${DOXYFILE_NAME}.doxyfile) ++ execute_process( ++ COMMAND ${DOXYGEN_EXECUTABLE} -s -g ${DOXYFILE} ++ OUTPUT_QUIET ERROR_QUIET) ++ ++ # Update the Doxygen configuration file for XML generation ++ file(APPEND ${DOXYFILE} "OUTPUT_DIRECTORY = ${CMAKE_CURRENT_BINARY_DIR}\n") ++ file(APPEND ${DOXYFILE} "GENERATE_LATEX = NO\n") ++ file(APPEND ${DOXYFILE} "GENERATE_HTML = NO\n") ++ file(APPEND ${DOXYFILE} "GENERATE_XML = YES\n") ++ foreach(PARAM ${THIS_DOXY_PARAMETERS}) ++ file(APPEND ${DOXYFILE} "${PARAM}\n") ++ endforeach(PARAM) ++ ++ 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}) ++ 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) ++ file(APPEND ${DOXYFILE} "INPUT = ${THIS_DOXY_HEADER_LIST}\n") ++ ++ # Generate Doxygen XML ++ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/index.xml ++ COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE} ++ COMMENT "Generating Doxygen XML output for Boost.${BOOST_PROJECT_NAME}..." ++ DEPENDS ${THIS_DOXY_HEADERS}) ++ ++ # Collect Doxygen XML into a single XML file ++ set_source_files_properties( ++ ${CMAKE_CURRENT_BINARY_DIR}/xml/combine.xslt ++ PROPERTIES GENERATED TRUE) ++ xsl_transform( ++ ${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.${BOOST_PROJECT_NAME}...") ++ ++ # Transform single Doxygen XML file into BoostBook 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.${BOOST_PROJECT_NAME}...") ++endmacro(doxygen_to_boostbook) ++ ++# Adds documentation for the current library or tool project ++# ++# boost_add_documentation(source1 source2 source3 ... ++# [HEADERS header1 header2 ...] ++# [DOXYGEN_PARAMETERS param1=value1 param2=value2 ...]) ++# ++ ++# This macro describes the documentation for a library or tool, which ++# will be built and installed as part of the normal build ++# process. Documentation can be in a variety of formats, and the input ++# format will determine how that documentation is transformed. The ++# documentation's format is determined by its extension, and the ++# following input formats are supported: ++# ++# QuickBook ++# BoostBook (.XML extension): ++macro(boost_add_documentation SOURCE) ++ parse_arguments(THIS_DOC ++ "HEADERS;DOXYGEN_PARAMETERS" ++ "" ++ ${ARGN}) ++ ++ # If SOURCE is not a full path, it's in the current source ++ # directory. ++ 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 ++ # file. ++ if (THIS_DOC_HEADERS) ++ set(DOC_HEADER_FILES) ++ set(DOC_BOOSTBOOK_FILE) ++ foreach(HEADER ${THIS_DOC_HEADERS}) ++ get_filename_component(HEADER_EXT ${HEADER} EXT) ++ string(TOUPPER ${HEADER_EXT} HEADER_EXT) ++ if (HEADER_EXT STREQUAL ".XML") ++ if (DOC_BOOSTBOOK_FILE) ++ # Generate this BoostBook file from the headers ++ doxygen_to_boostbook( ++ ${CMAKE_CURRENT_BINARY_DIR}/${DOC_BOOSTBOOK_FILE} ++ ${DOC_HEADER_FILES} ++ PARAMETERS ${THIS_DOC_DOXYGEN_PARAMETERS}) ++ list(APPEND THIS_DOC_DEFAULT_ARGS ++ ${CMAKE_CURRENT_BINARY_DIR}/${DOC_BOOSTBOOK_FILE}) ++ endif() ++ set(DOC_BOOSTBOOK_FILE ${HEADER}) ++ set(DOC_HEADER_FILES) ++ else() ++ if (NOT DOC_BOOSTBOOK_FILE) ++ message(SEND_ERROR ++ "HEADERS argument to boost_add_documentation must start with a BoostBook XML file name for output") ++ endif() ++ list(APPEND DOC_HEADER_FILES ${HEADER}) ++ endif() ++ endforeach() ++ ++ if (DOC_HEADER_FILES) ++ # Generate this BoostBook file from the headers ++ doxygen_to_boostbook( ++ ${CMAKE_CURRENT_BINARY_DIR}/${DOC_BOOSTBOOK_FILE} ++ ${DOC_HEADER_FILES} ++ PARAMETERS ${THIS_DOC_DOXYGEN_PARAMETERS}) ++ list(APPEND THIS_DOC_DEFAULT_ARGS ++ ${CMAKE_CURRENT_BINARY_DIR}/${DOC_BOOSTBOOK_FILE}) ++ ++ endif() ++ endif (THIS_DOC_HEADERS) ++ ++ # Figure out the source file extension, which will tell us how to ++ # build the documentation. ++ get_filename_component(THIS_DOC_EXT ${SOURCE} EXT) ++ string(TOUPPER ${THIS_DOC_EXT} THIS_DOC_EXT) ++ if (THIS_DOC_EXT STREQUAL ".QBK") ++ 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.${BOOST_PROJECT_NAME}...") ++ ++ # 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) ++ 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 ++ COMMENT "Generating DocBook documentation for Boost.${BOOST_PROJECT_NAME}..." ++ MAKE_TARGET ${BOOST_PROJECT_NAME}-docbook) ++ ++ # Transform DocBook into other formats ++ 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( ++ ${CMAKE_CURRENT_BINARY_DIR}/html ++ ${THIS_DOC_SOURCE_PATH} ++ STYLESHEET ${BOOSTBOOK_XSL_DIR}/html.xsl ++ CATALOG ${CMAKE_BINARY_DIR}/catalog.xml ++ DIRECTORY HTML.manifest ++ PARAMETERS admon.graphics.path=images ++ navig.graphics.path=images ++ boost.image.src=boost.png ++ COMMENT "Generating HTML documentaiton for Boost.${BOOST_PROJECT_NAME}..." ++ MAKE_TARGET ${BOOST_PROJECT_NAME}-html) ++ ++ add_custom_command(TARGET ${BOOST_PROJECT_NAME}-html ++ POST_BUILD ++ 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} ++ 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} ++ STYLESHEET ${BOOSTBOOK_XSL_DIR}/manpages.xsl ++ CATALOG ${CMAKE_BINARY_DIR}/catalog.xml ++ DIRECTORY man.manifest ++ COMMENT "Generating man pages for Boost.${BOOST_PROJECT_NAME}..." ++ MAKE_TARGET ${BOOST_PROJECT_NAME}-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() ++endmacro(boost_add_documentation) ++ ++ ++########################################################################## ++# Documentation tools configuration # ++########################################################################## ++ ++# Downloads the DocBook DTD into a place where DOCBOOK_DTD_DIR can ++# find it. ++macro(download_docbook_dtd) ++ if (NOT DOCBOOK_DTD_DIR) ++ set(DOCBOOK_DTD_FILENAME "docbook-xml-${WANT_DOCBOOK_DTD_VERSION}.zip") ++ set(DOCBOOK_DTD_URL ++ "http://www.oasis-open.org/docbook/xml/${WANT_DOCBOOK_DTD_VERSION}/${DOCBOOK_DTD_FILENAME}") ++ message(STATUS "Downloading DocBook DTD from ${DOCBOOK_DTD_URL}...") ++ file(DOWNLOAD ++ "${DOCBOOK_DTD_URL}" ++ "${CMAKE_BINARY_DIR}/${DOCBOOK_DTD_FILENAME}" ++ TIMEOUT 60 STATUS DOCBOOK_DTD_STATUS) ++ list(GET DOCBOOK_DTD_STATUS 0 DOCBOOK_DTD_ERROR) ++ if (DOCBOOK_DTD_ERROR EQUAL 0) ++ # Download successful! Extract the DTD ZIP file. ++ message(STATUS "Extracting DocBook DTD...") ++ execute_process( ++ COMMAND ${UNZIP} -d docbook-dtd-${WANT_DOCBOOK_DTD_VERSION} -q "${CMAKE_BINARY_DIR}/${DOCBOOK_DTD_FILENAME}" ++ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ++ RESULT_VARIABLE UNZIP_DTD_RESULT) ++ if (UNZIP_DTD_RESULT EQUAL 0) ++ # Extraction successful. Cleanup the downloaded file. ++ file(REMOVE ${CMAKE_BINARY_DIR}/${DOCBOOK_DTD_FILENAME}) ++ set(DOCBOOK_DTD_DIR ++ ${CMAKE_BINARY_DIR}/docbook-dtd-${WANT_DOCBOOK_DTD_VERSION} ++ CACHE PATH "Path to the DocBook DTD" FORCE) ++ else() ++ # We failed: report the error to the user ++ message(SEND_ERROR "Extraction of DocBook DTD archive ${DOCBOOK_DTD_FILENAME} failed with error \"${UNZIP_DTD_RESULT}\". DocBook DTD and XSL autoconfiguration cannot continue.") ++ endif () ++ else() ++ list(GET DOCBOOK_DTD_STATUS 1 DOCBOOK_DTD_ERRORMSG) ++ message(SEND_ERROR "Unable to download DocBook DTD from ${DOCBOOK_DTD_URL}. Error was: \"${DOCBOOK_DTD_ERRORMSG}\"") ++ endif() ++ endif() ++endmacro(download_docbook_dtd) ++ ++# Downloads the DocBook XSL into a place where DOCBOOK_XSL_DIR can ++# find it. ++macro(download_docbook_xsl) ++ if (NOT DOCBOOK_XSL_DIR) ++ set(DOCBOOK_XSL_FILENAME "docbook-xsl-${WANT_DOCBOOK_XSL_VERSION}.zip") ++ set(DOCBOOK_XSL_URL ++ "${SOURCEFORGE_MIRROR}/sourceforge/docbook/${DOCBOOK_XSL_FILENAME}") ++ message(STATUS "Downloading DocBook XSL from ${DOCBOOK_XSL_URL}...") ++ file(DOWNLOAD ++ "${DOCBOOK_XSL_URL}" ++ "${CMAKE_BINARY_DIR}/${DOCBOOK_XSL_FILENAME}" ++ TIMEOUT 60 STATUS DOCBOOK_XSL_STATUS) ++ list(GET DOCBOOK_XSL_STATUS 0 DOCBOOK_XSL_ERROR) ++ if (DOCBOOK_XSL_ERROR EQUAL 0) ++ # Download successful! Extract the XSL ZIP file. ++ message(STATUS "Extracting DocBook XSL stylesheets...") ++ execute_process( ++ COMMAND ${UNZIP} -q "${CMAKE_BINARY_DIR}/${DOCBOOK_XSL_FILENAME}" ++ WORKING_DIRECTORY ${CMAKE_BINARY_DIR} ++ RESULT_VARIABLE UNZIP_XSL_RESULT) ++ if (UNZIP_XSL_RESULT EQUAL 0) ++ # Extraction successful. Clean up the downloaded file. ++ file(REMOVE ${CMAKE_BINARY_DIR}/${DOCBOOK_XSL_FILENAME}) ++ set(DOCBOOK_XSL_DIR ++ ${CMAKE_BINARY_DIR}/docbook-xsl-${WANT_DOCBOOK_XSL_VERSION} ++ CACHE PATH "Path to the DocBook XSL stylesheets" FORCE) ++ else() ++ # We failed: report the error to the user ++ message(SEND_ERROR "Extraction of DocBook XSL archive ${DOCBOOK_XSL_FILENAME} failed with error \"${UNZIP_XSL_RESULT}\". DocBook XSL and XSL autoconfiguration cannot continue.") ++ endif () ++ else() ++ list(GET DOCBOOK_XSL_STATUS 1 DOCBOOK_XSL_ERRORMSG) ++ message(SEND_ERROR "Unable to download DocBook XSL from ${DOCBOOK_XSL_URL}. Error was: \"${DOCBOOK_XSL_ERRORMSG}\". You might want to try another SourceForge mirror site by changing the advanced configuration variable SOURCEFORGE_MIRROR.") ++ endif() ++ endif() ++endmacro(download_docbook_xsl) ++ ++# Preferred versions of DocBook stylesheets and utilities. We don't ++# require these, but we know that they work. ++set(WANT_DOCBOOK_DTD_VERSION 4.2) ++set(WANT_DOCBOOK_XSL_VERSION 1.73.2) ++ ++# Find the DocBook DTD (version 4.2) ++find_path(DOCBOOK_DTD_DIR docbookx.dtd ++ PATHS "${CMAKE_BINARY_DIR}/docbook-dtd-${WANT_DOCBOOK_DTD_VERSION}" ++ # ubuntu puts 'em here ++ /usr/share/xml/docbook/schema/dtd/${WANT_DOCBOOK_DTD_VERSION} ++ DOC "Path to the DocBook DTD") ++ ++# Find the DocBook XSL stylesheets ++find_path(DOCBOOK_XSL_DIR html/html.xsl ++ PATHS "${CMAKE_BINARY_DIR}/docbook-xsl-${WANT_DOCBOOK_XSL_VERSION}" ++ # ubuntu puts 'em here ++ /usr/share/xml/docbook/stylesheet/nwalsh ++ DOC "Path to the DocBook XSL stylesheets") ++ ++# Find the BoostBook DTD (it should be in the distribution!) ++find_path(BOOSTBOOK_DTD_DIR boostbook.dtd ++ PATHS ${CMAKE_SOURCE_DIR}/tools/boostbook/dtd ++ DOC "Path to the BoostBook DTD") ++mark_as_advanced(BOOSTBOOK_DTD_DIR) ++ ++# Find the BoostBook XSL stylesheets (they should be in the distribution!) ++find_path(BOOSTBOOK_XSL_DIR docbook.xsl ++ PATHS ${CMAKE_SOURCE_DIR}/tools/boostbook/xsl ++ DOC "Path to the BoostBook XSL stylesheets") ++mark_as_advanced(BOOSTBOOK_XSL_DIR) ++ ++if (XSLTPROC_EXECUTABLE 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) ++ 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 ++ ${CMAKE_BINARY_DIR}/catalog.xml ++ @ONLY) ++ else() ++ # Look for "unzip", because we'll need it to download the DocBook ++ # DTD and XSL stylesheets as part of autoconfiguration. ++ find_program(UNZIP unzip DOC "Used to extract ZIP archives") ++ ++ if (UNZIP) ++ option(DOCBOOK_AUTOCONFIG ++ "Automatically download and configure DocBook DTD and XSL" OFF) ++ set(SOURCEFORGE_MIRROR "http://dl.sourceforge.net" ++ CACHE STRING "SourceForge mirror used to download DocBook XSL during autoconfiguration") ++ mark_as_advanced(SOURCEFORGE_MIRROR) ++ if (DOCBOOK_AUTOCONFIG) ++ message(STATUS "Initiating DocBook DTD and XSL autoconfiguration...") ++ download_docbook_dtd() ++ download_docbook_xsl() ++ endif (DOCBOOK_AUTOCONFIG) ++ endif() ++ endif() ++endif() ++ ++# Turn off BUILD_DOCUMENTATION if it isn't going to succeed. ++if (BUILD_DOCUMENTATION) ++ set(BUILD_DOCUMENTATION_OKAY TRUE) ++ if (NOT XSLTPROC_FOUND) ++ set(BUILD_DOCUMENTATION_OKAY FALSE) ++ message(STATUS "Docs build disabled due to missing xsltproc") ++ elseif (NOT DOXYGEN_FOUND) ++ 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() ++ ++ 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 +diff --git a/tools/build/CMake/BoostExternals.cmake b/tools/build/CMake/BoostExternals.cmake +new file mode 100644 +index 0000000..763ce1e +--- /dev/null ++++ b/tools/build/CMake/BoostExternals.cmake +@@ -0,0 +1,55 @@ ++# Copyright (C) Troy Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt ++# ++ ++message(STATUS "") ++colormsg(_HIBLUE_ "Looking for (optional) dependencies on the system") ++ ++macro(boost_external_report NAME) ++ string(TOUPPER ${NAME} VARNAME) ++ set(VARNAMES ${ARGV}) ++ list(REMOVE_AT VARNAMES 0) ++ set(SUCCESS ${${VARNAME}_FOUND}) ++ if(NOT SUCCESS) ++ message(STATUS "${NAME} not found, some libraries or features will be disabled.") ++ message(STATUS "See the documentation for ${NAME} or manually set these variables:") ++ endif() ++ foreach(variable ${VARNAMES}) ++ boost_report_value(${VARNAME}_${variable}) ++ endforeach() ++endmacro() ++ ++# ++# Some externals default to OFF ++# ++option(WITH_VALGRIND "Run tests under valgrind" OFF) ++ ++# ++# ++# ++foreach(external ++ BZip2 ++ Doxygen ++ Expat ++ ICU ++ MPI ++ Python ++ Xsltproc ++ Valgrind ++ ZLib ++ ) ++ message(STATUS "") ++ string(TOUPPER "${external}" EXTERNAL) ++ option(WITH_${EXTERNAL} "Attempt to find and configure ${external}" ON) ++ if(WITH_${EXTERNAL}) ++ colormsg(HICYAN "${external}:") ++ include(${CMAKE_CURRENT_SOURCE_DIR}/tools/build/CMake/externals/${external}.cmake) ++ else() ++ set(${EXTERNAL}_FOUND FALSE CACHE BOOL "${external} found" FORCE) ++ colormsg(HIRED "${external}:" RED "disabled, since WITH_${EXTERNAL}=OFF") ++ endif() ++endforeach() ++message(STATUS "") +\ No newline at end of file +diff --git a/tools/build/CMake/BoostTesting.cmake b/tools/build/CMake/BoostTesting.cmake +new file mode 100644 +index 0000000..79129a5 +--- /dev/null ++++ b/tools/build/CMake/BoostTesting.cmake +@@ -0,0 +1,494 @@ ++########################################################################## ++# Regression Testing Support for Boost # ++########################################################################## ++# Copyright (C) 2007-8 Douglas Gregor # ++# Copyright (C) 2007-8 Troy D. Straszheim # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# This file provides a set of CMake macros that support regression ++# testing for Boost libraries. For each of the test macros below, the ++# first argument, testname, states the name of the test that will be ++# created. If no other arguments are provided, the source file ++# testname.cpp will be used as the source file; otherwise, source ++# files should be listed immediately after the name of the test. ++# ++# The macros for creating regression tests are: ++# boost_test_run: Builds an executable and runs it as a test. The test ++# succeeds if it builds and returns 0 when executed. ++# ++# boost_test_run_fail: Builds an executable and runs it as a test. The ++# test succeeds if it builds but returns a non-zero ++# exit code when executed. ++# ++# boost_test_compile: Tests that the given source file compiles without ++# any errors. ++# ++# boost_test_compile_fail: Tests that the given source file produces ++# errors when compiled. ++# ++# boost_additional_test_dependencies: Adds needed include directories for ++# the tests. ++ ++# User-controlled option that can be used to enable/disable regression ++# testing. By default, we disable testing, because most users won't ++# want or need to perform regression testing on Boost. The Boost build ++# is significantly faster when we aren't also building regression ++# tests. ++ ++if (BOOST_CMAKE_SELFTEST) ++ set(tests "ALL") ++else() ++ set(tests "NONE") ++endif() ++ ++set(BUILD_TESTS ${tests} CACHE STRING "Semicolon-separated list of lowercase librarary names to test, or \"ALL\"") ++enable_testing() ++ ++if (BUILD_TESTING) ++ if (NOT EXISTS ${CMAKE_BINARY_DIR}/CTestCustom.cmake) ++ configure_file(${CMAKE_SOURCE_DIR}/tools/build/CMake/CTestCustom.cmake.in ++ ${CMAKE_BINARY_DIR}/CTestCustom.cmake ++ COPYONLY) ++ endif() ++ include(CTest) ++endif() ++ ++if (BUILD_TESTS STREQUAL "NONE") ++ # ++ # Add a little "message" if tests are run while BUILD_TESTS is NONE ++ # ++ add_test(BUILD_TESTS_is_NONE_nothing_to_test ++ /bin/false) ++endif() ++ ++set(DART_TESTING_TIMEOUT 15 ++ CACHE INTEGER ++ "Timeout after this many seconds of madness") ++ ++#------------------------------------------------------------------------------- ++# This macro adds additional include directories based on the dependencies of ++# the library being tested 'libname' and all of its dependencies. ++# ++# boost_additional_test_dependencies(libname ++# BOOST_DEPENDS libdepend1 libdepend2 ...) ++# ++# libname is the name of the boost library being tested. (signals) ++# ++# There is mandatory argument to the macro: ++# ++# BOOST_DEPENDS: The list of the extra boost libraries that the test suite will ++# depend on. You do NOT have to list those libraries already listed by the ++# module.cmake file as these will be used. ++# ++# ++# example usage: ++# boost_additional_test_dependencies(signals BOOST_DEPENDS test optional) ++# ++# ++# TDS 20091103: ++# For the moment we don't need this, since tests are now traversed ++# after project directories (so all boost lib dependency targets are ++# visible to all tests) and modularization has crashed and burned. ++# ++macro(boost_additional_test_dependencies libname) ++ # NOTE DISABLED ++ if (FALSE) ++ parse_arguments(BOOST_TEST ++ "BOOST_DEPENDS" ++ "" ++ ${ARGN} ++ ) ++ # Get the list of libraries that this test depends on ++ # Set THIS_PROJECT_DEPENDS_ALL to the set of all of its ++ # dependencies, its dependencies' dependencies, etc., transitively. ++ string(TOUPPER "BOOST_${libname}_DEPENDS" THIS_PROJECT_DEPENDS) ++ set(THIS_TEST_DEPENDS_ALL ${libname} ${${THIS_PROJECT_DEPENDS}} ) ++ set(ADDED_DEPS TRUE) ++ while (ADDED_DEPS) ++ set(ADDED_DEPS FALSE) ++ foreach(DEP ${THIS_TEST_DEPENDS_ALL}) ++ string(TOUPPER "BOOST_${DEP}_DEPENDS" DEP_DEPENDS) ++ foreach(DEPDEP ${${DEP_DEPENDS}}) ++ list(FIND THIS_TEST_DEPENDS_ALL ${DEPDEP} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_TEST_DEPENDS_ALL ${DEPDEP}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ endforeach() ++ endforeach() ++ endwhile() ++ ++ # Get the list of dependencies for the additional libraries arguments ++ foreach(additional_lib ${BOOST_TEST_BOOST_DEPENDS}) ++ list(FIND THIS_TEST_DEPENDS_ALL ${additional_lib} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_TEST_DEPENDS_ALL ${additional_lib}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ string(TOUPPER "BOOST_${additional_lib}_DEPENDS" THIS_PROJECT_DEPENDS) ++ set(ADDED_DEPS TRUE) ++ while (ADDED_DEPS) ++ set(ADDED_DEPS FALSE) ++ foreach(DEP ${THIS_TEST_DEPENDS_ALL}) ++ string(TOUPPER "BOOST_${DEP}_DEPENDS" DEP_DEPENDS) ++ foreach(DEPDEP ${${DEP_DEPENDS}}) ++ list(FIND THIS_TEST_DEPENDS_ALL ${DEPDEP} DEPDEP_INDEX) ++ if (DEPDEP_INDEX EQUAL -1) ++ list(APPEND THIS_TEST_DEPENDS_ALL ${DEPDEP}) ++ set(ADDED_DEPS TRUE) ++ endif() ++ endforeach() ++ endforeach() ++ endwhile() ++ endforeach() ++ ++ foreach (include ${THIS_TEST_DEPENDS_ALL}) ++ # ++ # Modularization temporarily disabled ++ # ++ # include_directories("${Boost_SOURCE_DIR}/libs/${include}/include") ++ # ++ endforeach (include ${includes}) ++endif() ++ ++endmacro(boost_additional_test_dependencies libname) ++#------------------------------------------------------------------------------- ++ ++#------------------------------------------------------------------------------- ++# This macro is an internal utility macro that helps parse the ++# arguments passed to the Boost testing commands. It will generally ++# not be used by Boost developers. ++# ++# boost_test_parse_args(testname ++# [source1 source2 ...] ++# [ARGS arg1 arg2... ] ++# [COMPILE_FLAGS compileflags] ++# [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 ++# this macro will be parsed and categorized for the developer-level ++# test macros to use. ++# ++# Variables affected: ++# ++# BOOST_TEST_OKAY: Will be set to TRUE if it is okay to build and ++# run this test. ++# ++# BOOST_TEST_SOURCES: Will be populated with the set of source files ++# that should be used to compile this test. If the user has provided ++# source files, BOOST_TEST_SOURCES will contain those; otherwise, ++# BOOST_TEST_SOURCES will only contain "testname.cpp". ++# ++# BOOST_TEST_TESTNAME: A (hopefully) globally unique target name ++# for the test, constructed from PROJECT-testname-TAG ++# ++# BOOST_TEST_arg: Will be populated with the arguments provided for ++# the arguemnt "arg", where "arg" can be any of the extra arguments ++# specified above. ++# ++# ++macro(boost_test_parse_args testname) ++ #message("boost_test_parse_args ${testname} ${ARGN}") ++ 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;KNOWN_FAILURES" ++ "COMPILE;RUN;LINK;FAIL;RELEASE;DEBUG" ++ ${ARGN} ++ ) ++ ++ # Check each of the dependencies to see if we can still build this ++ # test. ++ foreach(ARG ${BOOST_TEST_DEPENDS}) ++ get_target_property(DEPEND_TYPE ${ARG} TYPE) ++ get_target_property(DEPEND_LOCATION ${ARG} LOCATION) ++ # If building static libraries is turned off, don't try to build ++ # the test ++ #if (NOT ENABLE_STATIC AND ${DEPEND_TYPE} STREQUAL "STATIC_LIBRARY") ++ #set(BOOST_TEST_OKAY FALSE) ++ #endif (NOT ENABLE_STATIC AND ${DEPEND_TYPE} STREQUAL "STATIC_LIBRARY") ++ ++ # If building shared libraries is turned off, don't try to build ++ # the test ++ #if (NOT ENABLE_SHARED AND ${DEPEND_TYPE} STREQUAL "SHARED_LIBRARY") ++ #set(BOOST_TEST_OKAY FALSE) ++ #endif (NOT ENABLE_SHARED AND ${DEPEND_TYPE} STREQUAL "SHARED_LIBRARY") ++ endforeach(ARG ${BOOST_TEST_DEPENDS}) ++ ++ # Setup the SOURCES variables. If no sources are specified, use the ++ # name of the test.cpp ++ if (BOOST_TEST_DEFAULT_ARGS) ++ set(BOOST_TEST_SOURCES ${BOOST_TEST_DEFAULT_ARGS}) ++ else (BOOST_TEST_DEFAULT_ARGS) ++ set(BOOST_TEST_SOURCES "${testname}.cpp") ++ endif (BOOST_TEST_DEFAULT_ARGS) ++ ++ set(BOOST_TEST_TESTNAME "${BOOST_PROJECT_NAME}-${testname}") ++ #message("testname: ${BOOST_TEST_TESTNAME}") ++ # If testing is turned off, this test is not okay ++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("${BOOST_PROJECT_NAME}-${TEST}" ++ PROPERTIES ++ LABELS "${BOOST_PROJECT_NAME};known-failure" ++ WILL_FAIL TRUE ++ ) ++ 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. ++# ++# boost_test_run(testname ++# [source1 source2 ...] ++# [ARGS arg1 arg2... ] ++# [COMPILE_FLAGS compileflags] ++# [LINK_FLAGS linkflags] ++# [LINK_LIBS linklibs] ++# [DEPENDS libdepend1 libdepend2 ...] ++# [EXTRA_OPTIONS option1 option2 ...]) ++# ++# testname is the name of the test. source1, source2, etc. are the ++# source files that will be built and linked into the test ++# executable. If no source files are provided, the file "testname.cpp" ++# will be used instead. ++# ++# There are several optional arguments to control how the regression ++# test is built and executed: ++# ++# ARGS: Provides additional arguments that will be passed to the ++# test executable when it is run. ++# ++# COMPILE_FLAGS: Provides additional compilation flags that will be ++# used when building this test. For example, one might want to add ++# "-DBOOST_SIGNALS_ASSERT=1" to turn on assertions within the library. ++# ++# LINK_FLAGS: Provides additional flags that will be passed to the ++# linker when linking the test excecutable. This option should not ++# be used to link in additional libraries; see LINK_LIBS and ++# DEPENDS. ++# ++# LINK_LIBS: Provides additional libraries against which the test ++# executable will be linked. For example, one might provide "expat" ++# as options to LINK_LIBS, to state that this executable should be ++# linked against the external "expat" library. Use LINK_LIBS for ++# libraries external to Boost; for Boost libraries, use DEPENDS. ++# ++# DEPENDS: States that this test executable depends on and links ++# against another Boost library. The argument to DEPENDS should be ++# the name of a particular variant of a Boost library, e.g., ++# boost_signals-static. ++# ++# EXTRA_OPTIONS: Provide extra options that will be passed on to ++# boost_add_executable. ++# ++# Example: ++# boost_test_run(signal_test DEPENDS boost_signals) ++macro(boost_test_run testname) ++ boost_test_parse_args(${testname} ${ARGN} RUN) ++ # ++ # On windows, tests have to go in the same directory as ++ # DLLs. ++ # ++ if (NOT CMAKE_HOST_WIN32) ++ set(THIS_TEST_OUTPUT_NAME tests/${BOOST_PROJECT_NAME}/${testname}) ++ else() ++ set(THIS_TEST_OUTPUT_NAME ${BOOST_PROJECT_NAME}-${testname}) ++ endif() ++ ++ if (BOOST_TEST_OKAY) ++ boost_add_executable(${testname} ${BOOST_TEST_SOURCES} ++ DEPENDS "${BOOST_TEST_DEPENDS}" ++ OUTPUT_NAME ${THIS_TEST_OUTPUT_NAME} ++ LINK_LIBS ${BOOST_TEST_LINK_LIBS} ++ LINK_FLAGS ${BOOST_TEST_LINK_FLAGS} ++ COMPILE_FLAGS ${BOOST_TEST_COMPILE_FLAGS} ++ NO_INSTALL ++ ${BOOST_TEST_EXTRA_OPTIONS}) ++ ++ if (THIS_EXE_OKAY) ++ # ++ # Fixup path for visual studio per instructions from Brad King: ++ # ++ get_target_property(THIS_TEST_LOCATION ${BOOST_TEST_TESTNAME} ++ LOCATION) ++ string(REGEX REPLACE "\\$\\(.*\\)" "\${CTEST_CONFIGURATION_TYPE}" ++ THIS_TEST_LOCATION "${THIS_TEST_LOCATION}") ++ ++ add_test (${BOOST_TEST_TESTNAME} ++ ${VALGRIND_EXECUTABLE} ++ ${VALGRIND_FLAGS} ++ ${THIS_TEST_LOCATION} ++ ${BOOST_TEST_ARGS}) ++ ++ set_tests_properties(${BOOST_TEST_TESTNAME} ++ PROPERTIES ++ LABELS "${BOOST_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 () ++ endif(THIS_EXE_OKAY) ++ endif (BOOST_TEST_OKAY) ++endmacro(boost_test_run) ++ ++# ++# This macro creates a boost regression test that will be run but is ++# expected to fail (exit with nonzero return code). ++# See boost_test_run() ++# ++macro(boost_test_run_fail testname) ++ boost_test_run(${testname} ${ARGN} FAIL) ++endmacro(boost_test_run_fail) ++ ++# This macro creates a Boost regression test that will be compiled, ++# but not linked or executed. If the test can be compiled with no ++# failures, the test passes. ++# ++# boost_test_compile(testname ++# [source1] ++# [COMPILE_FLAGS compileflags]) ++# ++# testname is the name of the test. source1 is the name of the source ++# file that will be built. If no source file is provided, the file ++# "testname.cpp" will be used instead. ++# ++# The COMPILE_FLAGS argument provides additional arguments that will ++# be passed to the compiler when building this test. ++ ++# Example: ++# boost_test_compile(advance) ++macro(boost_test_compile testname) ++ boost_test_parse_args(${testname} ${ARGN} COMPILE) ++ ++ if (BOOST_TEST_FAIL) ++ set (test_pass "FAILED") ++ else() ++ set (test_pass "PASSED") ++ endif() ++ ++ 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} ++ --build-and-test ++ ${Boost_SOURCE_DIR}/tools/build/CMake/CompileTest ++ ${Boost_BINARY_DIR}/tools/build/CMake/CompileTest ++ --build-generator ${CMAKE_GENERATOR} ++ --build-makeprogram ${CMAKE_MAKE_PROGRAM} ++ --build-project CompileTest ++ --build-options ++ "-DSOURCE:STRING=${CMAKE_CURRENT_SOURCE_DIR}/${BOOST_TEST_SOURCES}" ++ "-DINCLUDES:STRING=${BOOST_TEST_INCLUDES}" ++ "-DCOMPILE_FLAGS:STRING=${BOOST_TEST_COMPILE_FLAGS}" ++ ) ++ ++ set_tests_properties(${BOOST_TEST_TESTNAME} ++ PROPERTIES ++ LABELS "${BOOST_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 () ++ endif(BOOST_TEST_OKAY) ++endmacro(boost_test_compile) ++ ++# ++# This macro creates a Boost regression test that is expected to ++# *fail* to compile. See boost_test_compile() ++# ++macro(boost_test_compile_fail testname) ++ boost_test_compile(${testname} ${ARGN} FAIL) ++endmacro(boost_test_compile_fail) ++ ++ ++ ++ ++# ++# boost_test_link: ++# ++# ++# Each library "exports" itself to ++# ${CMAKE_BINARY_DIR}/exports/.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} ++ PROPERTIES ++ LABELS "${BOOST_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 () ++ endif(BOOST_TEST_OKAY) ++endmacro(boost_test_link) ++ +diff --git a/tools/build/CMake/BoostUtils.cmake b/tools/build/CMake/BoostUtils.cmake +new file mode 100644 +index 0000000..8cf2632 +--- /dev/null ++++ b/tools/build/CMake/BoostUtils.cmake +@@ -0,0 +1,331 @@ ++########################################################################## ++# Boost Utilities # ++########################################################################## ++# Copyright (C) 2007 Douglas Gregor # ++# Copyright (C) 2007 Troy Straszheim # ++# # ++# Distributed under the Boost Software License, Version 1.0. # ++# See accompanying file LICENSE_1_0.txt or copy at # ++# http://www.boost.org/LICENSE_1_0.txt # ++########################################################################## ++# Macros in this module: # ++# # ++# list_contains: Determine whether a string value is in a list. # ++# # ++# car: Return the first element in a list # ++# # ++# cdr: Return all but the first element in a list # ++# # ++# parse_arguments: Parse keyword arguments for use in other macros. # ++########################################################################## ++ ++# This utility macro determines whether a particular string value ++# occurs within a list of strings: ++# ++# list_contains(result string_to_find arg1 arg2 arg3 ... argn) ++# ++# This macro sets the variable named by result equal to TRUE if ++# string_to_find is found anywhere in the following arguments. ++macro(list_contains var value) ++ set(${var}) ++ foreach (value2 ${ARGN}) ++ if (${value} STREQUAL ${value2}) ++ set(${var} TRUE) ++ endif (${value} STREQUAL ${value2}) ++ endforeach (value2) ++endmacro(list_contains) ++ ++# This utility macro extracts the first argument from the list of ++# arguments given, and places it into the variable named var. ++# ++# car(var arg1 arg2 ...) ++macro(car var) ++ set(${var} ${ARGV1}) ++endmacro(car) ++ ++# This utility macro extracts all of the arguments given except the ++# first, and places them into the variable named var. ++# ++# car(var arg1 arg2 ...) ++macro(cdr var junk) ++ set(${var} ${ARGN}) ++endmacro(cdr) ++ ++# The PARSE_ARGUMENTS macro will take the arguments of another macro and ++# define several variables. The first argument to PARSE_ARGUMENTS is a ++# prefix to put on all variables it creates. The second argument is a ++# list of names, and the third argument is a list of options. Both of ++# these lists should be quoted. The rest of PARSE_ARGUMENTS are ++# arguments from another macro to be parsed. ++# ++# PARSE_ARGUMENTS(prefix arg_names options arg1 arg2...) ++# ++# For each item in options, PARSE_ARGUMENTS will create a variable with ++# that name, prefixed with prefix_. So, for example, if prefix is ++# MY_MACRO and options is OPTION1;OPTION2, then PARSE_ARGUMENTS will ++# create the variables MY_MACRO_OPTION1 and MY_MACRO_OPTION2. These ++# variables will be set to true if the option exists in the command line ++# or false otherwise. ++# ++# For each item in arg_names, PARSE_ARGUMENTS will create a variable ++# with that name, prefixed with prefix_. Each variable will be filled ++# with the arguments that occur after the given arg_name is encountered ++# up to the next arg_name or the end of the arguments. All options are ++# removed from these lists. PARSE_ARGUMENTS also creates a ++# prefix_DEFAULT_ARGS variable containing the list of all arguments up ++# to the first arg_name encountered. ++MACRO(PARSE_ARGUMENTS prefix arg_names option_names) ++ SET(DEFAULT_ARGS) ++ FOREACH(arg_name ${arg_names}) ++ SET(${prefix}_${arg_name}) ++ ENDFOREACH(arg_name) ++ FOREACH(option ${option_names}) ++ SET(${prefix}_${option} FALSE) ++ ENDFOREACH(option) ++ ++ SET(current_arg_name DEFAULT_ARGS) ++ SET(current_arg_list) ++ FOREACH(arg ${ARGN}) ++ LIST_CONTAINS(is_arg_name ${arg} ${arg_names}) ++ IF (is_arg_name) ++ SET(${prefix}_${current_arg_name} ${current_arg_list}) ++ SET(current_arg_name ${arg}) ++ SET(current_arg_list) ++ ELSE (is_arg_name) ++ LIST_CONTAINS(is_option ${arg} ${option_names}) ++ IF (is_option) ++ SET(${prefix}_${arg} TRUE) ++ ELSE (is_option) ++ SET(current_arg_list ${current_arg_list} ${arg}) ++ ENDIF (is_option) ++ ENDIF (is_arg_name) ++ ENDFOREACH(arg) ++ SET(${prefix}_${current_arg_name} ${current_arg_list}) ++ENDMACRO(PARSE_ARGUMENTS) ++ ++# Perform a reverse topological sort on the given LIST. ++# ++# topological_sort(my_list "MY_" "_EDGES") ++# ++# LIST is the name of a variable containing a list of elements to be ++# sorted in reverse topological order. Each element in the list has a ++# set of outgoing edges (for example, those other list elements that ++# it depends on). In the resulting reverse topological ordering ++# (written back into the variable named LIST), an element will come ++# later in the list than any of the elements that can be reached by ++# following its outgoing edges and the outgoing edges of any vertices ++# they target, recursively. Thus, if the edges represent dependencies ++# on build targets, for example, the reverse topological ordering is ++# the order in which one would build those targets. ++# ++# For each element E in this list, the edges for E are contained in ++# the variable named ${PREFIX}${E}${SUFFIX}, where E is the ++# upper-cased version of the element in the list. If no such variable ++# exists, then it is assumed that there are no edges. For example, if ++# my_list contains a, b, and c, one could provide a dependency graph ++# using the following variables: ++# ++# MY_A_EDGES b ++# MY_B_EDGES ++# MY_C_EDGES a b ++# ++# With the involcation of topological_sort shown above and these ++# variables, the resulting reverse topological ordering will be b, a, ++# c. ++function(topological_sort LIST PREFIX SUFFIX) ++ # Clear the stack and output variable ++ set(VERTICES "${${LIST}}") ++ set(STACK) ++ set(${LIST}) ++ ++ # Loop over all of the vertices, starting the topological sort from ++ # each one. ++ foreach(VERTEX ${VERTICES}) ++ string(TOUPPER ${VERTEX} UPPER_VERTEX) ++ ++ # If we haven't already processed this vertex, start a depth-first ++ # search from where. ++ if (NOT FOUND_${UPPER_VERTEX}) ++ # Push this vertex onto the stack with all of its outgoing edges ++ string(REPLACE ";" " " NEW_ELEMENT ++ "${VERTEX};${${PREFIX}${UPPER_VERTEX}${SUFFIX}}") ++ list(APPEND STACK ${NEW_ELEMENT}) ++ ++ # We've now seen this vertex ++ set(FOUND_${UPPER_VERTEX} TRUE) ++ ++ # While the depth-first search stack is not empty ++ list(LENGTH STACK STACK_LENGTH) ++ while(STACK_LENGTH GREATER 0) ++ # Remove the vertex and its remaining out-edges from the top ++ # of the stack ++ list(GET STACK -1 OUT_EDGES) ++ list(REMOVE_AT STACK -1) ++ ++ # Get the source vertex and the list of out-edges ++ separate_arguments(OUT_EDGES) ++ list(GET OUT_EDGES 0 SOURCE) ++ list(REMOVE_AT OUT_EDGES 0) ++ ++ # While there are still out-edges remaining ++ list(LENGTH OUT_EDGES OUT_DEGREE) ++ while (OUT_DEGREE GREATER 0) ++ # Pull off the first outgoing edge ++ list(GET OUT_EDGES 0 TARGET) ++ list(REMOVE_AT OUT_EDGES 0) ++ ++ string(TOUPPER ${TARGET} UPPER_TARGET) ++ if (NOT FOUND_${UPPER_TARGET}) ++ # We have not seen the target before, so we will traverse ++ # its outgoing edges before coming back to our ++ # source. This is the key to the depth-first traversal. ++ ++ # We've now seen this vertex ++ set(FOUND_${UPPER_TARGET} TRUE) ++ ++ # Push the remaining edges for the current vertex onto the ++ # stack ++ string(REPLACE ";" " " NEW_ELEMENT ++ "${SOURCE};${OUT_EDGES}") ++ list(APPEND STACK ${NEW_ELEMENT}) ++ ++ # Setup the new source and outgoing edges ++ set(SOURCE ${TARGET}) ++ string(TOUPPER ${SOURCE} UPPER_SOURCE) ++ set(OUT_EDGES ++ ${${PREFIX}${UPPER_SOURCE}${SUFFIX}}) ++ endif(NOT FOUND_${UPPER_TARGET}) ++ ++ list(LENGTH OUT_EDGES OUT_DEGREE) ++ endwhile (OUT_DEGREE GREATER 0) ++ ++ # We have finished all of the outgoing edges for ++ # SOURCE; add it to the resulting list. ++ list(APPEND ${LIST} ${SOURCE}) ++ ++ # Check the length of the stack ++ list(LENGTH STACK STACK_LENGTH) ++ endwhile(STACK_LENGTH GREATER 0) ++ endif (NOT FOUND_${UPPER_VERTEX}) ++ endforeach(VERTEX) ++ ++ 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() ++ ++ ++# ++# A big shout out to the cmake gurus @ compiz ++# ++function (colormsg) ++ string (ASCII 27 _escape) ++ set(WHITE "29") ++ set(GRAY "30") ++ set(RED "31") ++ set(GREEN "32") ++ set(YELLOW "33") ++ set(BLUE "34") ++ set(MAG "35") ++ set(CYAN "36") ++ ++ foreach (color WHITE GRAY RED GREEN YELLOW BLUE MAG CYAN) ++ set(HI${color} "1\;${${color}}") ++ set(LO${color} "2\;${${color}}") ++ set(_${color}_ "4\;${${color}}") ++ set(_HI${color}_ "1\;4\;${${color}}") ++ set(_LO${color}_ "2\;4\;${${color}}") ++ endforeach() ++ ++ set(str "") ++ set(coloron FALSE) ++ foreach(arg ${ARGV}) ++ if (NOT ${${arg}} STREQUAL "") ++ if (CMAKE_COLOR_MAKEFILE) ++ set(str "${str}${_escape}[${${arg}}m") ++ set(coloron TRUE) ++ endif() ++ else() ++ set(str "${str}${arg}") ++ if (coloron) ++ set(str "${str}${_escape}[0m") ++ set(coloron FALSE) ++ endif() ++ set(str "${str} ") ++ endif() ++ endforeach() ++ message(STATUS ${str}) ++endfunction() ++ ++# colormsg("Colors:" ++# WHITE "white" GRAY "gray" GREEN "green" ++# RED "red" YELLOW "yellow" BLUE "blue" MAG "mag" CYAN "cyan" ++# _WHITE_ "white" _GRAY_ "gray" _GREEN_ "green" ++# _RED_ "red" _YELLOW_ "yellow" _BLUE_ "blue" _MAG_ "mag" _CYAN_ "cyan" ++# _HIWHITE_ "white" _HIGRAY_ "gray" _HIGREEN_ "green" ++# _HIRED_ "red" _HIYELLOW_ "yellow" _HIBLUE_ "blue" _HIMAG_ "mag" _HICYAN_ "cyan" ++# HIWHITE "white" HIGRAY "gray" HIGREEN "green" ++# HIRED "red" HIYELLOW "yellow" HIBLUE "blue" HIMAG "mag" HICYAN "cyan" ++# "right?") ++ ++# ++# pretty-prints the value of a variable so that the ++# equals signs align ++# ++function(boost_report_value NAME) ++ string(LENGTH "${NAME}" varlen) ++ math(EXPR padding_len 30-${varlen}) ++ string(SUBSTRING " " ++ 0 ${padding_len} varpadding) ++ colormsg("${NAME}${varpadding} = ${${NAME}}") ++endfunction() ++ ++function(trace NAME) ++ if(BOOST_CMAKE_TRACE) ++ string(LENGTH "${NAME}" varlen) ++ math(EXPR padding_len 40-${varlen}) ++ string(SUBSTRING "........................................" ++ 0 ${padding_len} varpadding) ++ message("${NAME} ${varpadding} ${${NAME}}") ++ endif() ++endfunction() ++ ++# ++# pretty-prints the value of a variable so that the ++# equals signs align ++# ++function(boost_report_pretty PRETTYNAME VARNAME) ++ string(LENGTH "${PRETTYNAME}" varlen) ++ math(EXPR padding_len 30-${varlen}) ++ string(SUBSTRING " " ++ 0 ${padding_len} varpadding) ++ message(STATUS "${PRETTYNAME}${varpadding} = ${${VARNAME}}") ++endfunction() ++ ++# ++# assert that ARG is actually a library target ++# ++macro(dependency_check ARG) ++ trace(ARG) ++ if (NOT ("${ARG}" STREQUAL "")) ++ get_target_property(deptype ${ARG} TYPE) ++ if(NOT deptype MATCHES ".*_LIBRARY$") ++ set(DEPENDENCY_OKAY FALSE) ++ list(APPEND DEPENDENCY_FAILURES ${ARG}) ++ endif() ++ endif() ++endmacro() ++ ++ +diff --git a/tools/build/CMake/CMakeLists.txt b/tools/build/CMake/CMakeLists.txt +new file mode 100644 +index 0000000..a31785f +--- /dev/null ++++ b/tools/build/CMake/CMakeLists.txt +@@ -0,0 +1,77 @@ ++# ++# Copyright (C) Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See accompanying file LICENSE_1_0.txt or copy at ++# http://www.boost.org/LICENSE_1_0.txt ++# ++# ++# On unix this is '/usr/share/cmake/boost' ++# ++set(BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR ++ "share/boost-${BOOST_VERSION}/cmake" ++ CACHE STRING ++ "Directory to install Boost-${BOOST_VERSION} to") ++ ++# ++# Provides version number to sphinx build ++# ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/source/boost_cmake_version.py.in ++ ${CMAKE_CURRENT_SOURCE_DIR}/docs/source/boost_cmake_version.py) ++ ++# ++# Makefile for sphinx build with maintainer targets ++# ++configure_file(${CMAKE_CURRENT_SOURCE_DIR}/docs/Makefile.in ++ ${CMAKE_CURRENT_SOURCE_DIR}/docs/Makefile) ++ ++# ++# File used by BoostConfigVersion to import targets/libs/etc ++# into users's cmake build ++# ++foreach (file ++ BoostConfig ++ BoostConfigVersion ++ BoostConfigAgnostic ++ BoostConfigVersionAgnostic) ++ configure_file( ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/${file}.cmake.in ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/${file}.cmake @ONLY) ++endforeach() ++ ++ ++# ++# These are generated, version-specific ++# ++install(FILES ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/BoostConfigVersion.cmake ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/BoostConfig.cmake ++ DESTINATION ${BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR} ++ ) ++ ++# ++# The files that go in /share/cmake/boost that search for ++# Boost-.cmake files (user specifies ) ++# ++option(BOOST_INSTALL_CMAKE_DRIVERS ++ "Install version-agnostic BoostConfig.cmake and BoostConfigVersion.cmake to this subdirectory of CMAKE_INSTALL_PREFIX" ON) ++ ++if (BOOST_INSTALL_CMAKE_DRIVERS) ++ if (NOT BOOST_CMAKE_DRIVERS_INSTALL_DIR) ++ set(agnostic_infra_dir "share/cmake/boost") ++ else() ++ set(agnostic_infra_dir ${BOOST_CMAKE_DRIVERS_INSTALL_DIR}) ++ endif() ++ install(FILES ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/BoostConfigAgnostic.cmake ++ DESTINATION ${agnostic_infra_dir} ++ RENAME BoostConfig.cmake ++ ) ++ install(FILES ++ ${CMAKE_CURRENT_SOURCE_DIR}/install_me/BoostConfigVersionAgnostic.cmake ++ DESTINATION ${agnostic_infra_dir} ++ RENAME BoostConfigVersion.cmake ++ ) ++endif() ++ ++ +diff --git a/tools/build/CMake/CTestCustom.cmake.in b/tools/build/CMake/CTestCustom.cmake.in +new file mode 100644 +index 0000000..c5ad493 +--- /dev/null ++++ b/tools/build/CMake/CTestCustom.cmake.in +@@ -0,0 +1,5 @@ ++message(FATAL_ERROR "Please customize CTestCustom.cmake, found in your build directory") ++ ++set(SITE "Set To Your Hostname") ++set(CMAKE_VERBOSE_MAKEFILE TRUE) ++ +diff --git a/tools/build/CMake/CompileTest/CMakeLists.txt b/tools/build/CMake/CompileTest/CMakeLists.txt +new file mode 100644 +index 0000000..d5a5908 +--- /dev/null ++++ b/tools/build/CMake/CompileTest/CMakeLists.txt +@@ -0,0 +1,12 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++cmake_minimum_required(VERSION 2.6) ++project(CompileTest) ++add_library(compile-test STATIC ${SOURCE}) ++include_directories(${INCLUDES}) ++set_source_files_properties(${SOURCE} ++ PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") +\ No newline at end of file +diff --git a/tools/build/CMake/FindICU.cmake b/tools/build/CMake/FindICU.cmake +new file mode 100644 +index 0000000..9dff9f3 +--- /dev/null ++++ b/tools/build/CMake/FindICU.cmake +@@ -0,0 +1,51 @@ ++# Finds the International Components for Unicode (ICU) Library ++# ++# ICU_FOUND - True if ICU found. ++# ICU_I18N_FOUND - True if ICU's internationalization library found. ++# ICU_INCLUDE_DIRS - Directory to include to get ICU headers ++# Note: always include ICU headers as, e.g., ++# unicode/utypes.h ++# ICU_LIBRARIES - Libraries to link against for the common ICU ++# ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation ++# (note: in addition to ICU_LIBRARIES) ++ ++# Look for the header file. ++find_path( ++ ICU_INCLUDE_DIR ++ NAMES unicode/utypes.h ++ DOC "Include directory for the ICU library") ++mark_as_advanced(ICU_INCLUDE_DIR) ++ ++# Look for the library. ++find_library( ++ ICU_LIBRARY ++ NAMES icuuc cygicuuc cygicuuc32 ++ DOC "Libraries to link against for the common parts of ICU") ++mark_as_advanced(ICU_LIBRARY) ++ ++# Copy the results to the output variables. ++if(ICU_INCLUDE_DIR AND ICU_LIBRARY) ++ set(ICU_FOUND 1) ++ set(ICU_LIBRARIES ${ICU_LIBRARY}) ++ set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR}) ++ ++ # Look for the ICU internationalization libraries ++ find_library( ++ ICU_I18N_LIBRARY ++ NAMES icuin icui18n cygicuin cygicuin32 ++ DOC "Libraries to link against for ICU internationalization") ++ mark_as_advanced(ICU_I18N_LIBRARY) ++ if (ICU_I18N_LIBRARY) ++ set(ICU_I18N_FOUND 1) ++ set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY}) ++ else (ICU_I18N_LIBRARY) ++ set(ICU_I18N_FOUND 0) ++ set(ICU_I18N_LIBRARIES) ++ endif (ICU_I18N_LIBRARY) ++else(ICU_INCLUDE_DIR AND ICU_LIBRARY) ++ set(ICU_FOUND 0) ++ set(ICU_I18N_FOUND 0) ++ set(ICU_LIBRARIES) ++ set(ICU_I18N_LIBRARIES) ++ set(ICU_INCLUDE_DIRS) ++endif(ICU_INCLUDE_DIR AND ICU_LIBRARY) +diff --git a/tools/build/CMake/LinkTest/CMakeLists.txt b/tools/build/CMake/LinkTest/CMakeLists.txt +new file mode 100644 +index 0000000..4532709 +--- /dev/null ++++ b/tools/build/CMake/LinkTest/CMakeLists.txt +@@ -0,0 +1,26 @@ ++# ++# Copyright Troy D. Straszheim ++# ++# Distributed under the Boost Software License, Version 1.0. ++# See http://www.boost.org/LICENSE_1_0.txt ++# ++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}) ++set_source_files_properties(${SOURCE} ++ PROPERTIES COMPILE_FLAGS "${COMPILE_FLAGS}") ++ ++message("DEPENDS=====${DEPENDS}") ++ ++target_link_libraries(link-test ++ ${LINK_LIBS} ++ ${DEPENDS}) +diff --git a/tools/build/CMake/catalog.xml.in b/tools/build/CMake/catalog.xml.in +new file mode 100644 +index 0000000..75bc4f1 +--- /dev/null ++++ b/tools/build/CMake/catalog.xml.in +@@ -0,0 +1,9 @@ ++ ++ ++ ++ ++ ++ ++ +diff --git a/tools/build/CMake/docs/.gitignore b/tools/build/CMake/docs/.gitignore +new file mode 100644 +index 0000000..7f67dd3 +--- /dev/null ++++ b/tools/build/CMake/docs/.gitignore +@@ -0,0 +1,4 @@ ++build/doctrees ++build/latex ++Makefile ++ +diff --git a/tools/build/CMake/docs/Makefile.in b/tools/build/CMake/docs/Makefile.in +new file mode 100644 +index 0000000..e51563a +--- /dev/null ++++ b/tools/build/CMake/docs/Makefile.in +@@ -0,0 +1,101 @@ ++# ++# Makefile for Sphinx documentation ++# ++ ++# You can set these variables from the command line. ++SPHINXOPTS = ++SPHINXBUILD = sphinx-build ++PAPER = ++ ++# Internal variables. ++PAPEROPT_a4 = -D latex_paper_size=a4 ++PAPEROPT_letter = -D latex_paper_size=letter ++ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source ++ ++.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest ++ ++help: ++ @echo "Please use \`make ' where is one of" ++ @echo " html to make standalone HTML files" ++ @echo " dirhtml to make HTML files named index.html in directories" ++ @echo " pickle to make pickle files" ++ @echo " json to make JSON files" ++ @echo " htmlhelp to make HTML files and a HTML help project" ++ @echo " qthelp to make HTML files and a qthelp project" ++ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" ++ @echo " changes to make an overview of all changed/added/deprecated items" ++ @echo " linkcheck to check all external links for integrity" ++ @echo " doctest to run all doctests embedded in the documentation (if enabled)" ++ ++clean: ++ -rm -rf build/* ++ ++html: ++ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html ++ @echo ++ @echo "Build finished. The HTML pages are in build/html." ++ ++dirhtml: ++ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) build/dirhtml ++ @echo ++ @echo "Build finished. The HTML pages are in build/dirhtml." ++ ++pickle: ++ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle ++ @echo ++ @echo "Build finished; now you can process the pickle files." ++ ++json: ++ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) build/json ++ @echo ++ @echo "Build finished; now you can process the JSON files." ++ ++htmlhelp: ++ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp ++ @echo ++ @echo "Build finished; now you can run HTML Help Workshop with the" \ ++ ".hhp project file in build/htmlhelp." ++ ++qthelp: ++ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) build/qthelp ++ @echo ++ @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ++ ".qhcp project file in build/qthelp, like this:" ++ @echo "# qcollectiongenerator build/qthelp/boost-cmake.qhcp" ++ @echo "To view the help file:" ++ @echo "# assistant -collectionFile build/qthelp/boost-cmake.qhc" ++ ++latex: ++ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex ++ @echo ++ @echo "Build finished; the LaTeX files are in build/latex." ++ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ ++ "run these through (pdf)latex." ++ ++changes: ++ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes ++ @echo ++ @echo "The overview file is in build/changes." ++ ++linkcheck: ++ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck ++ @echo ++ @echo "Link check complete; look for any errors in the above output " \ ++ "or in build/linkcheck/output.txt." ++ ++doctest: ++ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) build/doctest ++ @echo "Testing of doctests in the sources finished, look at the " \ ++ "results in build/doctest/output.txt." ++ ++deploy: ++ make html ++ rsync --delete -va build/html/ @BOOST_CMAKE_URL@/doc/ ++ ++ make latex ++ make -C build/latex all-pdf ++ scp build/latex/boost-@BOOST_CMAKE_VERSION@.pdf @BOOST_CMAKE_URL@ ++ ++deploy-current-docs: ++ make html ++ rsync --delete -va build/html/ @BOOST_CMAKE_HOST@:@BOOST_CMAKE_DOCROOT@/current-docs/ +diff --git a/tools/build/CMake/docs/build/html/.buildinfo b/tools/build/CMake/docs/build/html/.buildinfo +new file mode 100644 +index 0000000..f482eff +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/.buildinfo +@@ -0,0 +1,4 @@ ++# Sphinx build info version 1 ++# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. ++config: 8f03172e7d0da74db617946b267b7981 ++tags: fbb0d17656682115ca4d033fb2f83ba1 +diff --git a/tools/build/CMake/docs/build/html/_images/MacInstaller.png b/tools/build/CMake/docs/build/html/_images/MacInstaller.png +new file mode 100644 +index 0000000..4beb2ec +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_images/MacInstaller.png differ +diff --git a/tools/build/CMake/docs/build/html/_images/WindowsInstaller.png b/tools/build/CMake/docs/build/html/_images/WindowsInstaller.png +new file mode 100644 +index 0000000..fb0ea55 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_images/WindowsInstaller.png differ +diff --git a/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt b/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt +new file mode 100644 +index 0000000..6b391a1 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/add_boost_library.txt +@@ -0,0 +1,57 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _add_boost_library_project: ++ ++Adding a Library Project ++======================== ++ ++This page describes how to introduce a new Boost library project into ++the CMake-based build system. Any Boost library that provides a ++library binary (e.g., ``boost_signals.dll``) or has regression tests ++(hopefully, every Boost library!) will need to be part of the build ++system. ++ ++To introduce a new library, which resides in the subdirectory ++``libs/libname``, follow these steps: ++ ++1. Create a new file ``libs/libname/CMakeLists.txt`` with your ++ favorite text editor. This file will contain an invocation of the ++ :ref:`boost_library_project_macro`, which ++ identifies each Boost library to the build system. The invocation ++ of the ``boost_library_project`` will look like this:: ++ ++ boost_library_project( ++ Libname ++ SRCDIRS src ++ TESTDIRS test ++ EXAMPLEDIRS test ++ ) ++ ++ where ``Libname`` is the properly-capitalization library name, ++ e.g., ``Signals`` or ``Smart_ptr``. The ``SRCDIRS src`` line should ++ only be present if your Boost library actually needs to compile a ++ library binary; header-only libraries can skip this step. The ++ ``TESTDIRS test`` line indicates that the subdirectory ``test`` ++ contains regression tests for your library. Every Boost library ++ should have these. ++ ++2. Re-run CMake (see :ref:`quickstart`) to reconfigure the source ++ tree, causing CMake to find the new Boost library. CMake can be ++ re-run either from the command line (by invoking ``cmake ++ /path/to/boost`` or ``ccmake /path/to/boost``) or, on Windows, ++ using the CMake GUI. Once you have reconfigured and generated new ++ makefiles or project files, CMake knows about your library. ++ ++3. If your library has compiled sources (i.e., it is not a header-only ++ library), follow the instructions on :ref:`add_compiled_library` to ++ get CMake building and installing your library. ++ ++4. If your library has regression tests (it *does* regression tests, ++ right?), follow the instructions on :ref:`adding_regression_tests` ++ to get CMake to build and run regression tests for your library. +diff --git a/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt b/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt +new file mode 100644 +index 0000000..0eb8c9d +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/add_compiled_library.txt +@@ -0,0 +1,239 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _add_compiled_library: ++ ++Adding a Compiled Library to CMake ++================================== ++ ++This page describes how to add a new, compiled library to the ++CMake-based build system. If your library is a "header-only" library, ++and does not require separate compilation of object files into a ++library binary, you can safely skip this step. Before adding compiled ++libraries to CMake, make sure you have already followed the directions ++for :ref:`boost_library_project_macro`, so that the CMake system recognizes your ++Boost library. ++ ++We will assume that your library resides in the subdirectory ++``libs/libname``, and that we want to create the compiled library ++``boost_libname``. We will also assume that the sources for this ++library reside in the subdirectory ``libs/libname/src``. The source ++directory should be listed via ``SRCDIRS`` in the use of the ++:ref:`boost_library_project_macro` macro, as described in the previous ++section. Follow these steps to add this new ++library into Boost's build system. If your library has multiple source ++directories listed after ``SRCDIRS``, follow these steps for each one. ++ ++1. Create a new file ``libs/libname/src/CMakeLists.txt`` with your ++ favorite text editor. This file will contain build rules for your ++ compiled library. In this file, we will create one or more ++ invocations of the :ref:`boost_add_library_macro` macro, which adds a ++ compiled Boost library to the CMake system. This macro provides the ++ name of the library, the source files from which the library will ++ be built, and any specific compiler and linker options needed to ++ help build the library. Let's start by adding a simple library with ++ a few source files:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ ) ++ ++ This invocation will build several variants of the ++ ``boost_libname`` library from the source files ``mysrc1.cpp`` and ++ ``mysrc2.cpp``. For example, it will build both static and shared ++ library, single- and multi-threaded, debug and release, etc. This ++ invocation also handles the installation of these libraries. ++ ++2. For simple libraries, that's it! Rebuilding via CMake (e.g., ++ running ``make`` or reloading and rebuilding the Boost project in ++ your IDE) will build the new library, including several different ++ variants for different compilation options. Your Boost library will ++ also be included when the user installs Boost or builds a binary ++ package of Boost. Within the CMake configuration, you will also see ++ an option ``BUILD_LIBNAME``, which allows the user to decide ++ whether or not to build this Boost library. ++ ++3. Many libraries will need specific compilation options when ++ building, need to link against other libraries (Boost or ++ otherwise), or rely on certain features of the compilation process ++ to proceed. Follow the instructions in the remaining part of this ++ page to address these library-specific needs. ++ ++ ++Compilation Flags ++----------------- ++ ++Many libraries require certain compilation flags when we are building ++the library binaries themselves (rather than when the library headers ++are included by the user). For example, we want to define the macro ++``BUILDING_BOOST_LIBNAME`` when building the library. We can do so by ++passing the ``COMPILE_FLAGS`` option to ``boost_add_library``:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ ) ++ ++Now when CMake builds the library, it will pass the flag ++``-DBUILDING_BOOST_LIBNAME=1`` to the compiler. ++ ++On Windows, shared libraries are built very differently from static ++libraries. In particular, when building a shared library, one needs to ++be sure to export the right symbols from the DLL using ++``dllexport``. When users use the shared library, these symbols will be ++imported (via ``dllimport``). The typical way to handle this is to ++define a macro (say, ``BOOST_LIBNAME_DYN_LINK``) when building the ++shared library. This macro instructs the library headers to ++``dllexport`` everything that needs to be exported. We can do this with ++variant-specific compile flags, e.g., :: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ ) ++ ++When building a shared library, the ``SHARED_COMPILE_FLAGS`` options ++will be combined with the ``COMPILE_FLAGS`` options. When building a ++static library, the ``SHARED_COMPILE_FLAGS`` options will be ++ignored. There are other options that can be specified per-feature, ++such as ``LINK_FLAGS`` and ``LINK_LIBS``; refer to the ++:ref:`boost_add_library_macro` reference for more ++information. ++ ++Linking to Other Boost Libraries ++-------------------------------- ++ ++Some Boost libraries depends on other Boost libraries. For example, ++perhaps our library uses the Boost.Filesystem library under the ++hood. We can use the ``DEPENDS`` feature of the ++:ref:`boost_add_library_macro` to state which libraries our library ++depends on. In this example, we'll link against ``boost_filesystem``:: ++ ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ ) ++ ++Now, each variant of the ``boost_libname`` library will link against ++the appropriate ``boost_filesystem`` library variant. Whenever ++``boost_filesystem`` changes, our library will be relinked ++appropriately. ++ ++Linking External Libraries/Optional Sources ++------------------------------------------- ++ ++Sometimes, Boost libraries need to link against other libraries ++supplied by the system. The primary challenge in linking against these ++libraries is *finding* those libraries, and their associated headers, ++on the system. If the library is found, we usually want to pass some ++extra compilation flags to our library and add in additional ++sources. Otherwise, we just skip these extra sources. ++ ++CMake already contains modules that search for many common system ++libraries and tools; search the ++[http://www.cmake.org/HTML/Documentation.html CMake Documentation] for ++existing modules that do what you need. For example, say we want to ++link against the system's ``PNG`` (portable network graphics) library. ++We can use the supplied ``FindPNG`` module by adding the following ++early in our ``CMakeLists.txt`` file: :: ++ ++ include(FindPNG) ++ ++Documentation for CMake modules is typically found in the module file ++itself. Look into the ``Modules`` subdirectory of your CMake ++installation, either in ``Program Files\CMake`` (on Windows) or ++``/usr/share/cmake-version`` (on Unix variants) to find the module of ++the same name. The module will typically set a variable that indicates ++whether the library was found. For the ``FindPNG`` module, this variable ++is called ``PNG_FOUND``. We can use this variable to optionally add ++sources to a variable ``EXTRA_SOURCES``:: ++ ++ include(FindPNG) ++ set(EXTRA_SOURCES) ++ if (PNG_FOUND) ++ list(APPEND EXTRA_SOURCES png.cpp) ++ endif (PNG_FOUND) ++ ++ ++CMake modules also typically define macros specifying the include ++directories needed for the library, any compile-time definitions ++required to use the library, and linking information for the library ++binary. For the ``FindPNG`` module, these variables are called ++``PNG_INCLUDE_DIR``, ``PNG_DEFINITIONS`` and ``PNG_LIBRARY``, respectively. ++ ++The include directory should be added via the CMake ++``include_directories`` macro, e.g., :: ++ ++ include_directories(${PNG_INCLUDE_DIR}) ++ ++The ``PNG_DEFINITIONS`` value should be added to the ``COMPILE_FLAGS`` ++and the ``PNG_LIBRARIES`` value to the ``LINK_LIBS`` option to the ++:ref:`boost_add_library_macro`. Using these features together, we can ++search for the ``PNG`` library on the system and optionally include ++PNG support into our library:: ++ ++ include(FindPNG) ++ set(EXTRA_SOURCES) ++ if (PNG_FOUND) ++ include_directories(${PNG_PNG_INCLUDE_DIR}) ++ list(APPEND EXTRA_SOURCES png.cpp) ++ endif (PNG_FOUND) ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ ${EXTRA_SOURCES} ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1 ${PNG_DEFINITIONS}" ++ LINK_LIBS "${PNG_LIBRARIES}" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ ) ++ ++If CMake does not provide a module to search for the library you need, ++don't worry! You can write your own module relatively easily, ++following the examples from the CMake ``Modules`` directory or some of ++the Boost-specific examples, such as ++http://svn.boost.org/svn/boost/branches/release/tools/build/CMake/FindICU.cmake ++For a real-life example of finding system libraries and using that ++information to add optional, extra capabilities to a Boost library, ++check out the build rules for the Boost.IOStreams library at ++http://svn.boost.org/svn/boost/branches/release/libs/iostreams/src/CMakeLists.txt ++ ++.. index:: Variants ++ ++Build Variants ++-------------- ++ ++The Boost build system defines many different :ref:`VARIANTS`, which ++describe specific properties of certain builds. For example, the ++``SHARED`` feature indicates that we are building a shared library, ++while the ``MULTI_THREADED`` feature indicates that we are building a ++multi-threaded library. A specific set of features is called a ++``````variant``````, e.g., ``RELEASE`` and ``MULTI_THREADED`` and ++``SHARED``. By default, the CMake-based build system builds several ++different variants of each Boost library. ++ ++Since some features conflict with certain libraries (a threading ++library cannot be ``SINGLE_THREADED``!), one can pass additional flags ++to :ref:`boost_add_library_macro` stating which features should the library ++cannot be built with. For example, say that our library cannot be ++built as a multi-threaded library, because it uses thread-unsafe ++routines from the underlying C library. To disable multi-threaded ++variants of the library, pass the option ``NOT_MULTI_THREADED``:: ++ ++ boost_add_library(libname ++ mysrc1.cpp mysrc2.cpp ++ COMPILE_FLAGS "-DBUILDING_BOOST_LIBNAME=1" ++ SHARED_COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ DEPENDS boost_filesystem ++ NOT_MULTI_THREADED ++ ) ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt b/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt +new file mode 100644 +index 0000000..9d2618f +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/adding_regression_tests.txt +@@ -0,0 +1,115 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: regression tests; adding ++.. _adding_regression_tests: ++ ++Adding Regression Tests ++======================= ++ ++This page describes how to add regression tests for a Boost library in ++the CMake-based build system. Before adding regression tests, make ++sure you have already followed the directions for ++:ref:`boost_library_project_macro` , so that the CMake system ++recognizes your Boost library project, and (if necessary) ++:ref:`add_compiled_library`. We also assume that you have already ++configured your build tree for regression testing of your library, by ++adding your library project's name to the :ref:`BUILD_TESTS` option ++described in the section :ref:`testing`. ++ ++In this page, we will assume that your library resides in the ++subdirectory ``libs/libname``, and that tests for this library are ++stored in ``libs/libname/test``. The test directory should be listed ++via :ref:`TESTDIRS` in the call of ++:ref:`boost_library_project_macro`. Follow these steps to add this new ++library into Boost's build system. If your library has multiple ++testing directories listed after :ref:`TESTDIRS`, follow these steps for ++each one. ++ ++#. Create a new file ``libs/libname/test/CMakeLists.txt`` file with ++ your favorite text editor. This file will contain instructions for ++ building and running each of the regression tests for your library. ++ ++#. If your regression test depends on any other part of boost then ++ you will need to inform the build system of such with the ++ following line:: ++ ++ boost_additional_test_dependencies(libname BOOST_DEPENDS test fusion) ++ ++ where 'libname' is the name of your library that you are testing. ++ ++#. For each test that only needs to be compiled (but not executed), ++ add a ``compile`` or ``compile_fail`` test using the ++ :ref:`boost_test_compile` or :ref:`boost_test_compile_fail` ++ macros, respectively. The most basic usage of these macros ++ provides only the test name, e.g., :: ++ ++ boost_test_compile(compile_test) ++ boost_test_compile_fail(compile_fail_test) ++ ++ This code will create two regression tests. The first, ++ ``compile_test``, will try to compile the source file ++ ``compile_test.cpp`` in the current source directory. If the ++ compile is successful, the regression test passes. If the compile ++ fails, the regression test fails. The second regression test works ++ the opposite way: it will try to compile ++ ``compile_fail_test.cpp``: if the compilation is successful, the ++ regression test fails. When you run the regression tests (e.g., by ++ calling ``ctest`` from the build directory), the regression tests ++ will execute and produce output like the following:: ++ ++ Running tests... ++ Start processing tests ++ Test project /Users/dgregor/Projects/boost-darwin ++ 1/ 2 Testing libname::compile_test Passed ++ 2/ 2 Testing libname::compile_fail_test ***Failed - supposed to fail ++ ++ 100% tests passed, 0 tests failed out of 2 ++ ++3. For any tests that need to be built and executed, use the ++ :ref:`boost_test_run` or :ref:`boost_test_run_fail` macros. Both ++ tests will build, link and execute a regression test. The ++ :ref:`boost_test_run` macro expects that executable to return an ++ exit code of zero, while the :ref:`boost_test_run_fail` macro ++ expects that executable to return a non-zero exit code. For ++ example, we might build a simple test ``simple_test`` from the ++ source file ``simple_test.cpp``:: ++ ++ boost_test_run(simple_test) ++ ++ Often, we'll want to link against our own Boost library, which we ++ do using the ``DEPENDS`` argument to ``boost_test_run``:: ++ ++ boost_test_run(big_test big_test1.cpp big_test2.cpp ++ DEPENDS boost_libname-static ++ ) ++ ++ Here, we have created a test ``big_test``, built from the source ++ files ``big_test1.cpp`` and ``big_test2.cpp``, which will link ++ against the static library for ``boost_libname``. We could create ++ a similar test that links against the shared library for ++ ``boost_libname``, passing along compilation flags specific to the ++ shared library:: ++ ++ boost_test_run(big_test_dll big_test1.cpp big_test2.cpp ++ DEPENDS boost_libname-shared ++ COMPILE_FLAGS "-DBOOST_LIBNAME_DYN_LINK=1" ++ ) ++ ++ Some tests require command-line arguments. For example, say we ++ want to pass ``-loop 1000`` to a randomized test. We can do so ++ using the ``ARGS`` argument to ``boost_test_run`` (or ++ ``boost_test_run_fail``):: ++ ++ boost_test_run(random_test ARGS "-loop" "1000" DEPENDS boost_libname-static) ++ ++ Once you have finished describing your regression tests to the ++ CMake system, you're done! Your library will now build, test, and ++ install with CMake and this behavior should be portable across ++ many different platforms. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/build_configuration.txt b/tools/build/CMake/docs/build/html/_sources/build_configuration.txt +new file mode 100644 +index 0000000..680e3dd +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/build_configuration.txt +@@ -0,0 +1,297 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _configure_and_build: ++ ++Configuring the buildspace ++========================== ++ ++Configuration tools ++------------------- ++ ++Included in the standard cmake distribution are the Windows `CMake` ++gui and the unix `ccmake` curses interface, which allow one to ++configure various aspects of the cmake build. On Microsoft Windows ++run the CMake configuration program from the Start menu. ++ ++Having done the initial configuration step as in :ref:`quickstart`, ++on unix run:: ++ ++ make edit_cache ++ ++in the binary directory. On windows just run the cmake gui and choose ++the binary dir from the pulldown menu. You will be presented with a list of editable build options something ++like this:: ++ ++ BOOST_PLATFORM linux ++ BUILD_BCP ON ++ BUILD_BOOST_WSERIALIZATION ON ++ BUILD_EXAMPLES NONE ++ BUILD_INSPECT ON ++ BUILD_TESTS NONE ++ CMAKE_BUILD_TYPE Release ++ CMAKE_INSTALL_PREFIX /usr/local ++ DART_TESTING_TIMEOUT 15 ++ DEBUG_COMPILE_FLAGS -g ++ DOCBOOK_AUTOCONFIG OFF ++ DOCBOOK_DTD_DIR DOCBOOK_DTD_DIR-NOTFOUND ++ DOCBOOK_XSL_DIR DOCBOOK_XSL_DIR-NOTFOUND ++ ENABLE_DEBUG ON ++ ENABLE_MULTI_THREADED ON ++ ENABLE_RELEASE ON ++ ENABLE_SHARED ON ++ ENABLE_SINGLE_THREADED OFF ++ ENABLE_STATIC ON ++ RELEASE_COMPILE_FLAGS -O3 -DNDEBUG ++ UNZIP /usr/bin/unzip ++ WINMANGLE_LIBNAMES OFF ++ XSLTPROC /usr/bin/xsltproc ++ XSLTPROC_FLAGS --xinclude ++ ++On windows, the configurables will be right in the middle of the gui; ++can't miss 'em. Note the ``[t]`` key to toggle 'advanced mode' which ++will show more options (on windows this is a selection box that says ++``Simple View`` by default, pull it down to see Advanced and Grouped ++views). ++ ++Use the arrow keys to select particular options. Press :kbd:`c` (for ++(c)onfigure) to perform the preliminary configuration of the CMake ++build system when you are done. When the options you have selected ++have stabilized, CMake will give you the (g)enerate option. If you do ++not see this option, press :kbd:`c` again to reconfigure. Try the ++:kbd:`t` key to see more options. When you're done press :kbd:`g` to ++generate makefiles and exit. ++ ++See :ref:`VARIANTS` for information about the feature-specific options ++(ie ``ENABLE_whatever`` listed above.) ++ ++.. _cmakecache.txt: ++ ++CMakeCache.txt ++============== ++ ++The same information is stored in a file `CMakeCache.txt` located in ++the build directory. For this reason, after you've done the initial ++configuration of a build directory you can invoke `ccmake` like this:: ++ ++ ccmake ++ ++or have the makefiles do it for you:: ++ ++ make edit_cache ++ ++The CMakeCache.txt file is hand-editable, though this is usually not ++as convenient as the cmake-supplied configuration tools mentioned ++above. An excerpt of this file:: ++ ++ // ++ // Enable/Disable color output during build. ++ // ++ CMAKE_COLOR_MAKEFILE:BOOL=ON ++ ++ // ++ // Mangle lib names for windows, e.g., boost_filesystem-gcc41-1_34 ++ // ++ WINMANGLE_LIBNAMES:BOOL=ON ++ ++ ++On unix, (?windows too?) the generated makefiles will detect if this ++file has been edited and will automatically rerun the makefile ++generation phase. If you should need to trigger this regeneration ++manually you may execute :: ++ ++ make rebuild_cache ++ ++.. rubric:: Deleting the cache ++ ++You may find yourself wanting to start from scratch, for instance if ++you want to switch from using Visual Studio to using NMake. To do ++this, **delete the cache file**. On windows, there is a *Delete ++Cache* option in the CMake gui's *File* menu. On unix you can simply ++``rm CMakeCache.txt``. ++ ++.. index:: CMAKE_BINARY_DIR ++.. _CMAKE_BINARY_DIR: ++ ++CMAKE_BINARY_DIR ++---------------- ++ ++This variable is set by cmake and corresponds to the toplevel of your ++``build/`` directory. ++ ++ ++.. _useful_options: ++ ++A few useful options ++-------------------- ++ ++CMAKE_OSX_ARCHITECTURES ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++ *Mac OS X users*: to build universal binaries, set this to ++ ``ppc;i386``. ++ ++.. index:: WINMANGLE_LIBNAMES ++.. _winmangle_libnames: ++ ++WINMANGLE_LIBNAMES ++^^^^^^^^^^^^^^^^^^ ++ ++This option controls whether libraries will be built with mangled-in ++compiler name/version and boost version. For example, with ++``BUILD_VERSIONED`` set to ``OFF``, the signals library looks like ++this:: ++ ++ % ls lib/*signals* ++ lib/libboost_signals-mt-d.a lib/libboost_signals-mt.a ++ lib/libboost_signals-mt-d.so* lib/libboost_signals-mt.so* ++ ++But with it on, (on a gcc 4.3 linux box):: ++ ++ % ls lib/*signal* ++ lib/libboost_signals-gcc43-mt-1_40.a ++ lib/libboost_signals-gcc43-mt-d-1_40.a ++ lib/libboost_signals-gcc43-mt-1_40.so* ++ lib/libboost_signals-gcc43-mt-d-1_40.so* ++ ++Historically this mangling has been convenient for windows users and a ++bane to unix users, thus *winmangle_libnames*. ++ ++.. note:: The on-disk names of library :ref:`variants ` are ++ always mangled with the active :ref:`features `. ++ ``WINMANGLED_LIBNAMES`` affects mangling of compiler and boost ++ version only. ++ ++.. index:: BUILD_PROJECTS ++.. _BUILD_PROJECTS: ++ ++BUILD_PROJECTS ++^^^^^^^^^^^^^^ ++ ++This is a semicolon-separated list of projects to be built, or ++``"ALL"`` (the default) for all projects, or ``"NONE"``. Projects not ++appearing in this list (if list not ``"ALL"``) are ignored; no targets in ++this project will appear. Example:: ++ ++ BUILD_PROJECTS=thread;python ++ ++See also the :ref:`boost_library_project_macro` macro. ++ ++.. note:: ++ ++ If you specify a project with link time dependencies on other ++ projects, e.g. ``filesystem``, (which depends on ``system``) and ++ omit the dependencies, you will get an error from cmake something ++ like this:: ++ ++ CMake Error at tools/build/CMake/BoostCore.cmake:736 (get_property): ++ get_property could not find TARGET boost_system-mt-shared. Perhaps it has ++ not yet been created. ++ Call Stack (most recent call first): ++ tools/build/CMake/BoostCore.cmake:1170 (boost_library_variant) ++ libs/filesystem/src/CMakeLists.txt:7 (boost_add_library) ++ ++ ++.. index:: BUILD_EXAMPLES ++.. _BUILD_EXAMPLES: ++ ++BUILD_EXAMPLES ++^^^^^^^^^^^^^^ ++ ++This is a semicolon-separated list of projects whose examples should ++be built, e.g.:: ++ ++ BUILD_EXAMPLES="iostreams;accumulators" ++ ++.. warning:: If you pass this on the commandline in a unix shell, ++ don't forget to quote the list of arguments or escape the ++ semicolons... ++ ++Per-library examples are specified with the :ref:`EXAMPLEDIRS` ++argument to the :ref:`boost_library_project_macro` macro. ++ ++.. rubric:: Note: ++ ++A project's examples will only be built if the project appears in ++**both** :ref:`BUILD_PROJECTS` and :ref:`BUILD_EXAMPLES`. I.e., the ++``BUILD_PROJECTS`` filter is applied first, and the ``BUILD_EXAMPLES`` ++filter has no ability to reverse the result. ++ ++.. index:: BUILD_TOOLS ++.. _BUILD_TOOLS: ++ ++BUILD_TOOLS ++^^^^^^^^^^^ ++ ++Similar to BUILD_EXAMPLES and BUILD_PROJECTS above, this is a ++semicolon-separated list of tools (in subdirectory ++``$BOOST_ROOT/tools/``) that should be built, e.g.:: ++ ++ BUILD_TOOLS=quickbook;wave ++ ++``"ALL"`` will build all tools, ``"NONE"`` will build none. Note that ++the values here are lowercase (only subdirectories of ``tools/`` ++matching one of the strings in the list will be traversed by cmake). ++ ++.. index:: verbosity; CMAKE_VERBOSE_MAKEFILE ++ ++CMAKE_VERBOSE_MAKEFILE ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ Displays full build commands during build. Good for debugging. ++ This option will generate permanently verbose makefiles; it is ++ generally easier to invoke make with the option ``VERBOSE=1`` ++ instead (this has the same effect, but is not persistent). ++ ++.. index:: CMAKE_CXX_COMPILER ++ ++.. _cmake_cxx_compiler: ++ ++CMAKE_CXX_COMPILER ++^^^^^^^^^^^^^^^^^^ ++ ++ Sets the compiler. If you have a nonstandard compiler and no ++ default compiler, you may have to pass the value of this option on ++ the commandline, for example:: ++ ++ cmake ../src -DCMAKE_CXX_COMPILER=gcc-4.4 ++ ++ On windows you can set this in the gui, but you will probably prefer ++ to have cmake generate a set of nmake or project files by choosing ++ an appropriate generator. ++ ++.. index:: BUILD_SOVERSIONED ++.. index:: soversion ++.. index:: soname ++.. _BUILD_SOVERSIONED: ++ ++BUILD_SOVERSIONED ++^^^^^^^^^^^^^^^^^ ++ ++Enables the setting of SOVERSION in built libraries. If ++this is on:: ++ ++ % ls -l libboost_thread*.so* ++ lrwxrwxrwx 1 troy troy 30 Oct 29 18:37 libboost_thread-mt-d.so -> libboost_thread-mt-d.so.1.41.0* ++ -rwxr-xr-x 1 troy troy 571361 Oct 29 18:37 libboost_thread-mt-d.so.1.41.0* ++ lrwxrwxrwx 1 troy troy 28 Oct 29 18:37 libboost_thread-mt.so -> libboost_thread-mt.so.1.41.0* ++ -rwxr-xr-x 1 troy troy 114963 Oct 29 18:37 libboost_thread-mt.so.1.41.0* ++ ++ % readelf -a libboost_thread-mt.so | grep SONAME ++ 0x000000000000000e (SONAME) Library soname: [libboost_thread-mt.so.1.41.0] ++ ++and if off:: ++ ++ % ls -l lib/*signals* ++ -rwxr-xr-x 1 troy troy 835522 Oct 29 15:10 lib/libboost_signals-mt-d.so* ++ -rwxr-xr-x 1 troy troy 121886 Oct 29 15:10 lib/libboost_signals-mt.so* ++ ++(Unix only, ``ON`` by default) ++ ++This setting also determines whether libraries are *installed* ++with/without soversions. See also :ref:`INSTALL_VERSIONED`. +diff --git a/tools/build/CMake/docs/build/html/_sources/build_installer.txt b/tools/build/CMake/docs/build/html/_sources/build_installer.txt +new file mode 100644 +index 0000000..38030ea +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/build_installer.txt +@@ -0,0 +1,57 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++Building a Binary Installer ++=========================== ++ ++CMake can easily build binary installers for a variety of ++platforms. On Windows and Mac OS X, CMake builds graphical ++installation programs. For other Unix operating systems, CMake ++currently builds tarballs and self-installing shell scripts. This ++CMake functionality, provided by the ++`CPack `_ program ++that is part of CMake, is used to create all of CMake's binary ++installers. We use CPack to build binary installers for Boost. To ++build a binary installer for Boost, follow these steps: ++ ++1. Build Boost using CMake. (see :ref:`quickstart`) ++ ++2. ('''Windows only''') Download and install the `Nullsoft Scriptable ++ Install System (NSIS) `_, ++ which is used to create graphical installers on Windows. Unix users ++ do not need to install any extra tools. ++ ++3. Using the same development tools for building Boost, build the ++ "package" target to create the binary installers. ++ ++ * With Microsoft Visual Studio, build the target named ``PACKAGE`` ++ * With makefiles, run ` make package``. ++ ++The output of the packaging process will be one or more binary ++packages of the form Boost-*version*\ -*platform*\ \.*extension*\ . The ++type of package will differ from one platform to another: ++ ++* On Windows: The primary output is an executable (``.exe``) that ++ provides a graphical installer. ++ ++* On Mac OS X: The primary output is a disk image (``.dmg``) that ++ contains a graphical installer package. ++ ++* On Unix: Packaging produces compressed tarballs (``.tar.gz``) and ++ a self-installing shell script (``.sh``) ++ ++ ++Windows installer: ++ ++.. image:: WindowsInstaller.png ++ ++ ++Mac installer: ++ ++.. image:: MacInstaller.png ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/build_variants.txt b/tools/build/CMake/docs/build/html/_sources/build_variants.txt +new file mode 100644 +index 0000000..0ed4eca +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/build_variants.txt +@@ -0,0 +1,283 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: variants ++.. index:: features ++ ++.. _VARIANTS: ++.. _features: ++ ++Build Variants and Features ++=========================== ++ ++Different compilation and linking flags affect how source code and ++libraries are compiled. Boost's build system abstracts some of these ++properties into specific *features* of the build, which indicate (at ++a high level) what options are being used, e.g., multi-threaded, ++release-mode, shared libraries, etc. Each feature brings with it ++certain compilation options (which vary from one compiler to the next) ++that need to be used when building that variant. For example, on Unix ++systems, one often must link against the `pthread` library for ++multi-threaded programs and libraries, which requires the addition of ++the `-lpthread` flag to the link line. The ''features'' feature of the ++build system encapsulates this knowledge. ++ ++A library built with a given set of **features** is called a library ++**variant**. For example, we could have a multi-threaded release variant ++of a shared library, which would be built with all of the options ++needed to support multi-threading, optimization, elimination of ++debugging symbols, and for building a shared library. Each variant of ++a library is given a unique name based on the features in that ++variant, so that one can readily identify the library, for example, ++`libboost_signals-gcc40-mt-d.so` is the multi-threaded, debug version ++of the shared library for Boost.Signals on a typical Linux system. The ++`Boost Getting Started guide ++`_ ++describes the library naming conventions used for the variants. ++ ++The configuration and build of the library for each *feature* is ++(dis|en)abled with a boolean option ``ENABLE_``\ *feature*, which set ++in :ref:`cmakecache.txt`. The available features are: ++ ++.. _name_mangling: ++ ++Name Mangling ++------------- ++ ++Libraries have their features mangled in to distinguish the variants ++from one another. CMake's symbolic target names correspond: ++ ++============== =========== ====================== ++Feature Target Name Library Name Component ++============== =========== ====================== ++shared -shared (none) ++static -static (none) ++multithreaded -mt -mt ++release (none) (none) ++debug -debug -d ++pydebug -pydebug -yd ++============== =========== ====================== ++ ++The make target ``help`` will show the available options:: ++ ++ ``make help`` shows a list:: ++ ++ % make help | grep signals ++ ... boost_signals ++ ... boost_signals-mt-shared ++ ... boost_signals-mt-shared-debug ++ ... boost_signals-mt-static ++ ... boost_signals-mt-static-debug ++ ... boost_signals-shared ++ ... boost_signals-shared-debug ++ ... boost_signals-static ++ ... boost_signals-static-debug ++ ++And you can see the correspondence to the libraries on disk:: ++ ++ % ls lib/libboost_signals* ++ lib/libboost_signals-d.a lib/libboost_signals-mt.a ++ lib/libboost_signals-d.so lib/libboost_signals-mt.so ++ lib/libboost_signals-mt-d.a lib/libboost_signals.a ++ lib/libboost_signals-mt-d.so lib/libboost_signals.so ++ ++(Note: on most unix you will see more than this, as some of them ++contain version numbers and are symbolic links to one another). ++ ++Configuring features ++-------------------- ++ ++You can globally (en|dis)able the build of these various features ++through the following cmake variables: ++ ++.. index:: ++ single: ENABLE_STATIC ++ pair: STATIC; feature ++ ++.. _enable_static: ++ ++ENABLE_STATIC ++^^^^^^^^^^^^^ ++ ++ The `STATIC` feature identifies static builds of libraries, i.e., a ++ `.lib` (library) file on Microsoft Windows or a `.a` (archive) file ++ on Unix systems. ++ ++.. index:: ++ single: ENABLE_SHARED ++ pair: SHARED; feature ++ ++ENABLE_SHARED ++^^^^^^^^^^^^^ ++ ++ The `SHARED` feature identifies shared builds of libraries, i.e., ++ a `.dll` (dynamically linked library) file on Microsoft Windows or ++ a `.so`(shared object) or `.dylib` (dynamic library) file on Unix ++ systems. In some cases, `SHARED` variants actually refer to ++ "modules", which are a special kind of shared library on some ++ systems (e.g., Mac OS X). ++ ++.. index:: ++ single: ENABLE_DEBUG ++ pair: DEBUG; feature ++ ++ENABLE_DEBUG ++^^^^^^^^^^^^ ++ ++ The `DEBUG` feature identifies builds of libraries that retain ++ complete debugging information and prohibit optimization, making ++ these builds far easier to use for debugging programs. ++ ++.. index:: ++ single: ENABLE_RELEASE ++ pair: RELEASE; feature ++ ++ENABLE_RELEASE ++^^^^^^^^^^^^^^ ++ ++ The `RELEASE` feature identifies builds of libraries that use full ++ optimization and eliminate extraneous information such as debug ++ symbols, resulting in builds of libraries that are typically much ++ smaller than (and execute faster than) their debug library ++ counterparts. ++ ++ ++.. index:: ++ single: ENABLE_SINGLE_THREADED ++ pair: SINGLE_THREADED; feature ++ ++ENABLE_SINGLE_THREADED ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `SINGLE_THREADED` feature identifies builds of libraries that ++ assume that the program using them is single-threaded. These ++ libraries typically avoid costly atomic operations or locks, and ++ make use of no multi-threaded features. ++ ++ ++.. index:: ++ single: ENABLE_MULTI_THREADED ++ pair: MULTI_THREADED; feature ++ ++ENABLE_MULTI_THREADED ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `MULTI_THREADED` feature identifies builds of libraries that ++ assume that the program using them is multi-threaded. These ++ libraries may introduce additional code (relative to their ++ single-threaded variants) that improves the behavior of the ++ library in a multi-threade context, often at the cost of ++ single-thread performance. ++ ++ ++.. index:: ++ single: ENABLE_STATIC_RUNTIME ++ pair: STATIC_RUNTIME; feature ++ ++ENABLE_STATIC_RUNTIME ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `STATIC_RUNTIME` feature identifies builds that link against ++ the C and C++ run-time libraries statically, which directly ++ includes the code from those run-time libraries into the Boost ++ library or executable. ++ ++ ++.. index:: ++ single: ENABLE_DYNAMIC_RUNTIME ++ pair: DYNAMIC_RUNTIME; feature ++ ++ENABLE_DYNAMIC_RUNTIME ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ The `DYNAMIC_RUNTIME` feature identifies builds that link against ++ the dynamic C and C++ run-time libraries. ++ ++.. _per_feature_flags: ++ ++Per-feature Compilation and Linker Options ++------------------------------------------ ++ ++For each feature above, the Boost build system defines three variables ++used to provide compilation flags, linking flags, and extra libraries ++to link against when using that feature. These flags are automatically ++added to the build commands for variants using that feature. The ++particular flags and libraries are described by the following global ++variables: ++ ++feature_COMPILE_FLAGS ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ A string containing extra flags that will be added to the compile ++ line, including macro definitions and compiler-specific flags ++ needed to enable this particular feature. ++ ++feature_LINK_FLAGS ++^^^^^^^^^^^^^^^^^^ ++ ++ A string containing extra flags that will be added to the ++ beginning of the link line. Note that these flags should '''not''' ++ contain extra libraries that one needs to link against. Those ++ should go into `feature_LINK_LIBS`. ++ ++feature_LINK_LIBS ++^^^^^^^^^^^^^^^^^ ++ ++ A CMake list containing the names of additional libraries that ++ will be linked into libraries and executables that require this ++ feature. The elements in this list should name the library (e.g., ++ `pthread`) rather than providing the link command itself (e.g., ++ `-lpthread`), so that linking will be more portable. ++ ++Each of these variables can be expanded for any feature, e.g., ++`MULTI_THREADED_LINK_LIBS` contains libraries that multi-threaded ++variants should link against. ++ ++All of the flags provided for each feature are typically detected by ++the Boost CMake configuration module in ++``tools/build/CMake/BoostConfig.cmake``. ++ ++.. note:: These are **global** per-feature flags, ie ++ RELEASE_COMPILE_FLAGS defines flags used for the compilation ++ of all ``.cpp`` files that go into release libraries. See ++ :ref:`boost_add_library_macro` for per-feature flags that apply only to ++ individual libraries. ++ ++Default Variants ++---------------- ++ ++By default, Boost's build system will build every permutation of ++libraries in the feature space ++ ++ (`STATIC` or `SHARED`) x (`DEBUG` or `RELEASE`) x ++ (`SINGLE_THREADED` or `MULTI_THREADED`) ++ ++resulting in 8 different copies of each library, modulo certain cases ++where variants are disabled [#disabled_variants]_. On Windows, where ++the distinction between static and dynamic run-time libraries is very ++important, the default build also creates permutations with ++(`STATIC_RUNTIME` or `DYNAMIC_RUNTIME`). Certain non-sensical ++combinations of libraries will automatically be eliminated, e.g., it ++does not generally make sense to create a shared library that links ++against the static C and C++ run-time libraries. However, this still ++means that the default build creates between 8 and 12 different ++variants of each Boost library. ++ ++Users who only need a few variants of each library can change which ++variants of Boost libraries are build by default using various ++configuration options. For each feature, CMake's configuration will ++contain an option `ENABLE_feature`. When the feature is ON, the build ++system will produce variants with that feature. When the feature is ++OFF, the build system will suppress variants with that feature. For ++example, toggling `ENABLE_DEBUG` to `OFF` will inhibit the creation of ++the debug variants, drastically improving overall build times. ++ ++.. rubric:: Footnotes ++ ++.. [#disabled_variants] For instance, the **SINGLE_THREADED** variant ++ of the *boost_thread* project is disabled. +diff --git a/tools/build/CMake/docs/build/html/_sources/diff.txt b/tools/build/CMake/docs/build/html/_sources/diff.txt +new file mode 100644 +index 0000000..9b3fd8b +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/diff.txt +@@ -0,0 +1,17 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++Differences between this release and upstream ++============================================= ++ ++The only differences below should be in the build system... but there ++should be a *lot* of them. :) ++ ++ ++.. literalinclude:: git_diff.txt ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/exported_targets.txt b/tools/build/CMake/docs/build/html/_sources/exported_targets.txt +new file mode 100644 +index 0000000..d3fdfda +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/exported_targets.txt +@@ -0,0 +1,257 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _find_package: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#command:find_package ++.. _FindBoost.cmake: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:FindBoost ++ ++.. _CMAKE_PREFIX_PATH: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#variable:CMAKE_PREFIX_PATH ++ ++.. _CMAKE_INSTALL_PREFIX: http://www.cmake.org/cmake/help/cmake-2-8-docs.html#variable:CMAKE_INSTALL_PREFIX ++ ++.. index:: targets, exported ++.. index:: uninstalled tree, building against ++.. _exported_targets: ++ ++ ++Tricks for Building against Boost with CMake ++============================================ ++ ++Boost.CMake *exports* its targets, making developing independent ++projects against an installed boost, or simply against a build tree ++sitting on disk. There are a variety of ways to use these to ease ++configuration of boost in your external project. ++ ++.. index:: Building against uninstalled boost ++.. _uninstalled: ++ ++With an uninstalled build ++^^^^^^^^^^^^^^^^^^^^^^^^^ ++ ++You only need to do three things: ++ ++1. Add the appropriate include directory with ++ ``include_directories()``. This is the toplevel of the boost ++ source tree. ++ ++2. ``include`` the generated ``Exports.cmake`` from the build tree ++ containing the exported targets. I is located in ++ ``${``:ref:`CMAKE_BINARY_DIR`\ ``}/lib/Exports.cmake`` ++ ++3. Tell cmake about your link dependencies with ++ ``target_link_libraries``. Note that you use the **names of the ++ cmake targets**, not the shorter names that the libraries have on ++ disk. ``make help`` shows a list:: ++ ++ % make help | grep signals ++ ... boost_signals ++ ... boost_signals-mt-shared ++ ... boost_signals-mt-shared-debug ++ ... boost_signals-mt-static ++ ... boost_signals-mt-static-debug ++ ++ See also :ref:`name_mangling` for details on the naming ++ conventions. ++ ++Since these are exported targets, CMake will add appropriate *rpaths* ++as necessary; fiddling with ``LD_LIBRARY_PATH`` should not be ++necessary. ++ ++**If you get the target name wrong**, cmake will assume that you are ++talking about a library in the linker's default search path, not an ++imported target name and you will get an error when cmake tries to ++link against the nonexistent target. For instance, if I specify:: ++ ++ target_link_libraries(main boost_thread-mt-d) ++ ++on linux my error will be something like:: ++ ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ Linking CXX executable main ++ /usr/bin/ld: cannot find -lboost_thread-mt-d ++ collect2: ld returned 1 exit status ++ ++The problem here is that the real name of the multithreaded, shared, ++debug library **target** is ``boost_thread-mt-shared-debug``. I know this is ++confusing; much of this is an attempt to be compatible with ++boost.build. ++ ++If you are having trouble, have a look inside that file ++``Exports.cmake``. For each available target, you'll see:: ++ ++ # Create imported target boost_thread-mt-shared-debug ++ ADD_LIBRARY(boost_thread-mt-shared-debug SHARED IMPORTED) ++ ++ # Import target "boost_thread-mt-shared-debug" for configuration "Release" ++ SET_PROPERTY(TARGET boost_thread-mt-shared-debug APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) ++ SET_TARGET_PROPERTIES(boost_thread-mt-shared-debug PROPERTIES ++ IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE "pthread;rt" ++ IMPORTED_LOCATION_RELEASE "/home/troy/Projects/boost/cmake/cmaketest/build/boost/lib/libboost_thread-mt-d.so.1.41.0" ++ IMPORTED_SONAME_RELEASE "libboost_thread-mt-d.so.1.41.0" ++ ) ++ ++it is the name in the ``ADD_LIBRARY`` line that you pass to ++``target_link_libraries()``. ++ ++ ++ ++Example ++------- ++ ++There is an unpacked boost in ``/home/troy/boost-1.41.0/src`` and ++built boost in directory ``/home/troy/boost/1.41.0/build``. I have a ++program that builds from one file, ``main.cpp`` and uses boost ++threads. My ``CMakeLists.txt`` looks like this:: ++ ++ include_directories( ++ /home/troy/boost-1.41.0/src ++ /home/troy/boost-1.41.0/build/lib/Exports.cmake ++ ) ++ ++ add_executable(my_program main.cpp) ++ ++ target_link_libraries(my_program boost_thread-mt-shared-debug) ++ ++When I build, I see ++(wrapped, and some output replaced with ... for brevity):: ++ ++ % make VERBOSE=1 ++ ... ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ /usr/bin/c++ -I/home/troy/boost-1.41.0/src -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/myproject/main.cpp ++ ... ++ linking CXX executable main ++ /usr/bin/c++ -fPIC CMakeFiles/main.dir/main.cpp.o -o main -rdynamic /home/troy/boost-1.41.0/build/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/home/troy/boost-1.41.0/build/lib ++ ... ++ [100%] Built target main ++ ++With an installed boost ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++The process by which cmake discovers an installed boost is a big ++topic, outside the scope of this document. Boost.CMake makes every ++effort to install things cleanly and behave in a backwards-compatible ++manner. ++ ++.. index:: CMAKE_PREFIX_PATH ++.. index:: CMAKE_INSTALL_PREFIX ++.. index:: BOOST_INSTALL_CMAKE_DRIVERS ++ ++The variable :ref:`BOOST_INSTALL_CMAKE_DRIVERS` controls whether ++Boost.CMake installs two files which help out in case multiple ++versions of boost are installed. If there is only one version ++present, the situation is simpler: typically this is simply a ++matter of either installing boost to a directory that on cmake's ++built-in CMAKE_PREFIX_PATH_, or adding the directory to ++CMAKE_PREFIX_PATH_ in your environment if it is not. You can see ++built-in search path by running ``cmake --system-information`` and ++looking for ``CMAKE_SYSTEM_PREFIX_PATH``. ++ ++Try this first ++-------------- ++ ++Make a subdirectory for your project and create a file ``main.cpp``:: ++ ++ #include ++ #include ++ #include ++ ++ void helloworld() ++ { ++ std::cout << BOOST_VERSION << std::endl; ++ } ++ ++ int main() ++ { ++ boost::thread thrd(&helloworld); ++ thrd.join(); ++ } ++ ++.. index:: NO_MODULE ++ ++Create a ``CMakeLists.txt`` in the same directory containing the ++following:: ++ ++ find_package(Boost 1.41.0 COMPONENTS thread NO_MODULE) ++ ^^^^^^^^^--- NOTE THIS ++ include(${Boost_INCLUDE_DIR}) ++ add_executable(main main.cpp) ++ target_link_libraries(main ${Boost_LIBRARIES}) ++ ++The ``NO_MODULE`` above is currently **required**, pending updates to ++FindBoost.cmake_ in a cmake release. ++ ++Then run ``cmake .`` in that directory (note the dot). Then run make. ++If all is well you will see:: ++ ++ % make VERBOSE=1 ++ ... ++ [100%] Building CXX object CMakeFiles/main.dir/main.cpp.o ++ /usr/bin/c++ -I/usr/local/boost-1.41.0/include -o CMakeFiles/main.dir/main.cpp.o -c /home/troy/Projects/boost/cmake/proj/main.cpp ++ ... ++ Linking CXX executable main ++ /usr/bin/c++ -fPIC CMakeFiles/main.dir/main.cpp.o -o main -rdynamic /usr/local/boost-1.41.0/lib/libboost_thread-mt-d.so.1.41.0 -lpthread -lrt -Wl,-rpath,/usr/local/boost-1.41.0/lib ++ ... ++ [100%] Built target main ++ ++If all is not well, set CMAKE_PREFIX_PATH_ in your environment or in ++your ``CMakeLists.txt``. Add the CMAKE_INSTALL_PREFIX_ that you used ++when you installed boost:: ++ ++ export CMAKE_PREFIX_PATH=/my/unusual/location ++ ++and try again. ++ ++Alternative: via Boost_DIR ++-------------------------- ++ ++If the above didn't work, you can help cmake find your boost ++installation by setting ``Boost_DIR`` (in your ``CMakeLists.txt`` to ++the :ref:`BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR` that was set when you ++compiled. ``Boost_DIR`` will override any other settings. ++ ++Given a (versioned) boost installation in ``/net/someplace``, ++Your CMakeLists.txt would look like this:: ++ ++ include_directories(/net/someplace/include/boost-1.41.0) ++ ++ # you can also set Boost_DIR in your environment ++ set(Boost_DIR /net/someplace/share/boost-1.41.0/cmake) ++ ++ find_package(Boost NO_MODULE) ++ ++ add_executable(main main.cpp) ++ ++ target_link_libraries(main boost_thread-mt-shared-debug) ++ ++ ++Multiple versions of boost installed ++------------------------------------ ++ ++The only recommended way to do this is the following: ++ ++* Install all versions of boost to the same CMAKE_INSTALL_PREFIX_. One ++ or more of them must have been installed with ++ :ref:`BOOST_INSTALL_CMAKE_DRIVERS` on. :ref:`INSTALL_VERSIONED` ++ should be `OFF` for one of them at most. ++ ++* Add the setting for CMAKE_INSTALL_PREFIX_ to CMAKE_PREFIX_PATH_, if ++ it is nonstandard. ++ ++* Pass ``NO_MODULE`` to find_package_ when you call it (as above). ++ ++At this point passing a version argument to find_package_ (see also ++docs for FindBoost.cmake_) should result in correct behavior. ++ ++.. rubric:: Footnotes ++ ++.. [#libsuffix] If your distribution specifies a :ref:`LIB_SUFFIX` ++ (e.g. if it installs libraries to ++ ``${``:ref:`CMAKE_INSTALL_PREFIX`\ ``/lib64``, you ++ will find `Boost.cmake` there. If the installation is ++ 'versioned', the ``Boost.cmake`` file may be in a ++ versioned subdirectory of lib, e.g. ``lib/boost-1.41.0``. +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt b/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt +new file mode 100644 +index 0000000..db6927a +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/bzip2.txt +@@ -0,0 +1,19 @@ ++.. index:: bzip2, external dependency ++.. _bzip2: ++ ++ ++BZip2 ++===== ++ ++If ``WITH_BZIP2`` is ``ON``, BZip2 is detected via the standard cmake ++``find_package(BZip2)``. The following variables are set: ++ +++----------------------+----------------------------------------+ ++|``BZIP2_FOUND`` |Bzip2 was found | +++----------------------+----------------------------------------+ ++|``BZIP2_INCLUDE_DIR`` |Path to BZip2 includes | +++----------------------+----------------------------------------+ ++|``BZIP2_DEFINITIONS`` |Compile line flags for BZip2 | +++----------------------+----------------------------------------+ ++|``BZIP2_LIBRARIES`` |Libraries to link to when using BZip2 | +++----------------------+----------------------------------------+ +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt b/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt +new file mode 100644 +index 0000000..954d10c +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/doxygen.txt +@@ -0,0 +1,10 @@ ++.. index:: doxygen, external dependency ++.. _doxygen: ++ ++ ++Doxygen ++======= ++ ++If ``WITH_DOXYGEN`` is ``ON``, doxygen is detected via the standard ++cmake ``find_package(Doxygen)``. See the cmake documentation for more ++information +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/expat.txt b/tools/build/CMake/docs/build/html/_sources/externals/expat.txt +new file mode 100644 +index 0000000..55fa297 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/expat.txt +@@ -0,0 +1,10 @@ ++.. index:: expat, external dependency ++.. _expat: ++ ++ ++Expat ++===== ++ ++If ``WITH_EXPAT`` is ``ON``, expat is detected via the standard ++cmake ``find_package(Expat)``. See the cmake documentation for more ++information +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/icu.txt b/tools/build/CMake/docs/build/html/_sources/externals/icu.txt +new file mode 100644 +index 0000000..4eb7ac5 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/icu.txt +@@ -0,0 +1,22 @@ ++.. index:: ICU, external dependency ++.. _icu: ++ ++ ++ICU (International Components for Unicode) ++========================================== ++ ++If ``WITH_ICU`` is ``ON``, ICU is detected via the standard cmake ++``find_package(ICU)``. The following variables are set: ++ +++-----------------------+----------------------------------------+ ++|``ICU_FOUND`` |ON if icu was found | +++-----------------------+----------------------------------------+ ++|``ICU_I18N_FOUND`` |ON if the i18n part (whatever that is) | ++| |of ICU was found. | +++-----------------------+----------------------------------------+ ++|``ICU_INCLUDE_DIRS`` |path to ICU headers | +++-----------------------+----------------------------------------+ ++|``ICU_LIBRARIES`` |full paths to ICU libraries | +++-----------------------+----------------------------------------+ ++|``ICU_I18N_LIBRARIES`` |full paths to the i18n libraries | +++-----------------------+----------------------------------------+ +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/index.txt b/tools/build/CMake/docs/build/html/_sources/externals/index.txt +new file mode 100644 +index 0000000..0b5dd3c +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/index.txt +@@ -0,0 +1,44 @@ ++.. index:: External Dependencies; selectively disabling ++ ++.. _external_dependencies: ++ ++External Dependencies ++===================== ++ ++Each external dependency has an associated option ``WITH_``\ ++*dependency* that controls whether detection of the dependency will ++happen at all. These options default to ``ON``. ++ ++Each external will set a variable *external*\ ``_FOUND`` if detection ++was successful. If this variable is empty (or ``FALSE``, 0, or ++``NO``) detection will be reattempted each time you configure. ++ ++To **disable** the detection of any given external dependency and ++thereby any libraries or features that depend on it, set option ++``WITH_``\ *dependency* to ``NO`` (or ``OFF``, etc.):: ++ ++ % cmake ../src -DWITH_PYTHON=OFF ++ -- The C compiler identification is GNU ++ -- The CXX compiler identification is GNU ++ ... more output ... ++ -- ++ -- Python: ++ -- Disabled since WITH_PYTHON=OFF ++ -- ++ ... more output ... ++ -- + python ++ -- +-- disabled since PYTHON_FOUND is false ++ -- ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ bzip2 ++ doxygen ++ expat ++ icu ++ mpi ++ python ++ xsltproc ++ valgrind ++ zlib +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt b/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt +new file mode 100644 +index 0000000..09c337e +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/mpi.txt +@@ -0,0 +1,10 @@ ++.. index:: MPI, external dependency ++.. _MPI: ++ ++ ++MPI ++=== ++ ++If ``WITH_MPI`` is ``ON``, MPI is detected via the standard ++cmake ``find_package(MPI)``. See the cmake documentation for more ++information. +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/python.txt b/tools/build/CMake/docs/build/html/_sources/externals/python.txt +new file mode 100644 +index 0000000..dcceff0 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/python.txt +@@ -0,0 +1,88 @@ ++.. index:: Python ++.. _python_external: ++ ++======== ++ Python ++======== ++ ++By default, Boost.CMake will use the python detection built in to ++cmake. The relevant variables (command line or environment) are: ++ ++.. index:: PYTHON_EXECUTABLE ++.. _python_executable: ++ ++PYTHON_EXECUTABLE ++----------------- ++ ++The path to the python executable, e.g. ``/usr/local/Python-3.1.1/bin/python3`` ++ ++.. index:: PYTHON_DEBUG_LIBRARIES ++.. _python_debug_libraries: ++ ++PYTHON_DEBUG_LIBRARIES ++---------------------- ++ ++The path to the python debug library, typically only used by developers. ++ ++.. index:: PYTHON_LIBRARIES ++.. _python_libraries: ++ ++PYTHON_LIBRARIES ++---------------- ++ ++The path to the python library, ++e.g. ``/usr/local/Python-3.1.1/lib/libpython3.1.so`` ++ ++.. index:: PYTHON_INCLUDE_PATH ++.. index:: Python.h ++.. _python_include_path: ++ ++PYTHON_INCLUDE_PATH ++------------------- ++ ++The path to the include directory, ++e.g. ``/usr/local/Python-3.1.1/include/python3.1``. Note that cmake ++will check for the file ``Python.h`` in this directory and complain if ++it is not found. ++ ++There are two ways to specify these, on the command line or via ++environment variables. Environment variables will override command ++line flags if present. ++ ++.. rubric:: Command line ++ ++:: ++ ++ % cmake ../src -DPYTHON_EXECUTABLE=/path/to/bin/python3 \ ++ -DPYTHON_LIBRARIES=/path/to/libpython3.1.so \ ++ -DPYTHON_INCLUDE_PATH=/path/to/include/python3.1 ++ ++.. rubric:: Exported environment variables ++ ++:: ++ ++ % export PYTHON_EXECUTABLE=/path/to/bin/python ++ % export PYTHON_LIBRARIES=/path/to/libpython3.1.so ++ % export PYTHON_INCLUDE_PATH=/path/to/include/python3.1 ++ % cmake ../src ++ ++Either way, in the configuration output, you should see something ++like:: ++ ++ -- Testing PYTHON_EXECUTABLE from environment ++ -- Ok, using /path/to/bin/python3 ++ -- Testing PYTHON_LIBRARIES from environment ++ -- Ok, using /path/to/lib/libpython3.1.so. ++ -- Skipping optional PYTHON_DEBUG_LIBRARIES: not set. ++ -- Testing PYTHON_INCLUDE_PATH from environment ++ -- Ok, using /path/to/include/python3.1 ++ -- Python: ++ -- executable: /path/to/bin/python3 ++ -- lib: /path/to/lib/libpython3.1.so ++ -- debug lib: ++ -- include path: /path/to/include/python3.1 ++ ++**NOTE**, once successfully detected, the python configuration will ++not be redetected. To modify, edit the relevant entries in your ++CMakeCache.txt, or delete it entirely to trigger redetection. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt b/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt +new file mode 100644 +index 0000000..e283a30 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/valgrind.txt +@@ -0,0 +1,27 @@ ++.. index:: Valgrind, external dependency ++.. _Valgrind: ++ ++ ++Valgrind ++======== ++ ++Boost.cmake does a standard path search for ``valgrind``. If found, ++it sets the following variables ++ ++ +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_FOUND`` |Was valgrind found | +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_FLAGS`` |"--tool=memcheck" | +++----------------------------------------+----------------------------------------+ ++|``VALGRIND_EXECUTABLE`` |path to the executable | +++----------------------------------------+----------------------------------------+ ++ ++.. index:: WITH_VALGRIND ++ ++If the setting ``WITH_VALGRIND`` is ``ON``, (see ++:ref:`external_dependencies`) then tests will be run under valgrind. ++Tip: CTest's ``-V`` flag will show you the exact commands run and ++output of each test. ++ ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt b/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt +new file mode 100644 +index 0000000..9fbc951 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/xsltproc.txt +@@ -0,0 +1,18 @@ ++.. index:: Xsltproc, external dependency ++.. _Xsltproc: ++ ++ ++Xsltproc ++======== ++ ++Boost.cmake does a standard path search for ``xsltproc``. If found, ++it sets the following variables ++ ++ +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_FOUND`` |Was xsltproc found | +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_FLAGS`` |"--xinclude" | +++----------------------------------------+----------------------------------------+ ++|``XSLTPROC_EXECUTABLE`` |path to the executable | +++----------------------------------------+----------------------------------------+ +diff --git a/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt b/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt +new file mode 100644 +index 0000000..3c4e86c +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/externals/zlib.txt +@@ -0,0 +1,17 @@ ++.. index:: zlib, external dependency ++.. _zlib: ++ ++ ++Zlib ++===== ++ ++If ``WITH_ZLIB`` is ``ON``, Zlib is detected via the standard cmake ++``find_package(Zlib)``. The following variables are set: ++ +++----------------------+----------------------------------------+ ++|``ZLIB_FOUND`` |Zlib was found | +++----------------------+----------------------------------------+ ++|``ZLIB_INCLUDE_DIR`` |Path to Zlib includes | +++----------------------+----------------------------------------+ ++|``ZLIB_LIBRARIES`` |Libraries to link to when using Zlib | +++----------------------+----------------------------------------+ +diff --git a/tools/build/CMake/docs/build/html/_sources/faq.txt b/tools/build/CMake/docs/build/html/_sources/faq.txt +new file mode 100644 +index 0000000..614bd19 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/faq.txt +@@ -0,0 +1,42 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _faq: ++ ++FAQ ++=== ++ ++A collection of asked questions. ++ ++ ++How do I set ``/D _SECURE_SCL=0`` on the commandline for release builds? ++------------------------------------------------------------------------ ++ ++* Run the cmake gui, pick the source and build directories, click ++ *Configure* ++ ++* Find the entry called ``RELEASE_COMPILE_FLAGS`` and modify to taste. ++ (See also :ref:`per_feature_flags`) ++ ++* Click *Configure* again, settings will be regenerated with your ++ flags intact. ++ ++* Click *Generate* ++ ++* Run Visual Studio, navigate to the build directory, open ++ ``Boost.sln``, build, profit. ++ ++Note: I couldn't find the magic checkbox to tell visual studio show me ++what commands it executes while building. I switched the cmake gui to ++'advanced mode' and change CMAKE_VERBOSE_MAKEFILES to TRUE. Is there a ++more 'visualstudioesque' way to do this? ++ ++-t ++ ++ ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt b/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt +new file mode 100644 +index 0000000..c53289c +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/find_package_boost.txt +@@ -0,0 +1,60 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: find_package(Boost) ++.. index:: FindBoost.cmake ++ ++.. _find_package_boost: ++ ++find_package(Boost) ++=================== ++ ++See :ref:`install_customization` for more information about variables ++used in this section. ++ ++If you plan on using the ``FindBoost.cmake`` packaged with cmake ++versions 2.8.0 and earlier, (that is, third party packages that build ++with cmake need to find this boost installation via the cmake command ++``find_package(Boost...``), you will need to layout your boost ++installation in a way that is consistent with the way boost was ++installed by bjam during the many Dark Years. Michael Jackson of ++bluequartz.net reports success with the configuration below. He ++refers to boost.cmake variables :ref:`install_versioned`, ++:ref:`boost_include_install_dir`, and :ref:`boost_lib_install_dir`:: ++ ++ > Set INSTALL_VERSIONED=OFF ++ > set BOOST_INCLUDE_INSTALL_DIR=include/boost-1_41 ++ > set BOOST_LIB_INSTALL_DIR=lib ++ > ++ > and then go. I also set an environment variable BOOST_ROOT to the ++ > CMAKE_INSTALL_PREFIX. ++ > ++ > In my CMake file I have the following; ++ > ++ > # ---------- Find Boost Headers/Libraries ----------------------- ++ > SET (Boost_FIND_REQUIRED TRUE) ++ > SET (Boost_FIND_QUIETLY TRUE) ++ > set (Boost_USE_MULTITHREADED TRUE) ++ > set (Boost_USE_STATIC_LIBS TRUE) ++ > SET (Boost_ADDITIONAL_VERSIONS "1.41" "1.41.0") ++ > ++ > if ( NOT MXA_BOOST_HEADERS_ONLY) ++ > set (MXA_BOOST_COMPONENTS program_options unit_test_framework ++ > test_exec_monitor) ++ > endif() ++ > FIND_PACKAGE(Boost COMPONENTS ${MXA_BOOST_COMPONENTS} ) ++ > INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) ++ > LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) ++ > ++ > This successfully works with the FindBoost.cmake that is included with CMake 2.6.4 ++ > ++ ++Currently in development there are other, perhaps easier, ways to ++detect your boost installations if you aren't dependent on this older ++FindBoost; see :ref:`exported_targets`. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/git.txt b/tools/build/CMake/docs/build/html/_sources/git.txt +new file mode 100644 +index 0000000..6658d28 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/git.txt +@@ -0,0 +1,190 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. highlight:: git_shell ++ ++.. _hacking_cmake_with_git: ++ ++Hacking Boost.CMake with Git ++============================ ++ ++Boost-cmake, in addition to using an alternative build system, uses ++alternate version control. This makes boost.cmake feasable: without ++distributed version control it would be very difficult to maintain a ++build system against upstream boost. ++ ++This document will review some common version-control procedures for ++those who are unfamiliar with git. More documentation is available at ++`Hacking Boost via Git ++`_. ++ ++ ++The first step is to get `Git `_. Any recent ++version will do. On windows, git downloads come with a bash shell, so ++the commandline interface is essentially identical. There is also ++`TortoiseGit `_, which is ++evolving quickly and quite usable. ++ ++I just want to try the HEAD of the branch ++---------------------------------------------------- ++ ++Pick some directory to work in. Here I'll use ``/tmp``. My prompt is ++a percent sign. Clone the repository to a subdirectory called ++``src``. This will take a while the first time, after that things ++will be very fast. ++ ++:: ++ ++ % git clone git://gitorious.org/boost/cmake.git src ++ Initialized empty Git repository in /tmp/src/.git/ ++ remote: Counting objects: 425396, done. ++ remote: Compressing objects: 100% (129689/129689), done. ++ remote: Total 425396 (delta 298454), reused 419119 (delta 292368) ++ Receiving objects: 100% (425396/425396), 135.56 MiB | 1260 KiB/s, done. ++ Resolving deltas: 100% (298454/298454), done. ++ Checking out files: 100% (23865/23865), done. ++ ++inside this directory you'll see the branch that is checked out:: ++ ++ % cd src ++ % git branch -l ++ * 1.41.0 ++ ++This means I'm on the ``1.41.0`` branch, and the files are checked ++out:: ++ ++ % ls ++ CMakeLists.txt boost/ bootstrap.sh* libs/ tools/ ++ CTestConfig.cmake boost-build.jam build/ more/ wiki/ ++ INSTALL boost.css doc/ people/ ++ Jamroot boost.png index.htm rst.css ++ LICENSE_1_0.txt bootstrap.bat index.html status/ ++ ++Now you can go ahead and do your out-of-source build. ++ ++I want to svn update ++-------------------- ++ ++When new changes arrive upstream, you'll want to ``git pull``:: ++ ++ % git pull ++ remote: Counting objects: 310, done. ++ remote: Compressing objects: 100% (45/45), done. ++ remote: Total 205 (delta 154), reused 203 (delta 152) ++ Receiving objects: 100% (205/205), 49.59 KiB, done. ++ Resolving deltas: 100% (154/154), completed with 81 local objects. ++ From git://gitorious.org/boost/cmake ++ 1818334..b945719 1.41.0 -> origin/1.41.0 ++ Updating 1818334..b945719 ++ Fast forward ++ CMakeLists.txt | 6 +- ++ CTestConfig.cmake | 5 +- ++ ... ++ 83 files changed, 1071 insertions(+), 537 deletions(-) ++ ++.. _makeremote: ++ ++But I want a different branch than that ++--------------------------------------- ++ ++``git branch -r`` will show your 'remote' branches:: ++ ++ % git branch -r ++ origin/1.40.0 ++ origin/1.41.0 ++ origin/HEAD -> origin/1.41.0 ++ origin/master ++ ++This shows that in *origin* (the repository you cloned from), there ++are *1.40.0*, *1.41.0*, and *master* branches. To switch to e.g. the ++*1.40.0* branch, you make a local branch that 'tracks' the upstream ++branch:: ++ ++ % git checkout -b 1.40.0 origin/1.40.0 ++ Branch 1.40.0 set up to track remote branch 1.40.0 from origin. ++ Switched to a new branch '1.40.0' ++ ++Now you will see this new local branch in your branch list:: ++ ++ % git branch -l ++ * 1.40.0 # the star means this one is checked out ++ 1.41.0 ++ ++And your status will show it as well:: ++ ++ % git status ++ # On branch 1.40.0 ++ nothing to commit (working directory clean) ++ ++now, any *git pull*\ -ing you do will come from the upstream *1.40.0* ++branch in to your local 1.40.0 branch. ++ ++I have changes, how do I make a patch? ++-------------------------------------- ++ ++Just change the files and ``git diff``:: ++ ++ % git diff ++ diff --git a/CMakeLists.txt b/CMakeLists.txt ++ index d2bc809..d5e055e 100644 ++ --- a/CMakeLists.txt ++ +++ b/CMakeLists.txt ++ @@ -27,6 +27,10 @@ ++ cmake_minimum_required(VERSION 2.6.4 FATAL_ERROR) ++ project(Boost) ++ ++ +# ++ +# These are my changes ++ +# ++ + ++ ########################################################################## ++ # Version information # ++ ########################################################################## ++ @@ -323,6 +327,7 @@ endif() ++ ++ mark_as_advanced(BOOST_EXPORTS_FILE BOOST_INSTALL_EXPORTS_FILE) ++ ++ +# and some here too ++ # Add build rules for documentation ++ add_subdirectory(doc) ++ ++and mail it in. ++ ++Oops, I screwed up and want to revert ++------------------------------------- ++ ++Use ``git reset``:: ++ ++ % git reset --hard HEAD ++ HEAD is now at e26008e Don't build tools by default. All they do is break. ++ ++I want to switch branches ++------------------------- ++ ++If you've already created a local branch, i.e. it appears in the ++output of ``git branch -l``:: ++ ++ % git branch -l ++ * 1.40.0 ++ 1.41.0 ++ ++Then just check it out:: ++ ++ % git checkout 1.41.0 ++ Switched to branch '1.41.0' ++ ++ % git branch -l ++ 1.40.0 ++ * 1.41.0 ++ ++ % git status ++ # On branch 1.41.0 ++ nothing to commit (working directory clean) ++ ++If not (i.e. it only appears in the output of ``git branch -r``), ++see :ref:`makeremote`. +diff --git a/tools/build/CMake/docs/build/html/_sources/index.txt b/tools/build/CMake/docs/build/html/_sources/index.txt +new file mode 100644 +index 0000000..489a329 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/index.txt +@@ -0,0 +1,141 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++Boost-CMake |release| ++===================== ++ ++Boost.\ `CMake `_ (or :ref:`alt.boost ++`) is the boost distribution that all the cool kids are ++using. The effort started in earnest at `BoostCon '07 ++`_; by the end of which it was possible to do ++a basic build of boost with cmake. In 2009, the project moved out to ++git version control. Today, ``Boost.CMake`` is stable, mature, and ++supported by the developers, a large base of expert users, and ++occasionally by the authors of CMake itself. ++ ++.. index:: Mailing List, IRC ++ ++**boost-cmake mailing list** ++ ++ http://lists.boost.org/mailman/listinfo.cgi/boost-cmake ++ ++**IRC** ++ ++ ``#boost-cmake`` on the `freenode network `_ ++ ++**CMake home page** ++ ++ http://www.cmake.org ++ ++**Source code** ++ ++ Boost.CMake is distributed *separately* from upstream boost. Code ++ is in a `git `_ repository at ++ http://gitorious.org/boost/cmake.git. These documents correspond to ++ tag |release|. See also :ref:`hacking_cmake_with_git`. ++ ++**Tarballs** ++ ++ Tarballs and zipfiles are available at ++ http://sodium.resophonic.com/boost-cmake/ in subdirectory |release|. ++ ++Users's guide ++============= ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ quickstart ++ build_configuration ++ build_variants ++ exported_targets ++ install_customization ++ find_package_boost ++ faq ++ externals/index ++ git ++ diff ++ ++Developer's guide ++================= ++ ++.. toctree:: ++ :maxdepth: 3 ++ ++ individual_libraries ++ add_boost_library ++ add_compiled_library ++ testing ++ adding_regression_tests ++ build_installer ++ notes_by_version ++ ++Reference ++========= ++ ++.. toctree:: ++ :maxdepth: 1 ++ ++ reference/boost_library_project ++ reference/boost_module ++ reference/boost_add_library ++ reference/boost_add_executable ++ reference/boost_python_module ++ reference/boost_additional_test_dependencies ++ reference/boost_test_compile ++ reference/boost_test_compile_fail ++ reference/boost_test_run ++ reference/boost_test_run_fail ++ ++About this documentation ++======================== ++ ++This documentation was created with `Sphinx ++`_. ++ ++The source is in the restructuredtext files in subdirectory ++``tools/build/CMake/docs/source/``. Hack on them (see the ++`documentation for Sphinx `_). ++When you're ready to see the html:: ++ ++ make html ++ ++Once you've written a ton of docs, push them someplace where I can see ++them (or use ``git diff`` to send a patch). ++ ++Release checklist ++----------------- ++ ++* Update ``BOOST_CMAKE_VERSION`` in toplevel ``CMakeLists.txt`` ++* Update notes by version in ``tools/build/CMake/docs/notes_by_version.rst`` ++* Reconfig cmake with ``BOOST_MAINTAINER`` set to ON ++* set UPSTREAM_TAG in root ``CMakeLists.txt`` ++* make make-diff ++* Rebuild docs and commit ++* Tag commit with ``BOOST_CMAKE_VERSION`` ++* ``make do-release`` ++* push tag ++* update wiki ++ ++.. index:: alt.boost ++ single: Anarchists; Lunatics, Terrorists and ++ single: Lunatics; Anarchists Terrorists and ++ single: Terrorists; Anarchists Lunatics and ++ ++.. _alt_boost: ++ ++Why "alt.boost"? ++---------------- ++ ++The 'alt' is a reference to the ``alt.*`` Usenet hierarchy. Here, as ++in Usenet, *alt* stands for `Anarchists, Lunatics and Terrorists ++`_. This independent effort explores ++and applies alternate techniques/technologies in the areas of build, ++version control, testing, packaging, documentation and release ++management. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt b/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt +new file mode 100644 +index 0000000..54f0feb +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/individual_libraries.txt +@@ -0,0 +1,160 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++Building individual libraries with cmake ++======================================== ++ ++In a configured cmake workspace, ``make help`` will display a list of available targets. Example:: ++ ++ % make help ++ The following are some of the valid targets for this Makefile: ++ ... all (the default if no target is provided) ++ ... clean ++ ... depend ++ ... edit_cache ++ ... install ++ ... install/local ++ ... install/strip ++ ... list_install_components ++ ... package ++ ... package_source ++ ... rebuild_cache ++ ... boost_date_time ++ ... boost_date_time-mt-shared ++ ... boost_date_time-mt-shared-debug ++ ... boost_date_time-mt-static ++ ... boost_date_time-mt-static-debug ++ ... boost_date_time-shared ++ ... boost_date_time-shared-debug ++ ... boost_date_time-static ++ ... boost_date_time-static-debug ++ ... boost_filesystem ++ ... boost_filesystem-mt-shared ++ ... boost_filesystem-mt-shared-debug ++ ... boost_filesystem-mt-static ++ ... boost_filesystem-mt-static-debug ++ ... boost_filesystem-shared ++ ... boost_filesystem-shared-debug ++ ... boost_filesystem-static ++ ... boost_filesystem-static-debug ++ [etc] ++ ++ ++You can build any target by passing it as an argument:: ++ ++ ++ % make boost_signals-static ++ [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/trackable.cpp.o ++ [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/connection.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/named_slot_map.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/signal_base.cpp.o ++ [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/slot.cpp.o ++ Linking CXX static library ../../../lib/libboost_signals-gcc41-1_35.a ++ [100%] Built target boost_signals-static ++ ++Preprocessing ++------------- ++ ++In build directories corresponding to a source library containing a ++``CMakeLists.txt`` containing a :ref:`boost_add_library_macro` invocation ++(e.g. ``build/libs/signals/src, build/libs/filesystem/src``), more ++detailed targets are available:: ++ ++ % cd libs/signals/src ++ % make help ++ The following are some of the valid targets for this Makefile: ++ [many omitted] ++ ... signal_base.o ++ ... signal_base.i ++ ... signal_base.s ++ ... slot.o ++ ... slot.i ++ ... slot.s ++ ++ ++making ``slot.i`` will run ``slot.cpp`` through the preprocessor:: ++ ++ % make slot.i ++ Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ ++If you are always interested in seeing the compiler flags you can ++enable ``CMAKE_VERBOSE_MAKEFILES`` via ``ccmake``, or for a one-off ++just pass ``VERBOSE=1`` on the command line:: ++ ++ % make VERBOSE=1 slot.i ++ make[1]: Entering directory `/home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build' ++ Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ cd /home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build/libs/signals/src && /usr/bin/gcc-4.1 ++ -DBOOST_ALL_NO_LIB=1 -DBOOST_SIGNALS_NO_LIB=1 -Dboost_signals_mt_shared_EXPORTS -fPIC ++ -I/home/troy/Projects/boost/branches/CMake/Boost_1_35_0 -O3 -DNDEBUG -DBOOST_SIGNALS_DYN_LINK=1 ++ -pthread -D_REENTRANT -E /home/troy/Projects/boost/branches/CMake/Boost_1_35_0/libs/signals/src/slot.cpp > CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i ++ ++Tests and examples ++------------------ ++ ++Tests and examples are typically grouped into subdirectories, e.g.:: ++ ++ libs/ ++ iostreams/ ++ test/ ++ examples/ ++ ++CMake builds a parallel directory hierarchy in the build directory. If ++you are working on, say, the examples for iostreams, you can just ++``cd`` into the directory $BUILDDIR/libs/iostreams/examples and type ++``make``:: ++ ++ % cd libs/iostreams/example ++ % make ++ [ 0%] Built target boost_iostreams-mt-static ++ Scanning dependencies of target iostreams-examples-boost_back_inserter_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-boost_back_inserter_example.dir/boost_back_inserter_example.cpp.o ++ Linking CXX executable ../../../bin/iostreams-examples-boost_back_inserter_example ++ [ 0%] Built target iostreams-examples-boost_back_inserter_example ++ Scanning dependencies of target iostreams-examples-container_device_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_device_example.dir/container_device_example.cpp.o ++ Linking CXX executable ../../../bin/iostreams-examples-container_device_example ++ [ 0%] Built target iostreams-examples-container_device_example ++ Scanning dependencies of target iostreams-examples-container_sink_example ++ [ 0%] Building CXX object libs/iostreams/example/CMakeFiles/iostreams-examples-container_sink_example.dir/container_sink_example.cpp.o ++ ++Building individual targets, ignoring prerequisites ++--------------------------------------------------- ++ ++If you find yourself working on a compiler error in a file that takes ++a long time to compile, waiting for make to check all of the ++prerequisites might become tedious. You can have make skip the ++prerequisite testing (you do this at your own risk), by appending ++``/fast`` to the target name. For instance, bcp depends on the ++``system``, ``filesystem`` ``regex`` and ``prg_exec_monitor`` ++libraries:: ++ ++ % cd tools/bcp ++ % make bcp ++ [ 0%] Built target boost_system-mt-static ++ [ 0%] Built target boost_filesystem-mt-static ++ [ 50%] Built target boost_regex-mt-static ++ [ 75%] Built target boost_prg_exec_monitor-mt-static ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o ++ ++if I make ``bcp/fast``, the dependencies are assumed to be built ++already:: ++ ++ % make bcp/fast ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/add_path.cpp.o ++ [ 75%] Building CXX object tools/bcp/CMakeFiles/bcp.dir/bcp_imp.cpp.o ++ (etc) ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/install_customization.txt b/tools/build/CMake/docs/build/html/_sources/install_customization.txt +new file mode 100644 +index 0000000..514be24 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/install_customization.txt +@@ -0,0 +1,204 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _install_customization: ++ ++Customizing the install ++======================= ++ ++Here you'll find ways to customize your installation. If you're ++trying to make the install play nice with cmake's ``find_package``, ++see :ref:`find_package_boost`. ++ ++.. index:: CMAKE_INSTALL_PREFIX ++ single: installation ++ ++.. _cmake_install_prefix: ++ ++CMAKE_INSTALL_PREFIX ++-------------------- ++ ++This is a standard cmake option that sets the path to which boost ++will be installed. ++ ++.. index:: DESTDIR ++ ++CMake generates makefiles that play nice with ``DESTDIR``. e.g. ++if you configure like this:: ++ ++ cmake ../src -DCMAKE_INSTALL_PREFIX=/tmp/blah ++ ++and install with ``DESTDIR=/foo make install``, you'll get files ++installed to ``/foo/tmp/blah``. ++ ++.. index:: LIB_SUFFIX ++.. _lib_suffix: ++ ++LIB_SUFFIX ++---------- ++ ++This defines the subdirectory of ``CMAKE_INSTALL_PREFIX`` to which ++libraries will be installed. It is empty by default. For example, ++if I'm on 64-bit fedora, I want the libs installed to ++``/usr/lib64``, I'd use:: ++ ++ cmake ../src -DCMAKE_INSTALL_PREFIX=/usr -DLIB_SUFFIX=64 ++ ++.. index:: INSTALL_VERSIONED ++.. _install_versioned: ++ ++INSTALL_VERSIONED ++----------------- ++ ++**ON** by default on unix, **OFF** on windows. ++ ++This is a different mangling than :ref:`WINMANGLE_LIBNAMES`: this ++variable controls whether boost versions will be mangled into the ++paths into which boost is installed. This option **has effect only ++when CMake is run the first time**: they will be set as explained ++below the first time thereafter not modified, so that the paths are ++customizable by users. (ie If you have configured a build and change ++this option, it will have no effect, you must start "from scratch") ++ ++.. rubric:: Example ++ ++For boost version 1.41.0, with this option ON, the installation tree ++is:: ++ ++ $CMAKE_INSTALL_PREFIX/ ++ include/ ++ boost-1.41.0/ ++ boost/ ++ version.hpp ++ ... ++ lib/ ++ boost-1.41.0/ ++ libboost_signals-mt-d.so ++ ... ++ ++and without it, :: ++ ++ $CMAKE_INSTALL_PREFIX/ ++ include/ ++ boost/ ++ version.hpp ++ ... ++ lib/ ++ boost/ ++ libboost_signals-mt-d.so ++ ... ++ ++**Note:** ``lib/`` above will contain :ref:`LIB_SUFFIX` if set. ++ ++See also :ref:`BUILD_SOVERSIONED` ++ ++The relative lib and include pathnames can be controlled individually ++with the following two variables: ++ ++.. index:: BOOST_LIB_INSTALL_DIR ++.. _boost_lib_install_dir: ++ ++BOOST_LIB_INSTALL_DIR ++--------------------- ++ ++The directory to which libs will be installed under ++:ref:`CMAKE_INSTALL_PREFIX`. ++ ++.. index:: BOOST_INCLUDE_INSTALL_DIR ++.. _boost_include_install_dir: ++ ++BOOST_INCLUDE_INSTALL_DIR ++------------------------- ++ ++The directory to which boost header files will be installed under ++:ref:`CMAKE_INSTALL_PREFIX`. ++ ++.. index:: BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR ++.. _boost_cmake_infrastructure_install_dir: ++ ++BOOST_CMAKE_INFRASTRUCTURE_INSTALL_DIR ++-------------------------------------- ++ ++This is a directory to which the targets from this boost install will ++be exported, by default ``${CMAKE_INSTALL_PREFIX}/share/boost-``\ ++|version|\ ``/cmake``: this significanly eases detection of boost ++installations by CMake. The name of the files are ++``BoostConfig.cmake`` and ``BoostConfigVersion.cmake`` [#findpackage]_. ++See :ref:`exported_targets` for ++more information about how users employ this file. ++ ++If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ``${CMAKE_INSTALL_PREFIX}``. ++ ++.. index:: BOOST_INSTALL_CMAKE_DRIVERS ++.. _boost_install_cmake_drivers: ++ ++BOOST_INSTALL_CMAKE_DRIVERS ++--------------------------- ++ ++Specifies whether generic cmake driver files should be installed, ++see the next option to customize where. This variable is ++``ON`` by default. ++ ++BOOST_CMAKE_DRIVERS_INSTALL_DIR ++------------------------------- ++ ++There are two optional version-agnostic driver files that can be ++installed to a central location, by default ++``${CMAKE_INSTALL_PREFIX}/share/boost-``\ |version|\ ``/cmake``. ++ ++named ``BoostConfig.cmake`` and ``BoostConfigVersion.cmake``. These ++two files coordinate with Boost-|version|.cmake to enable cmake ++developers who use both boost and cmake to find local boost ++installations via the standard cmake incantation:: ++ ++ find_package(Boost 1.41.0 COMPONENTS thread iostreams) ++ ++These driver files should be the same from release to release. ++ ++This variable allows modification of this location; If this is a full ++path, it will be used directly, otherwise it will be interpreted ++relative to ``${CMAKE_INSTALL_PREFIX}``. ++ ++.. index:: BOOST_EXPORTS_FILE ++.. _BOOST_EXPORTS_FILE: ++ ++BOOST_EXPORTS_FILE ++------------------ ++ ++This is the path *in the build tree* to the file that will contain ++CMake exported targets, by default it is:: ++ ++ ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/Exports.cmake ++ ++See :ref:`exported_targets` for information on how to use this handy ++file when building against an **uninstalled** boost. *This variable ++has no effect on installation, and is only useful if building separate ++cmake projects against an uninstalled boost.* ++ ++If this is a full path, it will be used directly, otherwise it will be ++interpreted relative to ``${CMAKE_BINARY_DIR}``. ++ ++.. index:: BOOST_INSTALL_EXPORTS_FILE ++.. _BOOST_INSTALL_EXPORTS_FILE: ++ ++BOOST_EXPORTS_INSTALL_DIR ++------------------------- ++ ++This is the path to which exported targest will be installed. By ++default it is ``${BOOST_LIB_INSTALL_DIR}``. This must be a ++**relative** path. ++ ++See :ref:`exported_targets` for information on how to use this handy ++file to build against an **installed** boost. ++ ++ ++ ++.. rubric:: Footnotes ++ ++.. [#findpackage] See also the cmake docs for ``find_package()``. +diff --git a/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt b/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt +new file mode 100644 +index 0000000..19be5e0 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/notes_by_version.txt +@@ -0,0 +1,226 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++Notes by Boost Version ++====================== ++ ++1.41.0.cmake1 ++------------------- ++ ++Again, innumerable tiny tweaks. ++ ++1.41.0.beta1.cmake1 ++------------------- ++ ++This is the first cmake beta based on upstream ``Boost_1_41_0_beta1``. ++There are *way* too many enhancements to mention. ++ ++1.41.0.cmakebeta4 ++----------------- ++ ++* CMake minimum 2.6.4 required (found bugs with 2.6.2) ++* Move MPI detection up ++* Clean up output ++ ++1.41.0.cmakebeta3 ++----------------- ++ ++* :ref:`variants` names switched to ``ENABLE_`` to distinguish ++ from ``BUILD_*`` options. ++ ++* Many docs improvements ++ ++* Special targets for the boost-cmake maintainer ++ ++* :ref:`BUILD_PROJECTS` ``(= NONE|ALL|proj1;proj2;...;projN)`` ++ variable for building only certain projects. ++ ++* :ref:`BUILD_EXAMPLES` ``(= NONE|ALL|proj1;proj2;...;projN)`` ++ variable for building examples only of certain projects. ++ ++* :ref:`LIB_SUFFIX` for installing libs to nonstandard lib directory ++ name, e.g. for LIB_SUFFIX=64, libs installed to ``$PREFIX/lib64`` ++ ++* Testing improvements: cmake now runs 2408 tests, 99% of which pass. ++ This isn't the full set, upstream is a moving target. The few ++ remaining failures (assuming upstream is bug-free) are assumed to be ++ problems in the testing setup, not the underlying libraries. ++ ++* Python: python location customizable via command line or environment ++ variables, see :ref:`external_dependencies`. ++ ++(1.41.0.cmakebeta1 and 2 omitted) ++ ++1.41.0 (upstream) ++----------------- ++ ++This release (as released by upstream Boost) does **not** contain ++CMake support. See above for independenly released CMake versions. ++ ++1.40.0.cmake4 ++------------- ++ ++Backport features from 1.41.0.cmakebeta3 ++ ++1.40.0.cmake3 ++------------- ++ ++Skipped ++ ++1.40.0.cmake2 ++------------- ++ ++* Modularization disabled... this can waste your source directory ++ and was causing confusion. ++* Docs tagged with specific boost-cmake release version. ++ ++1.40.0.cmake1 ++------------- ++ ++From the boost-cmake list:: ++ ++ > As of now, your Boost 1.40.0 branch builds and installs without error ++ > for me on Windows (Intel 11.1, Visual Studio 2009, Visual Studio 2010 ++ > Beta 1), Linux (GCC 4.2, GCC 4.4, Intel 11.1), and Mac OS X 10.6 (GCC ++ > 4.2, Intel 11.1). ++ ++This version also includes fixes for cmake version 2.8 (as of this ++writing, in beta). ++ ++Special thanks in alphabetical order: ++ ++* Claudio Bley ++* Justin Holewinski ++* Philip Lowman ++ ++1.40.0.cmake0 ++------------- ++ ++This version works on windows with MSVC and linux with gcc. ++ ++1.40.0 ++------ ++ ++This version is **broken** in the svn distribution. See later ++releases with the ``.cmakeN`` suffix. ++ ++1.38.0 and 1.39.0 ++----------------- ++ ++.. warning:: -DCMAKE_IS_EXPERIMENTAL=ORLY_YARLY ++ ++ This guard variable is included in releases of Boost.CMake through ++ version 1.38. You just need to set this variable to some value (be ++ creative) when running cmake for the first time to disable the ++ guard. ++ ++Boost.CMake was included as an experimental system for the first time. ++It is perfectly capable of doing the basic build and install of boost. ++You *must* pass the argument :: ++ ++ -DCMAKE_IS_EXPERIMENTAL=ORLY ++ ++to the initial run of cmake, or you will see an intimidating message ++explaining that Boost.CMake != Boost.Build. It looks like this:: ++ ++ -- ########################################################################## ++ -- ++ -- Only Boost.Build is officially supported. ++ -- ++ -- This is not Boost.Build. ++ -- ++ -- This is an alternate, cmake-based build system that is currently under development. ++ -- To try it out, invoke CMake with the argument ++ -- -DCMAKE_IS_EXPERIMENTAL=YES_I_KNOW ++ -- Or use the gui to set the variable CMAKE_IS_EXPERIMENTAL to some value. ++ -- This will only be necessary the first time. ++ -- ++ -- For more information on boost-cmake see the wiki: ++ -- https://svn.boost.org/trac/boost/wiki/CMake ++ -- ++ -- Subscribe to the mailing list: ++ -- http://lists.boost.org/mailman/listinfo.cgi/boost-cmake ++ -- ++ -- NOTE: Please ask questions about this build system on the boost-cmake list, ++ -- not on other boost lists. ++ -- ++ -- And/or check the archives: ++ -- http://news.gmane.org/gmane.comp.lib.boost.cmake ++ -- ++ -- ########################################################################## ++ CMake Error at CMakeLists.txt:61 (message): ++ Magic variable CMAKE_IS_EXPERIMENTAL unset. ++ ++ ++ -- Configuring incomplete, errors occurred! ++ ++Again, f you see this, just set that guard variable to something, to ++demonstrate your tenacity and dedication. Then things will work fine. ++ ++.. rubric:: Quick and dirty HOWTO ++ ++:: ++ ++ % mkdir /tmp/boost ++ % cd /tmp/boost ++ % svn co https://svn.boost.org/svn/boost/tags/release/Boost_1_38_0 src ++ % mkdir build ++ % cd build ++ % cmake -DCMAKE_IS_EXPERIMENTAL=ORLY -DCMAKE_INSTALL_PREFIX=/path/to/installdir ../src ++ ++At this point, you have two options: you either want to leave boost in ++place and use it there, or you want to install it to a particular ++location. ++ ++**In-place** ++ ++ If you're competent to specify header/library paths ++ yourself and want to build in place:: ++ ++ % make ++ ++ and your libraries will be in /tmp/boost/build/lib, and the headers in ++ /tmp/boost/src, (where you'd expect them to be). ++ ++**Installed to some location** ++ ++ This will install boost to ``lib/`` and ``include/`` under the ++ ``CMAKE_INSTALL_PREFIX`` given above:: ++ ++ % make modularize # shuffles some headers around ++ % make install ++ ++.. warning:: ++ ++ In versions 1.38 and 1.39, if you want to ``make install``, you ++ *must* ``make modularize`` first. This is an intermediate step ++ that we expect to go away in future versions. ++ ++Also note that cmake supports ``DESTDIR`` for making .deb and .rpm ++packages; see the standard cmake documentation ++ ++Known Issues ++^^^^^^^^^^^^ ++ ++* There isn't much support for building/running tests within boost in ++ these releases. ++* In version 1.39, the ``BOOST_VERSION_MINOR`` is wrong: it is set to ++ 1.38. You can set this manually by looking for ++ ``BOOST_VERSION_MINOR`` in the toplevel ``CMakeLists.txt`` ++* The boost build names the ``boost_prg_exec_monitor`` and ++ ``boost_unit_test_framework`` libraries with an additional trailing ++ ``-s``. You will probably need to modify your build if you use ++ these libraries. ++ ++ ++1.35.0 - 1.37 ++------------- ++ ++There was a CMake branch that built these releases, but Boost.CMake ++was not included in the official distribution. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/quickstart.txt b/tools/build/CMake/docs/build/html/_sources/quickstart.txt +new file mode 100644 +index 0000000..0a52835 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/quickstart.txt +@@ -0,0 +1,248 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++ ++.. _quickstart: ++ ++Quickstart ++========== ++ ++This page describes how to configure and build Boost with CMake. By ++following these instructions, you should be able to get CMake, ++configure a Boost build tree to your liking with CMake, and then ++build, install, and package Boost libraries. ++ ++Download CMake ++-------------- ++ ++You can get it here: http://www.cmake.org/HTML/Download.html ++ ++There are precompiled binaries for CMake on several different ++platforms. The installation of these pre-compiled binaries is mostly ++self-explanatory. If you need to build your own copy of CMake, please ++see the `CMake installation instructions ++`_. ++ ++.. note:: ++ ++ In these instructions, we will do things such that the Boost source ++ tree (with CMake build files) is available in the directory ++ ``$BOOST/src`` and that the build will happen in ``$BOOST/build``:: ++ ++ $BOOST/ ++ src/ # (source checked out to here) ++ build/ # (build output here) ++ ++ Note that it is *not* actually necessary to set any environment ++ variable ``BOOST``, this is a convention used in this document. ++ ++Checkout / download the code ++---------------------------- ++ ++Tarballs and zipfiles are avaiable at ++http://sodium.resophonic.com/boost-cmake in subdirectory |release|. ++ ++Boost.CMake is distributed *separately* from upstream boost. Code is ++in a `git `_ repository at ++http://gitorious.org/boost/cmake.git. These documents correspond to ++tag |release|. You can clone the repository locally and then check out ++the tag:: ++ ++ git clone git://gitorious.org/boost/cmake.git src ++ cd src ++ git checkout ++ ++where ```` is |release| ++ ++On Unix ++------- ++ ++Create and change to the directory that will hold the binaries that ++CMake build:: ++ ++ mkdir $BOOST/build ++ cd $BOOST/build ++ ++.. _unix_configure: ++ ++Configure ++^^^^^^^^^ ++ ++Run the CMake configuration program, providing it with the Boost ++source directory:: ++ ++ cmake -DCMAKE_INSTALL_PREFIX=/somewhere $BOOST/src ++ ++(:ref:`CMAKE_INSTALL_PREFIX` defaults to ``/usr/local`` on unix and ++``C:\\Program Files\Boost`` on windows). Replace ``/somewhere`` above ++with a path you like if the defaults aren't okay. You'll see output ++from ``cmake``. It looks somewhat like this:: ++ ++ -- Check for working C compiler: /usr/bin/gcc ++ -- Check for working C compiler: /usr/bin/gcc -- works ++ -- Check size of void* ++ -- Check size of void* - done ++ -- Check for working CXX compiler: /usr/bin/c++ ++ -- Check for working CXX compiler: /usr/bin/c++ -- works ++ -- Scanning subdirectories: ++ -- + io ++ -- + any ++ -- + crc ++ -- + mpl ++ ++ (etc, etc) ++ ++ -- + program_options ++ -- + ptr_container ++ -- + type_traits ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: $BOOST/build ++ ++The directory ``$BOOST/build`` should now contain a bunch of generated ++files, including a top level ``Makefile``, something like this:: ++ ++ % ls ++ CMakeCache.txt CPackConfig.cmake Makefile ++ cmake_install.cmake libs/ CMakeFiles/ ++ CPackSourceConfig.cmake bin/ lib/ ++ ++Build and Install ++^^^^^^^^^^^^^^^^^ ++ ++Now build and install boost:: ++ ++ make install ++ ++You'll see:: ++ ++ Scanning dependencies of target boost_date_time-mt-shared ++ [ 0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_month.cpp.o ++ [ 0%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/greg_weekday.cpp.o ++ [ 1%] Building CXX object libs/date_time/src/CMakeFiles/boost_date_time-mt-shared.dir/gregorian/date_generators.cpp.o ++ Linking CXX shared library ../../../lib/libboost_date_time-mt.so ++ [ 1%] Built target boost_date_time-mt-shared ++ ++ (etc etc) ++ ++ [100%] Built bcp ++ ++ (etc etc) ++ ++ -- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.a ++ -- Installing: /tmp/flanboost/lib/libboost_wave-mt-d.so ++ -- Removed runtime path from "/tmp/flanboost/lib/libboost_wave-mt-d.so" ++ -- Installing: /tmp/flanboost/bin/bcp ++ -- Installing: /tmp/flanboost/bin/inspect ++ ++And you're done. Once the build completes (which make take a while, if ++you are building all of the Boost libraries), the Boost libraries will ++be in a predictable layout under the directory passed to ++:ref:`CMAKE_INSTALL_PREFIX` (default ``/usr/local``) ++ ++Windows ++------- ++ ++There are two different sets of directions: visual studio, which is ++quite specific, and nmake, which is much like the Unix version, above. ++ ++.. index:: Visual Studio ++ ++.. _vs_configure: ++ ++Configuration for Visual Studio ++^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ++ ++Run CMake by selecting it from the Start menu. ++ ++* Use the *Browse...* button next to *Where is the source code* to ++ point CMake at the Boost source code in ``$BOOST\src``. ++* Use the second *Browse...* button to next to *Where to build the ++ binaries* to select the directory where Boost will build binaries, ++ ``$BOOST\build``. ++* Click *Configure* a first time to configure Boost, which will search ++ for various libraries on your system and prepare the build. CMake ++ will ask you what kind of project files or make files to build. If ++ you're using Microsoft Visual Studio, select the appropriate version ++ to generate project files. Otherwise, you can use Borland's make ++ files. If you're using NMake, see the next section. ++* On an XP box with VS9 one sees roughly this in the output window at ++ the bottom:: ++ ++ Check for working C compiler: cl ++ Check for working C compiler: cl -- works ++ Detecting C compiler ABI info ++ Detecting C compiler ABI info - done ++ Check for working CXX compiler: cl ++ Check for working CXX compiler: cl -- works ++ Detecting CXX compiler ABI info ++ Detecting CXX compiler ABI info - done ++ Boost version 1.41.0 ++ Found PythonInterp: C:/Python26/python.exe ++ Found PythonLibs: C:/Python26/libs/python26.lib ++ Boost compiler: msvc ++ Boost toolset: vc90 ++ Boost platform: windows ++ Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) ++ Build name: msvc-9.0-windows ++ + preprocessor ++ + concept_check ++ ... ++ + units ++ + wave ++ Configuring done ++ ++* The messages about 'missing doxygen' and whatnot are not ++ showstoppers for now, so long as configuration is successful. You ++ will be given the opportunity to tune build options in the CMake GUI ++ (see :ref:`configure_and_build` for more detail). They will ++ initially appear red. Click *Configure* again when you are done ++ editing them. The one thing that you may wish to configure as part ++ of this 'quickstart' is ``CMAKE_INSTALL_PREFIX``. ++* Finally, click *Generate* to generate project files. ``Boost.sln``, ++ the VS solution file, will appear in the *where to build the ++ binaries* directory from the cmake gui. ++ ++.. index:: NMake ++.. _NMake: ++ ++Configuration for NMake ++^^^^^^^^^^^^^^^^^^^^^^^ ++ ++* Start a `Visual Studio Command Prompt` from the start menu. This ++ will spawn a command prompt window with certain env variables set. ++ CMake will detect these and automatically choose to generate NMake ++ files. ++ ++* cd to $BOOST/build and execute:: ++ ++ cmake ..\src ++ ++ You will see output very similar to that on unix, see ++ :ref:`unix_configure`. ++ ++Build -- Visual Studio ++^^^^^^^^^^^^^^^^^^^^^^ ++ ++ Start up Visual Studio, load the solution or project ``Boost`` from ++ the Boost build directory you set in the CMake configuration ++ earlier. Then, just click *Build* to build all of Boost. ++ ++Build -- NMake ++^^^^^^^^^^^^^^ ++ ++ Execute ``nmake`` from the command prompt in the build directory. ++ ++Installation ++^^^^^^^^^^^^ ++ ++The installation of Boost's headers and compiled libraries uses the ++same tools as building the library. With Microsoft Visual Studio, just ++load the Boost solution or project and build the 'INSTALL' target to ++perform the installation. With NMake, ``nmake install``. ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt +new file mode 100644 +index 0000000..85c517e +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_add_executable.txt +@@ -0,0 +1,140 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_add_executable ++.. _boost_add_executable_macro: ++ ++boost_add_executable ++-------------------- ++ ++Adds an executable to the build ++ ++.. cmake:: boost_add_executable(exename source1 source2 ...) ++ ++ :param source1 source2...: sourcefiles ++ :param COMPILE_FLAGS flag1 flag2 ...: (optional) compile flags ++ :param LINK_FLAGS flag1 flag2 ...: (optional) link flags ++ :param feature_LINK_LIBS lib1 lib2 ...: (optional) link libraries ++ :param DEPENDS dep1 dep2 ...: (optional) intraboost dependencies ++ :param OUTPUT_NAME name: (optional) output name ++ :param NO_INSTALL: (optional) don't install ++ ++where exename is the name of the executable (e.g., "wave"). source1, ++source2, etc. are the source files used to build the executable, e.g., ++cpp.cpp. If no source files are provided, "exename.cpp" will be ++used. ++ ++This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder "feature" in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, please refer to the CMakeLists.txt file in the ++root of the Boost distribution, which defines the set of features ++that will be used to build Boost libraries by default. ++ ++The options that affect this macro's behavior are: ++ ++.. _COMPILE_FLAGS: ++.. index:: COMPILE_FLAGS ++ ++* **COMPILE_FLAGS** -- Provides additional compilation flags that will be ++ used when building the executable. ++ ++.. _feature_COMPILE_FLAGS: ++.. index:: feature_COMPILE_FLAGS ++ ++* **feature_COMPILE_FLAGS** -- Provides additional compilation flags that ++ will be used only when building the executable with the given ++ feature (e.g., ``SHARED_COMPILE_FLAGS`` when we're linking against ++ shared libraries). Note that the set of features used to build the ++ executable depends both on the arguments given to ++ boost_add_executable (see the "feature" argument description, below) ++ and on the user's choice of variants to build. ++ ++.. _LINK_FLAGS: ++.. index:: LINK_FLAGS ++ ++* **LINK_FLAGS** -- Provides additional flags that will be passed to the ++ linker when linking the executable. This option should not be used ++ to link in additional libraries; see ``LINK_LIBS`` and ``DEPENDS``. ++ ++.. _feature_LINK_FLAGS: ++.. index:: feature_LINK_FLAGS ++ ++* **feature_LINK_FLAGS** -- Provides additional flags that will be passed ++ to the linker when linking the executable with the given feature ++ (e.g., ``MULTI_THREADED_LINK_FLAGS`` when we're linking a multi-threaded ++ executable). ++ ++.. _LINK_LIBS: ++.. index:: LINK_LIBS ++ ++* **LINK_LIBS** -- Provides additional libraries against which the ++ executable will be linked. For example, one might provide "expat" as ++ options to ``LINK_LIBS``, to state that the executable will link against ++ the expat library binary. Use ``LINK_LIBS`` for libraries external to ++ Boost; for Boost libraries, use ``DEPENDS``. ++ ++.. _feature_LINK_LIBS: ++.. index:: feature_LINK_LIBS ++ ++* **feature_LINK_LIBS** -- Provides additional libraries to link against ++ when linking an executable built with the given feature. ++ ++.. _DEPENDS: ++.. index:: DEPENDS ++ ++* **DEPENDS** -- States that this executable depends on and links ++ against a Boost library. The arguments to ``DEPENDS`` should be the ++ unversioned name of the Boost library, such as ++ "boost_filesystem". Like ``LINK_LIBS``, this option states that the ++ executable will link against the stated libraries. Unlike ``LINK_LIBS``, ++ however, ``DEPENDS`` takes particular library variants into account, ++ always linking to the appropriate variant of a Boost library. For ++ example, if the ``MULTI_THREADED`` feature was requested in the call to ++ boost_add_executable, ``DEPENDS`` will ensure that we only link against ++ multi-threaded libraries. ++ ++.. _feature: ++.. index:: feature ++ ++* **feature** -- States that the executable should always be built using a ++ given feature, e.g., ``SHARED`` linking (against its libraries) or ++ ``MULTI_THREADED`` (for multi-threaded builds). If that feature has ++ been turned off by the user, the executable will not build. ++ ++.. _NO_INSTALL: ++.. index:: NO_INSTALL ++ ++* **NO_INSTALL** -- Don't install this executable with the rest of ++ Boost. ++ ++.. _OUTPUT_NAME: ++.. index:: OUTPUT_NAME ++ ++* **OUTPUT_NAME** -- If you want the executable to be generated ++ somewhere other than the binary directory, pass the path (including ++ directory and file name) via the ``OUTPUT_NAME`` parameter. ++ ++.. rubric:: Example ++ ++:: ++ ++ boost_add_executable(wave cpp.cpp ++ DEPENDS boost_wave boost_program_options ++ boost_filesystem ++ boost_serialization ++ ) ++ ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake`` ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt +new file mode 100644 +index 0000000..eeb668b +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_add_library.txt +@@ -0,0 +1,200 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_add_library ++.. _boost_add_library_macro: ++ ++boost_add_library ++----------------- ++ ++This macro creates a new Boost library target that generates a compiled library ++(.a, .lib, .dll, .so, etc) from source files. This routine will ++actually build several different variants of the same library, with ++different compilation options, as determined by the set of "default" ++library variants. ++ ++.. cmake:: boost_add_library(libname source1 source2 ...) ++ ++ :param source1 source2 ...: relative paths to source files ++ :type COMPILE_FLAGS: optional ++ :param COMPILE_FLAGS: flags to pass when compiling all variants ++ :type feature_COMPILE_FLAGS: optional ++ :param feature_COMPILE_FLAGS: compile flags when *feature* is on ++ :type LINK_FLAGS: optional ++ :param LINK_FLAGS: link flags for all variants ++ :type feature_LINK_FLAGS: optional ++ :param feature_LINK_FLAGS: link flags for *feature* ++ :type LINK_LIBS: optional ++ :param LINK_LIBS: lib1 lib2 ... ++ :type feature_LINK_LIBS: optional ++ :param feature_LINK_LIBS: lib1 lib2 ... ++ :type DEPENDS: optional ++ :param DEPENDS: libdepend1 libdepend2 ... ++ :param STATIC_TAG: ++ :type MODULE: boolean ++ :param MODULE: ++ :type NOT_feature: boolean ++ :param NOT_feature: ++ :type EXTRA_VARIANTS: optional ++ :param EXTRA_VARIANTS: variant1 variant2 ... ++ ++where `libname` is the name of Boost library binary (e.g., ++"boost_regex") and `source1`, `source2`, etc. are the source files used ++to build the library, e.g., `cregex.cpp`. ++ ++This macro has a variety of options that affect its behavior. In ++several cases, we use the placeholder "feature" in the option name ++to indicate that there are actually several different kinds of ++options, each referring to a different build feature, e.g., shared ++libraries, multi-threaded, debug build, etc. For a complete listing ++of these features, see :ref:`variants`. ++ ++The options that affect this macro's behavior are: ++ ++.. index:: COMPILE_FLAGS ++ ++COMPILE_FLAGS ++^^^^^^^^^^^^^ ++ ++ Provides additional compilation flags that will be ++ used when building all variants of the library. For example, one ++ might want to add ``"-DBOOST_SIGNALS_NO_LIB=1"`` through this option ++ (which turns off auto-linking for the Signals library while ++ building it). ++ ++feature_COMPILE_FLAGS ++^^^^^^^^^^^^^^^^^^^^^ ++ ++ Provides additional compilation flags that ++ will be used only when building variants of the library that ++ include the given feature. For example, ++ `MULTI_THREADED_COMPILE_FLAGS` are additional flags that will be ++ used when building a multi-threaded variant, while ++ `SHARED_COMPILE_FLAGS` will be used when building a shared library ++ (as opposed to a static library). ++ ++LINK_FLAGS ++^^^^^^^^^^ ++ ++ Provides additional flags that will be passed to the ++ linker when linking each variant of the library. This option ++ should not be used to link in additional libraries; see `LINK_LIBS` ++ and `DEPENDS`. ++ ++feature_LINK_FLAGS ++^^^^^^^^^^^^^^^^^^ ++ ++ Provides additional flags that will be passed ++ to the linker when building variants of the library that contain a ++ specific feature, e.g., `MULTI_THREADED_LINK_FLAGS`. This option ++ should not be used to link in additional libraries; see ++ feature_LINK_LIBS. ++ ++LINK_LIBS ++^^^^^^^^^ ++ ++ Provides additional libraries against which each of the ++ library variants will be linked. For example, one might provide ++ "expat" as options to LINK_LIBS, to state that each of the library ++ variants will link against the expat library binary. Use LINK_LIBS ++ for libraries external to Boost; for Boost libraries, use DEPENDS. ++ ++feature_LINK_LIBS ++^^^^^^^^^^^^^^^^^ ++ ++ Provides additional libraries for specific ++ variants of the library to link against. For example, ++ `MULTI_THREADED_LINK_LIBS` provides extra libraries to link into ++ multi-threaded variants of the library. ++ ++DEPENDS ++^^^^^^^ ++ ++ States that this Boost libraries depends on and links ++ against another Boost library. The arguments to `DEPENDS` should be ++ the unversioned name of the Boost library, such as ++ "boost_filesystem". Like `LINK_LIBS`, this option states that all ++ variants of the library being built will link against the stated ++ libraries. Unlike `LINK_LIBS`, however, `DEPENDS` takes particular ++ library variants into account, always linking the variant of one ++ Boost library against the same variant of the other Boost ++ library. For example, if the boost_mpi_python library `DEPENDS` on ++ 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. *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 ++ some platforms, such as Mac OS X. ++ ++NO_feature ++^^^^^^^^^^ ++ ++ States that library variants containing a particular ++ feature should not be built. For example, passing ++ `NO_SINGLE_THREADED` suppresses generation of single-threaded ++ variants of this library. ++ ++EXTRA_VARIANTS ++^^^^^^^^^^^^^^ ++ ++ Specifies that extra variants of this library ++ should be built, based on the features listed. Each "variant" is a ++ colon-separated list of features. For example, passing ++ EXTRA_VARIANTS "PYTHON_NODEBUG:PYTHON_DEBUG" ++ will result in the creation of an extra set of library variants, ++ some with the `PYTHON_NODEBUG` feature and some with the ++ `PYTHON_DEBUG` feature. ++ ++.. rubric:: Example ++ ++The Boost.Thread library binary is built using the following ++invocation of the `boost_add_library` macro. The options passed to the ++macro indicate that CMake should define `BOOST_THREAD_BUILD_DLL` to 1 ++when building shared libraries and `BOOST_THREAD_BUILD_LIB` to 1 when ++building static libraries. The `NO_SINGLE_THREADED` option inhibits ++creation of any single-threaded variants of the library (which ++obviously would not make sense for a threading library!). The flags ++needed to compile the multi-threaded variants are automatically ++added. :: ++ ++ boost_add_library( ++ boost_thread ++ barrier.cpp condition.cpp exceptions.cpp mutex.cpp once.cpp ++ recursive_mutex.cpp thread.cpp tss_hooks.cpp tss_dll.cpp tss_pe.cpp ++ tss.cpp xtime.cpp ++ SHARED_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_DLL=1" ++ STATIC_COMPILE_FLAGS "-DBOOST_THREAD_BUILD_LIB=1" ++ NO_SINGLE_THREADED ++ ) ++ ++ ++This example is from ``libs/thread/src/CMakeLists.txt``. ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake``. ++ ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt +new file mode 100644 +index 0000000..709977d +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_additional_test_dependencies.txt +@@ -0,0 +1,44 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++boost_additional_test_dependencies ++---------------------------------- ++ ++.. note:: This is only needed in the presence of 'modularization' ++ which is currently disabled. ++ ++Add additional include directories based on the dependencies of the ++library being tested 'libname' and all of its dependencies. ++ ++.. cmake:: boost_additional_test_dependencies(libname, ... ++ ++ :param libname: name of library being tested ++ :param BOOST_DEPENDS: libdepend1 libdepend2 ... ++ ++`libname` ++ ++ the name of the boost library being tested. (signals) ++ ++`BOOST_DEPENDS` ++ ++ The list of the extra boost libraries that the test suite will ++ depend on. You do NOT have to list those libraries already listed ++ by the module.cmake file as these will be used. ++ ++.. rubric:: Example ++ ++The following invocation of the `boost_additional_test_dependencies` ++macro is taken from the signals library. :: ++ ++ boost_additional_test_dependencies(signals BOOST_DEPENDS test optional) ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Testing module in ++tools/build/CMake/BoostTesting.cmake ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt +new file mode 100644 +index 0000000..5487089 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_library_project.txt +@@ -0,0 +1,103 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_library_project ++.. _boost_library_project_macro: ++ ++boost_library_project ++--------------------- ++ ++Define a boost library project. ++ ++.. cmake:: boost_library_project(libname[, ...]) ++ ++ :param libname: name of library to add ++ :type SRCDIRS: optional ++ :param SRCDIRS: srcdir1 srcdir2 ... ++ :type TESTDIRS: optional ++ :param TESTDIRS: testdir1 testdir2 .. ++ :type EXAMPLEDIRS: optional ++ :param EXAMPLEDIRS: testdir1 testdir2 .. ++ :param DESCRIPTION: description ++ :param AUTHORS: author1 author2 ++ :param MAINTAINERS: maint maint2 ++ :type MODULAR: optional ++ :param MODULAR: ++ ++where `libname` is the name of the library (e.g., Python, ++Filesystem), `srcdir1`, `srcdir2`, etc, are subdirectories containing ++library sources (for Boost libraries that build actual library ++binaries), and `testdir1`, `testdir2`, etc, are subdirectories ++containing regression tests. ++ ++.. A library marked MODULAR has all of its header files in its own ++.. subdirectory include/boost rather than the "global" boost ++.. subdirectory. These libraries can be added or removed from the tree ++.. freely; they do not need to be a part of the main repository. ++ ++`DESCRIPTION` provides a brief description of the library, which can ++be used to summarize the behavior of the library for a user. `AUTHORS` ++lists the authors of the library, while `MAINTAINERS` lists the active ++maintainers. If `MAINTAINERS` is left empty, it is assumed that the ++authors are still maintaining the library. Both authors and maintainers ++should have their name followed by their current e-mail address in ++angle brackets, with -at- instead of the at sign, e.g., :: ++ ++ Douglas Gregor ++ ++.. index:: TESTDIRS ++.. _TESTDIRS: ++ ++TESTDIRS ++^^^^^^^^ ++ ++For libraries that have regression tests, and when testing is enabled ++either by `BUILD_TESTS` containing the (lowercase) name of this ++library or the string ``ALL``, the generated makefiles/project files ++will contain regression tests for this library. ++ ++.. index:: EXAMPLEDIRS ++.. _EXAMPLEDIRS: ++ ++EXAMPLEDIRS ++^^^^^^^^^^^ ++ ++This option specifies directories containing examples. Examples are ++just libraries/executables created with :ref:`boost_add_library_macro` ++and :ref:`boost_add_executable_macro`, except they are only built if ++the name of the current project is specified in :ref:`BUILD_EXAMPLES`. ++ ++.. index:: MODULAR ++.. _MODULAR: ++ ++MODULAR ++^^^^^^^ ++ ++Currently unused. ++ ++.. rubric:: Example ++ ++The Boost.Thread library uses the following invocation of the ++`boost_library_project` macro, since it has both a compiled library ++(built in the "src" subdirectory) and regression tests (listed in the ++"test" subdirectory):: ++ ++ ++ boost_library_project( ++ Thread ++ SRCDIRS src ++ TESTDIRS test ++ DESCRIPTION "Portable threading" ++ AUTHORS "Anthony Williams ++ ) ++ ++.. rubric:: Where Defined ++ ++This macro is defined in the Boost Core module in ++``tools/build/CMake/BoostCore.cmake`` ++ +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt +new file mode 100644 +index 0000000..f014735 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_module.txt +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_module ++.. _boost_module: ++ ++boost_module ++------------ ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt +new file mode 100644 +index 0000000..0422c26 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_python_module.txt +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_python_module ++.. _boost_python_module: ++ ++boost_python_module ++------------------- ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt +new file mode 100644 +index 0000000..0a1c0b2 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile.txt +@@ -0,0 +1,14 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _boost_test_compile: ++ ++boost_test_compile ++------------------ ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt +new file mode 100644 +index 0000000..1e6f318 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_compile_fail.txt +@@ -0,0 +1,14 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _boost_test_compile_fail: ++ ++boost_test_compile_fail ++----------------------- ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt +new file mode 100644 +index 0000000..8e7c2f8 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run.txt +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_test_run ++.. _boost_test_run: ++ ++boost_test_run ++-------------- ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt +new file mode 100644 +index 0000000..9cc5e55 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/reference/boost_test_run_fail.txt +@@ -0,0 +1,15 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. index:: boost_test_run_fail ++.. _boost_test_run_fail: ++ ++boost_test_run_fail ++------------------- ++ ++FIXME +diff --git a/tools/build/CMake/docs/build/html/_sources/testing.txt b/tools/build/CMake/docs/build/html/_sources/testing.txt +new file mode 100644 +index 0000000..8f0db58 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_sources/testing.txt +@@ -0,0 +1,438 @@ ++.. ++.. Copyright (C) 2009 Troy Straszheim ++.. ++.. Distributed under the Boost Software License, Version 1.0. ++.. See accompanying file LICENSE_1_0.txt or copy at ++.. http://www.boost.org/LICENSE_1_0.txt ++.. ++ ++.. _testing: ++ ++Testing ++======= ++ ++Boost's CMake-based build system provides regression testing via ++`CTest `_, which ++comes as part of CMake. This regression testing system can be used by ++Boost developers to test their libraries locally and also by testers ++and users to submit regression tests to a `CDash server ++`_, which ++collects and reports regression-testing results from different ++sites. This document assumes that the reader has already learned how ++to build and configure Boost using CMake. ++ ++.. index:: BUILD_TESTS ++.. _BUILD_TESTS: ++ ++BUILD_TESTS ++----------- ++ ++The variable BUILD_TESTS is a comma-separated list of projects for ++which testing will be enabled, e.g.:: ++ ++ "accumulators;iostreams;variant" ++ ++or the string ``"ALL"`` for all projects, or the string ++``"NONE"`` to disable testing. ++ ++.. warning:: if you pass this list from a unix shell, don't forget to ++ enclose the whole thing in quotes or escape the ++ semicolons. ++ ++If you re-run the CMake configuration for Boost with ``BUILD_TESTS`` ++set to ``ALL``, you will notice that configuration takes significantly ++longer when we are building all of the regression tests. This is due ++to the very large number of toplevel targets (thousands) that are ++created. Until boost's testing scheme is reorganized to reduce this ++number, we anticipate that only testing nodes will want to test ALL, ++whereas developers will want to test the library under development and ++those that are dependent on it. ++ ++.. index:: NMake ++.. index:: Visual Studio ++.. index:: tests, running all of them ++ ++.. warning:: It is **not** recommended to set ``BUILD_TESTS`` to ++ ``"ALL"`` when using Visual Studio generators. A very ++ large number (thousands) of targets are generated and ++ this can bring VS to grinding halt. To run all tests, ++ choose the ``NMake`` generator, see :ref:`NMake`. ++ ++Be sure to re-configure CMake once you are done tweaking these ++options, and generate makefiles or project files, as mentioned in ++:ref:`quickstart`. ++ ++If you're using a command-line configuration (nmake files, unix ++makefiles) you can simplify this process by passing the value of ++``BUILD_TESTS`` on the command line, e.g. :: ++ ++ cmake ../src -DBUILD_TESTS="mpi;graph_parallel" ++ ++.. note:: In Visual Studio, you should be prompted by the gui to ++ reload the project. If you're unlucky, you will be prompted a ++ thousand times to reload each individual solution. For this ++ reason, our current best recommendataion is to close and reopen the ++ project if you rebuild ``Boost.sln``. ++ ++ ++Build ++----- ++ ++Follow the same building process described in :ref:`quickstart`. For ++Unix users, don't forget the `-i` option to `make` (ignore errors), ++and also possibly `-j 2` (or more) to run the build process in ++parallel. Building all of the regression tests for the Boost libraries ++can take a long time. :: ++ ++ make -j2 -i ++ ++.. note:: If you change Boost source files in a way that affects your ++ tests, you will need to rebuild to update the libraries and ++ test executables before moving on to the next step. ++ ++Test ++---- ++ ++Once regression tests have finished building, ++ ++Unix and nmake ++^^^^^^^^^^^^^^ ++ ++at a command prompt, ``cd`` to the Boost binary directory. Then, run ++the command:: ++ ++ ctest ++ ++to execute all of the regression tests. The `ctest` executable comes ++with cmake. On Unix platforms, this is the same place where `ccmake` ++resides. On Windows platforms, it will be in ``C:\Program ++Files\CMake X.Y\bin``. The ctest program should produce output like the ++following:: ++ ++ Start processing tests ++ Test project /Users/dgregor/Projects/boost-darwin ++ 1/ 22 Testing any-any_test Passed ++ 2/ 22 Testing any-any_to_ref_test Passed ++ 3/ 22 Testing function-lib_function_test Passed ++ 4/ 22 Testing function-function_n_test Passed ++ 5/ 22 Testing function-allocator_test Passed ++ 6/ 22 Testing function-stateless_test Passed ++ 7/ 22 Testing function-lambda_test Passed ++ 8/ 22 Testing function-function_test_fail1 ***Failed - supposed to fail ++ 9/ 22 Testing function-function_test_fail2 ***Failed - supposed to fail ++ 10/ 22 Testing function-function_30 Passed ++ 11/ 22 Testing function-function_arith_cxx98 Passed ++ 12/ 22 Testing function-function_arith_porta Passed ++ 13/ 22 Testing function-sum_avg_cxx98 Passed ++ 14/ 22 Testing function-sum_avg_portable Passed ++ 15/ 22 Testing function-mem_fun_cxx98 Passed ++ 16/ 22 Testing function-mem_fun_portable Passed ++ 17/ 22 Testing function-std_bind_cxx98 Passed ++ 18/ 22 Testing function-std_bind_portable Passed ++ 19/ 22 Testing function-function_ref_cxx98 Passed ++ 20/ 22 Testing function-function_ref_portabl Passed ++ 21/ 22 Testing function-contains_test Passed ++ 22/ 22 Testing function-contains2_test Passed ++ ++ 100% tests passed, 0 tests failed out of 22 ++ ++Here, we have only enabled testing of the Boost.Any and Boost.Function ++libraries, by setting `BUILD_TESTS` to `any;function`. ++ ++.. warning:: Again, This ``ctest`` step runs the tests without first ++ running a build. If you change a source file and run the ++ ``ctest`` step you will see that no build is invoked. ++ ++To run just a subset of the tests, pass ``-R`` and a regular ++expression to ``ctest`` (see the output of ``ctest --help-full``). For ++example, to run all of the Python tests, use:: ++ ++ ctest -R python ++ ++There is also a ``-E`` (exclude) option which does the inverse of ``-R``. ++``ctest --help`` shows the full list of options. ++ ++.. index:: targets ; testing ++.. index:: testing ; targets ++ ++Visual Studio ++^^^^^^^^^^^^^ ++ ++You will see a solution named ``RUN_TESTS``. Build this to run the ++tests. If you want to run them from the commandline, for some ++projects you will have to use the ``-C`` flag to ctest to specify the ++ctest configuration type (Debug or Release, typically). ++ ++ ++Targets ++------- ++ ++The testing subsystem adds toplevel targets to the build. On unix you ++can see them in the output of ``make help``. For example some of the ++accumulators test targets look like this:: ++ ++ % make help | grep accum ++ ... accumulators-tests-count ++ ... accumulators-tests-covariance ++ ... accumulators-tests-droppable ++ ... accumulators-tests-error_of ++ ... accumulators-tests-extended_p_square ++ ... accumulators-tests-extended_p_square_quantile ++ ++Note that they are prefixed with the name of the project, a dash, and ++'tests'. Under visual studio you will see these targets in the ++'solution explorer'. ++ ++.. _the_dashboard: ++ ++The Dashboard ++------------- ++ ++Donated by kitware, it is here: ++ ++http://www.cdash.org/CDashPublic/index.php?project=Boost ++ ++Submitting Results ++------------------ ++ ++.. warning:: This needs updating for git ++ ++The ``ctest`` command can be used by individual developers to test ++local changes to their libraries. The same program can also be used to ++build all of Boost, run its regression tests, and submit the results ++to a central server where others can view them. Currently, regression ++test results based on the CMake build system are displayed on the Dart ++server at http://www.cdash.org/CDashPublic/index.php?project=Boost. ++ ++To submit "experimental" results to the Dart server, configure a Boost ++binary tree by following the configuration instructions in the section ++:ref:`quickstart`, and then enable regression testing via the ++`BOOST_TESTS=ALL` option, as described above. At this point, don't build ++anything! We'll let CTest do that work. You may want to customize some ++of the advanced CMake options, such as `SITE` (to give your site ++name), and `MAKECOMMAND` (which, for makefile targets, governs the ++top-level make call when building Boost). Finally, go into the Boost ++binary directory and execute:: ++ ++ ctest -D Experimental ++ ++CTest will then reconfigure Boost, build all of the Boost libraries ++and regression tests, execute the regression tests, and submit the ++results to the Dart dashboard at ++http://www.cdash.org/CDashPublic/index.php?project=Boost. Results ++submitted to the dashboard are usually browsable momentarily within a ++minute or two. ++ ++Automatic testing ++----------------- ++ ++Continuous ++^^^^^^^^^^ ++ ++Here is a recommended setup. ++ ++Create a directory ``ctest`` on your test drone containing ++subdirectories for the branches you'll be testing, in this case ++*release* and *trunk*. :: ++ ++ boost/ ++ ctest/ ++ branches/ ++ release/ ++ continuous/ ++ build/ <= run ctest here ++ src/ <= checkout to here ++ nightly/ ++ build/ <= run ctest here ++ src/ <= checkout to here ++ ++and check out source to the directories listed above. We'll do the ++release branch as an example:: ++ ++ % cd boost/ctest/branches/release ++ % svn co http://svn.boost.org/svn/boost/branches/release src ++ # ++ # lots of output ++ # ++ % mkdir continuous ++ % cd continuous ++ ++now configure your build, enabling testing. In this case I'll also ++use an alternate compiler, from Intel:: ++ ++ % cmake ../src -DBUILD_TESTING=ON -DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc ++ -- The C compiler identification is Intel ++ -- The CXX compiler identification is Intel ++ -- Check for working C compiler: /opt/intel/Compiler/11.0/083/bin/intel64/icc ++ -- Check for working C compiler: /opt/intel/Compiler/11.0/083/bin/intel64/icc -- works ++ ++ (etc) ++ ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: /home/troy/Projects/boost/ctest/release/continuous/build ++ ++Now run ``ctest -D Continuous`` in a loop:: ++ ++ % while true ++ while> do ++ while> ctest -D Continuous ++ while> sleep 600 # take it easy on the repository ++ while> done ++ Site: zinc ++ Build name: intel-11.0-linux ++ Create new tag: 20090514-2207 - Continuous ++ Start processing tests ++ Updating the repository ++ Updating the repository: /home/troy/Projects/boost/ctest/release/nightly/src ++ Use SVN repository type ++ Old revision of repository is: 53002 ++ New revision of repository is: 53005 ++ Gathering version information (one . per revision): ++ ++ (etc) ++ ++If you add ``-V or -VV`` you'll get a little more feedback about what ++is going on. On unix it is handy to do this via the utility *screen*. ++ ++.. todo:: Figure out how to do this on windows, encapsulate some of ++ this scripting. Just use the ctest builtin scripting ++ language. ++ ++ ++Nightly ++^^^^^^^ ++ ++Nightly testing should run triggered by a cron job or by Windows Task ++Scheduler or what-have-you. You will need, ++ ++* a directory to work in ++* installed cmake/ctest/svn ++ ++but not a checkout of boost. CTest will do the checkout, build, test ++and submit on its own. ++ ++Create a directory to run in. As in the previous section, we'll use ++``boost/ctest/branches/release/nightly``, which I'll call ``$DIR``. ++The CTest script should look like the following (you can copy/paste ++this into ``$DIR/CTestNightly.cmake`` :: ++ ++ execute_process(COMMAND /bin/pwd ++ OUTPUT_VARIABLE PWD ++ OUTPUT_STRIP_TRAILING_WHITESPACE) ++ ++ message(STATUS "Running nightly build in ${PWD}") ++ ++ set(CTEST_SOURCE_DIRECTORY ${PWD}/src) ++ set(CTEST_BINARY_DIRECTORY ${PWD}/build) ++ ++ # what cmake command to use for configuring this dashboard ++ set(CTEST_CMAKE_COMMAND "/usr/local/bin/cmake") ++ set(CTEST_CTEST_COMMAND "/usr/local/bin/ctest") ++ set(CTEST_CVS_COMMAND "svn") ++ ++ set(CTEST_CVS_CHECKOUT "${CTEST_CVS_COMMAND} co https://svn.boost.org/svn/boost/branches/release ${CTEST_SOURCE_DIRECTORY}") ++ ++ # which ctest command to use for running the dashboard ++ set(CTEST_COMMAND ++ "${CTEST_CTEST_COMMAND} -VV -D Experimental -A ${PWD}/notes.txt -O ctest.log" ++ ) ++ ++ ++ ++ #################################################################### ++ # The values in this section are optional you can either ++ # have them or leave them commented out ++ #################################################################### ++ ++ # should ctest wipe the binary tree before running ++ set(CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE) ++ ++ # ++ # this is the initial cache to use for the binary tree, be careful to escape ++ # any quotes inside of this string if you use it ++ # ++ # Yes you can pass cmake -DBUILD_WHATEVER=ON type options here. ++ # ++ set(CTEST_INITIAL_CACHE " ++ ++ CMAKE_CXX_COMPILER:STRING=/opt/intel/Compiler/11.0/083/bin/intel64/icpc ++ CMAKE_C_COMPILER:STRING=/opt/intel/Compiler/11.0/083/bin/intel64/icc ++ ++ SITE:STRING=zinc ++ MAKECOMMAND:STRING=make -i -j2 ++ DART_TESTING_TIMEOUT:STRING=30 ++ BUILD_TESTS:STRING=ALL ++ BUILD_EXAMPLES:STRING=ALL ++ CVSCOMMAND:FILEPATH=${CTEST_CVS_COMMAND} ++ ") ++ ++You will need to customize several variables: ++ ++* **CTEST_CMAKE_COMMAND** the path to your cmake binary ++* **CTEST_CTEST_COMMAND** the path to your ctest binary (should be in ++ the same place as cmake) ++* **CTEST_CVS_COMMAND** The path to subversion. ++* **CMAKE_CXX_COMPILER:STRING**, **CMAKE_C_COMPILER:STRING** Note the ++ syntax here, the trailing ``:STRING``. If you are using a ++ nonstandard compiler, set it here. ++* **MAKECOMMAND:STRING** The path to your make command. *NOTE* if you ++ set this, be sure that the ``-i`` (ignore-errors) flag is included. ++ If it isn't, the first compile/link error will stop the build and ++ testing will commence. ++* **SITE:STRING** This is what will appear as the 'hostname' in your ++ posted dashboards. Customize as you like. ++ ++Now you'll create a "notes" file, call it ``notes.txt``. This will be ++visible from the dashboard. Add the output of, e.g:: ++ ++ gcc --version ++ uname -a ++ ++and the contents of the ``CTestNightly.cmake`` itself. Example:: ++ ++ **************** CMAKE DASHBOARD NOTES ***************** ++ ++ Notes file for CMake Nightly Dashboard. ++ ++ This dashboard is being generated on an eight core, 64 bit ++ Ubuntu 9.04 machine with an intel c++ compiler. ++ ++ ++ Questions about this Dashboard should be directed to troy@resophonic.com ++ ++ Linux zinc 2.6.27-11-generic #1 SMP Wed Apr 1 20:53:41 UTC 2009 x86_64 GNU/Linux ++ ++ icpc (ICC) 11.0 20090318 ++ Copyright (C) 1985-2009 Intel Corporation. All rights reserved. ++ ++ --------------- Script file --------------- ++ ++ (contents of CTestNightly.cmake) ++ ++Now run (as a cronjob or at the command line):: ++ ++ ctest -S CTestNightly.cmake ++ ++if you want extra verbosity add a ``-VV`` flag. You'll see something like the following:: ++ ++ + /opt/local/bin/ctest -VV -S CMakeDashBoard.cmake ++ * Extra verbosity turned on ++ Reading Script: /Users/troy/ctest/boost/release/nightly/CMakeDashBoard.cmake ++ Run cmake command: /opt/i3/ports/bin/cmake "/Users/troy/ctest/boost/release/nightly/src" ++ -- The C compiler identification is GNU ++ -- The CXX compiler identification is GNU ++ -- Check for working C compiler: /usr/bin/gcc ++ (etc) ++ -- Configuring done ++ -- Generating done ++ -- Build files have been written to: /Users/troy/ctest/boost/release/nightly/build ++ Run ctest command: /opt/i3/ports/bin/ctest -VV -D Nightly -A /Users/troy/ctest/boost/release/nightly/notes.txt -O ctest.log ++ UpdateCTestConfiguration from :/Users/troy/ctest/boost/release/nightly/build/DartConfiguration.tcl ++ Parse Config file:/Users/troy/ctest/boost/release/nightly/build/DartConfiguration.tcl ++ Site: silver ++ Build name: gcc-4.0.1-macos ++ (etc, etc) ++ ++You'll see it configure again, run... and sooner or later you'll see ++your results on :ref:`the_dashboard`. +diff --git a/tools/build/CMake/docs/build/html/_static/alt.boost.png b/tools/build/CMake/docs/build/html/_static/alt.boost.png +new file mode 100644 +index 0000000..1df0761 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/alt.boost.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/basic.css b/tools/build/CMake/docs/build/html/_static/basic.css +new file mode 100644 +index 0000000..68cae4f +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/basic.css +@@ -0,0 +1,405 @@ ++/** ++ * Sphinx stylesheet -- basic theme ++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ */ ++ ++/* -- main layout ----------------------------------------------------------- */ ++ ++div.clearer { ++ clear: both; ++} ++ ++/* -- relbar ---------------------------------------------------------------- */ ++ ++div.related { ++ width: 100%; ++ font-size: 90%; ++} ++ ++div.related h3 { ++ display: none; ++} ++ ++div.related ul { ++ margin: 0; ++ padding: 0 0 0 10px; ++ list-style: none; ++} ++ ++div.related li { ++ display: inline; ++} ++ ++div.related li.right { ++ float: right; ++ margin-right: 5px; ++} ++ ++/* -- sidebar --------------------------------------------------------------- */ ++ ++div.sphinxsidebarwrapper { ++ padding: 10px 5px 0 10px; ++} ++ ++div.sphinxsidebar { ++ float: left; ++ width: 230px; ++ margin-left: -100%; ++ font-size: 90%; ++} ++ ++div.sphinxsidebar ul { ++ list-style: none; ++} ++ ++div.sphinxsidebar ul ul, ++div.sphinxsidebar ul.want-points { ++ margin-left: 20px; ++ list-style: square; ++} ++ ++div.sphinxsidebar ul ul { ++ margin-top: 0; ++ margin-bottom: 0; ++} ++ ++div.sphinxsidebar form { ++ margin-top: 10px; ++} ++ ++div.sphinxsidebar input { ++ border: 1px solid #98dbcc; ++ font-family: sans-serif; ++ font-size: 1em; ++} ++ ++img { ++ border: 0; ++} ++ ++/* -- search page ----------------------------------------------------------- */ ++ ++ul.search { ++ margin: 10px 0 0 20px; ++ padding: 0; ++} ++ ++ul.search li { ++ padding: 5px 0 5px 20px; ++ background-image: url(file.png); ++ background-repeat: no-repeat; ++ background-position: 0 7px; ++} ++ ++ul.search li a { ++ font-weight: bold; ++} ++ ++ul.search li div.context { ++ color: #888; ++ margin: 2px 0 0 30px; ++ text-align: left; ++} ++ ++ul.keywordmatches li.goodmatch a { ++ font-weight: bold; ++} ++ ++/* -- index page ------------------------------------------------------------ */ ++ ++table.contentstable { ++ width: 90%; ++} ++ ++table.contentstable p.biglink { ++ line-height: 150%; ++} ++ ++a.biglink { ++ font-size: 1.3em; ++} ++ ++span.linkdescr { ++ font-style: italic; ++ padding-top: 5px; ++ font-size: 90%; ++} ++ ++/* -- general index --------------------------------------------------------- */ ++ ++table.indextable td { ++ text-align: left; ++ vertical-align: top; ++} ++ ++table.indextable dl, table.indextable dd { ++ margin-top: 0; ++ margin-bottom: 0; ++} ++ ++table.indextable tr.pcap { ++ height: 10px; ++} ++ ++table.indextable tr.cap { ++ margin-top: 10px; ++ background-color: #f2f2f2; ++} ++ ++img.toggler { ++ margin-right: 3px; ++ margin-top: 3px; ++ cursor: pointer; ++} ++ ++/* -- general body styles --------------------------------------------------- */ ++ ++a.headerlink { ++ visibility: hidden; ++} ++ ++h1:hover > a.headerlink, ++h2:hover > a.headerlink, ++h3:hover > a.headerlink, ++h4:hover > a.headerlink, ++h5:hover > a.headerlink, ++h6:hover > a.headerlink, ++dt:hover > a.headerlink { ++ visibility: visible; ++} ++ ++div.body p.caption { ++ text-align: inherit; ++} ++ ++div.body td { ++ text-align: left; ++} ++ ++.field-list ul { ++ padding-left: 1em; ++} ++ ++.first { ++ margin-top: 0 !important; ++} ++ ++p.rubric { ++ margin-top: 30px; ++ font-weight: bold; ++} ++ ++/* -- sidebars -------------------------------------------------------------- */ ++ ++div.sidebar { ++ margin: 0 0 0.5em 1em; ++ border: 1px solid #ddb; ++ padding: 7px 7px 0 7px; ++ background-color: #ffe; ++ width: 40%; ++ float: right; ++} ++ ++p.sidebar-title { ++ font-weight: bold; ++} ++ ++/* -- topics ---------------------------------------------------------------- */ ++ ++div.topic { ++ border: 1px solid #ccc; ++ padding: 7px 7px 0 7px; ++ margin: 10px 0 10px 0; ++} ++ ++p.topic-title { ++ font-size: 1.1em; ++ font-weight: bold; ++ margin-top: 10px; ++} ++ ++/* -- admonitions ----------------------------------------------------------- */ ++ ++div.admonition { ++ margin-top: 10px; ++ margin-bottom: 10px; ++ padding: 7px; ++} ++ ++div.admonition dt { ++ font-weight: bold; ++} ++ ++div.admonition dl { ++ margin-bottom: 0; ++} ++ ++p.admonition-title { ++ margin: 0px 10px 5px 0px; ++ font-weight: bold; ++} ++ ++div.body p.centered { ++ text-align: center; ++ margin-top: 25px; ++} ++ ++/* -- tables ---------------------------------------------------------------- */ ++ ++table.docutils { ++ border: 0; ++ border-collapse: collapse; ++} ++ ++table.docutils td, table.docutils th { ++ padding: 1px 8px 1px 0; ++ border-top: 0; ++ border-left: 0; ++ border-right: 0; ++ border-bottom: 1px solid #aaa; ++} ++ ++table.field-list td, table.field-list th { ++ border: 0 !important; ++} ++ ++table.footnote td, table.footnote th { ++ border: 0 !important; ++} ++ ++th { ++ text-align: left; ++ padding-right: 5px; ++} ++ ++/* -- other body styles ----------------------------------------------------- */ ++ ++dl { ++ margin-bottom: 15px; ++} ++ ++dd p { ++ margin-top: 0px; ++} ++ ++dd ul, dd table { ++ margin-bottom: 10px; ++} ++ ++dd { ++ margin-top: 3px; ++ margin-bottom: 10px; ++ margin-left: 30px; ++} ++ ++dt:target, .highlight { ++ background-color: #fbe54e; ++} ++ ++dl.glossary dt { ++ font-weight: bold; ++ font-size: 1.1em; ++} ++ ++.field-list ul { ++ margin: 0; ++ padding-left: 1em; ++} ++ ++.field-list p { ++ margin: 0; ++} ++ ++.refcount { ++ color: #060; ++} ++ ++.optional { ++ font-size: 1.3em; ++} ++ ++.versionmodified { ++ font-style: italic; ++} ++ ++.system-message { ++ background-color: #fda; ++ padding: 5px; ++ border: 3px solid red; ++} ++ ++.footnote:target { ++ background-color: #ffa ++} ++ ++/* -- code displays --------------------------------------------------------- */ ++ ++pre { ++ overflow: auto; ++} ++ ++td.linenos pre { ++ padding: 5px 0px; ++ border: 0; ++ background-color: transparent; ++ color: #aaa; ++} ++ ++table.highlighttable { ++ margin-left: 0.5em; ++} ++ ++table.highlighttable td { ++ padding: 0 0.5em 0 0.5em; ++} ++ ++tt.descname { ++ background-color: transparent; ++ font-weight: bold; ++ font-size: 1.2em; ++} ++ ++tt.descclassname { ++ background-color: transparent; ++} ++ ++tt.xref, a tt { ++ background-color: transparent; ++ font-weight: bold; ++} ++ ++h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { ++ background-color: transparent; ++} ++ ++/* -- math display ---------------------------------------------------------- */ ++ ++img.math { ++ vertical-align: middle; ++} ++ ++div.math p { ++ text-align: center; ++} ++ ++span.eqno { ++ float: right; ++} ++ ++/* -- printout stylesheet --------------------------------------------------- */ ++ ++@media print { ++ div.document, ++ div.documentwrapper, ++ div.bodywrapper { ++ margin: 0; ++ width: 100%; ++ } ++ ++ div.sphinxsidebar, ++ div.related, ++ div.footer, ++ #top-link { ++ display: none; ++ } ++} +diff --git a/tools/build/CMake/docs/build/html/_static/boost.css b/tools/build/CMake/docs/build/html/_static/boost.css +new file mode 100644 +index 0000000..63ce8bc +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/boost.css +@@ -0,0 +1,221 @@ ++/** ++ * Sphinx stylesheet -- default theme ++ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ++ */ ++ ++@import url("basic.css"); ++ ++/* -- page layout ----------------------------------------------------------- */ ++ ++body { ++ font-family: sans-serif; ++ font-size: 100%; ++ background-color: #ffffff; ++ color: #000; ++ margin: 0; ++ padding: 0; ++} ++ ++div.documentwrapper { ++ background-color: #ffffff; ++ border-top: 1px solid #dddddd; ++ border-bottom: 1px solid #dddddd; ++} ++ ++div.body { ++ background-color: #ffffff; ++ color: #000000; ++ padding: 0 20px 30px 20px; ++ border-left: 1px solid #eeeeee; ++} ++ ++div.footer { ++ color: #ffffff; ++ width: 100%; ++ padding: 9px 0 9px 0; ++ text-align: center; ++ font-size: 75%; ++} ++ ++div.footer a { ++ color: #ffffff; ++ text-decoration: underline; ++} ++ ++div.related { ++ background-color: #ffffff; ++ line-height: 30px; ++ color: #ffffff; ++} ++ ++div.related a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar { ++ float: right; ++} ++ ++div.sphinxsidebar h3 { ++ font-family: 'Trebuchet MS', sans-serif; ++ color: #666666; ++ font-size: 1.4em; ++ font-weight: normal; ++ margin: 0; ++ padding: 0; ++} ++ ++div.sphinxsidebar h3 a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar h4 { ++ font-family: 'Trebuchet MS', sans-serif; ++ color: #ffffff; ++ font-size: 1.3em; ++ font-weight: normal; ++ margin: 5px 0 0 0; ++ padding: 0; ++} ++ ++div.sphinxsidebar p { ++ color: #666666; ++} ++ ++div.sphinxsidebar p.topless { ++ margin: 5px 10px 10px 10px; ++} ++ ++div.sphinxsidebar ul { ++ margin: 10px; ++ padding: 0; ++ color: #ffffff; ++} ++ ++div.sphinxsidebar a { ++ color: #005a9c; ++} ++ ++div.sphinxsidebar input { ++ border: 1px solid #cccccc; ++ font-family: sans-serif; ++ font-size: 1em; ++} ++ ++/* -- body styles ----------------------------------------------------------- */ ++ ++a { ++ color: #355f7c; ++ text-decoration: none; ++} ++ ++a:hover { ++ text-decoration: underline; ++} ++ ++div.body p, div.body dd, div.body li { ++ text-align: justify; ++ line-height: 130%; ++} ++ ++div.body h1, ++div.body h2, ++div.body h3, ++div.body h4, ++div.body h5, ++div.body h6 { ++ background-color: #f5f5f5; ++ border-top: 1px solid #dddddd; ++ padding: 3px 0px 3px 10px; ++ margin: 20px -20px 10px -20px; ++ ++/* ++ font-family: 'Trebuchet MS', sans-serif; ++ background-color: #f2f2f2; ++ font-weight: normal; ++ color: #20435c; ++ border-bottom: 1px solid #ccc; ++ padding: 3px 0 3px 10px; ++*/ ++} ++ ++ ++div.body h1 { margin-top: 0; font-size: 150%; } ++div.body h2 { font-size: 140%; } ++div.body h3 { font-size: 130%; } ++div.body h4 { font-size: 120%; } ++div.body h5 { font-size: 110%; } ++div.body h6 { font-size: 100%; } ++ ++ ++a.headerlink { ++ color: #c60f0f; ++ font-size: 0.8em; ++ padding: 0 4px 0 4px; ++ text-decoration: none; ++} ++ ++a.headerlink:hover { ++ background-color: #c60f0f; ++ color: white; ++} ++ ++div.body p, div.body dd, div.body li { ++ text-align: justify; ++ line-height: 130%; ++} ++ ++div.admonition p.admonition-title + p { ++ display: inline; ++} ++ ++div.note { ++ background-color: #eee; ++ border: 1px solid #ccc; ++} ++ ++div.seealso { ++ background-color: #ffc; ++ border: 1px solid #ff6; ++} ++ ++div.topic { ++ background-color: #eee; ++} ++ ++div.warning { ++ background-color: #ffe4e4; ++ border: 1px solid #f66; ++} ++ ++p.admonition-title { ++ display: inline; ++} ++ ++p.admonition-title:after { ++ content: ":"; ++} ++ ++pre { ++ font-size: 9pt; ++ display: block; ++ margin: 1pc 4% 0pc 4%; ++ padding: 0.5pc 0.5pc 0.5pc 0.5pc; ++ border: 1px solid #d8d8d8; ++} ++ ++tt { ++ background-color: #ecf0f3; ++ padding: 0 1px 0 1px; ++ font-size: 0.95em; ++} ++ ++dt:target, .highlight { ++ background-color: #ffffff; ++ border-bottom: none; ++/* */ ++} ++ ++.k { ++ color: #0000aa; ++} +\ No newline at end of file +diff --git a/tools/build/CMake/docs/build/html/_static/contents.png b/tools/build/CMake/docs/build/html/_static/contents.png +new file mode 100644 +index 0000000..7fb8215 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/contents.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/doctools.js b/tools/build/CMake/docs/build/html/_static/doctools.js +new file mode 100644 +index 0000000..9447678 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/doctools.js +@@ -0,0 +1,232 @@ ++/// XXX: make it cross browser ++ ++/** ++ * make the code below compatible with browsers without ++ * an installed firebug like debugger ++ */ ++if (!window.console || !console.firebug) { ++ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", ++ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; ++ window.console = {}; ++ for (var i = 0; i < names.length; ++i) ++ window.console[names[i]] = function() {} ++} ++ ++/** ++ * small helper function to urldecode strings ++ */ ++jQuery.urldecode = function(x) { ++ return decodeURIComponent(x).replace(/\+/g, ' '); ++} ++ ++/** ++ * small helper function to urlencode strings ++ */ ++jQuery.urlencode = encodeURIComponent; ++ ++/** ++ * This function returns the parsed url parameters of the ++ * current request. Multiple values per key are supported, ++ * it will always return arrays of strings for the value parts. ++ */ ++jQuery.getQueryParameters = function(s) { ++ if (typeof s == 'undefined') ++ s = document.location.search; ++ var parts = s.substr(s.indexOf('?') + 1).split('&'); ++ var result = {}; ++ for (var i = 0; i < parts.length; i++) { ++ var tmp = parts[i].split('=', 2); ++ var key = jQuery.urldecode(tmp[0]); ++ var value = jQuery.urldecode(tmp[1]); ++ if (key in result) ++ result[key].push(value); ++ else ++ result[key] = [value]; ++ } ++ return result; ++} ++ ++/** ++ * small function to check if an array contains ++ * a given item. ++ */ ++jQuery.contains = function(arr, item) { ++ for (var i = 0; i < arr.length; i++) { ++ if (arr[i] == item) ++ return true; ++ } ++ return false; ++} ++ ++/** ++ * highlight a given string on a jquery object by wrapping it in ++ * span elements with the given class name. ++ */ ++jQuery.fn.highlightText = function(text, className) { ++ function highlight(node) { ++ if (node.nodeType == 3) { ++ var val = node.nodeValue; ++ var pos = val.toLowerCase().indexOf(text); ++ if (pos >= 0 && !jQuery.className.has(node.parentNode, className)) { ++ var span = document.createElement("span"); ++ span.className = className; ++ span.appendChild(document.createTextNode(val.substr(pos, text.length))); ++ node.parentNode.insertBefore(span, node.parentNode.insertBefore( ++ document.createTextNode(val.substr(pos + text.length)), ++ node.nextSibling)); ++ node.nodeValue = val.substr(0, pos); ++ } ++ } ++ else if (!jQuery(node).is("button, select, textarea")) { ++ jQuery.each(node.childNodes, function() { ++ highlight(this) ++ }); ++ } ++ } ++ return this.each(function() { ++ highlight(this); ++ }); ++} ++ ++/** ++ * Small JavaScript module for the documentation. ++ */ ++var Documentation = { ++ ++ init : function() { ++ this.fixFirefoxAnchorBug(); ++ this.highlightSearchWords(); ++ this.initModIndex(); ++ }, ++ ++ /** ++ * i18n support ++ */ ++ TRANSLATIONS : {}, ++ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, ++ LOCALE : 'unknown', ++ ++ // gettext and ngettext don't access this so that the functions ++ // can savely bound to a different name (_ = Documentation.gettext) ++ gettext : function(string) { ++ var translated = Documentation.TRANSLATIONS[string]; ++ if (typeof translated == 'undefined') ++ return string; ++ return (typeof translated == 'string') ? translated : translated[0]; ++ }, ++ ++ ngettext : function(singular, plural, n) { ++ var translated = Documentation.TRANSLATIONS[singular]; ++ if (typeof translated == 'undefined') ++ return (n == 1) ? singular : plural; ++ return translated[Documentation.PLURALEXPR(n)]; ++ }, ++ ++ addTranslations : function(catalog) { ++ for (var key in catalog.messages) ++ this.TRANSLATIONS[key] = catalog.messages[key]; ++ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); ++ this.LOCALE = catalog.locale; ++ }, ++ ++ /** ++ * add context elements like header anchor links ++ */ ++ addContextElements : function() { ++ $('div[id] > :header:first').each(function() { ++ $('\u00B6'). ++ attr('href', '#' + this.id). ++ attr('title', _('Permalink to this headline')). ++ appendTo(this); ++ }); ++ $('dt[id]').each(function() { ++ $('\u00B6'). ++ attr('href', '#' + this.id). ++ attr('title', _('Permalink to this definition')). ++ appendTo(this); ++ }); ++ }, ++ ++ /** ++ * workaround a firefox stupidity ++ */ ++ fixFirefoxAnchorBug : function() { ++ if (document.location.hash && $.browser.mozilla) ++ window.setTimeout(function() { ++ document.location.href += ''; ++ }, 10); ++ }, ++ ++ /** ++ * highlight the search words provided in the url in the text ++ */ ++ highlightSearchWords : function() { ++ var params = $.getQueryParameters(); ++ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; ++ if (terms.length) { ++ var body = $('div.body'); ++ window.setTimeout(function() { ++ $.each(terms, function() { ++ body.highlightText(this.toLowerCase(), 'highlight'); ++ }); ++ }, 10); ++ $('') ++ .appendTo($('.sidebar .this-page-menu')); ++ } ++ }, ++ ++ /** ++ * init the modindex toggle buttons ++ */ ++ initModIndex : function() { ++ var togglers = $('img.toggler').click(function() { ++ var src = $(this).attr('src'); ++ var idnum = $(this).attr('id').substr(7); ++ console.log($('tr.cg-' + idnum).toggle()); ++ if (src.substr(-9) == 'minus.png') ++ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); ++ else ++ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); ++ }).css('display', ''); ++ if (DOCUMENTATION_OPTIONS.COLLAPSE_MODINDEX) { ++ togglers.click(); ++ } ++ }, ++ ++ /** ++ * helper function to hide the search marks again ++ */ ++ hideSearchWords : function() { ++ $('.sidebar .this-page-menu li.highlight-link').fadeOut(300); ++ $('span.highlight').removeClass('highlight'); ++ }, ++ ++ /** ++ * make the url absolute ++ */ ++ makeURL : function(relativeURL) { ++ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; ++ }, ++ ++ /** ++ * get the current relative url ++ */ ++ getCurrentURL : function() { ++ var path = document.location.pathname; ++ var parts = path.split(/\//); ++ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { ++ if (this == '..') ++ parts.pop(); ++ }); ++ var url = parts.join('/'); ++ return path.substring(url.lastIndexOf('/') + 1, path.length - 1); ++ } ++}; ++ ++// quick alias for translations ++_ = Documentation.gettext; ++ ++$(document).ready(function() { ++ Documentation.init(); ++}); +diff --git a/tools/build/CMake/docs/build/html/_static/file.png b/tools/build/CMake/docs/build/html/_static/file.png +new file mode 100644 +index 0000000..d18082e +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/file.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/jquery.js b/tools/build/CMake/docs/build/html/_static/jquery.js +new file mode 100644 +index 0000000..82b98e1 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/jquery.js +@@ -0,0 +1,32 @@ ++/* ++ * jQuery 1.2.6 - New Wave Javascript ++ * ++ * Copyright (c) 2008 John Resig (jquery.com) ++ * Dual licensed under the MIT (MIT-LICENSE.txt) ++ * and GPL (GPL-LICENSE.txt) licenses. ++ * ++ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ ++ * $Rev: 5685 $ ++ */ ++(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else ++return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else ++return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else ++selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else ++this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else ++return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else ++jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else ++jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else ++ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else ++while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else ++for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else ++xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else ++jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else ++for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else ++s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else ++e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); +\ No newline at end of file +diff --git a/tools/build/CMake/docs/build/html/_static/minus.png b/tools/build/CMake/docs/build/html/_static/minus.png +new file mode 100644 +index 0000000..da1c562 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/minus.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/navigation.png b/tools/build/CMake/docs/build/html/_static/navigation.png +new file mode 100644 +index 0000000..1081dc1 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/navigation.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/plus.png b/tools/build/CMake/docs/build/html/_static/plus.png +new file mode 100644 +index 0000000..b3cb374 +Binary files /dev/null and b/tools/build/CMake/docs/build/html/_static/plus.png differ +diff --git a/tools/build/CMake/docs/build/html/_static/pygments.css b/tools/build/CMake/docs/build/html/_static/pygments.css +new file mode 100644 +index 0000000..c4f80ad +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/pygments.css +@@ -0,0 +1,59 @@ ++.c { color: #800000; } /* Comment */ ++.err { border: 1px solid #FF0000 } /* Error */ ++.k { color: #0000aa; } /* Keyword */ ++.o { color: #707070 } /* Operator */ ++.cm { color: #408090; font-style: italic } /* Comment.Multiline */ ++.cp { color: #007020 } /* Comment.Preproc */ ++.c1 { color: #408090; font-style: italic } /* Comment.Single */ ++.cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ ++.gd { color: #A00000 } /* Generic.Deleted */ ++.ge { font-style: italic } /* Generic.Emph */ ++.gr { color: #FF0000 } /* Generic.Error */ ++.gh { color: #000080; font-weight: bold } /* Generic.Heading */ ++.gi { color: #00A000 } /* Generic.Inserted */ ++.go { color: #303030 } /* Generic.Output */ ++.gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ ++.gs { font-weight: bold } /* Generic.Strong */ ++.gu { color: #800080; font-weight: bold } /* Generic.Subheading */ ++.gt { color: #0040D0 } /* Generic.Traceback */ ++.kc { color: #007020; font-weight: bold } /* Keyword.Constant */ ++.kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ ++.kp { color: #007020 } /* Keyword.Pseudo */ ++.kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ ++.kt { color: #602000 } /* Keyword.Type */ ++.m { color: #208050 } /* Literal.Number */ ++.s { color: #4070a0 } /* Literal.String */ ++.na { color: #4070a0 } /* Name.Attribute */ ++.nb { color: #007020 } /* Name.Builtin */ ++.nc { color: #0e84b5; font-weight: bold } /* Name.Class */ ++.no { color: #60add5 } /* Name.Constant */ ++.nd { color: #555555; font-weight: bold } /* Name.Decorator */ ++.ni { color: #d55537; font-weight: bold } /* Name.Entity */ ++.ne { color: #007020 } /* Name.Exception */ ++.nf { color: #06287e } /* Name.Function */ ++.nl { color: #002070; font-weight: bold } /* Name.Label */ ++.nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ ++.nt { color: #062873; font-weight: bold } /* Name.Tag */ ++.nv { color: #bb60d5 } /* Name.Variable */ ++.ow { color: #007020; font-weight: bold } /* Operator.Word */ ++.w { color: #bbbbbb } /* Text.Whitespace */ ++.mf { color: #208050 } /* Literal.Number.Float */ ++.mh { color: #208050 } /* Literal.Number.Hex */ ++.mi { color: #208050 } /* Literal.Number.Integer */ ++.mo { color: #208050 } /* Literal.Number.Oct */ ++.sb { color: #4070a0 } /* Literal.String.Backtick */ ++.sc { color: #4070a0 } /* Literal.String.Char */ ++.sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ ++.s2 { color: #4070a0 } /* Literal.String.Double */ ++.se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ ++.sh { color: #4070a0 } /* Literal.String.Heredoc */ ++.si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ ++.sx { color: #c65d09 } /* Literal.String.Other */ ++.sr { color: #235388 } /* Literal.String.Regex */ ++.s1 { color: #4070a0 } /* Literal.String.Single */ ++.ss { color: #517918 } /* Literal.String.Symbol */ ++.bp { color: #007020 } /* Name.Builtin.Pseudo */ ++.vc { color: #bb60d5 } /* Name.Variable.Class */ ++.vg { color: #bb60d5 } /* Name.Variable.Global */ ++.vi { color: #bb60d5 } /* Name.Variable.Instance */ ++.il { color: #208050 } /* Literal.Number.Integer.Long */ +\ No newline at end of file +diff --git a/tools/build/CMake/docs/build/html/_static/searchtools.js b/tools/build/CMake/docs/build/html/_static/searchtools.js +new file mode 100644 +index 0000000..e022625 +--- /dev/null ++++ b/tools/build/CMake/docs/build/html/_static/searchtools.js +@@ -0,0 +1,467 @@ ++/** ++ * helper function to return a node containing the ++ * search summary for a given text. keywords is a list ++ * of stemmed words, hlwords is the list of normal, unstemmed ++ * words. the first one is used to find the occurance, the ++ * latter for highlighting it. ++ */ ++ ++jQuery.makeSearchSummary = function(text, keywords, hlwords) { ++ var textLower = text.toLowerCase(); ++ var start = 0; ++ $.each(keywords, function() { ++ var i = textLower.indexOf(this.toLowerCase()); ++ if (i > -1) ++ start = i; ++ }); ++ start = Math.max(start - 120, 0); ++ var excerpt = ((start > 0) ? '...' : '') + ++ $.trim(text.substr(start, 240)) + ++ ((start + 240 - text.length) ? '...' : ''); ++ var rv = $('
').text(excerpt); ++ $.each(hlwords, function() { ++ rv = rv.highlightText(this, 'highlight'); ++ }); ++ return rv; ++} ++ ++/** ++ * Porter Stemmer ++ */ ++var PorterStemmer = function() { ++ ++ var step2list = { ++ ational: 'ate', ++ tional: 'tion', ++ enci: 'ence', ++ anci: 'ance', ++ izer: 'ize', ++ bli: 'ble', ++ alli: 'al', ++ entli: 'ent', ++ eli: 'e', ++ ousli: 'ous', ++ ization: 'ize', ++ ation: 'ate', ++ ator: 'ate', ++ alism: 'al', ++ iveness: 'ive', ++ fulness: 'ful', ++ ousness: 'ous', ++ aliti: 'al', ++ iviti: 'ive', ++ biliti: 'ble', ++ logi: 'log' ++ }; ++ ++ var step3list = { ++ icate: 'ic', ++ ative: '', ++ alize: 'al', ++ iciti: 'ic', ++ ical: 'ic', ++ ful: '', ++ ness: '' ++ }; ++ ++ var c = "[^aeiou]"; // consonant ++ var v = "[aeiouy]"; // vowel ++ var C = c + "[^aeiouy]*"; // consonant sequence ++ var V = v + "[aeiou]*"; // vowel sequence ++ ++ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 ++ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 ++ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 ++ var s_v = "^(" + C + ")?" + v; // vowel in stem ++ ++ this.stemWord = function (w) { ++ var stem; ++ var suffix; ++ var firstch; ++ var origword = w; ++ ++ if (w.length < 3) ++ return w; ++ ++ var re; ++ var re2; ++ var re3; ++ var re4; ++ ++ firstch = w.substr(0,1); ++ if (firstch == "y") ++ w = firstch.toUpperCase() + w.substr(1); ++ ++ // Step 1a ++ re = /^(.+?)(ss|i)es$/; ++ re2 = /^(.+?)([^s])s$/; ++ ++ if (re.test(w)) ++ w = w.replace(re,"$1$2"); ++ else if (re2.test(w)) ++ w = w.replace(re2,"$1$2"); ++ ++ // Step 1b ++ re = /^(.+?)eed$/; ++ re2 = /^(.+?)(ed|ing)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ re = new RegExp(mgr0); ++ if (re.test(fp[1])) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ } ++ else if (re2.test(w)) { ++ var fp = re2.exec(w); ++ stem = fp[1]; ++ re2 = new RegExp(s_v); ++ if (re2.test(stem)) { ++ w = stem; ++ re2 = /(at|bl|iz)$/; ++ re3 = new RegExp("([^aeiouylsz])\\1$"); ++ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); ++ if (re2.test(w)) ++ w = w + "e"; ++ else if (re3.test(w)) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ else if (re4.test(w)) ++ w = w + "e"; ++ } ++ } ++ ++ // Step 1c ++ re = /^(.+?)y$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(s_v); ++ if (re.test(stem)) ++ w = stem + "i"; ++ } ++ ++ // Step 2 ++ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ suffix = fp[2]; ++ re = new RegExp(mgr0); ++ if (re.test(stem)) ++ w = stem + step2list[suffix]; ++ } ++ ++ // Step 3 ++ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ suffix = fp[2]; ++ re = new RegExp(mgr0); ++ if (re.test(stem)) ++ w = stem + step3list[suffix]; ++ } ++ ++ // Step 4 ++ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; ++ re2 = /^(.+?)(s|t)(ion)$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(mgr1); ++ if (re.test(stem)) ++ w = stem; ++ } ++ else if (re2.test(w)) { ++ var fp = re2.exec(w); ++ stem = fp[1] + fp[2]; ++ re2 = new RegExp(mgr1); ++ if (re2.test(stem)) ++ w = stem; ++ } ++ ++ // Step 5 ++ re = /^(.+?)e$/; ++ if (re.test(w)) { ++ var fp = re.exec(w); ++ stem = fp[1]; ++ re = new RegExp(mgr1); ++ re2 = new RegExp(meq1); ++ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); ++ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) ++ w = stem; ++ } ++ re = /ll$/; ++ re2 = new RegExp(mgr1); ++ if (re.test(w) && re2.test(w)) { ++ re = /.$/; ++ w = w.replace(re,""); ++ } ++ ++ // and turn initial Y back to y ++ if (firstch == "y") ++ w = firstch.toLowerCase() + w.substr(1); ++ return w; ++ } ++} ++ ++ ++/** ++ * Search Module ++ */ ++var Search = { ++ ++ _index : null, ++ _queued_query : null, ++ _pulse_status : -1, ++ ++ init : function() { ++ var params = $.getQueryParameters(); ++ if (params.q) { ++ var query = params.q[0]; ++ $('input[name="q"]')[0].value = query; ++ this.performSearch(query); ++ } ++ }, ++ ++ /** ++ * Sets the index ++ */ ++ setIndex : function(index) { ++ var q; ++ this._index = index; ++ if ((q = this._queued_query) !== null) { ++ this._queued_query = null; ++ Search.query(q); ++ } ++ }, ++ ++ hasIndex : function() { ++ return this._index !== null; ++ }, ++ ++ deferQuery : function(query) { ++ this._queued_query = query; ++ }, ++ ++ stopPulse : function() { ++ this._pulse_status = 0; ++ }, ++ ++ startPulse : function() { ++ if (this._pulse_status >= 0) ++ return; ++ function pulse() { ++ Search._pulse_status = (Search._pulse_status + 1) % 4; ++ var dotString = ''; ++ for (var i = 0; i < Search._pulse_status; i++) ++ dotString += '.'; ++ Search.dots.text(dotString); ++ if (Search._pulse_status > -1) ++ window.setTimeout(pulse, 500); ++ }; ++ pulse(); ++ }, ++ ++ /** ++ * perform a search for something ++ */ ++ performSearch : function(query) { ++ // create the required interface elements ++ this.out = $('#search-results'); ++ this.title = $('

' + _('Searching') + '

').appendTo(this.out); ++ this.dots = $('').appendTo(this.title); ++ this.status = $('

').appendTo(this.out); ++ this.output = $('