summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoyuan Yang <byang@debian.org>2022-04-26 22:16:44 -0400
committerAndrej Shadura <andrewsh@debian.org>2022-07-20 21:00:23 +0200
commitaa20248aba3a248dc8e638ffe918d790e7b8b6f4 (patch)
tree33b05f76a0b89e450dc15ac57e8c038c8a78ec27
parent1eae4cc72500a0a6d3d7a2cffbc5115b284f1f92 (diff)
Use updated libboost searching m4macros
Refresh m4 files under m4macros dir to fix libboost 1.75+ detection. Also update configure.ac to use new AX_BOOST macros. libboost macro update has been forwarded. Forwarded: https://github.com/Aegisub/Aegisub/pull/235 Gbp-Pq: Name refresh-libboost-searching-m4macros.patch
-rw-r--r--configure.ac13
-rw-r--r--m4macros/ac_agi.m414
-rw-r--r--m4macros/ax_boost_base.m4433
-rw-r--r--m4macros/ax_boost_chrono.m4118
-rw-r--r--m4macros/ax_boost_filesystem.m4118
-rw-r--r--m4macros/ax_boost_locale.m4119
-rw-r--r--m4macros/ax_boost_regex.m4111
-rw-r--r--m4macros/ax_boost_system.m4121
-rw-r--r--m4macros/ax_boost_thread.m4187
-rw-r--r--m4macros/ax_check_gl.m4657
-rw-r--r--m4macros/ax_pthread.m485
11 files changed, 1606 insertions, 370 deletions
diff --git a/configure.ac b/configure.ac
index 62ee5a1..0c0d13a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,6 +25,7 @@ AC_INIT([Aegisub], [aegisub_version],, [aegisub])
: ${CXXFLAGS=""}
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADER([acconf.h])
+AC_CONFIG_MACRO_DIRS([m4macros])
AC_GNU_SOURCE
AC_CANONICAL_HOST
@@ -217,12 +218,12 @@ FONTCONFIG_CONF_DIR=$($PKG_CONFIG --variable=confdir fontconfig)
AC_SUBST(FONTCONFIG_CONF_DIR)
AX_BOOST_BASE([boost_required_version])
-AX_BOOST_LIB(chrono, BOOST_CHRONO_LIB, [chrono.hpp], [boost::chrono::system_clock::time_point time])
-AX_BOOST_LIB(filesystem, BOOST_FILESYSTEM_LIB, [filesystem/path.hpp], [boost::filesystem::path("data.txt")])
-AX_BOOST_LIB(locale, BOOST_LOCALE_LIB, [locale.hpp], [boost::locale::generator{}])
-AX_BOOST_LIB(regex, BOOST_REGEX_LIB, [regex.hpp], [boost::regex{}])
-AX_BOOST_LIB(system, BOOST_SYSTEM_LIB, [system/error_code.hpp], [boost::system::system_category])
-AX_BOOST_LIB(thread, BOOST_THREAD_LIB, [thread/thread.hpp], [boost::thread_group{}])
+AX_BOOST_CHRONO
+AX_BOOST_FILESYSTEM
+AX_BOOST_LOCALE
+AX_BOOST_REGEX
+AX_BOOST_SYSTEM
+AX_BOOST_THREAD
cppflags_bak="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
diff --git a/m4macros/ac_agi.m4 b/m4macros/ac_agi.m4
index c182ff4..e45a547 100644
--- a/m4macros/ac_agi.m4
+++ b/m4macros/ac_agi.m4
@@ -3,12 +3,14 @@ AC_DEFUN([AC_AGI_COMPILE],[
aegisub_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $3"
LIBS="$LIBS $4"
- AC_CACHE_CHECK(
- [whether $1 works], [agi_cv_with_$2],
- [AC_RUN_IFELSE([AC_LANG_SOURCE([$5])],
- [eval agi_cv_with_$2="yes"],
- [eval agi_cv_with_$2="no"],
- [AS_IF([test $? -ne 0], [eval agi_cv_with_$2="no"], [eval agi_cv_with_$2="yes"])])])
+ AC_LANG_PUSH(C++)
+ AC_CACHE_CHECK(
+ [whether $1 works], [agi_cv_with_$2],
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([$5])],
+ [eval agi_cv_with_$2="yes"],
+ [eval agi_cv_with_$2="no"],
+ [AS_IF([test $? -ne 0], [eval agi_cv_with_$2="no"], [eval agi_cv_with_$2="yes"])])])
+ AC_LANG_POP(C++)
CPPFLAGS="$aegisub_save_CPPFLAGS"
LIBS="$aegisub_save_LIBS"
])
diff --git a/m4macros/ax_boost_base.m4 b/m4macros/ax_boost_base.m4
index 9d5617b..519f1c9 100644
--- a/m4macros/ax_boost_base.m4
+++ b/m4macros/ax_boost_base.m4
@@ -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
@@ -33,246 +33,271 @@
# and this notice are preserved. This file is offered as-is, without any
# warranty.
-#serial 20
+#serial 49
-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],
- [AS_HELP_STRING([--with-boost=PATH], [use Boost library from the specified location])],
- [ac_boost_path="$withval"],
- [ac_boost_path=""])
+ [AS_HELP_STRING([--with-boost@<:@=ARG@:>@],
+ [use Boost library from a standard location (ARG=yes),
+ 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],
- AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
- [Force given directory for boost libraries.
- Note that this will override library path detection,
- so use this parameter only if default library
- detection fails and you know exactly where your
- boost libraries are located.]),
- [ac_boost_lib_path="$withval"],
- [ac_boost_lib_path=""])
+ [AS_HELP_STRING([--with-boost-libdir=LIB_DIR],
+ [Force given directory for boost libraries.
+ Note that this will override library path detection,
+ so use this parameter only if default library detection fails
+ and you know exactly where your boost libraries are located.])],
+ [
+ AS_IF([test -d "$withval"],
+ [_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_lib_version_req_shorten=`expr $boost_lib_version_req : '\([[0-9]]*\.[[0-9]]*\)'`
-boost_lib_version_req_major=`expr $boost_lib_version_req : '\([[0-9]]*\)'`
-boost_lib_version_req_minor=`expr $boost_lib_version_req : '[[0-9]]*\.\([[0-9]]*\)'`
-boost_lib_version_req_sub_minor=`expr $boost_lib_version_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
-if test "x$boost_lib_version_req_sub_minor" = "x"; then
- 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
+BOOST_LDFLAGS=""
+BOOST_CPPFLAGS=""
+AS_IF([test "x$want_boost" = "xyes"],
+ [_AX_BOOST_BASE_RUNDETECT([$1],[$2],[$3])])
+AC_SUBST(BOOST_CPPFLAGS)
+AC_SUBST(BOOST_LDFLAGS)
+])
-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
-dnl this location ist chosen if boost libraries are installed with the --layout=system option
-dnl or if you install boost with RPM
-if test "$ac_boost_path" != ""; then
- BOOST_CPPFLAGS="-I$ac_boost_path/include"
- for ac_boost_path_tmp in $libsubdirs; do
- if test -d "$ac_boost_path"/"$ac_boost_path_tmp" ; then
- BOOST_LDFLAGS="-L$ac_boost_path/$ac_boost_path_tmp"
- break
- fi
- done
-elif test "$cross_compiling" != yes; then
- for ac_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
- if test -d "$ac_boost_path_tmp/include/boost" && test -r "$ac_boost_path_tmp/include/boost"; then
- for libsubdir in $libsubdirs ; do
- 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
+# convert a version string in $2 to numeric and affect to polymorphic var $1
+AC_DEFUN([_AX_BOOST_BASE_TONUMERICVERSION],[
+ AS_IF([test "x$2" = "x"],[_AX_BOOST_BASE_TONUMERICVERSION_req="1.20.0"],[_AX_BOOST_BASE_TONUMERICVERSION_req="$2"])
+ _AX_BOOST_BASE_TONUMERICVERSION_req_shorten=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\.[[0-9]]*\)'`
+ _AX_BOOST_BASE_TONUMERICVERSION_req_major=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '\([[0-9]]*\)'`
+ AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_major" = "x"],
+ [AC_MSG_ERROR([You should at least specify libboost major version])])
+ _AX_BOOST_BASE_TONUMERICVERSION_req_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.\([[0-9]]*\)'`
+ AS_IF([test "x$_AX_BOOST_BASE_TONUMERICVERSION_req_minor" = "x"],
+ [_AX_BOOST_BASE_TONUMERICVERSION_req_minor="0"])
+ _AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor=`expr $_AX_BOOST_BASE_TONUMERICVERSION_req : '[[0-9]]*\.[[0-9]]*\.\([[0-9]]*\)'`
+ AS_IF([test "X$_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor" = "X"],
+ [_AX_BOOST_BASE_TONUMERICVERSION_req_sub_minor="0"])
+ _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`
+ AS_VAR_SET($1,$_AX_BOOST_BASE_TONUMERICVERSION_RET)
+])
-dnl overwrite ld flags if we have required special directory with
-dnl --with-boost-libdir parameter
-if test "$ac_boost_lib_path" != ""; then
- BOOST_LDFLAGS="-L$ac_boost_lib_path"
-fi
+dnl Run the detection of boost should be run only if $want_boost
+AC_DEFUN([_AX_BOOST_BASE_RUNDETECT],[
+ _AX_BOOST_BASE_TONUMERICVERSION(WANT_BOOST_VERSION,[$1])
+ succeeded=no
-CPPFLAGS_SAVED="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-export CPPFLAGS
-LDFLAGS_SAVED="$LDFLAGS"
-LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-export LDFLAGS
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ 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!
+ AS_CASE([${host_cpu}],
+ [x86_64],[libsubdirs="lib64 libx32 lib lib64"],
+ [mips*64*],[libsubdirs="lib64 lib32 lib lib64"],
+ [ppc64|powerpc64|s390x|sparc64|aarch64|ppc64le|powerpc64le|riscv64|e2k],[libsubdirs="lib64 lib lib64"],
+ [libsubdirs="lib"]
+ )
-AC_REQUIRE([AC_PROG_CXX])
-AC_LANG_PUSH(C++)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-@%:@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)
-succeeded=yes
-found_system=yes
- ],[
- ])
-AC_LANG_POP([C++])
+ dnl allow for real multi-arch paths e.g. /usr/lib/x86_64-linux-gnu. Give
+ dnl them priority over the other paths since, if libs are found there, they
+ dnl are almost assuredly the ones desired.
+ AS_CASE([${host_cpu}],
+ [i?86],[multiarch_libsubdir="lib/i386-${host_os}"],
+ [armv7l],[multiarch_libsubdir="lib/arm-${host_os}"],
+ [multiarch_libsubdir="lib/${host_cpu}-${host_os}"]
+ )
-dnl if we found no boost with system layout we search for boost libraries
-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
+ dnl first we check the system location for boost libraries
+ dnl this location ist chosen if boost libraries are installed with the --layout=system option
+ dnl or if you install boost with RPM
+ AS_IF([test "x$_AX_BOOST_BASE_boost_path" != "x"],[
+ AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION) includes in "$_AX_BOOST_BASE_boost_path/include"])
+ 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
+ search_libsubdirs=$multiarch_libsubdir
+ else
+ search_libsubdirs="$multiarch_libsubdir $libsubdirs"
fi
- else
- if test "$cross_compiling" != yes; then
- for ac_boost_path in /usr /usr/local /opt /opt/local ; do
- 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
- 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
+ for _AX_BOOST_BASE_boost_path_tmp in /usr /usr/local /opt /opt/local ; do
+ if test -d "$_AX_BOOST_BASE_boost_path_tmp/include/boost" && test -r "$_AX_BOOST_BASE_boost_path_tmp/include/boost" ; then
+ for libsubdir in $search_libsubdirs ; do
+ if ls "$_AX_BOOST_BASE_boost_path_tmp/$libsubdir/libboost_"* >/dev/null 2>&1 ; then break; fi
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
+ done
+ ])
- if test "x$BOOST_ROOT" != "x"; 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 "$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
+ dnl overwrite ld flags if we have required special directory with
+ dnl --with-boost-libdir parameter
+ AS_IF([test "x$_AX_BOOST_BASE_boost_lib_path" != "x"],
+ [BOOST_LDFLAGS="-L$_AX_BOOST_BASE_boost_lib_path"])
+ AC_MSG_CHECKING([for boostlib >= $1 ($WANT_BOOST_VERSION)])
+ CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
export LDFLAGS
+ AC_REQUIRE([AC_PROG_CXX])
AC_LANG_PUSH(C++)
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
- @%:@include <boost/version.hpp>
- ]], [[
- #if BOOST_VERSION >= $WANT_BOOST_VERSION
- // Everything is okay
- #else
- # error Boost version is too old
- #endif
- ]])],[
+ AC_COMPILE_IFELSE([_AX_BOOST_BASE_PROGRAM($WANT_BOOST_VERSION)],[
AC_MSG_RESULT(yes)
succeeded=yes
found_system=yes
],[
])
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.]])
- else
- AC_MSG_ERROR([Your boost libraries seem too old (version $_version).])
- 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"
-LDFLAGS="$LDFLAGS_SAVED"
-])
-AC_DEFUN([AX_BOOST_LIB], [
-AC_ARG_WITH([boost-$1],
- 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"])
+ dnl if we found no boost with system layout we search for boost libraries
+ dnl built and installed without the --layout=system option or for a staged(not installed) 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
-CPPFLAGS_SAVED="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
-export CPPFLAGS
+ 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
-LDFLAGS_SAVED="$LDFLAGS"
-LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
-export LDFLAGS
+ 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
-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"])
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
-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
+ 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
-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$succeeded" != "xyes" ; then
+ 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
-if test "x$ax_boost_actual_lib" = "x"; then
- AC_MSG_ERROR(Could not find a working version of the library!)
-fi
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
-eval $2="$ax_boost_actual_lib"
-AC_SUBST($2)
-CPPFLAGS="$CPPFLAGS_SAVED"
-LDFLAGS="$LDFLAGS_SAVED"
])
-
diff --git a/m4macros/ax_boost_chrono.m4 b/m4macros/ax_boost_chrono.m4
new file mode 100644
index 0000000..4cd3b86
--- /dev/null
+++ b/m4macros/ax_boost_chrono.m4
@@ -0,0 +1,118 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_chrono.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_CHRONO
+#
+# DESCRIPTION
+#
+# Test for Chrono library from the Boost C++ libraries. The macro requires
+# a preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_CHRONO_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_CHRONO
+#
+# LICENSE
+#
+# Copyright (c) 2012 Xiyue Deng <manphiz@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 5
+
+AC_DEFUN([AX_BOOST_CHRONO],
+[
+ AC_ARG_WITH([boost-chrono],
+ AS_HELP_STRING([--with-boost-chrono@<:@=special-lib@:>@],
+ [use the Chrono library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-chrono=boost_chrono-gcc-mt ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_chrono_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_chrono_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::Chrono library is available,
+ ax_cv_boost_chrono,
+ [AC_LANG_PUSH([C++])
+ CXXFLAGS_SAVE=$CXXFLAGS
+
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/chrono.hpp>]],
+ [[boost::chrono::system_clock::time_point* time = new boost::chrono::system_clock::time_point; delete time;]])],
+ ax_cv_boost_chrono=yes, ax_cv_boost_chrono=no)
+ CXXFLAGS=$CXXFLAGS_SAVE
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_chrono" = "xyes"; then
+ AC_SUBST(BOOST_CPPFLAGS)
+
+ AC_DEFINE(HAVE_BOOST_CHRONO,,[define if the Boost::Chrono library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+ LDFLAGS_SAVE=$LDFLAGS
+ if test "x$ax_boost_user_chrono_lib" = "x"; then
+ for libextension in `ls $BOOSTLIBDIR/libboost_chrono*.so* $BOOSTLIBDIR/libboost_chrono*.dylib* $BOOSTLIBDIR/libboost_chrono*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_chrono.*\)\.so.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_chrono.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
+ [link_chrono="no"])
+ done
+ if test "x$link_chrono" != "xyes"; then
+ for libextension in `ls $BOOSTLIBDIR/boost_chrono*.dll* $BOOSTLIBDIR/boost_chrono*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_chrono.*\)\.dll.*$;\1;' -e 's;^\(boost_chrono.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
+ [link_chrono="no"])
+ done
+ fi
+
+ else
+ for ax_lib in $ax_boost_user_chrono_lib boost_chrono-$ax_boost_user_chrono_lib; do
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_CHRONO_LIB="-l$ax_lib"; AC_SUBST(BOOST_CHRONO_LIB) link_chrono="yes"; break],
+ [link_chrono="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::Chrono library!)
+ fi
+ if test "x$link_chrono" = "xno"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_boost_filesystem.m4 b/m4macros/ax_boost_filesystem.m4
new file mode 100644
index 0000000..12f7bc5
--- /dev/null
+++ b/m4macros/ax_boost_filesystem.m4
@@ -0,0 +1,118 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_filesystem.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_FILESYSTEM
+#
+# DESCRIPTION
+#
+# Test for Filesystem library from the Boost C++ libraries. The macro
+# requires a preceding call to AX_BOOST_BASE. Further documentation is
+# available at <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_FILESYSTEM_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_FILESYSTEM
+#
+# LICENSE
+#
+# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
+# Copyright (c) 2009 Michael Tindal
+# Copyright (c) 2009 Roman Rybalko <libtorrent@romanr.info>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 28
+
+AC_DEFUN([AX_BOOST_FILESYSTEM],
+[
+ AC_ARG_WITH([boost-filesystem],
+ AS_HELP_STRING([--with-boost-filesystem@<:@=special-lib@:>@],
+ [use the Filesystem library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-filesystem=boost_filesystem-gcc-mt ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_filesystem_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_filesystem_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ LIBS_SAVED=$LIBS
+ LIBS="$LIBS $BOOST_SYSTEM_LIB"
+ export LIBS
+
+ AC_CACHE_CHECK(whether the Boost::Filesystem library is available,
+ ax_cv_boost_filesystem,
+ [AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/filesystem/path.hpp>]],
+ [[using namespace boost::filesystem;
+ path my_path( "foo/bar/data.txt" );
+ return 0;]])],
+ ax_cv_boost_filesystem=yes, ax_cv_boost_filesystem=no)
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_filesystem" = "xyes"; then
+ AC_DEFINE(HAVE_BOOST_FILESYSTEM,,[define if the Boost::Filesystem library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+ if test "x$ax_boost_user_filesystem_lib" = "x"; then
+ for libextension in `ls -r $BOOSTLIBDIR/libboost_filesystem* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+ [link_filesystem="no"])
+ done
+ if test "x$link_filesystem" != "xyes"; then
+ for libextension in `ls -r $BOOSTLIBDIR/boost_filesystem* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+ [link_filesystem="no"])
+ done
+ fi
+ else
+ for ax_lib in $ax_boost_user_filesystem_lib boost_filesystem-$ax_boost_user_filesystem_lib; do
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_FILESYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_FILESYSTEM_LIB) link_filesystem="yes"; break],
+ [link_filesystem="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::Filesystem library!)
+ fi
+ if test "x$link_filesystem" != "xyes"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ LIBS="$LIBS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_boost_locale.m4 b/m4macros/ax_boost_locale.m4
new file mode 100644
index 0000000..0f7562e
--- /dev/null
+++ b/m4macros/ax_boost_locale.m4
@@ -0,0 +1,119 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_locale.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_LOCALE
+#
+# DESCRIPTION
+#
+# Test for System library from the Boost C++ libraries. The macro requires
+# a preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_LOCALE_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_LOCALE
+#
+# LICENSE
+#
+# Copyright (c) 2012 Xiyue Deng <manphiz@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 3
+
+AC_DEFUN([AX_BOOST_LOCALE],
+[
+ AC_ARG_WITH([boost-locale],
+ AS_HELP_STRING([--with-boost-locale@<:@=special-lib@:>@],
+ [use the Locale library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-locale=boost_locale-gcc-mt ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_locale_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_locale_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::Locale library is available,
+ ax_cv_boost_locale,
+ [AC_LANG_PUSH([C++])
+ CXXFLAGS_SAVE=$CXXFLAGS
+
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/locale.hpp>]],
+ [[boost::locale::generator gen;
+ std::locale::global(gen(""));]])],
+ ax_cv_boost_locale=yes, ax_cv_boost_locale=no)
+ CXXFLAGS=$CXXFLAGS_SAVE
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_locale" = "xyes"; then
+ AC_SUBST(BOOST_CPPFLAGS)
+
+ AC_DEFINE(HAVE_BOOST_LOCALE,,[define if the Boost::Locale library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+ LDFLAGS_SAVE=$LDFLAGS
+ if test "x$ax_boost_user_locale_lib" = "x"; then
+ for libextension in `ls $BOOSTLIBDIR/libboost_locale*.so* $BOOSTLIBDIR/libboost_locale*.dylib* $BOOSTLIBDIR/libboost_locale*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_locale.*\)\.so.*$;\1;' -e 's;^lib\(boost_locale.*\)\.dylib.*$;\1;' -e 's;^lib\(boost_locale.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
+ [link_locale="no"])
+ done
+ if test "x$link_locale" != "xyes"; then
+ for libextension in `ls $BOOSTLIBDIR/boost_locale*.dll* $BOOSTLIBDIR/boost_locale*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_locale.*\)\.dll.*$;\1;' -e 's;^\(boost_locale.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
+ [link_locale="no"])
+ done
+ fi
+
+ else
+ for ax_lib in $ax_boost_user_locale_lib boost_locale-$ax_boost_user_locale_lib; do
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_LOCALE_LIB="-l$ax_lib"; AC_SUBST(BOOST_LOCALE_LIB) link_locale="yes"; break],
+ [link_locale="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::Locale library!)
+ fi
+ if test "x$link_locale" = "xno"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_boost_regex.m4 b/m4macros/ax_boost_regex.m4
new file mode 100644
index 0000000..e2413c2
--- /dev/null
+++ b/m4macros/ax_boost_regex.m4
@@ -0,0 +1,111 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_regex.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_REGEX
+#
+# DESCRIPTION
+#
+# Test for Regex library from the Boost C++ libraries. The macro requires
+# a preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_REGEX_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_REGEX
+#
+# LICENSE
+#
+# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+# Copyright (c) 2008 Michael Tindal
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 23
+
+AC_DEFUN([AX_BOOST_REGEX],
+[
+ AC_ARG_WITH([boost-regex],
+ AS_HELP_STRING([--with-boost-regex@<:@=special-lib@:>@],
+ [use the Regex library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-regex=boost_regex-gcc-mt-d-1_33_1 ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_regex_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_regex_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::Regex library is available,
+ ax_cv_boost_regex,
+ [AC_LANG_PUSH([C++])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/regex.hpp>
+ ]],
+ [[boost::regex r(); return 0;]])],
+ ax_cv_boost_regex=yes, ax_cv_boost_regex=no)
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_regex" = "xyes"; then
+ AC_DEFINE(HAVE_BOOST_REGEX,,[define if the Boost::Regex library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+ if test "x$ax_boost_user_regex_lib" = "x"; then
+ for libextension in `ls $BOOSTLIBDIR/libboost_regex*.so* $BOOSTLIBDIR/libboost_regex*.dylib* $BOOSTLIBDIR/libboost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^lib\(boost_regex.*\)\.so.*$;\1;' -e 's;^lib\(boost_regex.*\)\.dylib.*;\1;' -e 's;^lib\(boost_regex.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+ [link_regex="no"])
+ done
+ if test "x$link_regex" != "xyes"; then
+ for libextension in `ls $BOOSTLIBDIR/boost_regex*.dll* $BOOSTLIBDIR/boost_regex*.a* 2>/dev/null | sed 's,.*/,,' | sed -e 's;^\(boost_regex.*\)\.dll.*$;\1;' -e 's;^\(boost_regex.*\)\.a.*$;\1;'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+ [link_regex="no"])
+ done
+ fi
+
+ else
+ for ax_lib in $ax_boost_user_regex_lib boost_regex-$ax_boost_user_regex_lib; do
+ AC_CHECK_LIB($ax_lib, main,
+ [BOOST_REGEX_LIB="-l$ax_lib"; AC_SUBST(BOOST_REGEX_LIB) link_regex="yes"; break],
+ [link_regex="no"])
+ done
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::Regex library!)
+ fi
+ if test "x$link_regex" != "xyes"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_boost_system.m4 b/m4macros/ax_boost_system.m4
new file mode 100644
index 0000000..323e2a6
--- /dev/null
+++ b/m4macros/ax_boost_system.m4
@@ -0,0 +1,121 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_system.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_SYSTEM
+#
+# DESCRIPTION
+#
+# Test for System library from the Boost C++ libraries. The macro requires
+# a preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_SYSTEM_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_SYSTEM
+#
+# LICENSE
+#
+# Copyright (c) 2008 Thomas Porschberg <thomas@randspringer.de>
+# Copyright (c) 2008 Michael Tindal
+# Copyright (c) 2008 Daniel Casimiro <dan.casimiro@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 20
+
+AC_DEFUN([AX_BOOST_SYSTEM],
+[
+ AC_ARG_WITH([boost-system],
+ AS_HELP_STRING([--with-boost-system@<:@=special-lib@:>@],
+ [use the System library from boost - it is possible to specify a certain library for the linker
+ e.g. --with-boost-system=boost_system-gcc-mt ]),
+ [
+ if test "$withval" = "no"; then
+ want_boost="no"
+ elif test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_system_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_system_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::System library is available,
+ ax_cv_boost_system,
+ [AC_LANG_PUSH([C++])
+ CXXFLAGS_SAVE=$CXXFLAGS
+ CXXFLAGS=
+
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <boost/system/error_code.hpp>]],
+ [[boost::system::error_category *a = 0;]])],
+ ax_cv_boost_system=yes, ax_cv_boost_system=no)
+ CXXFLAGS=$CXXFLAGS_SAVE
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_system" = "xyes"; then
+ AC_SUBST(BOOST_CPPFLAGS)
+
+ AC_DEFINE(HAVE_BOOST_SYSTEM,,[define if the Boost::System library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+ LDFLAGS_SAVE=$LDFLAGS
+ if test "x$ax_boost_user_system_lib" = "x"; then
+ for libextension in `ls -r $BOOSTLIBDIR/libboost_system* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+ [link_system="no"])
+ done
+ if test "x$link_system" != "xyes"; then
+ for libextension in `ls -r $BOOSTLIBDIR/boost_system* 2>/dev/null | sed 's,.*/,,' | sed -e 's,\..*,,'` ; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+ [link_system="no"])
+ done
+ fi
+
+ else
+ for ax_lib in $ax_boost_user_system_lib boost_system-$ax_boost_user_system_lib; do
+ AC_CHECK_LIB($ax_lib, exit,
+ [BOOST_SYSTEM_LIB="-l$ax_lib"; AC_SUBST(BOOST_SYSTEM_LIB) link_system="yes"; break],
+ [link_system="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::System library!)
+ fi
+ if test "x$link_system" = "xno"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_boost_thread.m4 b/m4macros/ax_boost_thread.m4
new file mode 100644
index 0000000..75e80e6
--- /dev/null
+++ b/m4macros/ax_boost_thread.m4
@@ -0,0 +1,187 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_boost_thread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_BOOST_THREAD
+#
+# DESCRIPTION
+#
+# Test for Thread library from the Boost C++ libraries. The macro requires
+# a preceding call to AX_BOOST_BASE. Further documentation is available at
+# <http://randspringer.de/boost/index.html>.
+#
+# This macro calls:
+#
+# AC_SUBST(BOOST_THREAD_LIB)
+#
+# And sets:
+#
+# HAVE_BOOST_THREAD
+#
+# LICENSE
+#
+# Copyright (c) 2009 Thomas Porschberg <thomas@randspringer.de>
+# Copyright (c) 2009 Michael Tindal
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 33
+
+AC_DEFUN([AX_BOOST_THREAD],
+[
+ AC_ARG_WITH([boost-thread],
+ AS_HELP_STRING([--with-boost-thread@<:@=special-lib@:>@],
+ [use the Thread library from boost -
+ it is possible to specify a certain library for the linker
+ e.g. --with-boost-thread=boost_thread-gcc-mt ]),
+ [
+ if test "$withval" = "yes"; then
+ want_boost="yes"
+ ax_boost_user_thread_lib=""
+ else
+ want_boost="yes"
+ ax_boost_user_thread_lib="$withval"
+ fi
+ ],
+ [want_boost="yes"]
+ )
+
+ if test "x$want_boost" = "xyes"; then
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ CPPFLAGS_SAVED="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
+ export CPPFLAGS
+
+ LDFLAGS_SAVED="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $BOOST_LDFLAGS"
+ export LDFLAGS
+
+ AC_CACHE_CHECK(whether the Boost::Thread library is available,
+ ax_cv_boost_thread,
+ [AC_LANG_PUSH([C++])
+ CXXFLAGS_SAVE=$CXXFLAGS
+
+ case "x$host_os" in
+ xsolaris )
+ CXXFLAGS="-pthreads $CXXFLAGS"
+ break;
+ ;;
+ xmingw32 )
+ CXXFLAGS="-mthreads $CXXFLAGS"
+ break;
+ ;;
+ *android* )
+ break;
+ ;;
+ * )
+ CXXFLAGS="-pthread $CXXFLAGS"
+ break;
+ ;;
+ esac
+
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[@%:@include <boost/thread/thread.hpp>]],
+ [[boost::thread_group thrds;
+ return 0;]])],
+ ax_cv_boost_thread=yes, ax_cv_boost_thread=no)
+ CXXFLAGS=$CXXFLAGS_SAVE
+ AC_LANG_POP([C++])
+ ])
+ if test "x$ax_cv_boost_thread" = "xyes"; then
+ case "x$host_os" in
+ xsolaris )
+ BOOST_CPPFLAGS="-pthreads $BOOST_CPPFLAGS"
+ break;
+ ;;
+ xmingw32 )
+ BOOST_CPPFLAGS="-mthreads $BOOST_CPPFLAGS"
+ break;
+ ;;
+ *android* )
+ break;
+ ;;
+ * )
+ BOOST_CPPFLAGS="-pthread $BOOST_CPPFLAGS"
+ break;
+ ;;
+ esac
+
+ AC_SUBST(BOOST_CPPFLAGS)
+
+ AC_DEFINE(HAVE_BOOST_THREAD,,
+ [define if the Boost::Thread library is available])
+ BOOSTLIBDIR=`echo $BOOST_LDFLAGS | sed -e 's/@<:@^\/@:>@*//'`
+
+ LDFLAGS_SAVE=$LDFLAGS
+ case "x$host_os" in
+ *bsd* )
+ LDFLAGS="-pthread $LDFLAGS"
+ break;
+ ;;
+ esac
+ if test "x$ax_boost_user_thread_lib" = "x"; then
+ for libextension in `ls -r $BOOSTLIBDIR/libboost_thread* 2>/dev/null | sed 's,.*/lib,,' | sed 's,\..*,,'`; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [link_thread="yes"; break],
+ [link_thread="no"])
+ done
+ if test "x$link_thread" != "xyes"; then
+ for libextension in `ls -r $BOOSTLIBDIR/boost_thread* 2>/dev/null | sed 's,.*/,,' | sed 's,\..*,,'`; do
+ ax_lib=${libextension}
+ AC_CHECK_LIB($ax_lib, exit,
+ [link_thread="yes"; break],
+ [link_thread="no"])
+ done
+ fi
+
+ else
+ for ax_lib in $ax_boost_user_thread_lib boost_thread-$ax_boost_user_thread_lib; do
+ AC_CHECK_LIB($ax_lib, exit,
+ [link_thread="yes"; break],
+ [link_thread="no"])
+ done
+
+ fi
+ if test "x$ax_lib" = "x"; then
+ AC_MSG_ERROR(Could not find a version of the Boost::Thread library!)
+ fi
+ if test "x$link_thread" = "xno"; then
+ AC_MSG_ERROR(Could not link against $ax_lib !)
+ else
+ BOOST_THREAD_LIB="-l$ax_lib"
+ case "x$host_os" in
+ *bsd* )
+ BOOST_LDFLAGS="-pthread $BOOST_LDFLAGS"
+ break;
+ ;;
+ xsolaris )
+ BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
+ break;
+ ;;
+ xmingw32 )
+ break;
+ ;;
+ *android* )
+ break;
+ ;;
+ * )
+ BOOST_THREAD_LIB="$BOOST_THREAD_LIB -lpthread"
+ break;
+ ;;
+ esac
+ AC_SUBST(BOOST_THREAD_LIB)
+ fi
+ fi
+
+ CPPFLAGS="$CPPFLAGS_SAVED"
+ LDFLAGS="$LDFLAGS_SAVED"
+ fi
+])
diff --git a/m4macros/ax_check_gl.m4 b/m4macros/ax_check_gl.m4
index 3530664..39423bf 100644
--- a/m4macros/ax_check_gl.m4
+++ b/m4macros/ax_check_gl.m4
@@ -1,66 +1,78 @@
-# -*- mode: autoconf -*-
+# ===========================================================================
+# http://www.gnu.org/software/autoconf-archive/ax_check_gl.html
+# ===========================================================================
#
-# AX_CHECK_GL
+# SYNOPSIS
#
-# Check for an OpenGL implementation. If GL is found, the required compiler
-# and linker flags are included in the output variables "GL_CFLAGS" and
-# "GL_LIBS", respectively. If no usable GL implementation is found, "no_gl"
-# is set to "yes".
+# AX_CHECK_GL
#
-# If the header "GL/gl.h" is found, "HAVE_GL_GL_H" is defined. If the header
-# "OpenGL/gl.h" is found, HAVE_OPENGL_GL_H is defined. These preprocessor
-# definitions may not be mutually exclusive.
+# DESCRIPTION
#
-# version: 2.7
-# author: Braden McDaniel <braden@endoframe.com>
+# Check for an OpenGL implementation. If GL is found, the required
+# compiler and linker flags are included in the output variables
+# "GL_CFLAGS", "GL_LIBS", "GL_LDFLAGS", respectively. If no usable GL
+# implementation is found, "no_gl" is set to "yes".
#
-# 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
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
+# You could disable OpenGL using --with-gl=no
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# You could choose a specific OpenGL libs using --with-gl=lib_name
#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# Under darwin, cygwin and mingw target you could prefer the OpenGL
+# implementation that link with X setting --with-gl=x or without X support
+# with --with-gl=nox. Notes that this script try to guess the right
+# implementation.
#
-# As a special exception, the you may copy, distribute and modify the
-# configure scripts that are the output of Autoconf when processing
-# the Macro. You need not follow the terms of the GNU General Public
-# License when using or distributing such scripts.
+# If the header "GL/gl.h" is found, "HAVE_GL_GL_H" is defined. If the
+# header "OpenGL/gl.h" is found, HAVE_OPENGL_GL_H is defined. These
+# preprocessor definitions may not be mutually exclusive.
#
-AC_DEFUN([AX_CHECK_GL],
-[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_PATH_X])dnl
-AC_REQUIRE([AC_PROG_SED])dnl
-
-AC_LANG_PUSH([C])
-AX_LANG_COMPILER_MS
-
+# You should use something like this in your headers:
+#
+# #if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+# # include <windows.h>
+# #endif
+# #ifdef HAVE_GL_GL_H
+# # include <GL/gl.h>
+# #elif defined(HAVE_OPENGL_GL_H)
+# # include <OpenGL/gl.h>
+# #else
+# # error no gl.h
+# #endif
+#
+# LICENSE
+#
+# Copyright (c) 2009 Braden McDaniel <braden@endoframe.com>
+# Copyright (c) 2012 Bastien Roucaries <roucaries.bastien+autoconf@gmail.com>
#
-# Use x_includes and x_libraries if they have been set (presumably by
-# AC_PATH_X).
+# 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 the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
#
-AS_IF([test X$no_x != Xyes -a -n "$x_includes"],
- [GL_CFLAGS="-I$x_includes $GL_CFLAGS"])
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+# Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception, the respective Autoconf Macro's copyright owner
+# gives unlimited permission to copy, distribute and modify the configure
+# scripts that are the output of Autoconf when processing the Macro. You
+# need not follow the terms of the GNU General Public License when using
+# or distributing such scripts, even though portions of the text of the
+# Macro appear in them. The GNU General Public License (GPL) does govern
+# all other use of the material that constitutes the Autoconf Macro.
+#
+# This special exception to the GPL applies to versions of the Autoconf
+# Macro released by the Autoconf Archive. When you make and distribute a
+# modified version of the Autoconf Macro, you may extend this special
+# exception to the GPL to apply to your modified version as well.
-AC_CHECK_HEADERS([windows.h])
+#serial 17
-ax_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$GL_CFLAGS $CPPFLAGS"
-AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h], , , [
-# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
-# include <windows.h>
-# endif
-])
-CPPFLAGS=$ax_save_CPPFLAGS
-
-m4_define([AX_CHECK_GL_PROGRAM],
+m4_define([_AX_CHECK_GL_PROGRAM],
[AC_LANG_PROGRAM([[
# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
# include <windows.h>
@@ -71,78 +83,477 @@ m4_define([AX_CHECK_GL_PROGRAM],
# include <OpenGL/gl.h>
# else
# error no gl.h
-# endif]],
- [[glBegin(0)]])])
-
-m4_define([AX_CHECK_GL_GLX_PROGRAM],
- [AC_LANG_PROGRAM([[
-# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
-# include <windows.h>
# endif
-# ifdef HAVE_GL_GL_H
-# include <GL/gl.h>
-# elif defined(HAVE_OPENGL_GL_H)
-# include <OpenGL/gl.h>
-# else
-# error no gl.h
-# endif]],
- [[glXQueryVersion(0, 0, 0)]])])
-
-AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
-[ax_cv_check_gl_libgl=no
-case $host_cpu in
- x86_64) ax_check_gl_libdir=lib64 ;;
- *) ax_check_gl_libdir=lib ;;
-esac
-ax_save_CPPFLAGS=$CPPFLAGS
-CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
-ax_save_LDFLAGS=$LDFLAGS
-AS_IF([test X$no_x != Xyes -a -n "$x_libraries"],
- [LDFLAGS="$LDFLAGS -L$x_libraries"])
-ax_save_LIBS=$LIBS
-ax_check_libs="-lopengl32 -lGL"
-for ax_lib in $ax_check_libs; do
- AS_IF([test X$ax_compiler_ms = Xyes],
- [ax_try_lib=`echo $ax_lib | $SED -e 's/^-l//' -e 's/$/.lib/'`],
- [ax_try_lib=$ax_lib])
- LDFLAGS="$ax_save_LDFLAGS $GL_LIBS"
- LIBS="$ax_try_lib $ax_save_LIBS"
-AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
- [ax_cv_check_gl_libgl=$ax_try_lib; break],
- [ax_check_gl_dylib_flag='-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib'
- LDFLAGS="$ax_save_LDFLAGS $GL_LIBS $ax_check_gl_dylib_flag"
- AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
- [ax_cv_check_gl_libgl="$ax_check_gl_dylib_flag $ax_try_lib"; break])])
-done
-
-#
-# If no_x is "yes", we don't want to wind up using a libGL that is
-# linked with X11. Test to see if the found libGL includes GLX
-# functions. If it does and no_x is "yes", we want to reset
-# ax_cv_check_gl_libgl back to "no".
-#
-# Note that LDFLAGS and LIBS should still have whatever values they
-# had when we broke out of the test loop above; use that.
-#
-AS_IF([test "X$ax_cv_check_gl_libgl" != Xno],
- [AC_LINK_IFELSE([AX_CHECK_GL_GLX_PROGRAM],
- [AS_IF([test X$no_x = Xyes],
- [ax_cv_check_gl_libgl=no])])])
-
-LIBS=$ax_save_LIBS
-AS_IF([test "X$ax_cv_check_gl_libgl" = Xno],
- [LDFLAGS="$ax_save_LDFLAGS -framework OpenGL"
- AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
- [ax_cv_check_gl_libgl='-framework OpenGL'])])
-
-LDFLAGS=$ax_save_LDFLAGS
-CPPFLAGS=$ax_save_CPPFLAGS])
-
-AS_IF([test "X$ax_cv_check_gl_libgl" = Xno],
- [no_gl=yes; GL_CFLAGS=""; GL_LIBS=""],
- [GL_LIBS="$ax_cv_check_gl_libgl $GL_LIBS"])
-AC_LANG_POP([C])
-
-AC_SUBST([GL_CFLAGS])
-AC_SUBST([GL_LIBS])
+]],[[glBegin(0)]])])
+
+dnl Default include : add windows.h
+dnl see http://www.opengl.org/wiki/Platform_specifics:_Windows
+dnl (acceded 20120801)
+AC_DEFUN([_AX_CHECK_GL_INCLUDES_DEFAULT],dnl
+[
+ AC_INCLUDES_DEFAULT
+ [
+ # if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+ # include <windows.h>
+ # endif
+ ]
+])
+
+dnl local save flags
+AC_DEFUN([_AX_CHECK_GL_SAVE_FLAGS],
+[dnl
+ax_check_gl_saved_libs="${LIBS}"
+ax_check_gl_saved_cflags="${CFLAGS}"
+ax_check_gl_saved_cppflags="${CPPFLAGS}"
+ax_check_gl_saved_ldflags="${LDFLAGS}"
+])
+
+dnl local restore flags
+AC_DEFUN([_AX_CHECK_GL_RESTORE_FLAGS],
+[dnl
+LIBS="${ax_check_gl_saved_libs}"
+CFLAGS="${ax_check_gl_saved_cflags}"
+CPPFLAGS="${ax_check_gl_saved_cppflags}"
+LDFLAGS="${ax_check_gl_saved_ldflags}"
+])
+
+dnl default switch case failure
+AC_DEFUN([_AX_CHECK_MSG_FAILURE_ORDER],
+[dnl
+ AC_MSG_FAILURE([Order logic in ax_check_gl is buggy])
+])
+
+# set the varible ax_check_gl_need_x
+# this variable determine if we need opengl that link with X
+# value are default aka try the first library wether if it link or not with x
+# yes that means we need a opengl with x
+# no that means we do not need an opengl with x
+AC_DEFUN([_AX_CHECK_GL_NEED_X],
+[dnl
+ # do not check if empty : allow a subroutine to modify the choice
+ AS_IF([test "X$ax_check_gl_need_x" = "X"],
+ [ax_check_gl_need_x="default"
+ AS_IF([test "X$no_x" = "Xyes"],[ax_check_gl_need_x="no"])
+ AS_IF([test "X$ax_check_gl_want_gl" = "Xnox"],[ax_check_gl_need_x="no"])
+ AS_IF([test "X$ax_check_gl_want_gl" = "Xx"],[ax_check_gl_need_x="yes"])])
+])
+
+# compile the example program
+AC_DEFUN([_AX_CHECK_GL_COMPILE],
+[dnl
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ AC_COMPILE_IFELSE([_AX_CHECK_GL_PROGRAM],
+ [ax_check_gl_compile_opengl="yes"],
+ [ax_check_gl_compile_opengl="no"])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+])
+
+# compile the example program (cache)
+AC_DEFUN([_AX_CHECK_GL_COMPILE_CV],
+[dnl
+ AC_CACHE_CHECK([for compiling a minimal OpenGL program],[ax_cv_check_gl_compile_opengl],
+ [_AX_CHECK_GL_COMPILE()
+ ax_cv_check_gl_compile_opengl="${ax_check_gl_compile_opengl}"])
+ ax_check_gl_compile_opengl="${ax_cv_check_gl_compile_opengl}"
+])
+
+# link the example program
+AC_DEFUN([_AX_CHECK_GL_LINK],
+[dnl
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ LIBS="${GL_LIBS} ${LIBS}"
+ LDFLAGS="${GL_LDFLAGS} ${LDFLAGS}"
+ AC_LINK_IFELSE([_AX_CHECK_GL_PROGRAM],
+ [ax_check_gl_link_opengl="yes"],
+ [ax_check_gl_link_opengl="no"])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+])
+
+# link the example program (cache)
+AC_DEFUN([_AX_CHECK_GL_LINK_CV],
+[dnl
+ AC_CACHE_CHECK([for linking a minimal OpenGL program],[ax_cv_check_gl_link_opengl],
+ [_AX_CHECK_GL_LINK()
+ ax_cv_check_gl_link_opengl="${ax_check_gl_link_opengl}"])
+ ax_check_gl_link_opengl="${ax_cv_check_gl_link_opengl}"
+])
+
+dnl Check headers manually (default case)
+AC_DEFUN([_AX_CHECK_GL_MANUAL_HEADERS_DEFAULT],
+[AC_REQUIRE([AC_PATH_XTRA])
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ # see comment in _AX_CHECK_GL_INCLUDES_DEFAULT
+ AC_CHECK_HEADERS([windows.h],[],[],[AC_INCLUDES_DEFAULT])
+ # FIXME: use extra cflags
+ AC_CHECK_HEADERS([GL/gl.h],[ax_check_gl_have_headers="yes"],
+ [ax_check_gl_have_headers_headers="no"],
+ [_AX_CHECK_GL_INCLUDES_DEFAULT()])
+ # do not try darwin specific OpenGl/gl.h
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+])
+
+# darwin headers without X
+AC_DEFUN([_AX_CHECK_GL_MANUAL_HEADERS_DARWIN_NOX],[
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ # FIXME: use -framework opengl as an extra cflags
+ CFLAGS="-framework opengl ${GL_CFLAGS} ${CFLAGS}"
+ AC_CHECK_HEADERS([OpenGL/gl.h],[ax_check_gl_have_headers="yes"],
+ [ax_check_gl_have_headers_headers="no"],
+ [_AX_CHECK_GL_INCLUDES_DEFAULT()])
+ AS_IF([test "X$ax_check_gl_have_headers" = "yes"],
+ [GL_CFLAGS="-framework opengl ${GL_CFLAGS}"])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ AC_LANG_POP([C])
+])
+
+# check header for darwin
+AC_DEFUN([_AX_CHECK_GL_MANUAL_HEADERS_DARWIN],
+[AC_REQUIRE([_AX_CHECK_GL_NEED_X])dnl
+ AS_CASE(["$ax_check_gl_order"],
+ # try to use framework
+ ["gl"],[_AX_CHECK_GL_MANUAL_HEADERS_DARWIN_NOX()],
+ # try to use framework then mesa (X)
+ ["gl mesagl"],[
+ _AX_CHECK_GL_MANUAL_HEADERS_DARWIN_NOX()
+ AS_IF([test "X$ax_check_gl_have_headers" = "yes"],
+ [ax_check_gl_order="gl"
+ ax_check_gl_need_x="yes"],
+ [ax_check_gl_order="mesagl gl"
+ ax_check_gl_need_x="no"]
+ # retry with general test
+ _AX_CHECK_GL_MANUAL_HEADERS_DEFAULT()])],
+ ["mesagl gl"],[
+ _AX_CHECK_GL_MANUAL_HEADERS_DEFAULT()
+ AS_IF([test "X$ax_check_gl_have_headers" = "yes"],
+ [ax_check_gl_order="mesagl gl"
+ ax_check_gl_need_x="no"],
+ [ax_check_gl_order="gl"
+ ax_check_gl_need_x="yes"
+ # retry with framework
+ _AX_CHECK_GL_MANUAL_HEADERS_DARWIN_NOX()])],
+ [_AX_CHECK_MSG_FAILURE_ORDER()])
+])
+
+dnl Check headers manually: subroutine must set ax_check_gl_have_headers={yes,no}
+AC_DEFUN([_AX_CHECK_GL_MANUAL_HEADERS],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+ AS_CASE([${host}],
+ [*-darwin*],[_AX_CHECK_GL_MANUAL_HEADERS_DARWIN],
+ [_AX_CHECK_GL_MANUAL_HEADERS_DEFAULT()])
+ AC_CACHE_CHECK([for OpenGL headers],[ax_cv_check_gl_have_headers],
+ [ax_cv_check_gl_have_headers="${ax_check_gl_have_headers}"])
+])
+
+# dnl try to found library (generic case)
+# dnl $1 is set to the library to found
+AC_DEFUN([_AX_CHECK_GL_MANUAL_LIBS_GENERIC],
+[dnl
+ ax_check_gl_manual_libs_generic_extra_libs="$1"
+ AS_IF([test "X$ax_check_gl_manual_libs_generic_extra_libs" = "X"],
+ [AC_MSG_ERROR([AX_CHECK_GL_MANUAL_LIBS_GENERIC argument must no be empty])])
+
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ LIBS="${GL_LIBS} ${LIBS}"
+ AC_SEARCH_LIBS([glBegin],[$ax_check_gl_manual_libs_generic_extra_libs],
+ [ax_check_gl_lib_opengl="yes"],
+ [ax_check_gl_lib_opengl="no"])
+ AS_CASE([$ac_cv_search_glBegin],
+ ["none required"],[],
+ [no],[],
+ [GL_LIBS="${ac_cv_search_glBegin} ${GL_LIBS}"])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_PUSH([C])
+])
+
+# dnl try to found lib under darwin
+# darwin opengl hack
+# see http://web.archive.org/web/20090410052741/http://developer.apple.com/qa/qa2007/qa1567.html
+# and http://web.eecs.umich.edu/~sugih/courses/eecs487/glut-howto/
+AC_DEFUN([_AX_CHECK_GL_MANUAL_LIBS_DARWIN],
+[# ldhack list
+ ldhack1 = "-Wl,-framework,OpenGL"
+ ldhack2 = "-Wl,-dylib_file,/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
+ ldhack3 = "$ldhack1,$ldhack2"
+
+ # select hack
+ AS_IF([test "X$ax_check_gl_need_x" = "Xyes"],
+ [# libs already set by -framework cflag
+ darwinlibs=""
+ ldhacks="$ldhack1 $ldhack2 $ldhack3"],
+ [# do not use framework ldflags in case of x version
+ darwinlibs="GL gl MesaGL"
+ ldhack="$ldhack2"])
+
+ ax_check_gl_link_opengl="no"
+ for extralibs in " " $darwinlibs; do
+ for extraldflags in " " ldhacks; do
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ LIBS="$extralibs ${GL_LIBS} ${LIBS}"
+ LDFLAGS="$extraldflags ${GL_LDFLAGS} ${LDFLAGS}"
+ AC_LINK_IFELSE([_AX_CHECK_GL_PROGRAM],
+ [ax_check_gl_link_opengl="yes"],
+ [ax_check_gl_link_opengl="no"])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+ AS_IF([test "X$ax_check_gl_link_opengl" = "Xyes"],[break])
+ done;
+ AS_IF([test "X$ax_check_gl_link_opengl" = "Xyes"],[break])
+ done;
+ GL_LIBS="$extralibs ${GL_LIBS}"
+ GL_LDFLAGS="$extraldflags ${GL_LDFLAGS}"
+])
+
+dnl Check library manually: subroutine must set
+dnl $ax_check_gl_lib_opengl={yes,no}
+AC_DEFUN([_AX_CHECK_GL_MANUAL_LIBS],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+ AS_CASE([${host}],
+ [*-darwin*],[_AX_CHECK_GL_MANUAL_LIBS_DARWIN()],
+ # try first cygwin version
+ [*-cygwin*|*-mingw*],[
+ AS_CASE(["$ax_check_gl_order"],
+ ["gl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([opengl32])],
+ ["gl mesagl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([opengl32 GL gl MesaGL])],
+ ["mesagl gl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([GL gl MesaGL opengl32])],
+ [_AX_CHECK_MSG_FAILURE_ORDER()])],
+ [AS_CASE(["$ax_check_gl_order"],
+ ["gl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([GL gl])],
+ ["gl mesagl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([GL gl MesaGL])],
+ ["mesagl gl"],[_AX_CHECK_GL_MANUAL_LIBS_GENERIC([MesaGL GL gl])],
+ [_AX_CHECK_MSG_FAILURE_ORDER()])]
+ )
+
+ AC_CACHE_CHECK([for OpenGL libraries],[ax_cv_check_gl_lib_opengl],
+ [ax_cv_check_gl_lib_opengl="${ax_check_gl_lib_opengl}"])
+ ax_check_gl_lib_opengl="${ax_cv_check_gl_lib_opengl}"
+])
+
+# manually check aka old way
+AC_DEFUN([_AX_CHECK_GL_MANUAL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_REQUIRE([AC_PATH_XTRA])dnl
+
+ no_gl="yes"
+
+ _AX_CHECK_GL_MANUAL_HEADERS()
+ AS_IF([test "X$ax_check_gl_have_headers" = "Xyes"],
+ [_AX_CHECK_GL_COMPILE_CV()],
+ [ax_check_gl_compile_opengl=no])
+
+ AS_IF([test "X$ax_check_gl_compile_opengl" = "Xyes"],
+ [_AX_CHECK_GL_MANUAL_LIBS],
+ [ax_check_gl_lib_opengl=no])
+
+ AS_IF([test "X$ax_check_gl_lib_opengl" = "Xyes"],
+ [_AX_CHECK_GL_LINK_CV()],
+ [ax_check_gl_link_opengl=no])
+
+ AS_IF([test "X$ax_check_gl_link_opengl" = "Xyes"],
+ [no_gl="no"],
+ [no_gl="yes"])
])dnl
+
+
+# try to test using pkgconfig: set ax_check_gl_pkg_config=no if not found
+AC_DEFUN([_AX_CHECK_GL_PKG_CONFIG],dnl
+[dnl
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
+ dnl First try mesagl
+ AS_CASE(["$ax_check_gl_order"],
+ ["gl"],[PKG_CHECK_MODULES([GL],[mesagl],
+ [ax_check_gl_pkg_config=yes],
+ [ax_check_gl_pkg_config=no])],
+ ["gl mesagl"],[PKG_CHECK_MODULES([GL],[gl],
+ [ax_check_gl_pkg_config=yes],
+ [PKG_CHECK_MODULES([GL],[mesagl],
+ [ax_check_gl_pkg_config=yes],
+ [ax_check_gl_pkg_config=no])])],
+ ["mesagl gl"],[PKG_CHECK_MODULES([GL],[mesagl],
+ [ax_check_gl_pkg_config=yes],
+ [PKG_CHECK_MODULES([GL],[gl],
+ [ax_check_gl_pkg_config=yes],
+ [ax_check_gl_pkg_config=no])])],
+ [_AX_CHECK_MSG_FAILURE_ORDER])
+
+ AS_IF([test "X$ax_check_gl_pkg_config" = "Xyes"],[
+ # check headers
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ AC_CHECK_HEADERS([windows.h],[],[],[AC_INCLUDES_DEFAULT])
+ AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h],
+ [ax_check_gl_have_headers="yes";break],
+ [ax_check_gl_have_headers_headers="no"],
+ [_AX_CHECK_GL_INCLUDES_DEFAULT()])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+ AC_CACHE_CHECK([for OpenGL headers],[ax_cv_check_gl_have_headers],
+ [ax_cv_check_gl_have_headers="${ax_check_gl_have_headers}"])
+
+ # pkgconfig library are suposed to work ...
+ AS_IF([test "X$ax_cv_check_gl_have_headers" = "Xno"],
+ [AC_MSG_ERROR("Pkgconfig detected OpenGL library has no headers!")])
+
+ _AX_CHECK_GL_COMPILE_CV()
+ AS_IF([test "X$ax_cv_check_gl_compile_opengl" = "Xno"],
+ [AC_MSG_ERROR("Pkgconfig detected opengl library could not be used for compiling minimal program!")])
+
+ _AX_CHECK_GL_LINK_CV()
+ AS_IF([test "X$ax_cv_check_gl_link_opengl" = "Xno"],
+ [AC_MSG_ERROR("Pkgconfig detected opengl library could not be used for linking minimal program!")])
+ ],[ax_check_gl_pkg_config=no])
+])
+
+# test if gl link with X
+AC_DEFUN([_AX_CHECK_GL_WITH_X],
+[
+ # try if opengl need X
+ AC_LANG_PUSH([C])
+ _AX_CHECK_GL_SAVE_FLAGS()
+ CFLAGS="${GL_CFLAGS} ${CFLAGS}"
+ LIBS="${GL_LIBS} ${LIBS}"
+ LDFLAGS="${GL_LDFLAGS} ${LDFLAGS}"
+ AC_LINK_IFELSE([AC_LANG_CALL([], [glXQueryVersion])],
+ [ax_check_gl_link_implicitly_with_x="yes"],
+ [ax_check_gl_link_implicitly_with_x="no"])
+ _AX_CHECK_GL_RESTORE_FLAGS()
+ AC_LANG_POP([C])
+])
+
+# internal routine: entry point if gl not disable
+AC_DEFUN([_AX_CHECK_GL],[dnl
+ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+ AC_REQUIRE([AC_PATH_X])dnl
+
+ # does we need X or not
+ _AX_CHECK_GL_NEED_X()
+
+ # try first pkgconfig
+ AC_MSG_CHECKING([for a working OpenGL implementation by pkg-config])
+ AS_IF([test "X${PKG_CONFIG}" = "X"],
+ [ AC_MSG_RESULT([no])
+ ax_check_gl_pkg_config=no],
+ [ AC_MSG_RESULT([yes])
+ _AX_CHECK_GL_PKG_CONFIG()])
+
+ # if no pkgconfig or pkgconfig fail try manual way
+ AS_IF([test "X$ax_check_gl_pkg_config" = "Xno"],
+ [_AX_CHECK_GL_MANUAL()],
+ [no_gl=no])
+
+ # test if need to test X compatibility
+ AS_IF([test $no_gl = no],
+ [# test X compatibility
+ AS_IF([test X$ax_check_gl_need_x != "Xdefault"],
+ [AC_CACHE_CHECK([wether OpenGL link implictly with X],[ax_cv_check_gl_link_with_x],
+ [_AX_CHECK_GL_WITH_X()
+ ax_cv_check_gl_link_with_x="${ax_check_gl_link_implicitly_with_x}"])
+ AS_IF([test "X${ax_cv_check_gl_link_with_x}" = "X${ax_check_gl_need_x}"],
+ [no_gl="no"],
+ [no_gl=yes])])
+ ])
+])
+
+# ax_check_gl entry point
+AC_DEFUN([AX_CHECK_GL],
+[AC_REQUIRE([AC_PATH_X])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ AC_ARG_WITH([gl],
+ [AS_HELP_STRING([--with-gl@<:@=ARG@:>@],
+ [use opengl (ARG=yes),
+ using the specific lib (ARG=<lib>),
+ using the OpenGL lib that link with X (ARG=x),
+ using the OpenGL lib that link without X (ARG=nox),
+ or disable it (ARG=no)
+ @<:@ARG=yes@:>@ ])],
+ [
+ AS_CASE(["$withval"],
+ ["no"|"NO"],[ax_check_gl_want_gl="no"],
+ ["yes"|"YES"],[ax_check_gl_want_gl="yes"],
+ [ax_check_gl_want_gl="$withval"])
+ ],
+ [ax_check_gl_want_gl="yes"])
+
+ dnl compatibility with AX_HAVE_OPENGL
+ AC_ARG_WITH([Mesa],
+ [AS_HELP_STRING([--with-Mesa@<:@=ARG@:>@],
+ [Prefer the Mesa library over a vendors native OpenGL (ARG=yes except on mingw ARG=no),
+ @<:@ARG=yes@:>@ ])],
+ [
+ AS_CASE(["$withval"],
+ ["no"|"NO"],[ax_check_gl_want_mesa="no"],
+ ["yes"|"YES"],[ax_check_gl_want_mesa="yes"],
+ [AC_MSG_ERROR([--with-mesa flag is only yes no])])
+ ],
+ [ax_check_gl_want_mesa="default"])
+
+ # check consistency of parameters
+ AS_IF([test "X$have_x" = "Xdisabled"],
+ [AS_IF([test X$ax_check_gl_want_gl = "Xx"],
+ [AC_MSG_ERROR([You prefer OpenGL with X and asked for no X support])])])
+
+ AS_IF([test "X$have_x" = "Xdisabled"],
+ [AS_IF([test X$x_check_gl_want_mesa = "Xyes"],
+ [AC_MSG_WARN([You prefer mesa but you disable X. Disable mesa because mesa need X])
+ ax_check_gl_want_mesa="no"])])
+
+ # mesa default means yes except on mingw
+ AC_MSG_CHECKING([wether we should prefer mesa for opengl implementation])
+ AS_IF([test X$ax_check_gl_want_mesa = "Xdefault"],
+ [AS_CASE([${host}],
+ [*-mingw*],[ax_check_gl_want_mesa=no],
+ [ax_check_gl_want_mesa=yes])])
+ AC_MSG_RESULT($ax_check_gl_want_mesa)
+
+ # set default guess order
+ AC_MSG_CHECKING([for a working OpenGL order detection])
+ AS_IF([test "X$no_x" = "Xyes"],
+ [ax_check_gl_order="gl"],
+ [AS_IF([test X$ax_check_gl_want_mesa = "Xyes"],
+ [ax_check_gl_order="mesagl gl"],
+ [ax_check_gl_order="gl mesagl"])])
+ AC_MSG_RESULT($ax_check_gl_order)
+
+ # set flags
+ no_gl="yes"
+ have_GL="no"
+
+ # now do the real testing
+ AS_IF([test X$ax_check_gl_want_gl != "Xno"],
+ [_AX_CHECK_GL()])
+
+ AC_MSG_CHECKING([for a working OpenGL implementation])
+ AS_IF([test "X$no_gl" = "Xno"],
+ [have_GL="yes"
+ AC_MSG_RESULT([yes])
+ AC_MSG_CHECKING([for CFLAGS needed for OpenGL])
+ AC_MSG_RESULT(["${GL_CFLAGS}"])
+ AC_MSG_CHECKING([for LIBS needed for OpenGL])
+ AC_MSG_RESULT(["${GL_LIBS}"])
+ AC_MSG_CHECKING([for LDFLAGS needed for OpenGL])
+ AC_MSG_RESULT(["${GL_LDFLAGS}"])],
+ [AC_MSG_RESULT([no])
+ GL_CFLAGS=""
+ GL_LIBS=""
+ GL_LDFLAGS=""])
+
+ AC_SUBST([GL_CFLAGS])
+ AC_SUBST([GL_LIBS])
+ AC_SUBST([GL_LDFLAGS])
+])
diff --git a/m4macros/ax_pthread.m4 b/m4macros/ax_pthread.m4
index e20a388..d383ad5 100644
--- a/m4macros/ax_pthread.m4
+++ b/m4macros/ax_pthread.m4
@@ -82,7 +82,7 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 17
+#serial 21
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
@@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
- AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
- AC_MSG_RESULT($ax_pthread_ok)
+ AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+ AC_MSG_RESULT([$ax_pthread_ok])
if test x"$ax_pthread_ok" = xno; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
@@ -145,8 +145,8 @@ ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mt
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
-case "${host_cpu}-${host_os}" in
- *solaris*)
+case ${host_os} in
+ solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
@@ -159,11 +159,25 @@ case "${host_cpu}-${host_os}" in
ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
;;
- *-darwin*)
+ darwin*)
ax_pthread_flags="-pthread $ax_pthread_flags"
;;
esac
+# Clang doesn't consider unrecognized options an error unless we specify
+# -Werror. We throw in some extra Clang-specific options to ensure that
+# this doesn't happen for GCC, which also accepts -Werror.
+
+AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
+save_CFLAGS="$CFLAGS"
+ax_pthread_extra_flags="-Werror"
+CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
+ [AC_MSG_RESULT([yes])],
+ [ax_pthread_extra_flags=
+ AC_MSG_RESULT([no])])
+CFLAGS="$save_CFLAGS"
+
if test x"$ax_pthread_ok" = xno; then
for flag in $ax_pthread_flags; do
@@ -178,7 +192,7 @@ for flag in $ax_pthread_flags; do
;;
pthread-config)
- AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+ AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
if test x"$ax_pthread_config" = xno; then continue; fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
@@ -193,7 +207,7 @@ for flag in $ax_pthread_flags; do
save_LIBS="$LIBS"
save_CFLAGS="$CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
@@ -219,7 +233,7 @@ for flag in $ax_pthread_flags; do
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
- AC_MSG_RESULT($ax_pthread_ok)
+ AC_MSG_RESULT([$ax_pthread_ok])
if test "x$ax_pthread_ok" = xyes; then
break;
fi
@@ -245,61 +259,70 @@ if test "x$ax_pthread_ok" = xyes; then
[attr_name=$attr; break],
[])
done
- AC_MSG_RESULT($attr_name)
+ AC_MSG_RESULT([$attr_name])
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
- AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+ AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
[Define to necessary symbol if this constant
uses a non-standard name on your system.])
fi
AC_MSG_CHECKING([if more special flags are required for pthreads])
flag=no
- case "${host_cpu}-${host_os}" in
- *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
- *-osf* | *-hpux*) flag="-D_REENTRANT";;
- *solaris*)
+ case ${host_os} in
+ aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
+ osf* | hpux*) flag="-D_REENTRANT";;
+ solaris*)
if test "$GCC" = "yes"; then
flag="-D_REENTRANT"
else
+ # TODO: What about Clang on Solaris?
flag="-mt -D_REENTRANT"
fi
;;
esac
- AC_MSG_RESULT(${flag})
+ AC_MSG_RESULT([$flag])
if test "x$flag" != xno; then
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
fi
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
- ax_cv_PTHREAD_PRIO_INHERIT, [
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
+ [ax_cv_PTHREAD_PRIO_INHERIT], [
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+ [[int i = PTHREAD_PRIO_INHERIT;]])],
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
[ax_cv_PTHREAD_PRIO_INHERIT=no])
])
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
- AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
+ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
LIBS="$save_LIBS"
CFLAGS="$save_CFLAGS"
- # More AIX lossage: must compile with xlc_r or cc_r
- if test x"$GCC" != xyes; then
- AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
- else
- PTHREAD_CC=$CC
+ # More AIX lossage: compile with *_r variant
+ if test "x$GCC" != xyes; then
+ case $host_os in
+ aix*)
+ AS_CASE(["x/$CC"],
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+ [#handle absolute path differently from PATH based program lookup
+ AS_CASE(["x$CC"],
+ [x/*],
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+ ;;
+ esac
fi
-else
- PTHREAD_CC="$CC"
fi
-AC_SUBST(PTHREAD_LIBS)
-AC_SUBST(PTHREAD_CFLAGS)
-AC_SUBST(PTHREAD_CC)
+test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
+
+AC_SUBST([PTHREAD_LIBS])
+AC_SUBST([PTHREAD_CFLAGS])
+AC_SUBST([PTHREAD_CC])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test x"$ax_pthread_ok" = xyes; then
- ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+ ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
:
else
ax_pthread_ok=no