1# =========================================================================== 2# http://autoconf-archive.cryp.to/ac_cxx_compile_stdcxx_0x.html 3# =========================================================================== 4# 5# SYNOPSIS 6# 7# AC_CXX_COMPILE_STDCXX_0X 8# 9# DESCRIPTION 10# 11# Check for baseline language coverage in the compiler for the C++0x 12# standard. 13# 14# LICENSE 15# 16# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com> 17# 18# Copying and distribution of this file, with or without modification, are 19# permitted in any medium without royalty provided the copyright notice 20# and this notice are preserved. 21 22AC_DEFUN([AC_CXX_COMPILE_STDCXX_0X], [ 23 AC_CACHE_CHECK(if g++ supports C++0x features without additional flags, 24 ac_cv_cxx_compile_cxx0x_native, 25 [AC_LANG_SAVE 26 AC_LANG_CPLUSPLUS 27 AC_TRY_COMPILE([ 28 template <typename T> 29 struct check 30 { 31 static_assert(sizeof(int) <= sizeof(T), "not big enough"); 32 }; 33 34 typedef check<check<bool>> right_angle_brackets; 35 36 int a; 37 decltype(a) b; 38 39 typedef check<int> check_type; 40 check_type c; 41 check_type&& cr = c;],, 42 ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no) 43 AC_LANG_RESTORE 44 ]) 45 46 AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x, 47 ac_cv_cxx_compile_cxx0x_cxx, 48 [AC_LANG_SAVE 49 AC_LANG_CPLUSPLUS 50 ac_save_CXXFLAGS="$CXXFLAGS" 51 CXXFLAGS="$CXXFLAGS -std=c++0x" 52 AC_TRY_COMPILE([ 53 template <typename T> 54 struct check 55 { 56 static_assert(sizeof(int) <= sizeof(T), "not big enough"); 57 }; 58 59 typedef check<check<bool>> right_angle_brackets; 60 61 int a; 62 decltype(a) b; 63 64 typedef check<int> check_type; 65 check_type c; 66 check_type&& cr = c;],, 67 ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no) 68 CXXFLAGS="$ac_save_CXXFLAGS" 69 AC_LANG_RESTORE 70 ]) 71 72 AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x, 73 ac_cv_cxx_compile_cxx0x_gxx, 74 [AC_LANG_SAVE 75 AC_LANG_CPLUSPLUS 76 ac_save_CXXFLAGS="$CXXFLAGS" 77 CXXFLAGS="$CXXFLAGS -std=gnu++0x" 78 AC_TRY_COMPILE([ 79 template <typename T> 80 struct check 81 { 82 static_assert(sizeof(int) <= sizeof(T), "not big enough"); 83 }; 84 85 typedef check<check<bool>> right_angle_brackets; 86 87 int a; 88 decltype(a) b; 89 90 typedef check<int> check_type; 91 check_type c; 92 check_type&& cr = c;],, 93 ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no) 94 CXXFLAGS="$ac_save_CXXFLAGS" 95 AC_LANG_RESTORE 96 ]) 97 98 if test "$ac_cv_cxx_compile_cxx0x_native" = yes || 99 test "$ac_cv_cxx_compile_cxx0x_cxx" = yes || 100 test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then 101 AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ]) 102 fi 103]) 104