| # ============================================================================ |
| # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_0x.html |
| # ============================================================================ |
| # |
| # SYNOPSIS |
| # |
| # AX_CXX_COMPILE_STDCXX_0X |
| # |
| # DESCRIPTION |
| # |
| # Check for baseline language coverage in the compiler for the C++0x |
| # standard. |
| # |
| # This macro is deprecated and has been superseded by the |
| # AX_CXX_COMPILE_STDCXX_11 macro which should be used instead. |
| # |
| # LICENSE |
| # |
| # Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.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 10 |
| |
| AU_ALIAS([AC_CXX_COMPILE_STDCXX_0X], [AX_CXX_COMPILE_STDCXX_0X]) |
| AC_DEFUN([AX_CXX_COMPILE_STDCXX_0X], [ |
| AC_OBSOLETE([$0], [; use AX_CXX_COMPILE_STDCXX_11 instead]) |
| AC_CACHE_CHECK(if g++ supports C++0x features without additional flags, |
| ax_cv_cxx_compile_cxx0x_native, |
| [AC_LANG_SAVE |
| AC_LANG_CPLUSPLUS |
| AC_TRY_COMPILE([ |
| 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; |
| |
| typedef check<int> check_type; |
| check_type c; |
| check_type&& cr = static_cast<check_type&&>(c);],, |
| ax_cv_cxx_compile_cxx0x_native=yes, ax_cv_cxx_compile_cxx0x_native=no) |
| AC_LANG_RESTORE |
| ]) |
| |
| AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x, |
| ax_cv_cxx_compile_cxx0x_cxx, |
| [AC_LANG_SAVE |
| AC_LANG_CPLUSPLUS |
| ac_save_CXX="$CXX" |
| CXX="$CXX -std=c++0x" |
| AC_TRY_COMPILE([ |
| 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; |
| |
| typedef check<int> check_type; |
| check_type c; |
| check_type&& cr = static_cast<check_type&&>(c);],, |
| ax_cv_cxx_compile_cxx0x_cxx=yes, ax_cv_cxx_compile_cxx0x_cxx=no) |
| CXX="$ac_save_CXX" |
| AC_LANG_RESTORE |
| ]) |
| |
| AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x, |
| ax_cv_cxx_compile_cxx0x_gxx, |
| [AC_LANG_SAVE |
| AC_LANG_CPLUSPLUS |
| ac_save_CXX="$CXX" |
| CXX="$CXX -std=gnu++0x" |
| AC_TRY_COMPILE([ |
| 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; |
| |
| typedef check<int> check_type; |
| check_type c; |
| check_type&& cr = static_cast<check_type&&>(c);],, |
| ax_cv_cxx_compile_cxx0x_gxx=yes, ax_cv_cxx_compile_cxx0x_gxx=no) |
| CXX="$ac_save_CXX" |
| AC_LANG_RESTORE |
| ]) |
| |
| if test "$ax_cv_cxx_compile_cxx0x_native" = yes || |
| test "$ax_cv_cxx_compile_cxx0x_cxx" = yes || |
| test "$ax_cv_cxx_compile_cxx0x_gxx" = yes; then |
| AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ]) |
| fi |
| ]) |