From: Elliott Clark Date: Thu, 2 Jun 2016 22:37:35 +0000 (-0700) Subject: Update folly OSS build to use 1y X-Git-Tag: 2016.07.26~169 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9fc18f0ac3b21dc2abb5700fba9fc0c27ffd190d;p=folly.git Update folly OSS build to use 1y Summary: use std=c++1y for compiling since we use c+=14 feautures but don't want to require a recent gcc. Reviewed By: bhamiltoncx Differential Revision: D3380287 fbshipit-source-id: 8ece6007cf613d307bafe692f1af70f5359df95a --- diff --git a/folly/configure.ac b/folly/configure.ac index c2670fd0..e3981b2c 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -36,18 +36,19 @@ AC_LANG([C++]) # Checks for programs. AC_PROG_CXX AC_PROG_CC -AC_CXX_COMPILE_STDCXX_0X + +AC_CXX_COMPILE_STDCXX_1Y # Be sure to add any -std option to CXXFLAGS before we invoke any # AC_COMPILE_IFELSE() or similar macros. Any such macros that are invoked # before we update CXXFLAGS will not be run with the same options that we use # during the real build. STD="" -if test "x$ac_cv_cxx_compile_cxx0x_cxx" = xyes; then - STD="-std=c++0x" +if test "x$ac_cv_cxx_compile_cxx1y_cxx" = xyes; then + STD="-std=c++1y" fi -if test "x$ac_cv_cxx_compile_cxx0x_gxx" = xyes; then - STD="-std=gnu++0x" +if test "x$ac_cv_cxx_compile_cxx1y_gxx" = xyes; then + STD="-std=gnu++1y" fi CXXFLAGS="$STD $CXXFLAGS" diff --git a/folly/m4/ac_cxx_compile_stdcxx_0x.m4 b/folly/m4/ac_cxx_compile_stdcxx_0x.m4 deleted file mode 100644 index 5c1a3bd0..00000000 --- a/folly/m4/ac_cxx_compile_stdcxx_0x.m4 +++ /dev/null @@ -1,110 +0,0 @@ -# =========================================================================== -# http://autoconf-archive.cryp.to/ac_cxx_compile_stdcxx_0x.html -# =========================================================================== -# -# SYNOPSIS -# -# AC_CXX_COMPILE_STDCXX_0X -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the C++0x -# standard. -# -# LAST MODIFICATION -# -# 2008-04-17 -# -# COPYLEFT -# -# Copyright (c) 2008 Benjamin Kosnik -# -# 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. - -AC_DEFUN([AC_CXX_COMPILE_STDCXX_0X], [ - AC_CACHE_CHECK(if g++ supports C++0x features without additional flags, - ac_cv_cxx_compile_cxx0x_native, - [AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([ - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - typedef check> right_angle_brackets; - - int a; - decltype(a) b; - - typedef check check_type; - check_type c; - check_type&& cr = static_cast(c);],, - ac_cv_cxx_compile_cxx0x_native=yes, ac_cv_cxx_compile_cxx0x_native=no) - AC_LANG_RESTORE - ]) - - AC_CACHE_CHECK(if g++ supports C++0x features with -std=c++0x, - ac_cv_cxx_compile_cxx0x_cxx, - [AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=c++0x" - AC_TRY_COMPILE([ - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - typedef check> right_angle_brackets; - - int a; - decltype(a) b; - - typedef check check_type; - check_type c; - check_type&& cr = static_cast(c);],, - ac_cv_cxx_compile_cxx0x_cxx=yes, ac_cv_cxx_compile_cxx0x_cxx=no) - CXXFLAGS="$ac_save_CXXFLAGS" - AC_LANG_RESTORE - ]) - - AC_CACHE_CHECK(if g++ supports C++0x features with -std=gnu++0x, - ac_cv_cxx_compile_cxx0x_gxx, - [AC_LANG_SAVE - AC_LANG_CPLUSPLUS - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" - AC_TRY_COMPILE([ - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - typedef check> right_angle_brackets; - - int a; - decltype(a) b; - - typedef check check_type; - check_type c; - check_type&& cr = static_cast(c);],, - ac_cv_cxx_compile_cxx0x_gxx=yes, ac_cv_cxx_compile_cxx0x_gxx=no) - CXXFLAGS="$ac_save_CXXFLAGS" - AC_LANG_RESTORE - ]) - - if test "$ac_cv_cxx_compile_cxx0x_native" = yes || - test "$ac_cv_cxx_compile_cxx0x_cxx" = yes || - test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then - AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ]) - else - AC_MSG_ERROR([Could not find cxx0x support in g++]) - fi -]) - \ No newline at end of file diff --git a/folly/m4/ac_cxx_compile_stdcxx_1y.m4 b/folly/m4/ac_cxx_compile_stdcxx_1y.m4 new file mode 100644 index 00000000..18a5a734 --- /dev/null +++ b/folly/m4/ac_cxx_compile_stdcxx_1y.m4 @@ -0,0 +1,122 @@ +# =========================================================================== +# http://autoconf-archive.cryp.to/ac_cxx_compile_stdcxx_0x.html +# =========================================================================== +# +# SYNOPSIS +# +# AC_CXX_COMPILE_STDCXX_1Y +# +# DESCRIPTION +# +# Check for baseline language coverage in the compiler for the C++1y +# standard. +# +# LAST MODIFICATION +# +# 2008-04-17 +# +# COPYLEFT +# +# Copyright (c) 2008 Benjamin Kosnik +# +# 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. + +AC_DEFUN([AC_CXX_COMPILE_STDCXX_1Y], [ + AC_CACHE_CHECK(if g++ supports C++1y features without additional flags, + ac_cv_cxx_compile_cxx1y_native, + [AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_COMPILE([ + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + auto f() { + int x = 0b01001; + return x; + } + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c);],, + ac_cv_cxx_compile_cxx1y_native=yes, ac_cv_cxx_compile_cxx1y_native=no) + AC_LANG_RESTORE + ]) + + AC_CACHE_CHECK(if g++ supports C++1y features with -std=c++1y, + ac_cv_cxx_compile_cxx1y_cxx, + [AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=c++1y" + AC_TRY_COMPILE([ + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + auto f() { + int x = 0b01001; + return x; + } + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c);],, + ac_cv_cxx_compile_cxx1y_cxx=yes, ac_cv_cxx_compile_cxx1y_cxx=no) + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE + ]) + + AC_CACHE_CHECK(if g++ supports C++1y features with -std=gnu++1y, + ac_cv_cxx_compile_cxx1y_gxx, + [AC_LANG_SAVE + AC_LANG_CPLUSPLUS + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -std=gnu++1y" + AC_TRY_COMPILE([ + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + typedef check> right_angle_brackets; + + int a; + decltype(a) b; + auto f() { + int x = 0b01001; + return x; + } + + typedef check check_type; + check_type c; + check_type&& cr = static_cast(c);],, + ac_cv_cxx_compile_cxx1y_gxx=yes, ac_cv_cxx_compile_cxx1y_gxx=no) + CXXFLAGS="$ac_save_CXXFLAGS" + AC_LANG_RESTORE + ]) + + if test "$ac_cv_cxx_compile_cxx1y_native" = yes || + test "$ac_cv_cxx_compile_cxx1y_cxx" = yes || + test "$ac_cv_cxx_compile_cxx1y_gxx" = yes; then + AC_DEFINE(HAVE_STDCXX_1Y,,[Define if g++ supports C++1y features. ]) + else + AC_MSG_ERROR([Could not find cxx1y support in g++]) + fi +]) +