From c9adb54634e46dcd6d4e016c095d85b466449177 Mon Sep 17 00:00:00 2001 From: Benoit Sigoure Date: Thu, 1 Nov 2007 19:34:46 +0100 Subject: [PATCH] Add a README. * README: New. * build-aux/boost.m4: Advertise the Git repository. Signed-off-by: Benoit Sigoure --- ChangeLog | 6 +++ README | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++ build-aux/boost.m4 | 1 + 3 files changed, 142 insertions(+) create mode 100644 README diff --git a/ChangeLog b/ChangeLog index 0d0b5cd..a7a1b16 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2007-11-01 Benoit Sigoure + Add a README. + * README: New. + * build-aux/boost.m4: Advertise the Git repository. + +2007-11-01 Benoit Sigoure + Fix the detection of the toolset name for GCC. * build-aux/boost.m4 (_BOOST_gcc_test): New internal helper. (_BOOST_FIND_COMPILER_TAG): Use _BOOST_gcc_test to take into account diff --git a/README b/README new file mode 100644 index 0000000..c237dfc --- /dev/null +++ b/README @@ -0,0 +1,135 @@ + ,-------------------------------------------------. + | ____ _ _ _ | + | | __ ) ___ ___ ___| |_ _ __ ___ | || | | + | | _ \ / _ \ / _ \/ __| __| | '_ ` _ \| || |_ | + | | |_) | (_) | (_) \__ \ |_ _| | | | | |__ _| | + | |____/ \___/ \___/|___/\__(_)_| |_| |_| |_| | + | | + `-------------------------------------------------' + +This package provides a set of M4 macros to use with Autoconf. The purpose +of these macros is to be able to easily find and test the various Boost +libraries of a given version for a given compiler. + +HOWTO +----- + +1. If you have an invocation of AC_CONFIG_AUX_DIR in your configure.ac, then + copy build-aux/boost.m4 in the directory specified by AC_CONFIG_AUX_DIR. + Otherwise, copy the file at the root of your project. +2. In your top-level Makefile.am (this supposes that you use automake, which + you most likely do) add: + ACLOCAL_AMFLAGS = -I + where `' is the (relative) path to the directory where you copied + boost.m4 (set it to `.' if you put boost.m4 in the same, top-level + directory). +3. Add a call to BOOST_REQUIRE to your configure.ac as well as other calls to + the various BOOST_* macros that check for the libraries you need. +4. Adjust your Makefile.am where you build targets that depend on Boost so + that they use $(BOOST_CPPFLAGS), $(BOOST_*_LDFLAGS) and $(BOOST_*_LIBS) + where appropriate (where `*' is the capitalized name of one of the + libraries you checked for, e.g.: $(BOOST_THREADS_LDFLAGS)). E.g.: + bin_PROGRAMS = foo + foo_SOURCES = foo.cc + foo_CPPFLAGS = $(BOOST_CPPFLAGS) + foo_LDFLAGS = $(BOOST_THREAD_LDFLAGS) + foo_LIBS = $(BOOST_THREAD_LIBS) + Or if you have more than one target in the same Makefile.am and your + targets don't have per-target specific flags (such as foo_LIBS) and you + want all your targets to use the same set of Boost libraries, you can do + the following instead: + bin_PROGRAMS = foo bar + foo_SOURCES = foo.cc + bar_SOURCES = bar.cc + AM_CPPFLAGS = $(BOOST_CPPFLAGS) + AM_LDFLAGS = $(BOOST_THREADS_LDFLAGS) + LIBS = $(BOOST_THREAD_LIBS) + Remember that for targets that are programs, you must use LIBS or + progname_LIBS, but for libraries you must use LDADD or libname_LDADD. + +MACROS +------ +This section documents the various macros provided by boost.m4. + + BOOST_REQUIRE([VERSION]) + ~~~~~~~~~~~~~~~~~~~~~~~~ +The first, most important macro, is BOOST_REQUIRE. You should invoke it +before other BOOST_* macros if you want to check that Boost has a minimum +given version. + +Here are some examples: + # Do not require any specific minimum version + BOOST_REQUIRE + # Require at least 1.34.1 + BOOST_REQUIRE([1.34.1]) + # Require a version number known at runtime + BOOST_REQUIRE([$some_shell_variable]) + +This macro defines the Make symbol BOOST_CPPFLAGS. + + +There are various predefined macros to check for common Boost libraries. +They are ordered in two categories: the Boost libraries that are only made of +headers, and the Boost libraries that (may) require linking to an installed +library. + + Header-only Boost libraries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For each of the Boost libraries that are only made of headers, the macro to +invoke is BOOST_ where is the capitalized name of the +library. Here is the list of libraries for which checks have been +implemented: + - Conversion + - Foreach + - Format + - Utility + - Variant +Thus you can invoke BOOST_FOREACH (for instance). It will check that + works and define the preprocessor symbol +HAVE_BOOST_FOREACH_HPP. For each of the libraries mentioned above, a couple +of headers are checked (the most important ones) and preprocessor symbols are +defined in an identical fashion. +If the check fails, configure with abort with a fatal error. + + Boost libraries requiring linking + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +For the other Boost libraries that (may) requiring linking to an installed +library (shared or not), the macro to invoke is BOOST_ (surprise!) +but this time the macro can take an optional argument to specify the runtime +options you'd like to have. Most of the time, Boost libraries are compiled +in several flavors, such as with or without debug, with a multi-thread +runtime or not, etc. The macro will try to find a library that match your +requirements but may fall back to another flavor of the library if the one you +asked for isn't available. +The following libraries are supported: + - Filesystem + - Graph + - Threads +Thus you can invoke BOOST_GRAPH (for instance) or BOOST_THREADS([mt-d]). +The optional argument is made of one or more of the following letters: + sgdpn (in that order) +where: + s = static runtime + d = debug build + g = debug/diagnostic runtime + p = STLPort build + n = (unsure) STLPort build without iostreams from STLPort + (it looks like `n' must always be used along with `p'). +Additionally, it can start with `mt-' to indicate that there is a preference +for multi-thread builds. + +If the check is successful, at least one header has been checked and the +corresponding preprocessor symbol HAVE_BOOST_*_HPP is defined, along with the +compilation flags BOOST__LDFLAGS and BOOST__LIBS. + + Writing your own checks / supporting more Boost libraries + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +All the pre-existing library checks are written with help of +BOOST_FIND_HEADER and BOOST_FIND_LIB. These two macros are very easy to use +and are documented in boost.m4. Reading their documentation and reading the +existing library checks should help you to easily write your own additional +checks. Please contribute them to me by email to . + +You can checkout the Git source tree of this package at +http://repo.or.cz/w/boost.m4.git +Patches welcome. diff --git a/build-aux/boost.m4 b/build-aux/boost.m4 index 756f4f0..719c245 100644 --- a/build-aux/boost.m4 +++ b/build-aux/boost.m4 @@ -15,6 +15,7 @@ # along with this program. If not, see . # serial 1 +# Original sources can be found at http://repo.or.cz/w/boost.m4.git # ------ # # README # -- 2.11.4.GIT