ada4172967739bad2d84f0d9e4b9e262bd7a8289
[m6w6/libmemcached] / m4 / ac_cxx_compile_stdcxx_0x.m4
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
22 AC_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 ])