From 782277e90f714d716914a1369b918435414024dd Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Thu, 11 Jun 2015 17:21:03 +0000 Subject: main/libcmis: rebuild with gcc5 --- main/libcmis/APKBUILD | 18 +- main/libcmis/libcmis-0.5.0-gcc5.patch | 1266 +++++++++++++++++++++++++++++++++ 2 files changed, 1278 insertions(+), 6 deletions(-) create mode 100644 main/libcmis/libcmis-0.5.0-gcc5.patch (limited to 'main/libcmis') diff --git a/main/libcmis/APKBUILD b/main/libcmis/APKBUILD index 91dce3909..fc3d997ae 100644 --- a/main/libcmis/APKBUILD +++ b/main/libcmis/APKBUILD @@ -2,17 +2,19 @@ # Maintainer: Timo Teräs pkgname=libcmis pkgver=0.5.0 -pkgrel=1 +pkgrel=2 pkgdesc="CMIS protocol client library" url="http://sourceforge.net/projects/libcmis/" arch="all" license="MPL1.1+ GPLv2+ LGPLv2+" depends="" depends_dev="curl-dev libxml2-dev cppunit-dev boost-dev" -makedepends="$depends_dev" +makedepends="$depends_dev autoconf automake libtool" install="" subpackages="$pkgname-dev $pkgname-doc cmis-client:client" -source="http://downloads.sourceforge.net/project/libcmis/libcmis-$pkgver.tar.gz" +source="http://downloads.sourceforge.net/project/libcmis/libcmis-$pkgver.tar.gz + libcmis-0.5.0-gcc5.patch + " _builddir="$srcdir"/libcmis-$pkgver prepare() { @@ -23,6 +25,7 @@ prepare() { *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;; esac done + autoreconf -vif || return 1 } build() { @@ -51,6 +54,9 @@ client() { mv "$pkgdir"/usr/bin "$subpkgdir"/usr } -md5sums="5821b806a98e6c38370970e682ce76e8 libcmis-0.5.0.tar.gz" -sha256sums="a87e02913dee3ee659db5abf6d7dafcfcd85dd4b24bf4389d8d4afe8c8dcf9b6 libcmis-0.5.0.tar.gz" -sha512sums="abfdf5654ef8763c9744587ba831acea93cc0ba7deaa8d807eed2e9077be848db0334430f7c2d6eecefeb90f520abbe81364a86790c0aa4363724816aec4793b libcmis-0.5.0.tar.gz" +md5sums="5821b806a98e6c38370970e682ce76e8 libcmis-0.5.0.tar.gz +0f5ea344775175e535c74161f6232bf8 libcmis-0.5.0-gcc5.patch" +sha256sums="a87e02913dee3ee659db5abf6d7dafcfcd85dd4b24bf4389d8d4afe8c8dcf9b6 libcmis-0.5.0.tar.gz +c90c3c2a1511e6b8fa123241fc1bafcb91011b558ede175caf1095708769d87e libcmis-0.5.0-gcc5.patch" +sha512sums="abfdf5654ef8763c9744587ba831acea93cc0ba7deaa8d807eed2e9077be848db0334430f7c2d6eecefeb90f520abbe81364a86790c0aa4363724816aec4793b libcmis-0.5.0.tar.gz +27c9d7f251cc17669c6ce8e46f50555946997532fbe85ed92a73940d70d3bb6348807ab1a844749590ecb80b2743913e2a4a4ba82351f8061ba8f29495a59d1e libcmis-0.5.0-gcc5.patch" diff --git a/main/libcmis/libcmis-0.5.0-gcc5.patch b/main/libcmis/libcmis-0.5.0-gcc5.patch new file mode 100644 index 000000000..ef3815455 --- /dev/null +++ b/main/libcmis/libcmis-0.5.0-gcc5.patch @@ -0,0 +1,1266 @@ +From 645df9a0885931001e0a7afaf56de39cd33f9119 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Thu, 12 Feb 2015 15:13:28 +0100 +Subject: [PATCH] fix boost configuration with gcc 5 + +--- + configure.ac | 1 + + m4/boost.m4 | 705 +++++++++++++++++++++++++++++++++++++++++++++-------------- + 2 files changed, 547 insertions(+), 159 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 5e7b535..8e12cf3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -164,6 +164,7 @@ AS_IF([test "x$enable_tests" != "xno"], [ + # Check for boost + m4_pattern_allow([^BOOST_]) + ++BOOST_REQUIRE([1.36]) + BOOST_DATE_TIME + BOOST_SMART_PTR + BOOST_UUID +diff --git a/m4/boost.m4 b/m4/boost.m4 +index c459735..a4c366a 100644 +--- a/m4/boost.m4 ++++ b/m4/boost.m4 +@@ -1,5 +1,5 @@ + # boost.m4: Locate Boost headers and libraries for autoconf-based projects. +-# Copyright (C) 2007, 2008, 2009 Benoit Sigoure ++# Copyright (C) 2007-2011, 2014 Benoit Sigoure + # + # This program is free software: you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -22,7 +22,7 @@ + # along with this program. If not, see . + + m4_define([_BOOST_SERIAL], [m4_translit([ +-# serial 12 ++# serial 24 + ], [# + ], [])]) + +@@ -45,17 +45,22 @@ m4_define([_BOOST_SERIAL], [m4_translit([ + # Note: THESE MACROS ASSUME THAT YOU USE LIBTOOL. If you don't, don't worry, + # simply read the README, it will show you what to do step by step. + +-m4_pattern_forbid([^_?BOOST_]) ++m4_pattern_forbid([^_?(BOOST|Boost)_]) + + + # _BOOST_SED_CPP(SED-PROGRAM, PROGRAM, + # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) + # -------------------------------------------------------- + # Same as AC_EGREP_CPP, but leave the result in conftest.i. +-# PATTERN is *not* overquoted, as in AC_EGREP_CPP. It could be useful +-# to turn this into a macro which extracts the value of any macro. ++# ++# SED-PROGRAM is *not* overquoted, as in AC_EGREP_CPP. It is expanded ++# in double-quotes, so escape your double quotes. ++# ++# It could be useful to turn this into a macro which extracts the ++# value of any macro. + m4_define([_BOOST_SED_CPP], +-[AC_LANG_PREPROC_REQUIRE()dnl ++[AC_LANG_PUSH([C++])dnl ++AC_LANG_PREPROC_REQUIRE()dnl + AC_REQUIRE([AC_PROG_SED])dnl + AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) + AS_IF([dnl eval is necessary to expand ac_cpp. +@@ -67,13 +72,31 @@ dnl strip `\n' with backquotes, not the `\r'. This results in + dnl boost_cv_lib_version='1_37\r' for instance, which breaks + dnl everything else. + dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK ++dnl ++dnl Beware that GCC 5, when expanding macros, may embed # line directives ++dnl a within single line: ++dnl ++dnl # 1 "conftest.cc" ++dnl # 1 "" ++dnl # 1 "" ++dnl # 1 "conftest.cc" ++dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 ++dnl # 2 "conftest.cc" 2 ++dnl boost-lib-version = ++dnl # 2 "conftest.cc" 3 ++dnl "1_56" ++dnl ++dnl So get rid of the # lines, and glue the remaining ones together. + (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | ++ grep -v '#' | + tr -d '\r' | ++ tr -s '\n' ' ' | + $SED -n -e "$1" >conftest.i 2>&1], + [$3], + [$4]) + rm -rf conftest* +-])# AC_EGREP_CPP ++AC_LANG_POP([C++])dnl ++])# _BOOST_SED_CPP + + + +@@ -98,6 +121,7 @@ set x $boost_version_req 0 0 0 + IFS=$boost_save_IFS + shift + boost_version_req=`expr "$[1]" '*' 100000 + "$[2]" '*' 100 + "$[3]"` ++boost_version_req_string=$[1].$[2].$[3] + AC_ARG_WITH([boost], + [AS_HELP_STRING([--with-boost=DIR], + [prefix of Boost $1 @<:@guess@:>@])])dnl +@@ -113,9 +137,9 @@ if test x"$BOOST_ROOT" != x; then + fi + fi + AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], +- ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"]) ++ ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"])dnl + boost_save_CPPFLAGS=$CPPFLAGS +- AC_CACHE_CHECK([for Boost headers version >= $boost_version_req], ++ AC_CACHE_CHECK([for Boost headers version >= $boost_version_req_string], + [boost_cv_inc_path], + [boost_cv_inc_path=no + AC_LANG_PUSH([C++])dnl +@@ -183,7 +207,7 @@ AC_LANG_POP([C++])dnl + ]) + case $boost_cv_inc_path in #( + no) +- boost_errmsg="cannot find Boost headers version >= $boost_version_req" ++ boost_errmsg="cannot find Boost headers version >= $boost_version_req_string" + m4_if([$2], [], [AC_MSG_ERROR([$boost_errmsg])], + [AC_MSG_NOTICE([$boost_errmsg])]) + $2 +@@ -192,7 +216,7 @@ AC_LANG_POP([C++])dnl + BOOST_CPPFLAGS= + ;;#( + *) +- AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"]) ++ AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"])dnl + ;; + esac + if test x"$boost_cv_inc_path" != xno; then +@@ -201,7 +225,7 @@ AC_LANG_POP([C++])dnl + AC_CACHE_CHECK([for Boost's header version], + [boost_cv_lib_version], + [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl +- _BOOST_SED_CPP([/^boost-lib-version = /{s///;s/\"//g;p;g;}], ++ _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], + [#include + boost-lib-version = BOOST_LIB_VERSION], + [boost_cv_lib_version=`cat conftest.i`])]) +@@ -209,24 +233,26 @@ boost-lib-version = BOOST_LIB_VERSION], + boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` + case $boost_major_version in #( + '' | *[[!0-9]]*) +- AC_MSG_ERROR([invalid value: boost_major_version=$boost_major_version]) ++ AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) + ;; + esac + fi + CPPFLAGS=$boost_save_CPPFLAGS + ])# BOOST_REQUIRE + ++ + # BOOST_STATIC() + # -------------- + # Add the "--enable-static-boost" configure argument. If this argument is given + # on the command line, static versions of the libraries will be looked up. + AC_DEFUN([BOOST_STATIC], + [AC_ARG_ENABLE([static-boost], +- [AC_HELP_STRING([--enable-static-boost], ++ [AS_HELP_STRING([--enable-static-boost], + [Prefer the static boost libraries over the shared ones [no]])], + [enable_static_boost=yes], + [enable_static_boost=no])])# BOOST_STATIC + ++ + # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) + # -------------------------------------------------------------------------- + # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for +@@ -259,14 +285,16 @@ fi + ])# BOOST_FIND_HEADER + + +-# BOOST_FIND_LIB([LIB-NAME], [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], +-# [CXX-PROLOGUE]) +-# ------------------------------------------------------------------------- +-# Look for the Boost library LIB-NAME (e.g., LIB-NAME = `thread', for +-# libboost_thread). Check that HEADER-NAME works and check that +-# libboost_LIB-NAME can link with the code CXX-TEST. The optional argument +-# CXX-PROLOGUE can be used to include some C++ code before the `main' +-# function. ++# BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Look for the Boost library COMPONENT-NAME (e.g., `thread', for ++# libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., ++# "thread_win32 thread"). Check that HEADER-NAME works and check that ++# libboost_LIB-NAME can link with the code CXX-TEST. The optional ++# argument CXX-PROLOGUE can be used to include some C++ code before ++# the `main' function. + # + # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). + # +@@ -280,7 +308,7 @@ fi + # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp + # ... If you want to make sure you have a specific version of Boost + # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. +-AC_DEFUN([BOOST_FIND_LIB], ++AC_DEFUN([BOOST_FIND_LIBS], + [AC_REQUIRE([BOOST_REQUIRE])dnl + AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl + AC_REQUIRE([BOOST_STATIC])dnl +@@ -292,33 +320,71 @@ dnl The else branch is huge and wasn't intended on purpose. + AC_LANG_PUSH([C++])dnl + AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl + AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl ++AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl + AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl +-BOOST_FIND_HEADER([$3]) ++BOOST_FIND_HEADER([$4]) + boost_save_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" +-# Now let's try to find the library. The algorithm is as follows: first look +-# for a given library name according to the user's PREFERRED-RT-OPT. For each +-# library name, we prefer to use the ones that carry the tag (toolset name). +-# Each library is searched through the various standard paths were Boost is +-# usually installed. If we can't find the standard variants, we try to +-# enforce -mt (for instance on MacOSX, libboost_threads.dylib doesn't exist +-# but there's -obviously- libboost_threads-mt.dylib). + AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], +- [Boost_lib=no +- case "$2" in #( +- mt | mt-) boost_mt=-mt; boost_rtopt=;; #( +- mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$2" : 'Xmt-*\(.*\)'`;; #( +- *) boost_mt=; boost_rtopt=$2;; ++ [_BOOST_FIND_LIBS($@)]) ++case $Boost_lib in #( ++ (no) _AC_MSG_LOG_CONFTEST ++ AC_MSG_ERROR([cannot find the flags to link with Boost $1]) ++ ;; ++esac ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl ++AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl ++AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl ++CPPFLAGS=$boost_save_CPPFLAGS ++AS_VAR_POPDEF([Boost_lib])dnl ++AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl ++AS_VAR_POPDEF([Boost_lib_LDPATH])dnl ++AS_VAR_POPDEF([Boost_lib_LIBS])dnl ++AC_LANG_POP([C++])dnl ++fi ++]) ++ ++ ++# BOOST_FIND_LIB([LIB-NAME], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Backward compatibility wrapper for BOOST_FIND_LIBS. ++AC_DEFUN([BOOST_FIND_LIB], ++[BOOST_FIND_LIBS([$1], $@)]) ++ ++ ++# _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], ++# [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], ++# [CXX-PROLOGUE]) ++# -------------------------------------------------------------- ++# Real implementation of BOOST_FIND_LIBS: rely on these local macros: ++# Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS ++# ++# The algorithm is as follows: first look for a given library name ++# according to the user's PREFERRED-RT-OPT. For each library name, we ++# prefer to use the ones that carry the tag (toolset name). Each ++# library is searched through the various standard paths were Boost is ++# usually installed. If we can't find the standard variants, we try ++# to enforce -mt (for instance on MacOSX, libboost_thread.dylib ++# doesn't exist but there's -obviously- libboost_thread-mt.dylib). ++AC_DEFUN([_BOOST_FIND_LIBS], ++[Boost_lib=no ++ case "$3" in #( ++ (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( ++ (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( ++ (*) boost_mt=; boost_rtopt=$3;; + esac + if test $enable_static_boost = yes; then + boost_rtopt="s$boost_rtopt" + fi + # Find the proper debug variant depending on what we've been asked to find. + case $boost_rtopt in #( +- *d*) boost_rt_d=$boost_rtopt;; #( +- *[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') ++ (*d*) boost_rt_d=$boost_rtopt;; #( ++ (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') + boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( +- *) boost_rt_d='-d';; ++ (*) boost_rt_d='-d';; + esac + # If the PREFERRED-RT-OPT are not empty, prepend a `-'. + test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" +@@ -329,8 +395,8 @@ AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], + AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) + boost_save_ac_objext=$ac_objext + # Generate the test file. +- AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$3> +-$5], [$4])]) ++ AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$4> ++$6], [$5])]) + dnl Optimization hacks: compiling C++ is slow, especially with Boost. What + dnl we're trying to do here is guess the right combination of link flags + dnl (LIBS / LDFLAGS) to use a given library. This can take several +@@ -352,38 +418,42 @@ dnl start the for loops). + [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) + ac_objext=$boost_save_ac_objext + boost_failed_libs= +-# Don't bother to ident the 6 nested for loops, only the 2 innermost ones +-# matter. ++# Don't bother to ident the following nested for loops, only the 2 ++# innermost ones matter. ++for boost_lib_ in $2; do + for boost_tag_ in -$boost_cv_lib_tag ''; do + for boost_ver_ in -$boost_cv_lib_version ''; do + for boost_mt_ in $boost_mt -mt ''; do + for boost_rtopt_ in $boost_rtopt '' -d; do + for boost_lib in \ +- boost_$1$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_rtopt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_mt_$boost_ver_ \ +- boost_$1$boost_tag_$boost_ver_ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ ++ boost_$boost_lib_$boost_tag_$boost_ver_ + do + # Avoid testing twice the same lib + case $boost_failed_libs in #( +- *@$boost_lib@*) continue;; ++ (*@$boost_lib@*) continue;; + esac + # If with_boost is empty, we'll search in /lib first, which is not quite + # right so instead we'll try to a location based on where the headers are. + boost_tmp_lib=$with_boost + test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} + for boost_ldpath in "$boost_tmp_lib/lib" '' \ +- /opt/local/lib /usr/local/lib /opt/lib /usr/lib \ +- "$with_boost" C:/Boost/lib /lib /usr/lib64 /lib64 ++ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ ++ "$with_boost" C:/Boost/lib /lib* + do +- test -e "$boost_ldpath" || continue ++ # Don't waste time with directories that don't exist. ++ if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then ++ continue ++ fi + boost_save_LDFLAGS=$LDFLAGS + # Are we looking for a static library? + case $boost_ldpath:$boost_rtopt_ in #( +- *?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) ++ (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) + Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" + test -e "$Boost_lib_LIBS" || continue;; #( +- *) # No: use -lboost_foo to find the shared library. ++ (*) # No: use -lboost_foo to find the shared library. + Boost_lib_LIBS="-l$boost_lib";; + esac + boost_save_LIBS=$LIBS +@@ -397,8 +467,35 @@ dnl generated only once above (before we start the for loops). + LDFLAGS=$boost_save_LDFLAGS + LIBS=$boost_save_LIBS + if test x"$Boost_lib" = xyes; then +- Boost_lib_LDFLAGS="-L$boost_ldpath -R$boost_ldpath" +- break 6 ++ # Check or used cached result of whether or not using -R or ++ # -rpath makes sense. Some implementations of ld, such as for ++ # Mac OSX, require -rpath but -R is the flag known to work on ++ # other systems. https://github.com/tsuna/boost.m4/issues/19 ++ AC_CACHE_VAL([boost_cv_rpath_link_ldflag], ++ [case $boost_ldpath in ++ '') # Nothing to do. ++ boost_cv_rpath_link_ldflag= ++ boost_rpath_link_ldflag_found=yes;; ++ *) ++ for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do ++ LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" ++ LIBS="$boost_save_LIBS $Boost_lib_LIBS" ++ _BOOST_AC_LINK_IFELSE([], ++ [boost_rpath_link_ldflag_found=yes ++ break], ++ [boost_rpath_link_ldflag_found=no]) ++ done ++ ;; ++ esac ++ AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], ++ [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) ++ LDFLAGS=$boost_save_LDFLAGS ++ LIBS=$boost_save_LIBS ++ ]) ++ test x"$boost_ldpath" != x && ++ Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" ++ Boost_lib_LDPATH="$boost_ldpath" ++ break 7 + else + boost_failed_libs="$boost_failed_libs@$boost_lib@" + fi +@@ -408,22 +505,10 @@ done + done + done + done ++done # boost_lib_ + rm -f conftest.$ac_objext + ]) +-case $Boost_lib in #( +- no) _AC_MSG_LOG_CONFTEST +- AC_MSG_ERROR([cannot not find the flags to link with Boost $1]) +- ;; +-esac +-AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS]) +-AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS]) +-CPPFLAGS=$boost_save_CPPFLAGS +-AS_VAR_POPDEF([Boost_lib])dnl +-AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl +-AS_VAR_POPDEF([Boost_lib_LIBS])dnl +-AC_LANG_POP([C++])dnl +-fi +-])# BOOST_FIND_LIB ++ + + + # --------------------------------------- # +@@ -434,42 +519,155 @@ fi + # The page http://beta.boost.org/doc/libs is useful: it gives the first release + # version of each library (among other things). + ++# BOOST_DEFUN(LIBRARY, CODE) ++# -------------------------- ++# Define BOOST_ as a macro that runs CODE. ++# ++# Use indir to avoid the warning on underquoted macro name given to AC_DEFUN. ++m4_define([BOOST_DEFUN], ++[m4_indir([AC_DEFUN], ++ m4_toupper([BOOST_$1]), ++[m4_pushdef([BOOST_Library], [$1])dnl ++$2 ++m4_popdef([BOOST_Library])dnl ++]) ++]) ++ + # BOOST_ARRAY() + # ------------- + # Look for Boost.Array +-AC_DEFUN([BOOST_ARRAY], ++BOOST_DEFUN([Array], + [BOOST_FIND_HEADER([boost/array.hpp])]) + + + # BOOST_ASIO() + # ------------ + # Look for Boost.Asio (new in Boost 1.35). +-AC_DEFUN([BOOST_ASIO], ++BOOST_DEFUN([Asio], + [AC_REQUIRE([BOOST_SYSTEM])dnl + BOOST_FIND_HEADER([boost/asio.hpp])]) + + + # BOOST_BIND() + # ------------ +-# Look for Boost.Bind +-AC_DEFUN([BOOST_BIND], ++# Look for Boost.Bind. ++BOOST_DEFUN([Bind], + [BOOST_FIND_HEADER([boost/bind.hpp])]) + + ++# BOOST_CHRONO() ++# -------------- ++# Look for Boost.Chrono. ++BOOST_DEFUN([Chrono], ++[# Do we have to check for Boost.System? This link-time dependency was ++# added as of 1.35.0. If we have a version <1.35, we must not attempt to ++# find Boost.System as it didn't exist by then. ++if test $boost_major_version -ge 135; then ++ BOOST_SYSTEM([$1]) ++fi # end of the Boost.System check. ++boost_filesystem_save_LIBS=$LIBS ++boost_filesystem_save_LDFLAGS=$LDFLAGS ++m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++BOOST_FIND_LIB([chrono], [$1], ++ [boost/chrono.hpp], ++ [boost::chrono::thread_clock d;]) ++if test $enable_static_boost = yes && test $boost_major_version -ge 135; then ++ BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" ++fi ++LIBS=$boost_filesystem_save_LIBS ++LDFLAGS=$boost_filesystem_save_LDFLAGS ++])# BOOST_CHRONO ++ ++ ++# BOOST_CONTEXT([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.51.0 ++BOOST_DEFUN([Context], ++[BOOST_FIND_LIB([context], [$1], ++ [boost/context/all.hpp],[[ ++// creates a stack ++void * stack_pointer = new void*[4096]; ++std::size_t const size = sizeof(void*[4096]); ++ ++// context fc uses f() as context function ++// fcontext_t is placed on top of context stack ++// a pointer to fcontext_t is returned ++fc = ctx::make_fcontext(stack_pointer, size, f); ++return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl ++namespace ctx = boost::context; ++// context ++static ctx::fcontext_t fcm, *fc; ++// context-function ++static void f(intptr_t i) { ++ ctx::jump_fcontext(fc, &fcm, i * 2); ++}]) ++])# BOOST_CONTEXT ++ ++ + # BOOST_CONVERSION() + # ------------------ + # Look for Boost.Conversion (cast / lexical_cast) +-AC_DEFUN([BOOST_CONVERSION], ++BOOST_DEFUN([Conversion], + [BOOST_FIND_HEADER([boost/cast.hpp]) + BOOST_FIND_HEADER([boost/lexical_cast.hpp]) + ])# BOOST_CONVERSION + + ++# BOOST_COROUTINE([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. This library was introduced in Boost ++# 1.53.0 ++BOOST_DEFUN([Coroutine], ++[ ++boost_coroutine_save_LIBS=$LIBS ++boost_coroutine_save_LDFLAGS=$LDFLAGS ++# Link-time dependency from coroutine to context ++BOOST_CONTEXT([$1]) ++# Starting from Boost 1.55 a dependency on Boost.System is added ++if test $boost_major_version -ge 155; then ++ BOOST_SYSTEM([$1]) ++fi ++m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) ++LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" ++LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++ ++BOOST_FIND_LIB([coroutine], [$1], ++ [boost/coroutine/coroutine.hpp], ++ [boost::coroutines::coroutine< int(int) > coro; coro.empty();]) ++ ++# Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 ++# coroutine doesn't use context from its headers but from its library. ++if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" ++fi ++if test $enable_static_boost = yes && test $boost_major_version -ge 155; then ++ BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" ++ BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" ++fi ++LIBS=$boost_coroutine_save_LIBS ++LDFLAGS=$boost_coroutine_save_LDFLAGS ++])# BOOST_COROUTINE ++ ++ ++# BOOST_CRC() ++# ----------- ++# Look for Boost.CRC ++BOOST_DEFUN([CRC], ++[BOOST_FIND_HEADER([boost/crc.hpp]) ++])# BOOST_CRC ++ ++ + # BOOST_DATE_TIME([PREFERRED-RT-OPT]) + # ----------------------------------- + # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_DATE_TIME], ++BOOST_DEFUN([Date_Time], + [BOOST_FIND_LIB([date_time], [$1], + [boost/date_time/posix_time/posix_time.hpp], + [boost::posix_time::ptime t;]) +@@ -482,12 +680,12 @@ AC_DEFUN([BOOST_DATE_TIME], + # the documentation of BOOST_FIND_LIB above. + # Do not check for boost/filesystem.hpp because this file was introduced in + # 1.34. +-AC_DEFUN([BOOST_FILESYSTEM], ++BOOST_DEFUN([Filesystem], + [# Do we have to check for Boost.System? This link-time dependency was + # added as of 1.35.0. If we have a version <1.35, we must not attempt to + # find Boost.System as it didn't exist by then. + if test $boost_major_version -ge 135; then +-BOOST_SYSTEM([$1]) ++ BOOST_SYSTEM([$1]) + fi # end of the Boost.System check. + boost_filesystem_save_LIBS=$LIBS + boost_filesystem_save_LDFLAGS=$LDFLAGS +@@ -496,71 +694,125 @@ LIBS="$LIBS $BOOST_SYSTEM_LIBS" + LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + BOOST_FIND_LIB([filesystem], [$1], + [boost/filesystem/path.hpp], [boost::filesystem::path p;]) ++if test $enable_static_boost = yes && test $boost_major_version -ge 135; then ++ BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" ++fi + LIBS=$boost_filesystem_save_LIBS + LDFLAGS=$boost_filesystem_save_LDFLAGS + ])# BOOST_FILESYSTEM + + ++# BOOST_FLYWEIGHT() ++# ----------------- ++# Look for Boost.Flyweight. ++BOOST_DEFUN([Flyweight], ++[dnl There's a hidden dependency on pthreads. ++AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl ++BOOST_FIND_HEADER([boost/flyweight.hpp]) ++AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ++]) ++ ++ + # BOOST_FOREACH() + # --------------- +-# Look for Boost.Foreach +-AC_DEFUN([BOOST_FOREACH], ++# Look for Boost.Foreach. ++BOOST_DEFUN([Foreach], + [BOOST_FIND_HEADER([boost/foreach.hpp])]) + + + # BOOST_FORMAT() + # -------------- +-# Look for Boost.Format ++# Look for Boost.Format. + # Note: we can't check for boost/format/format_fwd.hpp because the header isn't + # standalone. It can't be compiled because it triggers the following error: + # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' + # does not name a type +-AC_DEFUN([BOOST_FORMAT], ++BOOST_DEFUN([Format], + [BOOST_FIND_HEADER([boost/format.hpp])]) + + + # BOOST_FUNCTION() + # ---------------- + # Look for Boost.Function +-AC_DEFUN([BOOST_FUNCTION], ++BOOST_DEFUN([Function], + [BOOST_FIND_HEADER([boost/function.hpp])]) + + ++# BOOST_GEOMETRY() ++# ---------------- ++# Look for Boost.Geometry (new since 1.47.0). ++BOOST_DEFUN([Geometry], ++[BOOST_FIND_HEADER([boost/geometry.hpp]) ++])# BOOST_GEOMETRY ++ ++ + # BOOST_GRAPH([PREFERRED-RT-OPT]) + # ------------------------------- + # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_GRAPH], ++BOOST_DEFUN([Graph], + [BOOST_FIND_LIB([graph], [$1], + [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;]) + ])# BOOST_GRAPH + + + # BOOST_IOSTREAMS([PREFERRED-RT-OPT]) +-# ------------------------------- ++# ----------------------------------- + # Look for Boost.IOStreams. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_IOSTREAMS], ++BOOST_DEFUN([IOStreams], + [BOOST_FIND_LIB([iostreams], [$1], + [boost/iostreams/device/file_descriptor.hpp], +- [boost::iostreams::file_descriptor fd(0); fd.close();]) ++ [boost::iostreams::file_descriptor fd; fd.close();]) + ])# BOOST_IOSTREAMS + + + # BOOST_HASH() + # ------------ + # Look for Boost.Functional/Hash +-AC_DEFUN([BOOST_HASH], ++BOOST_DEFUN([Hash], + [BOOST_FIND_HEADER([boost/functional/hash.hpp])]) + + + # BOOST_LAMBDA() + # -------------- + # Look for Boost.Lambda +-AC_DEFUN([BOOST_LAMBDA], ++BOOST_DEFUN([Lambda], + [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) + + ++# BOOST_LOCALE() ++# -------------- ++# Look for Boost.Locale ++BOOST_DEFUN([Locale], ++[BOOST_FIND_LIB([locale], [$1], ++ [boost/locale.hpp], ++ [[boost::locale::generator gen; std::locale::global(gen(""));]]) ++])# BOOST_LOCALE ++ ++# BOOST_LOG([PREFERRED-RT-OPT]) ++# ----------------------------- ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Log], ++[BOOST_FIND_LIB([log], [$1], ++ [boost/log/core/core.hpp], ++ [boost::log::attribute a; a.get_value();]) ++])# BOOST_LOG ++ ++ ++# BOOST_LOG_SETUP([PREFERRED-RT-OPT]) ++# ----------------------------------- ++# Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Log_Setup], ++[AC_REQUIRE([BOOST_LOG])dnl ++BOOST_FIND_LIB([log_setup], [$1], ++ [boost/log/utility/setup/from_settings.hpp], ++ [boost::log::basic_settings bs; bs.empty();]) ++])# BOOST_LOG_SETUP ++ ++ + # BOOST_MATH() + # ------------ + # Look for Boost.Math +@@ -569,21 +821,52 @@ AC_DEFUN([BOOST_LAMBDA], + # libboost_math_c99f, libboost_math_c99l, libboost_math_tr1, + # libboost_math_tr1f, libboost_math_tr1l). This macro must be fixed to do the + # right thing anyway. +-AC_DEFUN([BOOST_MATH], ++BOOST_DEFUN([Math], + [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) + + ++# BOOST_MPI([PREFERRED-RT-OPT]) ++# ------------------------------- ++# Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the ++# documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is ++# set, otherwise tries CXX ++# ++BOOST_DEFUN([MPI], ++[boost_save_CXX=${CXX} ++boost_save_CXXCPP=${CXXCPP} ++if test x"${MPICXX}" != x; then ++ CXX=${MPICXX} ++ CXXCPP="${MPICXX} -E" ++fi ++BOOST_FIND_LIB([mpi], [$1], ++ [boost/mpi.hpp], ++ [int argc = 0; ++ char **argv = 0; ++ boost::mpi::environment env(argc,argv);]) ++CXX=${boost_save_CXX} ++CXXCPP=${boost_save_CXXCPP} ++])# BOOST_MPI ++ ++ + # BOOST_MULTIARRAY() + # ------------------ + # Look for Boost.MultiArray +-AC_DEFUN([BOOST_MULTIARRAY], ++BOOST_DEFUN([MultiArray], + [BOOST_FIND_HEADER([boost/multi_array.hpp])]) + + ++# BOOST_NUMERIC_UBLAS() ++# -------------------------- ++# Look for Boost.NumericUblas (Basic Linear Algebra) ++BOOST_DEFUN([Numeric_Ublas], ++[BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ++])# BOOST_NUMERIC_UBLAS ++ ++ + # BOOST_NUMERIC_CONVERSION() + # -------------------------- + # Look for Boost.NumericConversion (policy-based numeric conversion) +-AC_DEFUN([BOOST_NUMERIC_CONVERSION], ++BOOST_DEFUN([Numeric_Conversion], + [BOOST_FIND_HEADER([boost/numeric/conversion/converter.hpp]) + ])# BOOST_NUMERIC_CONVERSION + +@@ -591,32 +874,82 @@ AC_DEFUN([BOOST_NUMERIC_CONVERSION], + # BOOST_OPTIONAL() + # ---------------- + # Look for Boost.Optional +-AC_DEFUN([BOOST_OPTIONAL], ++BOOST_DEFUN([Optional], + [BOOST_FIND_HEADER([boost/optional.hpp])]) + + + # BOOST_PREPROCESSOR() + # -------------------- + # Look for Boost.Preprocessor +-AC_DEFUN([BOOST_PREPROCESSOR], ++BOOST_DEFUN([Preprocessor], + [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) + + ++# BOOST_RANGE() ++# -------------------- ++# Look for Boost.Range ++BOOST_DEFUN([Range], ++[BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) ++ ++# BOOST_UNORDERED() ++# ----------------- ++# Look for Boost.Unordered ++BOOST_DEFUN([Unordered], ++[BOOST_FIND_HEADER([boost/unordered_map.hpp])]) ++ ++ ++# BOOST_UUID() ++# ------------ ++# Look for Boost.Uuid ++BOOST_DEFUN([Uuid], ++[BOOST_FIND_HEADER([boost/uuid/uuid.hpp])]) ++ ++ + # BOOST_PROGRAM_OPTIONS([PREFERRED-RT-OPT]) + # ----------------------------------------- +-# Look for Boost.Program_options. For the documentation of PREFERRED-RT-OPT, see +-# the documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_PROGRAM_OPTIONS], ++# Look for Boost.Program_options. For the documentation of PREFERRED-RT-OPT, ++# see the documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Program_Options], + [BOOST_FIND_LIB([program_options], [$1], + [boost/program_options.hpp], + [boost::program_options::options_description d("test");]) + ])# BOOST_PROGRAM_OPTIONS + + ++ ++# _BOOST_PYTHON_CONFIG(VARIABLE, FLAG) ++# ------------------------------------ ++# Save VARIABLE, and define it via `python-config --FLAG`. ++# Substitute BOOST_PYTHON_VARIABLE. ++m4_define([_BOOST_PYTHON_CONFIG], ++[AC_SUBST([BOOST_PYTHON_$1], ++ [`python-config --$2 2>/dev/null`])dnl ++boost_python_save_$1=$$1 ++$1="$$1 $BOOST_PYTHON_$1"]) ++ ++ ++# BOOST_PYTHON([PREFERRED-RT-OPT]) ++# -------------------------------- ++# Look for Boost.Python. For the documentation of PREFERRED-RT-OPT, ++# see the documentation of BOOST_FIND_LIB above. ++BOOST_DEFUN([Python], ++[_BOOST_PYTHON_CONFIG([CPPFLAGS], [includes]) ++_BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) ++_BOOST_PYTHON_CONFIG([LIBS], [libs]) ++m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl ++BOOST_FIND_LIBS([python], [python python3], [$1], ++ [boost/python.hpp], ++ [], [BOOST_PYTHON_MODULE(empty) {}]) ++CPPFLAGS=$boost_python_save_CPPFLAGS ++LDFLAGS=$boost_python_save_LDFLAGS ++LIBS=$boost_python_save_LIBS ++])# BOOST_PYTHON ++ ++ + # BOOST_REF() + # ----------- + # Look for Boost.Ref +-AC_DEFUN([BOOST_REF], ++BOOST_DEFUN([Ref], + [BOOST_FIND_HEADER([boost/ref.hpp])]) + + +@@ -624,7 +957,7 @@ AC_DEFUN([BOOST_REF], + # ------------------------------- + # Look for Boost.Regex. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_REGEX], ++BOOST_DEFUN([Regex], + [BOOST_FIND_LIB([regex], [$1], + [boost/regex.hpp], + [boost::regex exp("*"); boost::regex_match("foo", exp);]) +@@ -635,29 +968,37 @@ AC_DEFUN([BOOST_REGEX], + # --------------------------------------- + # Look for Boost.Serialization. For the documentation of PREFERRED-RT-OPT, see + # the documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_SERIALIZATION], ++BOOST_DEFUN([Serialization], + [BOOST_FIND_LIB([serialization], [$1], + [boost/archive/text_oarchive.hpp], + [std::ostream* o = 0; // Cheap way to get an ostream... + boost::archive::text_oarchive t(*o);]) +-])# BOOST_SIGNALS ++])# BOOST_SERIALIZATION + + + # BOOST_SIGNALS([PREFERRED-RT-OPT]) + # --------------------------------- + # Look for Boost.Signals. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_SIGNALS], ++BOOST_DEFUN([Signals], + [BOOST_FIND_LIB([signals], [$1], + [boost/signal.hpp], + [boost::signal s;]) + ])# BOOST_SIGNALS + + ++# BOOST_SIGNALS2() ++# ---------------- ++# Look for Boost.Signals2 (new since 1.39.0). ++BOOST_DEFUN([Signals2], ++[BOOST_FIND_HEADER([boost/signals2.hpp]) ++])# BOOST_SIGNALS2 ++ ++ + # BOOST_SMART_PTR() + # ----------------- + # Look for Boost.SmartPtr +-AC_DEFUN([BOOST_SMART_PTR], ++BOOST_DEFUN([Smart_Ptr], + [BOOST_FIND_HEADER([boost/scoped_ptr.hpp]) + BOOST_FIND_HEADER([boost/shared_ptr.hpp]) + ]) +@@ -666,14 +1007,14 @@ BOOST_FIND_HEADER([boost/shared_ptr.hpp]) + # BOOST_STATICASSERT() + # -------------------- + # Look for Boost.StaticAssert +-AC_DEFUN([BOOST_STATICASSERT], ++BOOST_DEFUN([StaticAssert], + [BOOST_FIND_HEADER([boost/static_assert.hpp])]) + + + # BOOST_STRING_ALGO() + # ------------------- + # Look for Boost.StringAlgo +-AC_DEFUN([BOOST_STRING_ALGO], ++BOOST_DEFUN([String_Algo], + [BOOST_FIND_HEADER([boost/algorithm/string.hpp]) + ]) + +@@ -683,7 +1024,7 @@ AC_DEFUN([BOOST_STRING_ALGO], + # Look for Boost.System. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. This library was introduced in Boost + # 1.35.0. +-AC_DEFUN([BOOST_SYSTEM], ++BOOST_DEFUN([System], + [BOOST_FIND_LIB([system], [$1], + [boost/system/error_code.hpp], + [boost::system::error_code e; e.clear();]) +@@ -694,7 +1035,7 @@ AC_DEFUN([BOOST_SYSTEM], + # ------------------------------ + # Look for Boost.Test. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_TEST], ++BOOST_DEFUN([Test], + [m4_pattern_allow([^BOOST_CHECK$])dnl + BOOST_FIND_LIB([unit_test_framework], [$1], + [boost/test/unit_test.hpp], [BOOST_CHECK(2 == 2);], +@@ -704,45 +1045,58 @@ BOOST_FIND_LIB([unit_test_framework], [$1], + ])# BOOST_TEST + + +-# BOOST_THREADS([PREFERRED-RT-OPT]) ++# BOOST_THREAD([PREFERRED-RT-OPT]) + # --------------------------------- + # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-# FIXME: Provide an alias "BOOST_THREAD". +-AC_DEFUN([BOOST_THREADS], ++BOOST_DEFUN([Thread], + [dnl Having the pthread flag is required at least on GCC3 where + dnl boost/thread.hpp would complain if we try to compile without + dnl -pthread on GNU/Linux. + AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl +-boost_threads_save_LIBS=$LIBS +-boost_threads_save_CPPFLAGS=$CPPFLAGS +-LIBS="$LIBS $boost_cv_pthread_flag" +-# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, +-# boost/thread.hpp will trigger a #error if -pthread isn't used: +-# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support +-# is not turned on. Please set the correct command line options for +-# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++boost_thread_save_LIBS=$LIBS ++boost_thread_save_LDFLAGS=$LDFLAGS ++boost_thread_save_CPPFLAGS=$CPPFLAGS ++# Link-time dependency from thread to system was added as of 1.49.0. ++if test $boost_major_version -ge 149; then ++BOOST_SYSTEM([$1]) ++fi # end of the Boost.System check. ++m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl ++LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" + CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" +-BOOST_FIND_LIB([thread], [$1], ++ ++# When compiling for the Windows platform, the threads library is named ++# differently. ++case $host_os in ++ (*mingw*) boost_thread_lib_ext=_win32;; ++esac ++BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], ++ [$1], + [boost/thread.hpp], [boost::thread t; boost::mutex m;]) +-BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $boost_cv_pthread_flag" ++ ++BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" ++BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" + BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" +-LIBS=$boost_threads_save_LIBS +-CPPFLAGS=$boost_threads_save_CPPFLAGS +-])# BOOST_THREADS ++LIBS=$boost_thread_save_LIBS ++LDFLAGS=$boost_thread_save_LDFLAGS ++CPPFLAGS=$boost_thread_save_CPPFLAGS ++])# BOOST_THREAD ++ ++AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) + + + # BOOST_TOKENIZER() + # ----------------- + # Look for Boost.Tokenizer +-AC_DEFUN([BOOST_TOKENIZER], ++BOOST_DEFUN([Tokenizer], + [BOOST_FIND_HEADER([boost/tokenizer.hpp])]) + + + # BOOST_TRIBOOL() + # --------------- + # Look for Boost.Tribool +-AC_DEFUN([BOOST_TRIBOOL], ++BOOST_DEFUN([Tribool], + [BOOST_FIND_HEADER([boost/logic/tribool_fwd.hpp]) + BOOST_FIND_HEADER([boost/logic/tribool.hpp]) + ]) +@@ -751,65 +1105,61 @@ BOOST_FIND_HEADER([boost/logic/tribool.hpp]) + # BOOST_TUPLE() + # ------------- + # Look for Boost.Tuple +-AC_DEFUN([BOOST_TUPLE], ++BOOST_DEFUN([Tuple], + [BOOST_FIND_HEADER([boost/tuple/tuple.hpp])]) + + + # BOOST_TYPETRAITS() + # -------------------- + # Look for Boost.TypeTraits +-AC_DEFUN([BOOST_TYPETRAITS], ++BOOST_DEFUN([TypeTraits], + [BOOST_FIND_HEADER([boost/type_traits.hpp])]) + +-# BOOST_UNORDERED() +-# --------------- +-# Look for Boost.Unordered (unordered_map, unordered_set +-# etc.) +-AC_DEFUN([BOOST_UNORDERED], +-[BOOST_FIND_HEADER([boost/unordered_map.hpp]) +-BOOST_FIND_HEADER([boost/unordered_set.hpp])]) + + # BOOST_UTILITY() + # --------------- + # Look for Boost.Utility (noncopyable, result_of, base-from-member idiom, + # etc.) +-AC_DEFUN([BOOST_UTILITY], ++BOOST_DEFUN([Utility], + [BOOST_FIND_HEADER([boost/utility.hpp])]) + +-# BOOST_UUID() +-# ----------------- +-# Look for Boost.Uuid +-AC_DEFUN([BOOST_UUID], +-[BOOST_FIND_HEADER([boost/uuid/uuid.hpp]) +-BOOST_FIND_HEADER([boost/uuid/uuid_generators.hpp]) +-BOOST_FIND_HEADER([boost/uuid/uuid_io.hpp]) +-BOOST_FIND_HEADER([boost/uuid/uuid_serialize.hpp]) +-]) +- + + # BOOST_VARIANT() + # --------------- + # Look for Boost.Variant. +-AC_DEFUN([BOOST_VARIANT], ++BOOST_DEFUN([Variant], + [BOOST_FIND_HEADER([boost/variant/variant_fwd.hpp]) + BOOST_FIND_HEADER([boost/variant.hpp])]) + + ++# BOOST_POINTER_CONTAINER() ++# ------------------------ ++# Look for Boost.PointerContainer ++BOOST_DEFUN([Pointer_Container], ++[BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) ++BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ++])# BOOST_POINTER_CONTAINER ++ ++ + # BOOST_WAVE([PREFERRED-RT-OPT]) + # ------------------------------ + # NOTE: If you intend to use Wave/Spirit with thread support, make sure you +-# call BOOST_THREADS first. ++# call BOOST_THREAD first. + # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the + # documentation of BOOST_FIND_LIB above. +-AC_DEFUN([BOOST_WAVE], ++BOOST_DEFUN([Wave], + [AC_REQUIRE([BOOST_FILESYSTEM])dnl + AC_REQUIRE([BOOST_DATE_TIME])dnl + boost_wave_save_LIBS=$LIBS + boost_wave_save_LDFLAGS=$LDFLAGS + m4_pattern_allow([^BOOST_((FILE)?SYSTEM|DATE_TIME|THREAD)_(LIBS|LDFLAGS)$])dnl +-LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS\ ++LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS \ + $BOOST_THREAD_LIBS" +-LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS\ ++LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS \ + $BOOST_DATE_TIME_LDFLAGS $BOOST_THREAD_LDFLAGS" + BOOST_FIND_LIB([wave], [$1], + [boost/wave.hpp], +@@ -822,7 +1172,7 @@ LDFLAGS=$boost_wave_save_LDFLAGS + # BOOST_XPRESSIVE() + # ----------------- + # Look for Boost.Xpressive (new since 1.36.0). +-AC_DEFUN([BOOST_XPRESSIVE], ++BOOST_DEFUN([Xpressive], + [BOOST_FIND_HEADER([boost/xpressive/xpressive.hpp])]) + + +@@ -833,8 +1183,16 @@ AC_DEFUN([BOOST_XPRESSIVE], + + # _BOOST_PTHREAD_FLAG() + # --------------------- +-# Internal helper for BOOST_THREADS. Based on ACX_PTHREAD: +-# http://autoconf-archive.cryp.to/acx_pthread.html ++# Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag ++# which must be used in CPPFLAGS and LIBS. ++# ++# Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, ++# boost/thread.hpp will trigger a #error if -pthread isn't used: ++# boost/config/requires_threads.hpp:47:5: #error "Compiler threading support ++# is not turned on. Please set the correct command line options for ++# threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" ++# ++# Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html + AC_DEFUN([_BOOST_PTHREAD_FLAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +@@ -902,6 +1260,14 @@ AC_LANG_POP([C++])dnl + m4_define([_BOOST_gcc_test], + ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl + ++# _BOOST_mingw_test(MAJOR, MINOR) ++# ----------------------------- ++# Internal helper for _BOOST_FIND_COMPILER_TAG. ++m4_define([_BOOST_mingw_test], ++["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ ++ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ ++ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl ++ + + # _BOOST_FIND_COMPILER_TAG() + # -------------------------- +@@ -911,7 +1277,8 @@ m4_define([_BOOST_gcc_test], + AC_DEFUN([_BOOST_FIND_COMPILER_TAG], + [AC_REQUIRE([AC_PROG_CXX])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], ++AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], ++ [boost_cv_lib_tag], + [boost_cv_lib_tag=unknown + if test x$boost_cv_inc_path != xno; then + AC_LANG_PUSH([C++])dnl +@@ -928,11 +1295,30 @@ if test x$boost_cv_inc_path != xno; then + # como, edg, kcc, bck, mp, sw, tru, xlc + # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines + # the same defines as GCC's). +- # TODO: Move the test on GCC 4.4 up once it's released. + for i in \ ++ _BOOST_mingw_test(5, 0) \ ++ _BOOST_gcc_test(5, 0) \ ++ _BOOST_mingw_test(4, 10) \ ++ _BOOST_gcc_test(4, 10) \ ++ _BOOST_mingw_test(4, 9) \ ++ _BOOST_gcc_test(4, 9) \ ++ _BOOST_mingw_test(4, 8) \ ++ _BOOST_gcc_test(4, 8) \ ++ _BOOST_mingw_test(4, 7) \ ++ _BOOST_gcc_test(4, 7) \ ++ _BOOST_mingw_test(4, 6) \ ++ _BOOST_gcc_test(4, 6) \ ++ _BOOST_mingw_test(4, 5) \ ++ _BOOST_gcc_test(4, 5) \ ++ _BOOST_mingw_test(4, 4) \ ++ _BOOST_gcc_test(4, 4) \ ++ _BOOST_mingw_test(4, 3) \ + _BOOST_gcc_test(4, 3) \ ++ _BOOST_mingw_test(4, 2) \ + _BOOST_gcc_test(4, 2) \ ++ _BOOST_mingw_test(4, 1) \ + _BOOST_gcc_test(4, 1) \ ++ _BOOST_mingw_test(4, 0) \ + _BOOST_gcc_test(4, 0) \ + "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ + && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ +@@ -949,7 +1335,6 @@ if test x$boost_cv_inc_path != xno; then + "defined __ICC && (defined __unix || defined __unix__) @ il" \ + "defined __ICL @ iw" \ + "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \ +- _BOOST_gcc_test(4, 4) \ + _BOOST_gcc_test(2, 95) \ + "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \ + "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \ +@@ -999,6 +1384,7 @@ fi])dnl end of AC_CACHE_CHECK + # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. + AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], + [# Check whether we do better use `mt' even though we weren't ask to. ++AC_LANG_PUSH([C++])dnl + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #if defined _REENTRANT || defined _MT || defined __MT__ + /* use -mt */ +@@ -1006,6 +1392,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + # error MT not needed + #endif + ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) ++AC_LANG_POP([C++])dnl + ]) + + # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +@@ -1029,11 +1416,11 @@ boost_use_source=: + test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && + _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) + AS_IF([_AC_DO_STDERR($ac_link) && { +- test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || +- test ! -s conftest.err ++ test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || ++ test ! -s conftest.err + } && test -s conftest$ac_exeext && { +- test "$cross_compiling" = yes || +- $as_executable_p conftest$ac_exeext ++ test "$cross_compiling" = yes || ++ $as_executable_p conftest$ac_exeext + dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. + }], + [$2], +-- +2.4.0 + -- cgit v1.2.3