Merge topic 'boost-component-headers'

c2e8d515 FindBoost: Add checks for component-specific headers
This commit is contained in:
Brad King 2016-05-16 10:11:43 -04:00 committed by CMake Topic Stage
commit d082810949
1 changed files with 84 additions and 4 deletions

View File

@ -310,7 +310,7 @@ macro(_Boost_ADJUST_LIB_VARS basename)
set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE} )
endif()
if(Boost_${basename}_LIBRARY)
if(Boost_${basename}_LIBRARY AND Boost_${basename}_HEADER)
set(Boost_${basename}_FOUND ON)
endif()
@ -522,7 +522,9 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
#
# The output may be added in a new block below. If it's the same as
# the previous release, simply update the version range of the block
# for the previous release.
# for the previous release. Also check if any new components have
# been added, and add any new components to
# _Boost_COMPONENT_HEADERS.
#
# This information was originally generated by running
# BoostScanDeps.cmake against every boost release to date supported
@ -753,6 +755,67 @@ function(_Boost_COMPONENT_DEPENDENCIES component _ret)
# message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}")
endfunction()
#
# Get component headers. This is the primary header (or headers) for
# a given component, and is used to check that the headers are present
# as well as the library itself as an extra sanity check of the build
# environment.
#
# component - the component to check
# _hdrs
#
function(_Boost_COMPONENT_HEADERS component _hdrs)
# Note: new boost components will require adding here. The header
# must be present in all versions of Boost providing a library.
set(_Boost_ATOMIC_HEADERS "boost/atomic.hpp")
set(_Boost_CHRONO_HEADERS "boost/chrono.hpp")
set(_Boost_CONTAINER_HEADERS "boost/container/container_fwd.hpp")
set(_Boost_CONTEXT_HEADERS "boost/context/all.hpp")
set(_Boost_COROUTINE_HEADERS "boost/coroutine/all.hpp")
set(_Boost_EXCEPTION_HEADERS "boost/exception/exception.hpp")
set(_Boost_DATE_TIME_HEADERS "boost/date_time/date.hpp")
set(_Boost_FILESYSTEM_HEADERS "boost/filesystem/path.hpp")
set(_Boost_GRAPH_HEADERS "boost/graph/adjacency_list.hpp")
set(_Boost_GRAPH_PARALLEL_HEADERS "boost/graph/adjacency_list.hpp")
set(_Boost_IOSTREAMS_HEADERS "boost/iostreams/stream.hpp")
set(_Boost_LOCALE_HEADERS "boost/locale.hpp")
set(_Boost_LOG_HEADERS "boost/log/core.hpp")
set(_Boost_LOG_SETUP_HEADERS "boost/log/detail/setup_config.hpp")
set(_Boost_MATH_HEADERS "boost/math_fwd.hpp")
set(_Boost_MATH_C99_HEADERS "boost/math/tr1.hpp")
set(_Boost_MATH_C99F_HEADERS "boost/math/tr1.hpp")
set(_Boost_MATH_C99L_HEADERS "boost/math/tr1.hpp")
set(_Boost_MATH_TR1_HEADERS "boost/math/tr1.hpp")
set(_Boost_MATH_TR1F_HEADERS "boost/math/tr1.hpp")
set(_Boost_MATH_TR1L_HEADERS "boost/math/tr1.hpp")
set(_Boost_MPI_HEADERS "boost/mpi.hpp")
set(_Boost_MPI_PYTHON_HEADERS "boost/mpi/python/config.hpp")
set(_Boost_PRG_EXEC_MONITOR_HEADERS "boost/test/prg_exec_monitor.hpp")
set(_Boost_PROGRAM_OPTIONS_HEADERS "boost/program_options.hpp")
set(_Boost_PYTHON_HEADERS "boost/python.hpp")
set(_Boost_RANDOM_HEADERS "boost/random.hpp")
set(_Boost_REGEX_HEADERS "boost/regex.hpp")
set(_Boost_SERIALIZATION_HEADERS "boost/serialization/serialization.hpp")
set(_Boost_SIGNALS_HEADERS "boost/signals.hpp")
set(_Boost_SYSTEM_HEADERS "boost/system/config.hpp")
set(_Boost_TEST_EXEC_MONITOR_HEADERS "boost/test/test_exec_monitor.hpp")
set(_Boost_THREAD_HEADERS "boost/thread.hpp")
set(_Boost_TIMER_HEADERS "boost/timer.hpp")
set(_Boost_TYPE_ERASURE_HEADERS "boost/type_erasure/config.hpp")
set(_Boost_UNIT_TEST_FRAMEWORK_HEADERS "boost/test/framework.hpp")
set(_Boost_WAVE_HEADERS "boost/wave.hpp")
set(_Boost_WSERIALIZATION_HEADERS "boost/archive/text_wiarchive.hpp")
string(TOUPPER ${component} uppercomponent)
set(${_hdrs} ${_Boost_${uppercomponent}_HEADERS} PARENT_SCOPE)
string(REGEX REPLACE ";" " " _boost_HDRS_STRING "${_Boost_${uppercomponent}_HEADERS}")
if (NOT _boost_HDRS_STRING)
set(_boost_HDRS_STRING "(none)")
endif()
# message(STATUS "Headers for Boost::${component}: ${_boost_HDRS_STRING}")
endfunction()
#
# Determine if any missing dependencies require adding to the component list.
#
@ -840,8 +903,9 @@ else()
# versions, find those that are acceptable to the user request.
#
# Note: When adding a new Boost release, also update the dependency
# information in _Boost_COMPONENT_DEPENDENCIES. See the
# instructions at the top of _Boost_COMPONENT_DEPENDENCIES.
# information in _Boost_COMPONENT_DEPENDENCIES and
# _Boost_COMPONENT_HEADERS. See the instructions at the top of
# _Boost_COMPONENT_DEPENDENCIES.
set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
"1.61.0" "1.61" "1.60.0" "1.60"
"1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55"
@ -1379,6 +1443,22 @@ foreach(COMPONENT ${Boost_FIND_COMPONENTS})
endif()
endif()
#
# Find headers
#
_Boost_COMPONENT_HEADERS("${COMPONENT}" Boost_${UPPERCOMPONENT}_HEADER_NAME)
# Look for a standard boost header file.
if(Boost_${UPPERCOMPONENT}_HEADER_NAME)
if(EXISTS "${Boost_INCLUDE_DIR}/${Boost_${UPPERCOMPONENT}_HEADER_NAME}")
set(Boost_${UPPERCOMPONENT}_HEADER ON)
else()
set(Boost_${UPPERCOMPONENT}_HEADER OFF)
endif()
else()
set(Boost_${UPPERCOMPONENT}_HEADER ON)
message(WARNING "No header defined for ${COMPONENT}; skipping header check")
endif()
#
# Find RELEASE libraries
#