f06bf0fa57 FindBoost: Fix compiler features for `fiber` and `context`
684338aff6 FindBoost: Record compiler features for Boost 1.67 and above
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !3266
Remove the 1.67 upper-bound on compiler feature computation so that with
newer versions we at least get it mostly right. Leave a comment with
notes about updating features for future versions.
The Gentoo case added by commit 1673923c30 (FindBoost: Add support for
Boost 1.67 with Python version suffixes, 2018-03-18, v3.11.0~3^2) left
out the `.` version component separator and instead duplicated the RPM
case. Add the missing `.` now.
Fixes: #18743
The purpose of the `Boost::dynamic_linking` interface library is to
cause `BOOST_ALL_DYN_LINK` to be defined. Do this on all platforms
instead of just Windows.
In particular, using Boost::log trivial_logger requires to set
BOOST_ALL_NO_LIB when Boost::Log is compiled as dynamic library.
Fixes: #17813
Since commit v3.13.0~7^2 (FindBoost: Improve compiler prefix
detection for GCC 5+ and clang 4+, 2018-11-07) we run the internal
`_Boost_COMPILER_DUMPVERSION` macro on all UNIX platforms. Teach
the macro to tolerate missing `CMAKE_CXX_COMPILER_VERSION`, which
occurs when the CXX language is not enabled.
Fixes: #18624
Add recognition of compiler version and prefix for clang.
Accommodate changes to version numbering scheme for GCC 5+ and clang 4+
- Minor number becomes patch, so excluded it from compiler prefix.
- Improves searching for Boost 1.69+ libraries built with GCC 5+ and
clang 4+, where library names are generated with compiler tag based on
major version only eg. -gcc5 for GC 5.5.0 or -clang6 for clang 6.0.0
- Follows up related changes in upcoming Boost 1.69
https://github.com/boostorg/build/pull/349
Dump detected compiler version in Boost_DEBUG message.
Replace use of CMAKE_COMPILER_IS_GNUCXX with CMAKE_CXX_COMPILER_ID.
Add the system thread library to Boost_LIBRARIES when the boost thread
component has been found.
The Boost::thread imported target already pulls in Threads::Threads.
This changes does the same for projects using the Boost_LIBRARIES variable
instead.
Boost 1.66 and above built with `--layout=versioned` add an architecture
tag to the library file names. We already try to compute this tag
automatically when `CMAKE_CXX_COMPILER_ARCHITECTURE_ID` is available,
but that is currently not computed everywhere. Add an explicit
`Boost_ARCHITECTURE` option that a user can set to specify the
architecture tag.
Issue: #17701
Search paths for boost versions should be build using _boost_TEST_VERSIONS
instead of _Boost_KNOWN_VERSIONS because if Boost_FIND_VERSION_EXACT
is used _Boost_KNOWN_VERSIONS is empty and boost isn't found even in its
default installation path.
Fixes: #17986
Update `mpi_python##` and `numpy##` component dependencies to honor
python version suffixes on components named by the caller. Although
upstream Boost did not add version suffixes prior to version 1.67, it is
commonly done by distros. Honor suffixes specified by project code.
Projects must take responsibility for naming distro-specific component
suffixes for versions prior to 1.67.
Fixes: #17892, #17970