78 lines
2.0 KiB
Plaintext
78 lines
2.0 KiB
Plaintext
|
dnl Check for baseline language coverage in the compiler for the C++0x standard.
|
||
|
# AC_COMPILE_STDCXX_OX
|
||
|
AC_DEFUN([AC_COMPILE_STDCXX_0X], [
|
||
|
AC_CACHE_CHECK(if compiler supports C++0x features without additional flags,
|
||
|
ac_cv_cxx_compile_cxx0x_native,
|
||
|
[AC_LANG_SAVE
|
||
|
AC_LANG_CPLUSPLUS
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <unordered_map>
|
||
|
#include <unordered_set>
|
||
|
template <typename T>
|
||
|
struct check
|
||
|
{
|
||
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||
|
};
|
||
|
|
||
|
typedef check<check<bool>> right_angle_brackets;
|
||
|
|
||
|
int a;
|
||
|
decltype(a) b;
|
||
|
],,
|
||
|
ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no)
|
||
|
AC_LANG_RESTORE
|
||
|
])
|
||
|
|
||
|
AC_CACHE_CHECK(if compiler supports C++0x features with -std=c++0x,
|
||
|
ac_cv_cxx_compile_cxx0x_cxx,
|
||
|
[AC_LANG_SAVE
|
||
|
AC_LANG_CPLUSPLUS
|
||
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||
|
CXXFLAGS="$CXXFLAGS -std=c++0x"
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <unordered_map>
|
||
|
template <typename T>
|
||
|
struct check
|
||
|
{
|
||
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||
|
};
|
||
|
|
||
|
typedef check<check<bool>> right_angle_brackets;
|
||
|
|
||
|
int a;
|
||
|
decltype(a) b;],,
|
||
|
ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no)
|
||
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||
|
AC_LANG_RESTORE
|
||
|
])
|
||
|
|
||
|
AC_CACHE_CHECK(if compiler supports C++0x features with -std=gnu++0x,
|
||
|
ac_cv_cxx_compile_cxx0x_gxx,
|
||
|
[AC_LANG_SAVE
|
||
|
AC_LANG_CPLUSPLUS
|
||
|
ac_save_CXXFLAGS="$CXXFLAGS"
|
||
|
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||
|
AC_TRY_COMPILE([
|
||
|
#include <unordered_map>
|
||
|
template <typename T>
|
||
|
struct check
|
||
|
{
|
||
|
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
||
|
};
|
||
|
|
||
|
typedef check<check<bool>> right_angle_brackets;
|
||
|
|
||
|
int a;
|
||
|
decltype(a) b;],,
|
||
|
ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no)
|
||
|
CXXFLAGS="$ac_save_CXXFLAGS"
|
||
|
AC_LANG_RESTORE
|
||
|
])
|
||
|
|
||
|
if test "$ac_cv_cxx_compile_cxx0x_native" = yes ||
|
||
|
test "$ac_cv_cxx_compile_cxx0x_cxx" = yes ||
|
||
|
test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then
|
||
|
AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ])
|
||
|
fi
|
||
|
])
|