~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to m4/ac_cxx_compile_stdcxx_0x.m4

  • Committer: Stewart Smith
  • Date: 2009-07-02 17:18:18 UTC
  • mfrom: (1085 staging)
  • mto: This revision was merged to the branch mainline in revision 1089.
  • Revision ID: stewart@flamingspork.com-20090702171818-qrp4d403iw8tazlg
mergeĀ mainline

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
])