merge of cmake build files from trunk per beman

[SVN r50756]
This commit is contained in:
Troy D. Straszheim
2009-01-24 18:57:20 +00:00
parent b905fdb8af
commit a0a37bc633
85 changed files with 561 additions and 77 deletions
+64
View File
@@ -0,0 +1,64 @@
##########################################################################
# Boost Build Slave Support #
##########################################################################
# Copyright (C) 2008 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 #
##########################################################################
#
# Quick configuration of build slaves.
#
# 1. Copy this file to your (empty, newly created) build directory
# 2. Customize below where you see CUSTOMIZE
# 3. Use this file to populate your build directory. From the build
# directory execute:
#
# cmake -C path/to/this/file ../path/to/source/directory
#
# e.g.
#
# cmake -C BuildSlave.cmake ../src
#
message (STATUS "Reading initial cache for build slaves.")
#
# CUSTOMIZE
#
set(BOOST_BUILD_SLAVE_CONTACT_INFO "buildmeister@example.com"
CACHE STRING "who to contact with questions" FORCE)
set(BOOST_BUILD_SLAVE_HOSTNAME "descriptive.name.of.host.example.com"
CACHE STRING "descriptive hostname" FORCE)
#
# CUSTOMIZE: Either set this to the path of an existing file
# (relative to build directory) or create the file slave-description.txt
#
set(BOOST_BUILD_SLAVE_DETAILS_FILE "slave-description.txt"
CACHE STRING "file containing details about the build/platform" FORCE)
#
# Below this line oughtn't require customization.
#
if(EXISTS ${BOOST_BUILD_SLAVE_DETAILS_FILE})
message(STATUS "Will take build details from ${BOOST_BUILD_SLAVE_DETAILS_FILE}")
else(EXISTS ${BOOST_BUILD_SLAVE_DETAILS_FILE})
message(FATAL_ERROR "Please configure BOOST_BUILD_SLAVE_DETAILS_FILE (${BOOST_BUILD_SLAVE_DETAILS_FILE}) and create this file")
endif(EXISTS ${BOOST_BUILD_SLAVE_DETAILS_FILE})
if(WIN32)
set(CMAKE_GENERATOR "NMake Makefiles" CACHE INTERNAL "generator" FORCE)
set(CMAKE_MAKE_PROGRAM "nmake" CACHE INTERNAL "nmake" FORCE)
endif(WIN32)
set(BUILD_TESTING ON
CACHE BOOL "build testing" FORCE)
set(BOOST_BUILD_SLAVE ON
CACHE BOOL "build slave mode" FORCE)
+243
View File
@@ -0,0 +1,243 @@
##########################################################################
# CMake Build Rules for Boost #
##########################################################################
# Copyright (C) 2007, 2008 Douglas Gregor <doug.gregor@gmail.com> #
# 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 #
##########################################################################
# 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 GNU, 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.0 FATAL_ERROR)
project(Boost)
##########################################################################
# Post a warning to those attempting to use the CMake Build system. When #
# the build system stabilizes this can be removed. #
##########################################################################
if (NOT CMAKE_IS_EXPERIMENTAL)
message(STATUS "##########################################################################")
message(STATUS " THE CMAKE BUILD SYSTEM IS CURRENTLY UNDER DEVELOPMENT. PLEASE USE THE ")
message(STATUS " BJAM BASED SYSTEM INSTEAD TO BUILD A PRODUCTION VERSION OF BOOST. IF YOU ")
message(STATUS " STILL WANT TO TRY IT OUT INVOKE CMake WITH '-DCMAKE_IS_EXPERIMENTAL=TRUE'")
message(STATUS " ARGUMENT. After this first run of cmake you will no longer have to supply")
message(STATUS " the argument unless you need to run a cmake on a clean build directory.")
message(STATUS "##########################################################################")
message(FATAL_ERROR "")
endif (NOT CMAKE_IS_EXPERIMENTAL)
##########################################################################
# Version information #
##########################################################################
set(BOOST_VERSION_MAJOR 1)
set(BOOST_VERSION_MINOR 38)
set(BOOST_VERSION_SUBMINOR 0)
set(BOOST_VERSION "${BOOST_VERSION_MAJOR}.${BOOST_VERSION_MINOR}.${BOOST_VERSION_SUBMINOR}")
##########################################################################
# 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_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
##########################################################################
# Boost CMake modules #
##########################################################################
list(APPEND CMAKE_MODULE_PATH ${Boost_SOURCE_DIR}/tools/build/CMake)
include(BoostUtils)
include(BoostConfig)
include(BoostBuildSlave)
include(BoostCore)
include(BoostDocs)
include(BoostTesting)
##########################################################################
##########################################################################
# Build Features and Variants #
##########################################################################
# Determine default settings for the variable BUILD_feature options
if (MSVC)
set(BUILD_SINGLE_THREADED_DEFAULT OFF)
else ()
set(BUILD_SINGLE_THREADED_DEFAULT OFF)
endif ()
# User-level options deciding which variants we will build.
option(BUILD_STATIC "Whether to build static libraries" ON)
option(BUILD_SHARED "Whether to build shared libraries" ON)
option(BUILD_DEBUG "Whether to build debugging libraries" ON)
option(BUILD_RELEASE "Whether to build release libraries" ON)
option(BUILD_SINGLE_THREADED "Whether to build single-threaded libraries"
${BUILD_SINGLE_THREADED_DEFAULT})
option(BUILD_MULTI_THREADED "Whether to build multi-threaded libraries" ON)
# 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.
if(MSVC)
option(BUILD_STATIC_RUNTIME "Whether to build libraries linking against the static runtime" ON)
option(BUILD_DYNAMIC_RUNTIME "Whether to build libraries linking against the dynamic runtime" ON)
else(MSVC)
set(BUILD_STATIC_RUNTIME OFF)
set(BUILD_DYNAMIC_RUNTIME ON)
endif(MSVC)
# The default set of library variants that we will be building
boost_add_default_variant(RELEASE DEBUG)
boost_add_default_variant(STATIC SHARED)
boost_add_default_variant(SINGLE_THREADED MULTI_THREADED)
boost_add_default_variant(DYNAMIC_RUNTIME STATIC_RUNTIME)
# Extra features used by some libraries
set(BUILD_PYTHON_NODEBUG ON)
boost_add_extra_variant(PYTHON_NODEBUG PYTHON_DEBUG)
##########################################################################
##########################################################################
# Installation #
##########################################################################
if(BOOST_VERSION_SUBMINOR GREATER 0)
set(BOOST_HEADER_DIR
"include/boost-${BOOST_VERSION_MAJOR}_${BOOST_VERSION_MINOR}_${BOOST_VERSION_SUBMINOR}")
else(BOOST_VERSION_SUBMINOR GREATER 0)
set(BOOST_HEADER_DIR
"include/boost-${BOOST_VERSION_MAJOR}_${BOOST_VERSION_MINOR}")
endif(BOOST_VERSION_SUBMINOR GREATER 0)
install(DIRECTORY boost
DESTINATION ${BOOST_HEADER_DIR}
PATTERN "CVS" EXCLUDE
PATTERN ".svn" EXCLUDE)
#
# TDS 20080526: Getting a segfault here even with the ifs. At r45780, with these lines
# uncommented:
# 1. cmake the workspace
# 2. run ccmake and turn OFF BUILD_MULTI_THREADED and BUILD_SHARED
# 3. 'c' to configure
# 4. 'g' to generate.... segfault.
# 5. run rebuild_cache at the command line: no segfault this time.
#
# With these lines commented out, step 4 above does not segfault.
#
#if (NOT TEST_INSTALLED_TREE)
# If I don't have if around this, I get a seg fault
# install(EXPORT boost-targets DESTINATION "lib/Boost${BOOST_VERSION}")
#endif (NOT TEST_INSTALLED_TREE)
##########################################################################
##########################################################################
# Binary packages #
##########################################################################
set(CPACK_PACKAGE_NAME "Boost")
set(CPACK_PACKAGE_VENDOR "Boost.org")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Boost ${BOOST_VERSION}")
if (EXISTS "${Boost_SOURCE_DIR}/README.txt")
message(STATUS "Using generic cpack package description file.")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${Boost_SOURCE_DIR}/README.txt")
set(CPACK_RESOURCE_FILE_README "${Boost_SOURCE_DIR}/README.txt")
endif ()
set(CPACK_RESOURCE_FILE_LICENSE "${Boost_SOURCE_DIR}/LICENSE_1_0.txt")
if (EXISTS "${Boost_SOURCE_DIR}/Welcome.txt")
message(STATUS "Using generic cpack welcome file.")
set(CPACK_RESOURCE_FILE_WELCOME "${Boost_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_PACKAGE_ICON "${Boost_SOURCE_DIR}/tools/build/CMake\\\\InstallIcon.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}")
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(COMMAND cpack_configure_downloads)
cpack_configure_downloads(
"http://www.osl.iu.edu/~dgregor/Boost-CMake/${BOOST_VERSION}/"
ALL ADD_REMOVE)
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}")
else (TEST_INSTALLED_TREE)
# Use the headers directly from the Boost source tree (in boost/)
include_directories(${Boost_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)
# Add build rules for documentation
add_subdirectory(doc)
# Add build rules for all of the Boost libraries
add_subdirectory(${BOOST_LIBS_DIR})
# Add build rules for all of the Boost tools
# TODO: On hold while I work on the modularity code
add_subdirectory(tools)
##########################################################################
+3
View File
@@ -0,0 +1,3 @@
if (BUILD_DOCUMENTATION)
add_subdirectory(src)
endif ()
+13
View File
@@ -0,0 +1,13 @@
if (BUILD_DOCUMENTATION_HTML)
# Install style sheets and the main Boost logo
install(FILES boostbook.css docutils.css reference.css ../../boost.png
DESTINATION share/boost-${BOOST_VERSION}/html)
# Install images
install(DIRECTORY images
DESTINATION share/boost-${BOOST_VERSION}/html
COMPONENT Core
PATTERN "CVS" EXCLUDE
PATTERN ".svn" EXCLUDE)
endif ()
+57
View File
@@ -0,0 +1,57 @@
# 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 varname filename)
file(GLOB BOOST_LIBRARY_CMAKE_FILES
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "*/${filename}")
foreach(BOOST_LIB_CMAKE_FILE ${BOOST_LIBRARY_CMAKE_FILES})
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_SUBPROJECT_DIRECTORY_NAMES varname)
macro(ADD_SUBDIRECTORIES prefix)
foreach(subdir ${ARGN})
message(STATUS "${prefix}${subdir}")
add_subdirectory(${subdir})
endforeach(subdir ${ARGN})
endmacro(ADD_SUBDIRECTORIES prefix)
# Find all of the subdirectories with .cmake files in them. These are
# the libraries with dependencies.
boost_collect_subproject_directory_names(BOOST_MODULE_DIRS "module.cmake")
foreach(subdir ${BOOST_MODULE_DIRS})
include("${CMAKE_CURRENT_SOURCE_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_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)
add_subdirectories(" + " ${BOOST_SUBPROJECT_DIRS})
# 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")
+1 -1
Submodule libs/io updated: eea2bb328c...9498b1b241
+21
View File
@@ -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
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
)
+1
View File
@@ -0,0 +1 @@
boost_module(numeric DEPENDS logic serialization)
+82
View File
@@ -0,0 +1,82 @@
# return a list of directories that we should add_subdirectory()
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_CURRENT_SOURCE_DIR}" "${Boost_SOURCE_DIR}/libs/*/${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(STATUS "${Boost_SOURCE_DIR}/libs/${subdir}/module.cmake")
include("${Boost_SOURCE_DIR}/libs/${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})
#message(STATUS "include: ${include}")
include_directories("${Boost_SOURCE_DIR}/libs/${include}/include")
endforeach (include ${includes})
endmacro(boost_tool_dependencies)
#
###############################################################################
# add_subdirectory(quickbook)
# add_subdirectory(wave)
add_subdirectory(bcp)