From d198ccac2619b43671d39beac126342ea6d9cc64 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Wed, 9 Jan 2013 07:53:21 +0100 Subject: CONFIGURE: Add option to build as C++11. --- configure | 50 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/configure b/configure index b703776f8b..91364eb304 100755 --- a/configure +++ b/configure @@ -123,6 +123,7 @@ _libunity=auto _debug_build=auto _release_build=auto _optimizations=auto +_use_cxx11=no _verbose_build=no _text_console=no _mt32emu=yes @@ -870,6 +871,7 @@ Game engines: The values of for these options are as follows: $engines_help Optional Features: + --enable-c++11 build as C++11 if the compiler allows that --disable-debug disable building with debugging symbols --enable-Werror treat warnings as errors --enable-release enable building in release mode (this activates @@ -1109,6 +1111,12 @@ for ac_option in $@; do --backend=*) _backend=`echo $ac_option | cut -d '=' -f 2` ;; + --enable-c++11) + _use_cxx11=yes + ;; + --disable-c++11) + _use_cxx11=no + ;; --enable-debug) _debug_build=yes ;; @@ -1694,6 +1702,18 @@ if test "$cxx_verc_fail" = yes ; then exit 1 fi +# +# Check whether the compiler supports C++11 +# +have_cxx11=no +cat > $TMPC << EOF +int main(int argc, char *argv[]) { if (argv == nullptr) return -1; else return 0; } +EOF +cc_check -std=c++11 && have_cxx11=yes +if test "$_use_cxx11" = "yes" ; then + _use_cxx11=$have_cxx11 +fi + # # Setup compiler specific CXXFLAGS now that we know the compiler version. # Foremost, this means enabling various warnings. @@ -1701,15 +1721,18 @@ fi # if test "$have_gcc" = yes ; then if test "$_cxx_major" -ge "3" ; then - case $_host_os in - # newlib-based system include files suppress non-C89 function - # declarations under __STRICT_ANSI__ - amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince ) - ;; - *) - CXXFLAGS="$CXXFLAGS -ansi" - ;; - esac + # Try to use ANSI mode when C++11 is disabled. + if test "$_use_cxx11" = "no" ; then + case $_host_os in + # newlib-based system include files suppress non-C89 function + # declarations under __STRICT_ANSI__ + amigaos* | android | bada | dreamcast | ds | gamecube | mingw* | n64 | psp | ps2 | ps3 | wii | wince ) + ;; + *) + CXXFLAGS="$CXXFLAGS -ansi" + ;; + esac + fi CXXFLAGS="$CXXFLAGS -W -Wno-unused-parameter" add_line_to_config_mk 'HAVE_GCC3 = 1' add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP' @@ -1725,6 +1748,15 @@ elif test "$have_icc" = yes ; then add_line_to_config_mk 'CXX_UPDATE_DEP_FLAG = -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" -MQ "$@" -MP' fi; +# +# Update status about C++11 mode +# +echo_n "Building as C++11... " +if test "$_use_cxx11" = "yes" ; then + CXXFLAGS="$CXXFLAGS -std=c++11" +fi +echo $_use_cxx11 + # By default, we add -pedantic to the CXXFLAGS to catch some potentially # non-portable constructs, like use of GNU extensions. # However, some platforms use GNU extensions in system header files, so -- cgit v1.2.3