Build: update boost m4 macros
This commit is contained in:
parent
3bc5e8f04f
commit
3632ad067d
3 changed files with 245 additions and 216 deletions
|
@ -2,6 +2,12 @@ m4_include([m4macros/ac_agi.m4])
|
||||||
m4_include([m4macros/ac_flag.m4])
|
m4_include([m4macros/ac_flag.m4])
|
||||||
m4_include([m4macros/agi_find_libheader.m4])
|
m4_include([m4macros/agi_find_libheader.m4])
|
||||||
m4_include([m4macros/ax_boost_base.m4])
|
m4_include([m4macros/ax_boost_base.m4])
|
||||||
|
m4_include([m4macros/ax_boost_chrono.m4])
|
||||||
|
m4_include([m4macros/ax_boost_filesystem.m4])
|
||||||
|
m4_include([m4macros/ax_boost_locale.m4])
|
||||||
|
m4_include([m4macros/ax_boost_regex.m4])
|
||||||
|
m4_include([m4macros/ax_boost_system.m4])
|
||||||
|
m4_include([m4macros/ax_boost_thread.m4])
|
||||||
m4_include([m4macros/ax_check_gl.m4])
|
m4_include([m4macros/ax_check_gl.m4])
|
||||||
m4_include([m4macros/ax_lang_compiler_ms.m4])
|
m4_include([m4macros/ax_lang_compiler_ms.m4])
|
||||||
m4_include([m4macros/ax_pthread.m4])
|
m4_include([m4macros/ax_pthread.m4])
|
||||||
|
|
12
configure.ac
12
configure.ac
|
@ -211,12 +211,12 @@ AS_IF([test x$build_darwin != xyes], [
|
||||||
PKG_CHECK_MODULES(LIBASS, libass >= libass_required_version)
|
PKG_CHECK_MODULES(LIBASS, libass >= libass_required_version)
|
||||||
|
|
||||||
AX_BOOST_BASE([boost_required_version])
|
AX_BOOST_BASE([boost_required_version])
|
||||||
AX_BOOST_LIB(chrono, BOOST_CHRONO_LIB, [chrono.hpp], [boost::chrono::system_clock::time_point time])
|
AX_BOOST_CHRONO
|
||||||
AX_BOOST_LIB(filesystem, BOOST_FILESYSTEM_LIB, [filesystem/path.hpp], [boost::filesystem::path("data.txt")])
|
AX_BOOST_FILESYSTEM
|
||||||
AX_BOOST_LIB(locale, BOOST_LOCALE_LIB, [locale.hpp], [boost::locale::generator{}])
|
AX_BOOST_LOCALE
|
||||||
AX_BOOST_LIB(regex, BOOST_REGEX_LIB, [regex.hpp], [boost::regex{}])
|
AX_BOOST_REGEX
|
||||||
AX_BOOST_LIB(system, BOOST_SYSTEM_LIB, [system/error_code.hpp], [boost::system::system_category])
|
AX_BOOST_SYSTEM
|
||||||
AX_BOOST_LIB(thread, BOOST_THREAD_LIB, [thread/thread.hpp], [boost::thread_group{}])
|
AX_BOOST_THREAD
|
||||||
|
|
||||||
cppflags_bak="$CPPFLAGS"
|
cppflags_bak="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
# http://www.gnu.org/software/autoconf-archive/ax_boost_base.html
|
# https://www.gnu.org/software/autoconf-archive/ax_boost_base.html
|
||||||
# ===========================================================================
|
# ===========================================================================
|
||||||
#
|
#
|
||||||
# SYNOPSIS
|
# SYNOPSIS
|
||||||
|
@ -33,246 +33,269 @@
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
# and this notice are preserved. This file is offered as-is, without any
|
||||||
# warranty.
|
# warranty.
|
||||||
|
|
||||||
#serial 20
|
#serial 42
|
||||||
|
|
||||||
AC_DEFUN([AX_BOOST_BASE], [
|
# example boost program (need to pass version)
|
||||||
|
m4_define([_AX_BOOST_BASE_PROGRAM],
|
||||||
|
[AC_LANG_PROGRAM([[
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
]],[[
|
||||||
|
(void) ((void)sizeof(char[1 - 2*!!((BOOST_VERSION) < ($1))]));
|
||||||
|
]])])
|
||||||
|
|
||||||
|
AC_DEFUN([AX_BOOST_BASE],
|
||||||
|
[
|
||||||
AC_ARG_WITH([boost],
|
AC_ARG_WITH([boost],
|
||||||
[AS_HELP_STRING([--with-boost=PATH], [use Boost library from the specified location])],
|
[AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
|
||||||
[ac_boost_path="$withval"],
|
[use Boost library from a standard location (ARG=yes),
|
||||||
[ac_boost_path=""])
|
from the specified location (ARG=<path>),
|
||||||
|
or disable it (ARG=no)
|
||||||
|
@<:@ARG=yes@:>@ ])],
|
||||||
|
[
|
||||||
|
AS_CASE([$withval],
|
||||||
|
[no],[want_boost="no";_AX_BOOST_BASE_boost_path=""],
|
||||||
|
[yes],[want_boost="yes";_AX_BOOST_BASE_boost_path=""],
|
||||||
|
[want_boost="yes";_AX_BOOST_BASE_boost_path="$withval"])
|
||||||
|
],
|
||||||
|
[want_boost="yes"])
|
||||||
|
|
||||||
|
|
||||||
AC_ARG_WITH([boost-libdir],
|
AC_ARG_WITH([boost-libdir],
|
||||||
AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
|
[AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
|
||||||
[Force given directory for boost libraries.
|
[Force given directory for boost libraries.
|
||||||
Note that this will override library path detection,
|
Note that this will override library path detection,
|
||||||
so use this parameter only if default library
|
so use this parameter only if default library detection fails
|
||||||
detection fails and you know exactly where your
|
and you know exactly where your boost libraries are located.])],
|
||||||
boost libraries are located.]),
|
[
|
||||||
[ac_boost_lib_path="$withval"],
|
AS_IF([test -d "$withval"],
|
||||||
[ac_boost_lib_path=""])
|
[_AX_BOOST_BASE_boost_lib_path="$withval"],
|
||||||
|
[AC_MSG_ERROR([--with-boost-libdir expected directory name])])
|
||||||
|
],
|
||||||
|
[_AX_BOOST_BASE_boost_lib_path=""])
|
||||||
|
|
||||||
boost_lib_version_req=ifelse([$1], ,1.20.0,$1)
|
BOOST_LDFLAGS=""
|
||||||
boost_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
BOOST_CPPFLAGS=""
|
||||||
boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
|
AS_IF([test "x$want_boost" = "xyes"],
|
||||||
boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
[_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])])
|
||||||
boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
AC_SUBST(BOOST_CPPFLAGS)
|
||||||
if test "x$boost_lib_version_req_sub_minor" = "x"; then
|
AC_SUBST(BOOST_LDFLAGS)
|
||||||
boost_lib_version_req_sub_minor="0"
|
])
|
||||||
fi
|
|
||||||
WANT_BOOST_VERSION=`expr $boost_lib_version_req_major \* 100000 \+ $boost_lib_version_req_minor \* 100 \+ $boost_lib_version_req_sub_minor`
|
|
||||||
AC_MSG_CHECKING(for boostlib >= $boost_lib_version_req)
|
|
||||||
succeeded=no
|
|
||||||
|
|
||||||
dnl On 64-bit systems check for system libraries in both lib64 and lib.
|
|
||||||
dnl The former is specified by FHS, but e.g. Debian does not adhere to
|
|
||||||
dnl this (as it rises problems for generic multi-arch support).
|
|
||||||
dnl The last entry in the list is chosen by default when no libraries
|
|
||||||
dnl are found, e.g. when only header-only libraries are installed!
|
|
||||||
libsubdirs="lib"
|
|
||||||
ax_arch=`uname -m`
|
|
||||||
if test $ax_arch = x86_64 -o $ax_arch = ppc64 -o $ax_arch = s390x -o $ax_arch = sparc64; then
|
|
||||||
libsubdirs="lib64 lib lib64"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl first we check the system location for boost libraries
|
# convert a version string in $2 to numeric and affect to polymorphic var $1
|
||||||
dnl this location ist chosen if boost libraries are installed with the --layout=system option
|
AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[
|
||||||
dnl or if you install boost with RPM
|
AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"])
|
||||||
if test "$ac_boost_path" != ""; then
|
_AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||||
BOOST_CPPFLAGS="-I$ac_boost_path/include"
|
_AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'`
|
||||||
for ac_boost_path_tmp in $libsubdirs; do
|
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"],
|
||||||
if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
|
[AC_MSG_ERROR([You should at least specify libboost major version])])
|
||||||
BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
|
_AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'`
|
||||||
break
|
AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"],
|
||||||
fi
|
[_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"])
|
||||||
done
|
_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
|
||||||
elif test "$cross_compiling" != yes; then
|
AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"],
|
||||||
for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
[_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"])
|
||||||
if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
|
_AX_BOOST_BASE_TONUMERICVERSION_RET=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req_major \* 100000 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_minor \* 100 \+ $_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor`
|
||||||
for libsubdir in $libsubdirs ; do
|
AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET)
|
||||||
if ls "$ac_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
])
|
||||||
done
|
|
||||||
BOOST_LDFLAGS="-L$ac_boost_path_tmp/$libsubdir"
|
|
||||||
BOOST_CPPFLAGS="-I$ac_boost_path_tmp/include"
|
|
||||||
break;
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl overwrite ld flags if we have required special directory with
|
dnl Run the detection of boost should be run only if $want_boost
|
||||||
dnl --with-boost-libdir parameter
|
AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
|
||||||
if test "$ac_boost_lib_path" != ""; then
|
_AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1])
|
||||||
BOOST_LDFLAGS="-L$ac_boost_lib_path"
|
succeeded=no
|
||||||
fi
|
|
||||||
|
|
||||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
||||||
export CPPFLAGS
|
|
||||||
|
|
||||||
LDFLAGS_SAVED="$LDFLAGS"
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
dnl On 64-bit systems check for system libraries in both lib64 and lib.
|
||||||
export LDFLAGS
|
dnl The former is specified by FHS, but e.g. Debian does not adhere to
|
||||||
|
dnl this (as it rises problems for generic multi-arch support).
|
||||||
|
dnl The last entry in the list is chosen by default when no libraries
|
||||||
|
dnl are found, e.g. when only header-only libraries are installed!
|
||||||
|
AS_CASE([${host_cpu}],
|
||||||
|
[x86_64],[libsubdirs="lib64 libx32 lib lib64"],
|
||||||
|
[ppc64|s390x|sparc64|aarch64|ppc64le],[libsubdirs="lib64 lib lib64"],
|
||||||
|
[libsubdirs="lib"],
|
||||||
|
)
|
||||||
|
|
||||||
AC_REQUIRE([AC_PROG_CXX])
|
dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
|
||||||
AC_LANG_PUSH(C++)
|
dnl them priority over the other paths since, if libs are found there, they
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
dnl are almost assuredly the ones desired.
|
||||||
@%:@include <boost/version.hpp>
|
AS_CASE([${host_cpu}],
|
||||||
]], [[
|
[i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
|
||||||
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
[multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
|
||||||
// Everything is okay
|
)
|
||||||
#else
|
|
||||||
# error Boost version is too old
|
dnl first we check the system location for boost libraries
|
||||||
#endif
|
dnl this location ist chosen if boost libraries are installed with the --layout=system option
|
||||||
]])],[
|
dnl or if you install boost with RPM
|
||||||
AC_MSG_RESULT(yes)
|
AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[
|
||||||
succeeded=yes
|
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"])
|
||||||
found_system=yes
|
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/include" && test -r "$_AX_BOOST_BASE_boost_path/include"],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include"
|
||||||
|
for _AX_BOOST_BASE_boost_path_tmp in $multiarch_libsubdir $libsubdirs; do
|
||||||
|
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) lib path in "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp"])
|
||||||
|
AS_IF([test -d "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" && test -r "$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp" ],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$_AX_BOOST_BASE_boost_path_tmp";
|
||||||
|
break;
|
||||||
|
],
|
||||||
|
[AC_MSG_RESULT([no])])
|
||||||
|
done],[
|
||||||
|
AC_MSG_RESULT([no])])
|
||||||
],[
|
],[
|
||||||
])
|
if test X"$cross_compiling" = Xyes; then
|
||||||
AC_LANG_POP([C++])
|
search_libsubdirs=$multiarch_libsubdir
|
||||||
|
else
|
||||||
dnl if we found no boost with system layout we search for boost libraries
|
search_libsubdirs="$multiarch_libsubdir $libsubdirs"
|
||||||
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
|
||||||
if test "x$succeeded" != "xyes"; then
|
|
||||||
_version=0
|
|
||||||
if test "$ac_boost_path" != ""; then
|
|
||||||
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
|
||||||
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
||||||
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
||||||
V_CHECK=`expr $_version_tmp \> $_version`
|
|
||||||
if test "$V_CHECK" = "1" ; then
|
|
||||||
_version=$_version_tmp
|
|
||||||
fi
|
|
||||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
||||||
BOOST_CPPFLAGS="-I$ac_boost_path/include/boost-$VERSION_UNDERSCORE"
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
else
|
for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
|
||||||
if test "$cross_compiling" != yes; then
|
if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then
|
||||||
for ac_boost_path in /usr /usr/local /opt /opt/local ; do
|
for libsubdir in $search_libsubdirs ; do
|
||||||
if test -d "$ac_boost_path" && test -r "$ac_boost_path"; then
|
if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||||
for i in `ls -d $ac_boost_path/include/boost-* 2>/dev/null`; do
|
|
||||||
_version_tmp=`echo $i | sed "s#$ac_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
|
||||||
V_CHECK=`expr $_version_tmp \> $_version`
|
|
||||||
if test "$V_CHECK" = "1" ; then
|
|
||||||
_version=$_version_tmp
|
|
||||||
best_path=$ac_boost_path
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
|
||||||
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
|
||||||
if test "$ac_boost_lib_path" = ""; then
|
|
||||||
for libsubdir in $libsubdirs ; do
|
|
||||||
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
|
||||||
done
|
done
|
||||||
BOOST_LDFLAGS="-L$best_path/$libsubdir"
|
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path_tmp/$libsubdir"
|
||||||
|
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path_tmp/include"
|
||||||
|
break;
|
||||||
fi
|
fi
|
||||||
fi
|
done
|
||||||
|
])
|
||||||
|
|
||||||
if test "x$BOOST_ROOT" != "x"; then
|
dnl overwrite ld flags if we have required special directory with
|
||||||
for libsubdir in $libsubdirs ; do
|
dnl --with-boost-libdir parameter
|
||||||
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
|
||||||
done
|
[BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
|
||||||
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
|
|
||||||
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
|
|
||||||
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
|
||||||
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
|
||||||
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
|
||||||
if test "$V_CHECK" = "1" -a "$ac_boost_lib_path" = "" ; then
|
|
||||||
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
|
||||||
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
|
||||||
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
|
||||||
|
CPPFLAGS_SAVED="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||||
export CPPFLAGS
|
export CPPFLAGS
|
||||||
|
|
||||||
|
LDFLAGS_SAVED="$LDFLAGS"
|
||||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||||
export LDFLAGS
|
export LDFLAGS
|
||||||
|
|
||||||
|
AC_REQUIRE([AC_PROG_CXX])
|
||||||
AC_LANG_PUSH(C++)
|
AC_LANG_PUSH(C++)
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||||
@%:@include <boost/version.hpp>
|
|
||||||
]], [[
|
|
||||||
#if BOOST_VERSION >= $WANT_BOOST_VERSION
|
|
||||||
// Everything is okay
|
|
||||||
#else
|
|
||||||
# error Boost version is too old
|
|
||||||
#endif
|
|
||||||
]])],[
|
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
succeeded=yes
|
succeeded=yes
|
||||||
found_system=yes
|
found_system=yes
|
||||||
],[
|
],[
|
||||||
])
|
])
|
||||||
AC_LANG_POP([C++])
|
AC_LANG_POP([C++])
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$succeeded" != "yes" ; then
|
|
||||||
if test "$_version" = "0" ; then
|
|
||||||
AC_MSG_ERROR([[We could not detect the boost libraries (version $boost_lib_version_req_shorten or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
dnl if we found no boost with system layout we search for boost libraries
|
||||||
else
|
dnl built and installed without the --layout=system option or for a staged(not installed) version
|
||||||
AC_MSG_ERROR([Your boost libraries seem too old (version $_version).])
|
if test "x$succeeded" != "xyes" ; then
|
||||||
|
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||||
|
LDFLAGS="$LDFLAGS_SAVED"
|
||||||
|
BOOST_CPPFLAGS=
|
||||||
|
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||||
|
BOOST_LDFLAGS=
|
||||||
|
fi
|
||||||
|
_version=0
|
||||||
|
if test -n "$_AX_BOOST_BASE_boost_path" ; then
|
||||||
|
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path"; then
|
||||||
|
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||||
|
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||||
|
V_CHECK=`expr $_version_tmp \> $_version`
|
||||||
|
if test "x$V_CHECK" = "x1" ; then
|
||||||
|
_version=$_version_tmp
|
||||||
|
fi
|
||||||
|
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||||
|
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path/include/boost-$VERSION_UNDERSCORE"
|
||||||
|
done
|
||||||
|
dnl if nothing found search for layout used in Windows distributions
|
||||||
|
if test -z "$BOOST_CPPFLAGS"; then
|
||||||
|
if test -d "$_AX_BOOST_BASE_boost_path/boost" && test -r "$_AX_BOOST_BASE_boost_path/boost"; then
|
||||||
|
BOOST_CPPFLAGS="-I$_AX_BOOST_BASE_boost_path"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
dnl if we found something and BOOST_LDFLAGS was unset before
|
||||||
|
dnl (because "$_AX_BOOST_BASE_boost_lib_path" = ""), set it here.
|
||||||
|
if test -n "$BOOST_CPPFLAGS" && test -z "$BOOST_LDFLAGS"; then
|
||||||
|
for libsubdir in $libsubdirs ; do
|
||||||
|
if ls "$_AX_BOOST_BASE_boost_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||||
|
done
|
||||||
|
BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_path/$libsubdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if test "x$cross_compiling" != "xyes" ; then
|
||||||
|
for _AX_BOOST_BASE_boost_path in /usr /usr/local /opt /opt/local ; do
|
||||||
|
if test -d "$_AX_BOOST_BASE_boost_path" && test -r "$_AX_BOOST_BASE_boost_path" ; then
|
||||||
|
for i in `ls -d $_AX_BOOST_BASE_boost_path/include/boost-* 2>/dev/null`; do
|
||||||
|
_version_tmp=`echo $i | sed "s#$_AX_BOOST_BASE_boost_path##" | sed 's/\/include\/boost-//' | sed 's/_/./'`
|
||||||
|
V_CHECK=`expr $_version_tmp \> $_version`
|
||||||
|
if test "x$V_CHECK" = "x1" ; then
|
||||||
|
_version=$_version_tmp
|
||||||
|
best_path=$_AX_BOOST_BASE_boost_path
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
VERSION_UNDERSCORE=`echo $_version | sed 's/\./_/'`
|
||||||
|
BOOST_CPPFLAGS="-I$best_path/include/boost-$VERSION_UNDERSCORE"
|
||||||
|
if test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||||
|
for libsubdir in $libsubdirs ; do
|
||||||
|
if ls "$best_path/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||||
|
done
|
||||||
|
BOOST_LDFLAGS="-L$best_path/$libsubdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -n "$BOOST_ROOT" ; then
|
||||||
|
for libsubdir in $libsubdirs ; do
|
||||||
|
if ls "$BOOST_ROOT/stage/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
|
||||||
|
done
|
||||||
|
if test -d "$BOOST_ROOT" && test -r "$BOOST_ROOT" && test -d "$BOOST_ROOT/stage/$libsubdir" && test -r "$BOOST_ROOT/stage/$libsubdir"; then
|
||||||
|
version_dir=`expr //$BOOST_ROOT : '.*/\(.*\)'`
|
||||||
|
stage_version=`echo $version_dir | sed 's/boost_//' | sed 's/_/./g'`
|
||||||
|
stage_version_shorten=`expr $stage_version : '\([[0-9]]*\.[[0-9]]*\)'`
|
||||||
|
V_CHECK=`expr $stage_version_shorten \>\= $_version`
|
||||||
|
if test "x$V_CHECK" = "x1" && test -z "$_AX_BOOST_BASE_boost_lib_path" ; then
|
||||||
|
AC_MSG_NOTICE(We will use a staged boost library from $BOOST_ROOT)
|
||||||
|
BOOST_CPPFLAGS="-I$BOOST_ROOT"
|
||||||
|
BOOST_LDFLAGS="-L$BOOST_ROOT/stage/$libsubdir"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
||||||
|
export CPPFLAGS
|
||||||
|
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
||||||
|
export LDFLAGS
|
||||||
|
|
||||||
|
AC_LANG_PUSH(C++)
|
||||||
|
AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
succeeded=yes
|
||||||
|
found_system=yes
|
||||||
|
],[
|
||||||
|
])
|
||||||
|
AC_LANG_POP([C++])
|
||||||
fi
|
fi
|
||||||
# execute ACTION-IF-NOT-FOUND (if present):
|
|
||||||
ifelse([$3], , :, [$3])
|
|
||||||
else
|
|
||||||
BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
|
|
||||||
AC_SUBST(BOOST_CPPFLAGS)
|
|
||||||
AC_SUBST(BOOST_LDFLAGS)
|
|
||||||
# execute ACTION-IF-FOUND (if present):
|
|
||||||
ifelse([$2], , :, [$2])
|
|
||||||
fi
|
|
||||||
|
|
||||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
if test "x$succeeded" != "xyes" ; then
|
||||||
LDFLAGS="$LDFLAGS_SAVED"
|
if test "x$_version" = "x0" ; then
|
||||||
])
|
AC_MSG_NOTICE([[We could not detect the boost libraries (version $1 or higher). If you have a staged boost library (still not installed) please specify \$BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.]])
|
||||||
|
else
|
||||||
|
AC_MSG_NOTICE([Your boost libraries seems to old (version $_version).])
|
||||||
|
fi
|
||||||
|
# execute ACTION-IF-NOT-FOUND (if present):
|
||||||
|
ifelse([$3], , :, [$3])
|
||||||
|
else
|
||||||
|
AC_DEFINE(HAVE_BOOST,,[define if the Boost library is available])
|
||||||
|
# execute ACTION-IF-FOUND (if present):
|
||||||
|
ifelse([$2], , :, [$2])
|
||||||
|
fi
|
||||||
|
|
||||||
AC_DEFUN([AX_BOOST_LIB], [
|
CPPFLAGS="$CPPFLAGS_SAVED"
|
||||||
AC_ARG_WITH([boost-$1],
|
LDFLAGS="$LDFLAGS_SAVED"
|
||||||
AS_HELP_STRING([--with-boost-$1=LIBNAME],
|
|
||||||
[Override the name of the library for boost.$1
|
|
||||||
e.g. --with-boost-$1=boost_$1-gcc-mt]),
|
|
||||||
[ax_boost_lib="$withval"],
|
|
||||||
[ax_boost_lib="boost_$1"])
|
|
||||||
|
|
||||||
CPPFLAGS_SAVED="$CPPFLAGS"
|
|
||||||
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
|
|
||||||
export CPPFLAGS
|
|
||||||
|
|
||||||
LDFLAGS_SAVED="$LDFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
|
|
||||||
export LDFLAGS
|
|
||||||
|
|
||||||
AS_IF([test x$enable_sanity_checks != xno],
|
|
||||||
[AC_CHECK_LIB($ax_boost_lib, exit, [ax_boost_actual_lib="-l$ax_boost_lib"])],
|
|
||||||
[ax_boost_actual_lib="-l$ax_boost_lib"])
|
|
||||||
|
|
||||||
if test "x$ax_boost_actual_lib" = "x"; then
|
|
||||||
for lib in `ls -r $BOOSTLIBDIR/libboost_$1* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
|
|
||||||
ax_boost_lib=${lib}
|
|
||||||
AC_CHECK_LIB($ax_boost_lib, exit, [ax_boost_actual_lib="-l$ax_boost_lib"; break])
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$ax_boost_actual_lib" = "x"; then
|
|
||||||
for lib in `ls -r $BOOSTLIBDIR/boost_$1* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
|
|
||||||
ax_boost_lib=${lib}
|
|
||||||
AC_CHECK_LIB($ax_boost_lib, exit, [ax_boost_actual_lib="-l$ax_boost_lib"; break])
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "x$ax_boost_actual_lib" = "x"; then
|
|
||||||
AC_MSG_ERROR(Could not find a working version of the library!)
|
|
||||||
fi
|
|
||||||
|
|
||||||
eval $2="$ax_boost_actual_lib"
|
|
||||||
AC_SUBST($2)
|
|
||||||
CPPFLAGS="$CPPFLAGS_SAVED"
|
|
||||||
LDFLAGS="$LDFLAGS_SAVED"
|
|
||||||
])
|
|
||||||
|
|
||||||
|
])
|
Loading…
Reference in a new issue