|
|
@@ -54,6 +54,33 @@
|
|
|
# Boost_<C>_LIBRARY_DEBUG - Component <C> library debug variant
|
|
|
# Boost_<C>_LIBRARY_RELEASE - Component <C> library release variant
|
|
|
#
|
|
|
+# The following :prop_tgt:`IMPORTED` targets are also defined::
|
|
|
+#
|
|
|
+# Boost::boost - Target for header-only dependencies
|
|
|
+# (Boost include directory)
|
|
|
+# Boost::<C> - Target for specific component dependency
|
|
|
+# (shared or static library); <C> is lower-
|
|
|
+# case
|
|
|
+# Boost::diagnostic_definitions - interface target to enable diagnostic
|
|
|
+# information about Boost's automatic linking
|
|
|
+# during compilation (adds BOOST_LIB_DIAGNOSTIC)
|
|
|
+# Boost::disable_autolinking - interface target to disable automatic
|
|
|
+# linking with MSVC (adds BOOST_ALL_NO_LIB)
|
|
|
+# Boost::dynamic_linking - interface target to enable dynamic linking
|
|
|
+# linking with MSVC (adds BOOST_ALL_DYN_LINK)
|
|
|
+#
|
|
|
+# Implicit dependencies such as Boost::filesystem requiring
|
|
|
+# Boost::system will be automatically detected and satisfied, even
|
|
|
+# if system is not specified when using find_package and if
|
|
|
+# Boost::system is not added to target_link_libraries. If using
|
|
|
+# Boost::thread, then Thread::Thread will also be added automatically.
|
|
|
+#
|
|
|
+# It is important to note that the imported targets behave differently
|
|
|
+# than variables created by this module: multiple calls to
|
|
|
+# find_package(Boost) in the same directory or sub-directories with
|
|
|
+# different options (e.g. static or shared) will not override the
|
|
|
+# values of the targets created by the first call.
|
|
|
+#
|
|
|
# Users may set these hints or results as cache entries. Projects
|
|
|
# should not read these entries directly but instead use the above
|
|
|
# result variables. Note that some hint names start in upper-case
|
|
|
@@ -142,6 +169,14 @@
|
|
|
# add_executable(foo foo.cc)
|
|
|
# endif()
|
|
|
#
|
|
|
+# Example to find Boost libraries and use imported targets::
|
|
|
+#
|
|
|
+# find_package(Boost 1.56 REQUIRED COMPONENTS
|
|
|
+# date_time filesystem iostreams)
|
|
|
+# add_executable(foo foo.cc)
|
|
|
+# target_link_libraries(foo Boost::date_time Boost::filesystem
|
|
|
+# Boost::iostreams)
|
|
|
+#
|
|
|
# Example to find Boost headers and some *static* libraries::
|
|
|
#
|
|
|
# set(Boost_USE_STATIC_LIBS ON) # only find static libs
|
|
|
@@ -471,6 +506,262 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret)
|
|
|
set(${_ret} ${_boost_COMPILER} PARENT_SCOPE)
|
|
|
endfunction()
|
|
|
|
|
|
+#
|
|
|
+# Get component dependencies. Requires the dependencies to have been
|
|
|
+# defined for the Boost release version.
|
|
|
+#
|
|
|
+# component - the component to check
|
|
|
+# _ret - list of library dependencies
|
|
|
+#
|
|
|
+function(_Boost_COMPONENT_DEPENDENCIES component _ret)
|
|
|
+ # Note: to add a new Boost release, run
|
|
|
+ #
|
|
|
+ # % cmake -DBOOST_DIR=/path/to/boost/source -P Utilities/Scripts/BoostScanDeps.cmake
|
|
|
+ #
|
|
|
+ # 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.
|
|
|
+ #
|
|
|
+ # This information was originally generated by running
|
|
|
+ # BoostScanDeps.cmake against every boost release to date supported
|
|
|
+ # by FindBoost:
|
|
|
+ #
|
|
|
+ # % for version in /path/to/boost/sources/*
|
|
|
+ # do
|
|
|
+ # cmake -DBOOST_DIR=$version -P Utilities/Scripts/BoostScanDeps.cmake
|
|
|
+ # done
|
|
|
+ #
|
|
|
+ # The output was then updated by search and replace with these regexes:
|
|
|
+ #
|
|
|
+ # - Strip message(STATUS) prefix dashes
|
|
|
+ # s;^-- ;;
|
|
|
+ # - Indent
|
|
|
+ # s;^set(; set(;;
|
|
|
+ # - Add conditionals
|
|
|
+ # s;Scanning /path/to/boost/sources/boost_\(.*\)_\(.*\)_\(.*); elseif(NOT Boost_VERSION VERSION_LESS \10\20\3 AND Boost_VERSION VERSION_LESS xxxx);
|
|
|
+ #
|
|
|
+ # This results in the logic seen below, but will require the xxxx
|
|
|
+ # replacing with the following Boost release version (or the next
|
|
|
+ # minor version to be released, e.g. 1.59 was the latest at the time
|
|
|
+ # of writing, making 1.60 the next, so 106000 is the needed version
|
|
|
+ # number). Identical consecutive releases were then merged together
|
|
|
+ # by updating the end range of the first block and removing the
|
|
|
+ # following redundant blocks.
|
|
|
+ #
|
|
|
+ # Running the script against all historical releases should be
|
|
|
+ # required only if the BoostScanDeps.cmake script logic is changed.
|
|
|
+ # The addition of a new release should only require it to be run
|
|
|
+ # against the new release.
|
|
|
+ set(_Boost_IMPORTED_TARGETS TRUE)
|
|
|
+ if(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex thread)
|
|
|
+ set(_Boost_REGEX_DEPENDENCIES thread)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem thread)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 103500 AND Boost_VERSION VERSION_LESS 103600)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 103600 AND Boost_VERSION VERSION_LESS 103800)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system thread)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 103800 AND Boost_VERSION VERSION_LESS 104300)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 104300 AND Boost_VERSION VERSION_LESS 104400)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 104400 AND Boost_VERSION VERSION_LESS 104500)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random serialization)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 104500 AND Boost_VERSION VERSION_LESS 104700)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 104700 AND Boost_VERSION VERSION_LESS 104800)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 104800 AND Boost_VERSION VERSION_LESS 105000)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES date_time)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105000 AND Boost_VERSION VERSION_LESS 105300)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105300 AND Boost_VERSION VERSION_LESS 105400)
|
|
|
+ set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105400 AND Boost_VERSION VERSION_LESS 105500)
|
|
|
+ set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105500 AND Boost_VERSION VERSION_LESS 105600)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_COROUTINE_DEPENDENCIES context system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105600 AND Boost_VERSION VERSION_LESS 105900)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_COROUTINE_DEPENDENCIES context system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_RANDOM_DEPENDENCIES system)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ elseif(NOT Boost_VERSION VERSION_LESS 105900 AND Boost_VERSION VERSION_LESS 106000)
|
|
|
+ set(_Boost_CHRONO_DEPENDENCIES system)
|
|
|
+ set(_Boost_COROUTINE_DEPENDENCIES context system)
|
|
|
+ set(_Boost_FILESYSTEM_DEPENDENCIES system)
|
|
|
+ set(_Boost_IOSTREAMS_DEPENDENCIES regex)
|
|
|
+ set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono atomic)
|
|
|
+ set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic)
|
|
|
+ set(_Boost_MPI_DEPENDENCIES serialization)
|
|
|
+ set(_Boost_MPI_PYTHON_DEPENDENCIES python mpi serialization)
|
|
|
+ set(_Boost_RANDOM_DEPENDENCIES system)
|
|
|
+ set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic)
|
|
|
+ set(_Boost_TIMER_DEPENDENCIES chrono system)
|
|
|
+ set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic)
|
|
|
+ set(_Boost_WSERIALIZATION_DEPENDENCIES serialization)
|
|
|
+ else()
|
|
|
+ message(WARNING "Imported targets not available for Boost version ${Boost_VERSION}")
|
|
|
+ set(_Boost_IMPORTED_TARGETS FALSE)
|
|
|
+ endif()
|
|
|
+
|
|
|
+ string(TOUPPER ${component} uppercomponent)
|
|
|
+ set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
|
|
|
+ set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
|
|
|
+
|
|
|
+ string(REGEX REPLACE ";" " " _boost_DEPS_STRING "${_Boost_${uppercomponent}_DEPENDENCIES}")
|
|
|
+ if (NOT _boost_DEPS_STRING)
|
|
|
+ set(_boost_DEPS_STRING "(none)")
|
|
|
+ endif()
|
|
|
+ # message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}")
|
|
|
+endfunction()
|
|
|
+
|
|
|
+#
|
|
|
+# Determine if any missing dependencies require adding to the component list.
|
|
|
+#
|
|
|
+# Sets _Boost_${COMPONENT}_DEPENDENCIES for each required component,
|
|
|
+# plus _Boost_IMPORTED_TARGETS (TRUE if imported targets should be
|
|
|
+# defined; FALSE if dependency information is unavailable).
|
|
|
+#
|
|
|
+# componentvar - the component list variable name
|
|
|
+#
|
|
|
+#
|
|
|
+function(_Boost_MISSING_DEPENDENCIES componentvar)
|
|
|
+ # _boost_unprocessed_components - list of components requiring processing
|
|
|
+ # _boost_processed_components - components already processed (or currently being processed)
|
|
|
+ # _boost_new_components - new components discovered for future processing
|
|
|
+ #
|
|
|
+ list(APPEND _boost_unprocessed_components ${${componentvar}})
|
|
|
+
|
|
|
+ while(_boost_unprocessed_components)
|
|
|
+ list(APPEND _boost_processed_components ${_boost_unprocessed_components})
|
|
|
+ foreach(component ${_boost_unprocessed_components})
|
|
|
+ string(TOUPPER ${component} uppercomponent)
|
|
|
+ set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
|
|
|
+ _Boost_COMPONENT_DEPENDENCIES("${component}" _Boost_${uppercomponent}_DEPENDENCIES)
|
|
|
+ set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE)
|
|
|
+ set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE)
|
|
|
+ foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES})
|
|
|
+ list(FIND _boost_processed_components "${componentdep}" _boost_component_found)
|
|
|
+ list(FIND _boost_new_components "${componentdep}" _boost_component_new)
|
|
|
+ if (_boost_component_found EQUAL -1 AND _boost_component_new EQUAL -1)
|
|
|
+ list(APPEND _boost_new_components ${componentdep})
|
|
|
+ endif()
|
|
|
+ endforeach()
|
|
|
+ endforeach()
|
|
|
+ set(_boost_unprocessed_components ${_boost_new_components})
|
|
|
+ unset(_boost_new_components)
|
|
|
+ endwhile()
|
|
|
+ set(${componentvar} ${_boost_processed_components} PARENT_SCOPE)
|
|
|
+endfunction()
|
|
|
+
|
|
|
#
|
|
|
# End functions/macros
|
|
|
#
|
|
|
@@ -511,6 +802,10 @@ if(Boost_FIND_VERSION_EXACT)
|
|
|
else()
|
|
|
# The user has not requested an exact version. Among known
|
|
|
# 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.
|
|
|
set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS}
|
|
|
|
|
|
"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"
|
|
|
@@ -562,6 +857,16 @@ if(Boost_DEBUG)
|
|
|
"Boost_NO_SYSTEM_PATHS = ${Boost_NO_SYSTEM_PATHS}")
|
|
|
endif()
|
|
|
|
|
|
+# Supply Boost_LIB_DIAGNOSTIC_DEFINITIONS as a convenience target. It
|
|
|
+# will only contain any interface definitions on WIN32, but is created
|
|
|
+# on all platforms to keep end user code free from platform dependent
|
|
|
+# code. Also provide convenience targets to disable autolinking and
|
|
|
+# enable dynamic linking.
|
|
|
+if(NOT TARGET Boost::diagnostic_definitions)
|
|
|
+ add_library(Boost::diagnostic_definitions INTERFACE IMPORTED)
|
|
|
+ add_library(Boost::disable_autolinking INTERFACE IMPORTED)
|
|
|
+ add_library(Boost::dynamic_linking INTERFACE IMPORTED)
|
|
|
+endif()
|
|
|
if(WIN32)
|
|
|
# In windows, automatic linking is performed, so you do not have
|
|
|
# to specify the libraries. If you are linking to a dynamic
|
|
|
@@ -581,6 +886,12 @@ if(WIN32)
|
|
|
# code to emit a #pragma message each time a library is selected
|
|
|
# for linking.
|
|
|
set(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
|
|
|
+ set_target_properties(Boost::diagnostic_definitions PROPERTIES
|
|
|
+ INTERFACE_COMPILE_DEFINITIONS "BOOST_LIB_DIAGNOSTIC")
|
|
|
+ set_target_properties(Boost::disable_autolinking PROPERTIES
|
|
|
+ INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_NO_LIB")
|
|
|
+ set_target_properties(Boost::dynamic_linking PROPERTIES
|
|
|
+ INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_DYN_LINK")
|
|
|
endif()
|
|
|
|
|
|
_Boost_CHECK_SPELLING(Boost_ROOT)
|
|
|
@@ -979,6 +1290,17 @@ if(Boost_VERSION AND Boost_FIND_COMPONENTS)
|
|
|
endif()
|
|
|
endif()
|
|
|
|
|
|
+# Additional components may be required via component dependencies.
|
|
|
+# Add any missing components to the list.
|
|
|
+_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS)
|
|
|
+
|
|
|
+# If thread is required, get the thread libs as a dependency
|
|
|
+list(FIND Boost_FIND_COMPONENTS thread _Boost_THREAD_DEPENDENCY_LIBS)
|
|
|
+if(NOT _Boost_THREAD_DEPENDENCY_LIBS EQUAL -1)
|
|
|
+ include(CMakeFindDependencyMacro)
|
|
|
+ find_dependency(Threads)
|
|
|
+endif()
|
|
|
+
|
|
|
# If the user changed any of our control inputs flush previous results.
|
|
|
if(_Boost_CHANGE_LIBDIR OR _Boost_CHANGE_LIBNAME)
|
|
|
foreach(COMPONENT ${_Boost_COMPONENTS_SEARCHED})
|
|
|
@@ -1221,6 +1543,70 @@ else()
|
|
|
endforeach()
|
|
|
endif()
|
|
|
|
|
|
+# ------------------------------------------------------------------------
|
|
|
+# Add imported targets
|
|
|
+# ------------------------------------------------------------------------
|
|
|
+
|
|
|
+if(Boost_FOUND AND _Boost_IMPORTED_TARGETS)
|
|
|
+ # For header-only libraries
|
|
|
+ if(NOT TARGET Boost::boost)
|
|
|
+ add_library(Boost::boost INTERFACE IMPORTED)
|
|
|
+ if(Boost_INCLUDE_DIRS)
|
|
|
+ set_target_properties(Boost::boost PROPERTIES
|
|
|
+ INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+
|
|
|
+ foreach(COMPONENT ${Boost_FIND_COMPONENTS})
|
|
|
+ if(NOT TARGET Boost::${COMPONENT})
|
|
|
+ string(TOUPPER ${COMPONENT} UPPERCOMPONENT)
|
|
|
+ if(Boost_${UPPERCOMPONENT}_FOUND)
|
|
|
+ if(Boost_USE_STATIC_LIBS)
|
|
|
+ add_library(Boost::${COMPONENT} STATIC IMPORTED)
|
|
|
+ else()
|
|
|
+ # Even if Boost_USE_STATIC_LIBS is OFF, we might have static
|
|
|
+ # libraries as a result.
|
|
|
+ add_library(Boost::${COMPONENT} UNKNOWN IMPORTED)
|
|
|
+ endif()
|
|
|
+ if(Boost_INCLUDE_DIRS)
|
|
|
+ set_target_properties(Boost::${COMPONENT} PROPERTIES
|
|
|
+ INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}")
|
|
|
+ endif()
|
|
|
+ if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY}")
|
|
|
+ set_target_properties(Boost::${COMPONENT} PROPERTIES
|
|
|
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
|
|
+ IMPORTED_LOCATION "${Boost_${UPPERCOMPONENT}_LIBRARY}")
|
|
|
+ endif()
|
|
|
+ if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
|
|
|
+ set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
|
|
|
+ IMPORTED_CONFIGURATIONS DEBUG)
|
|
|
+ set_target_properties(Boost::${COMPONENT} PROPERTIES
|
|
|
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
|
|
|
+ IMPORTED_LOCATION_DEBUG "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}")
|
|
|
+ endif()
|
|
|
+ if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
|
|
|
+ set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY
|
|
|
+ IMPORTED_CONFIGURATIONS RELEASE)
|
|
|
+ set_target_properties(Boost::${COMPONENT} PROPERTIES
|
|
|
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
|
|
|
+ IMPORTED_LOCATION_RELEASE "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}")
|
|
|
+ endif()
|
|
|
+ if(_Boost_${UPPERCOMPONENT}_DEPENDENCIES)
|
|
|
+ unset(_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES)
|
|
|
+ foreach(dep ${_Boost_${UPPERCOMPONENT}_DEPENDENCIES})
|
|
|
+ list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Boost::${dep})
|
|
|
+ endforeach()
|
|
|
+ if(COMPONENT STREQUAL "thread")
|
|
|
+ list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Threads::Threads)
|
|
|
+ endif()
|
|
|
+ set_target_properties(Boost::${COMPONENT} PROPERTIES
|
|
|
+ INTERFACE_LINK_LIBRARIES "${_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES}")
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ endif()
|
|
|
+ endforeach()
|
|
|
+endif()
|
|
|
+
|
|
|
# ------------------------------------------------------------------------
|
|
|
# Notification to end user about what was found
|
|
|
# ------------------------------------------------------------------------
|