Commit Graph

126 Commits

Author SHA1 Message Date
Alex Turbov c3a281fd32 FindBoost: Search in official Windows prebuilt binary library directory
Avoid the need to specify `BOOST_LIBRARYDIR` along with `BOOST_ROOT`
when using prebuilt binaries such as these:

  https://sourceforge.net/projects/boost/files/boost-binaries/
2016-06-03 11:15:02 -04:00
Alex Turbov 3720d5f4a3 FindBoost: Test `CMAKE_CXX_COMPILER_{ID,VERSION}` instead of `MSVC*` 2016-06-03 11:11:38 -04:00
Brad King d082810949 Merge topic 'boost-component-headers'
c2e8d515 FindBoost: Add checks for component-specific headers
2016-05-16 10:11:43 -04:00
Roger Leigh c2e8d5150e FindBoost: Add checks for component-specific headers
This supplements the existing library checks, to
cater for the possibility that the libraries are
present but the headers are not.  This can happen
when the Boost collections is split up into
multiple packages and not all are installed,
and will avoid the checks silently passing when
the build would subsequently fail.
2016-05-16 09:57:46 -04:00
Roger Leigh 328eff90eb FindBoost: Update dependencies for Boost 1.61 2016-05-13 19:39:41 +01:00
Brad King 5a9b2b3b11 FindBoost: Fix Boost_NO_SYSTEM_PATHS to not consider environment (#15702)
Previously we added only NO_CMAKE_SYSTEM_PATH to find command calls.
Add NO_SYSTEM_ENVIRONMENT_PATH too so that paths found from system
environment variables are not considered either.
2016-05-02 11:43:28 -04:00
Roger Leigh 2c1b720e64 FindBoost: Define Boost::boost for all boost versions 2016-04-19 22:07:45 +01:00
Erik Zenker 4527b9c416 FindBoost: Add support for IBM XL compiler 2016-03-23 13:41:42 -04:00
Roger Leigh e2f387fabb FindBoost: Tolerate missing indirect dependencies (#16013)
Depending upon the configuration, certain components may or may not
be installed, for example Boost.Regex, but other components may
still have header dependencies upon these components which will
obviously fail to work.  Since we can't make a sensible
determination with the hardcoded dependency information, we
choose to interpret these dependencies less strictly.
2016-03-15 09:54:58 -04:00
Sergei Nikulov b94e855d5f FindBoost: Add support for Boost 1.61 2016-01-22 08:35:04 -05:00
Roger Leigh 0a31fdabec FindBoost: Add support for Boost 1.60 2015-12-17 21:46:58 +00:00
Roger Leigh 3f9b081f6e FindBoost: Add imported targets
Targets include:

- Boost::boost: Target for header-only dependencies
- Boost::<C>: Target for specific component dependency
- Boost::diagnostic_definitions: adds BOOST_LIB_DIAGNOSTIC
- Boost::disable_autolinking: adds BOOST_ALL_NO_LIB
- Boost::dynamic_linking: adds BOOST_ALL_DYN_LINK
2015-12-02 09:40:17 -05:00
Roger Leigh 01c80acdbd FindBoost: Automatically add missing component dependencies
The function _Boost_MISSING_DEPENDENCIES will look at the
user-supplied component list, check the dependency
information for each component using
_Boost_COMPONENT_DEPENDENCIES, and will add any missing
dependencies to the component list.  This ensures that
all required components will be searched for.
2015-12-02 09:40:17 -05:00
Roger Leigh 5183c6e5dd FindBoost: Embed component dependency table
The function _Boost_COMPONENT_DEPENDENCIES is used to query the
library dependencies for a given component for a given version of
Boost.  This covers Boost releases from 1.33 to 1.59, using the
information generated by Utilities/Scripts/BoostScanDeps.cmake.
2015-12-02 09:40:17 -05:00
Roger Leigh ff5bb2efbe FindBoost: Add support for Boost 1.59 2015-08-14 09:55:07 -04:00
Brad King e14e1f273a Merge topic 'FindBoost-per-config-libraries'
b3df1e9f FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration
2015-06-02 09:03:52 -04:00
Brad King b3df1e9f70 FindBoost: Fix Boost_LIBRARY_DIR_{RELEASE,DEBUG} cache entry configuration
These cache entries introduced by commit 892b854f (FindBoost: Search for
debug and release libraries separately, 2015-01-26) should be marked as
advanced just as Boost_LIBRARY_DIR was.  Also their _LAST values should
be tracked so changes can be detected reliably.  Both of these are
handled by code looking in _Boost_VARS_LIB for a list of relevant
variables.  Fix construction of this list that was broken by the above
commit.

Reported-by: Sylvain Joubert <joubert.sy@gmail.com>
2015-06-01 10:10:08 -04:00
Geoff Viola 48004d9dbe Add a 'Green Hills MULTI' generator on Windows
Green Hills MULTI is an IDE for embedded real-time systems.  The IDE's
product page can be found here:

 http://www.ghs.com/products/MULTI_IDE.html

It supports cross compiling on ARM, Intel x86, and other architectures
with various operating systems.  The IDE exists on Linux and Windows
host systems, but CMake will currently only generate the project files
on Windows host systems.
2015-04-20 13:55:40 -04:00
Gunther Laure 892b854f57 FindBoost: Search for debug and release libraries separately (#15364)
Split Boost_LIBRARY_DIR into Boost_LIBRARY_DIR_[RELEASE,DEBUG] to allow
libraries to be grouped into per-config directories.
2015-02-05 10:50:49 -05:00
Brad King 526a80b32a Merge topic 'FindBoost-update-versions'
4048f7cd FindBoost: Add latest Boost version 1.57.0 and next milestone 1.58.0
2015-01-15 09:53:54 -05:00
Sergey Nikulov 4048f7cde0 FindBoost: Add latest Boost version 1.57.0 and next milestone 1.58.0 2015-01-13 08:59:13 -05:00
Guillaume Papin 43b8bfb213 FindBoost: fix find_library call when using "re-rooting"
When using CMAKE_FIND_ROOT_PATH, FindBoost is able to find the first
component and cache the full path of the directory in Boost_LIBRARY_DIR
so that all components are looked for in same directory. The issue was
that, when looking for the other components, Boost_LIBRARY_DIR was
re-rooted against CMAKE_FIND_ROOT_PATH even though it was already a path
on the host. This change fixes this by disabling the re-rooting in the
find_library call when using Boost_LIBRARY_DIR as a hint.

See http://www.cmake.org/pipermail/cmake-developers/2014-October/011670.html
2014-10-26 00:03:39 -04:00
Nils Gladitz c930046410 FindBoost: Avoid if() quoted auto-dereference
When testing CMAKE_CXX_COMPILER[_ID] values with if(MATCHES) or
if(STREQUAL), do not explicitly dereference or quote the variable.
We want if() to auto-dereference the variable and not its value.
2014-10-06 09:40:41 -04:00
Brad King b1cbd577c1 FindBoost: Add -vc140 mangling for VS 14
Co-Author: Pawel Stopinski <diokhan@go2.pl>
2014-06-25 14:51:25 -04:00
Rolf Eike Beer b0b4b4602f Remove .* expressions from beginning and end of MATCHES regexs
All these expressions work the same:
  "foo"
  ".*foo.*"
  "^.*foo.*$"

This assumes that the "Intel*" expressions were meant to be "Intel.*".
2014-04-14 18:17:11 +02:00
Rolf Eike Beer 2622bc3f65 Clean up usage of if(... MATCHES regex) followed string(REGEX REPLACE regex)
The matches have already been calculated and can simply be taken from
CMAKE_MATCH_n variables. This avoids multiple compilations of the same or very
similar regular expressions.
2014-04-14 18:16:58 +02:00
Ben Boeckel f284b003d7 FindBoost: Search next to MPI libs for graph_parallel (#14832)
In addition to the MPI libraries, graph_parallel lives in the MPI libdir
as well.
2014-03-25 16:26:11 -04:00
Chuck Atkins 17485e37a2 FindBoost: Add suport for custom namespaces
When building boost with an alternate namespace the libraries generated
will have a different naming convention.  This is often done to ensure
no symbol conflicts with external libraries built against a different
version of boost.  If the namespace used is "myprivateboost::" instead
of "boost::" then the libraries built will be named myprivateboost_foo
instead of boost_foo.  Add an option to specify a custom namespace used
to alter the library names that get searched for.
2014-02-17 16:05:48 -05:00
Brad King a22eeca3fd FindBoost: Search next to MPI libraries for boost_mpi (#14739)
Some distributions place boost_mpi next to the MPI libraries against
which it was built instead of next to the other Boost libraries.  If
find_package(MPI) has already been run prior to find_package(Boost) then
MPI_CXX_LIBRARIES or MPI_C_LIBRARIES may be set to the location of the
MPI libraries.  Teach FindBoost.cmake to look there for boost_mpi and
boost_mpi_python after looking next to the other Boost libraries but
not consider the location to be Boost_LIBRARY_DIR.
2014-02-10 16:18:47 -05:00
Brad King d729899a26 FindBoost: Add Boost_USE_DEBUG_RUNTIME option (#14686)
Add an option to control use of the 'g' runtime debug library tag
on MSVC tools.  Default to ON to preserve existing behavior.
2014-01-08 11:32:17 -05:00
Brad King f53878b0d5 FindBoost: Clarify example static libs option (#13663)
State explicitly in the example that it will only find static libraries.
2013-11-01 11:24:06 -04:00
Brad King a42a66547b FindBoost: Refine .rst formatting
Move the '::' starting literal blocks to the end of the preceding
paragraph.  Convert the "Boost CMake" divider to a section header.
2013-11-01 11:24:06 -04:00
Kitware Robot f051814ed0 Convert builtin help to reStructuredText source files
Run the convert-help.bash script to convert documentation:

 ./convert-help.bash "/path/to/CMake-build/bin"

Then remove it.
2013-10-15 14:12:03 -04:00
Brad King 4e5cb398ae Merge branch 'master' into vs12-generator
Resolve conflicts in Tests/Preprocess/CMakeLists.txt by keeping
the side from 'master'.
2013-06-28 18:29:54 -04:00
Brad King 78fdbbcb41 FindBoost: Add -vc120 mangling for VS 12 2013-06-28 18:14:01 -04:00
Brad King 86cbd7312a FindBoost: Clarify failure on missing 'static' libs (#14235)
When Boost_USE_STATIC_LIBS is ON we may complain that Boost libraries
cannot be found even when shared libraries are present.  Update the
error message to tell the user explicitly that we want static libraries.

Suggested-by: Laurence R. McGlashan <laurence.mcglashan@gmail.com>
2013-06-20 17:10:13 -04:00
Brad King 1f73d65177 Merge topic 'FindBoost-normalize-slashes'
363825c FindBoost: Fix handling of \ in input paths (#14179)
2013-05-31 09:33:35 -04:00
Brad King 363825cd55 FindBoost: Fix handling of \ in input paths (#14179)
In commit 5b9149e0 (FindBoost: Overhaul caching and search repeat
behavior, 2012-09-24) we refactored the internal library search to use a
_Boost_FIND_LIBRARY macro to wrap around find_library calls.  However,
CMake macros re-process escape sequences when evaluating calls inside
the macro after substituting placeholders (a historical bug).  In order
to avoid escape sequences, convert backslashes to forward slashes before
passing arguments to the _Boost_FIND_LIBRARY macro.
2013-05-30 16:20:55 -04:00
Andreas Mohr bf019d765d Fix spelling and typos (non-binary) 2013-05-07 08:39:19 -04:00
Brad King 0496782418 FindBoost: Rewrite documentation
Write new documentation for this module.  Ensure that it formats
correctly in "cmake --help-module FindBoost" output.  Show the basic
form of calling find_package(Boost).  Document all result variables,
input variables, and cache variables appropriately grouped together.
Explain the search process and how it re-runs when changes are made.
Explain the difference between finding headers/libraries versus finding
a "Boost CMake" package configuraiton file.

Drop the emphasis on Boost_ADDITIONAL_VERSIONS because the
implementation should predict most future versions instead.
2012-09-27 11:08:21 -04:00
Brad King 4d92f6ca33 FindBoost: Refactor Boost_FOUND computation and version check
Construct an initial Boost_FOUND value immediately after searching for
Boost_INCLUDE_DIR.  Base the result only on whether header files for the
requested version were found.  Then after searching for component
libraries update Boost_FOUND based on whether all requested components
were found.
2012-09-27 11:07:51 -04:00
Brad King 0100f88e29 FindBoost: Construct a clean Boost_LIBRARIES value
Construct the value from scratch based on the component library list.
Avoid accumulating values from repeated find_package(Boost) calls.
If Boost is not found, Boost_LIBRARIES should be empty.
2012-09-27 11:04:20 -04:00
Brad King 5b9149e083 FindBoost: Overhaul caching and search repeat behavior
Overhaul the implementation as follows:

(1) Do not cache result variables such as Boost_VERSION,
Boost_LIB_VERSION, Boost_LIBRARY_DIRS, Boost_${COMPONENT}_FOUND,
Boost_${COMPONENT}_LIBRARY, or Boost_LIB_DIAGNOSTIC_DEFINITIONS that are
derived uniquely from other search results.  The user should not edit
them anyway.

(2) Add cache value Boost_LIBRARY_DIR to hold the single directory
expected to contain all libraries.  Once one library is found, search
only that directory for other libraries.

(3) Use the find_library NAMES_PER_DIR option to consider all possible
library names at the same time.

(4) Collect all documented input and cache variables and detect when
they have been changed by the user.  Discard prior search results that
may have been influenced by the changes and search for them again.
Environment variables are not expected to be persistent so use them only
as hints and do not consider changes to them to be meaningful.
2012-09-27 11:04:19 -04:00
Brad King 5ec8a69cac FindBoost: Use PATH_SUFFIXES to look in "Program Files"
The CMake find_path command looks under the proper "Program Files"
directories on Windows with any of the provided PATH_SUFFIXES.  This is
simpler and more robust than directly reading ENV{ProgramFiles}.  Once
Boost_INCLUDE_DIR has been located we already look next to it for the lib
directory anyway, so we do not need special help to find Boost libraries
under "Program Files".
2012-09-27 11:01:11 -04:00
Brad King d3260a46be FindBoost: Mark Boost_DIR cache entry as advanced 2012-09-26 11:10:17 -04:00
Brad King 531612d370 FindBoost: Remove extra indentation level
A large portion of the file was still indented for historical reasons.
2012-09-25 17:11:20 -04:00
Rolf Eike Beer 4be6783711 read less from version headers into variables
Instead of reading the whole file using file(READ) and later matching on the
whole file use file(STRINGS ... REGEX) to get only those lines we are
interested in at all. This will make the list much smaller (good for debugging)
and also the regular expressions will need to match on much smaller strings.

Also unset the content variables once they are not used anymore.
2012-08-19 13:54:56 +02:00
Kitware Robot 9db3116226 Remove CMake-language block-end command arguments
Ancient versions of CMake required else(), endif(), and similar block
termination commands to have arguments matching the command starting the
block.  This is no longer the preferred style.

Run the following shell code:

for c in else endif endforeach endfunction endmacro endwhile; do
    echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
egrep -z -v 'Tests/CMakeTests/While-Endwhile-' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Kitware Robot 77543bde41 Convert CMake-language commands to lower case
Ancient CMake versions required upper-case commands.  Later command
names became case-insensitive.  Now the preferred style is lower-case.

Run the following shell code:

cmake --help-command-list |
grep -v "cmake version" |
while read c; do
    echo 's/\b'"$(echo $c | tr '[:lower:]' '[:upper:]')"'\(\s*\)(/'"$c"'\1(/g'
done >convert.sed &&
git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' |
egrep -z -v '^(Utilities/cm|Source/kwsys/)' |
xargs -0 sed -i -f convert.sed &&
rm convert.sed
2012-08-13 14:19:16 -04:00
Philip Lowman ca90709fd6 FindBoost: Future proof to 1.56 2012-06-30 03:40:37 -04:00