|
| 1 | +#serial 1 |
| 2 | +# CXX11_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST, |
| 3 | +# ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE) |
| 4 | +# ---------------------------------------------------------------- |
| 5 | +# Check whether the C++ compiler accepts features of STANDARD (e.g |
| 6 | +# `cxx98', `cxx11') by trying to compile a program of TEST-PROLOGUE |
| 7 | +# and TEST-BODY. If this fails, try again with each compiler option |
| 8 | +# in the space-separated OPTION-LIST; if one helps, append it to CXX. |
| 9 | +# If eventually successful, run ACTION-IF-AVAILABLE, else |
| 10 | +# ACTION-IF-UNAVAILABLE. |
| 11 | +AC_DEFUN([_CXX11_STD_TRY], |
| 12 | +[ |
| 13 | +AC_LANG_PUSH(C++)dnl |
| 14 | +AC_CACHE_VAL(cxx11_cv_prog_cxx_$1, |
| 15 | +[cxx11_cv_prog_cxx_$1=no |
| 16 | +cxx11_save_CXX=$CXX |
| 17 | +AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])]) |
| 18 | +for cxx11_arg in $4 |
| 19 | +do |
| 20 | + CXX="$cxx11_save_CXX $cxx11_arg" |
| 21 | + _AS_ECHO_N([$cxx11_arg ]) |
| 22 | + AC_COMPILE_IFELSE([], [cxx11_cv_prog_cxx_$1=$cxx11_arg]) |
| 23 | + test "x$cxx11_cv_prog_cxx_$1" != "xno" && break |
| 24 | +done |
| 25 | +rm -f conftest.$ac_ext |
| 26 | +CXX=$cxx11_save_CXX |
| 27 | +])# AC_CACHE_VAL |
| 28 | +cxx11_prog_cxx_stdcxx_options= |
| 29 | +case "x$cxx11_cv_prog_cxx_$1" in |
| 30 | + x) |
| 31 | + AC_MSG_RESULT([working as-is]) ;; |
| 32 | + xno) |
| 33 | + AC_MSG_RESULT([not working]) ;; |
| 34 | + *) |
| 35 | + cxx11_prog_cxx_stdcxx_options=" $cxx11_cv_prog_cxx_$1" |
| 36 | + CXX=$CXX$cxx11_prog_cxx_stdcxx_options |
| 37 | + AC_MSG_RESULT([working]) ;; |
| 38 | +esac |
| 39 | +AC_LANG_POP(C++)dnl |
| 40 | +])# _CXX11_STD_TRY |
| 41 | +AC_DEFUN([CXX11_STD_TRY], |
| 42 | +[ |
| 43 | + AC_MSG_CHECKING([for $CXX option to enable ]m4_translit($1, [x], [+])[ feature]) |
| 44 | + _CXX11_STD_TRY($1, $2, $3, ["" m4_expand($4)]) |
| 45 | + AS_IF([test "x$cxx11_cv_prog_cxx_$1" != xno], [$5], [$6]) |
| 46 | +]) |
| 47 | +AC_DEFUN([CXX11_STD_AVAILABLE], |
| 48 | +[ |
| 49 | + cxx11_save_CXX=$CXX |
| 50 | + AC_MSG_CHECKING([for $CXX to have C++11 rvalue references]) |
| 51 | + _CXX11_STD_TRY([cxx11], [], [[double&& d = 2]], |
| 52 | + [[ -std=c++11 -std=c++0x -qlanglvl=extended0x -AA ]]) |
| 53 | + CXX=$cxx11_save_CXX |
| 54 | +]) |
0 commit comments