[PATCH] build-system: Always enable C++ if the compiler is present.

Joel Sherrill joel at rtems.org
Wed Aug 10 03:13:31 UTC 2016


I think this is a good idea. It reduces the configuration options a bit and
doesn't add any run time code. It barely adds any build time.

On Aug 9, 2016 10:11 PM, "Chris Johns" <chrisj at rtems.org> wrote:

> We always build a C++ compiler and building with C++ does not effect
> RTEMS or the runtime. This patch always enabled the support. There is
> no need to manually enable it any more.
>
> You can disable C++ with '--disable-cxx'.
>
> If an architecture does not have a C++ compiler support is automatically
> disabled.
> ---
>  aclocal/enable-cxx.m4            |  4 ++--
>  c/src/aclocal/enable-cxx.m4      |  5 +++--
>  c/src/aclocal/prog-cxx.m4        | 37 +++++++++++++++++++++---------
> -------
>  c/src/configure.ac               |  2 ++
>  cpukit/configure.ac              |  6 ++++--
>  testsuites/aclocal/enable-cxx.m4 |  5 +++--
>  testsuites/aclocal/prog-cxx.m4   | 39 ++++++++++++++++++++++--------
> ---------
>  testsuites/configure.ac          |  6 +++++-
>  8 files changed, 62 insertions(+), 42 deletions(-)
>
> diff --git a/aclocal/enable-cxx.m4 b/aclocal/enable-cxx.m4
> index ddd37dc..952f015 100644
> --- a/aclocal/enable-cxx.m4
> +++ b/aclocal/enable-cxx.m4
> @@ -2,10 +2,10 @@ AC_DEFUN([RTEMS_ENABLE_CXX],
>  [
>  AC_ARG_ENABLE(cxx,
>  [AS_HELP_STRING([--enable-cxx],
> -[enable C++ support and build the rtems++ library])],
> +[enable C++ support])],
>  [case "${enable_cxx}" in
>    yes) RTEMS_HAS_CPLUSPLUS=yes ;;
>    no) RTEMS_HAS_CPLUSPLUS=no   ;;
>    *)  AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;;
> -esac], [RTEMS_HAS_CPLUSPLUS=no])
> +esac], [RTEMS_HAS_CPLUSPLUS=yes])
>  ])
> diff --git a/c/src/aclocal/enable-cxx.m4 b/c/src/aclocal/enable-cxx.m4
> index 759d81b..952f015 100644
> --- a/c/src/aclocal/enable-cxx.m4
> +++ b/c/src/aclocal/enable-cxx.m4
> @@ -1,10 +1,11 @@
>  AC_DEFUN([RTEMS_ENABLE_CXX],
>  [
>  AC_ARG_ENABLE(cxx,
> -[AS_HELP_STRING(--enable-cxx,enable C++ support and build the rtems++
> library)],
> +[AS_HELP_STRING([--enable-cxx],
> +[enable C++ support])],
>  [case "${enable_cxx}" in
>    yes) RTEMS_HAS_CPLUSPLUS=yes ;;
>    no) RTEMS_HAS_CPLUSPLUS=no   ;;
>    *)  AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;;
> -esac], [RTEMS_HAS_CPLUSPLUS=no])
> +esac], [RTEMS_HAS_CPLUSPLUS=yes])
>  ])
> diff --git a/c/src/aclocal/prog-cxx.m4 b/c/src/aclocal/prog-cxx.m4
> index 957a595..66c986c 100644
> --- a/c/src/aclocal/prog-cxx.m4
> +++ b/c/src/aclocal/prog-cxx.m4
> @@ -1,6 +1,6 @@
> -dnl
> +dnl
>  dnl Check for target g++
> -dnl
> +dnl
>
>  AC_DEFUN([RTEMS_PROG_CXX_FOR_TARGET],
>  [
> @@ -18,21 +18,26 @@ fi
>  RTEMS_CHECK_TOOL(CXX,g++)
>  if test "$RTEMS_HAS_CPLUSPLUS" = "yes";
>  then
> -dnl Only accept g++
> -dnl NOTE: This might be too restrictive
> -test -z "$CXX" \
> -  && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
> -AC_PROG_CXX
> -AC_PROG_CXXCPP
> -
> -  if test "$ac_cv_prog_cc_cross" != "$ac_cv_prog_cxx_cross"; then
> -    AC_MSG_ERROR([***]
> -     [Inconsistency in compiler configuration:]
> -     [Target C compiler and target C++ compiler]
> -     [must both either be cross compilers or native compilers])
> +  dnl Only accept g++
> +  dnl NOTE: This might be too restrictive
> +  if test -z "$CXX";
> +  then
> +    RTEMS_HAS_CPLUSPLUS=no
> +    HAS_CPLUSPLUS=no
> +    ## Work-around to a bug in automake
> +    AM_CONDITIONAL([am__fastdepCXX],[false])
> +  else
> +    AC_PROG_CXX
> +    AC_PROG_CXXCPP
> +    if test "$ac_cv_prog_cc_cross" != "$ac_cv_prog_cxx_cross"; then
> +      AC_MSG_ERROR([***]
> +       [Inconsistency in compiler configuration:]
> +       [Target C compiler and target C++ compiler]
> +       [must both either be cross compilers or native compilers])
> +    fi
>    fi
>  else
> -## Work-around to a bug in automake
> -AM_CONDITIONAL([am__fastdepCXX],[false])
> +  ## Work-around to a bug in automake
> +  AM_CONDITIONAL([am__fastdepCXX],[false])
>  fi
>  ])
> diff --git a/c/src/configure.ac b/c/src/configure.ac
> index f0d482c..6b34eb5 100644
> --- a/c/src/configure.ac
> +++ b/c/src/configure.ac
> @@ -16,6 +16,7 @@ AM_MAINTAINER_MODE
>
>  RTEMS_ENABLE_MULTILIB
>  RTEMS_ENABLE_MULTIPROCESSING
> +RTEMS_ENABLE_CXX
>  RTEMS_ENV_RTEMSBSP
>
>  RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
> @@ -93,6 +94,7 @@ rtems_cv_CFLAGS_set="${CFLAGS+set}"
>  CFLAGS="${CFLAGS-${CPU_CFLAGS} ${CFLAGS_OPTIMIZE_V}}"
>
>  RTEMS_PROG_CC_FOR_TARGET
> +RTEMS_PROG_CXX_FOR_TARGET
>  AM_PROG_CC_C_O
>  RTEMS_PROG_CCAS
>  RTEMS_CANONICALIZE_TOOLS
> diff --git a/cpukit/configure.ac b/cpukit/configure.ac
> index 054e60e..136630b 100644
> --- a/cpukit/configure.ac
> +++ b/cpukit/configure.ac
> @@ -13,6 +13,7 @@ AM_MAINTAINER_MODE
>  RTEMS_ENABLE_MULTILIB
>  RTEMS_ENABLE_MULTIPROCESSING
>  RTEMS_ENABLE_POSIX
> +RTEMS_ENABLE_CXX
>  RTEMS_ENABLE_RTEMS_DEBUG
>  RTEMS_ENABLE_NETWORKING
>  RTEMS_ENABLE_PARAVIRT
> @@ -31,9 +32,10 @@ else
>  fi
>
>  RTEMS_PROG_CC_FOR_TARGET
> -RTEMS_PROG_CCAS
> -RTEMS_CANONICALIZE_TOOLS
> +RTEMS_PROG_CXX_FOR_TARGET
>  AM_PROG_CC_C_O
> +RTEMS_CANONICALIZE_TOOLS
> +RTEMS_PROG_CCAS
>  AC_PROG_RANLIB
>
>  RTEMS_CHECK_NEWLIB
> diff --git a/testsuites/aclocal/enable-cxx.m4 b/testsuites/aclocal/enable-
> cxx.m4
> index 759d81b..952f015 100644
> --- a/testsuites/aclocal/enable-cxx.m4
> +++ b/testsuites/aclocal/enable-cxx.m4
> @@ -1,10 +1,11 @@
>  AC_DEFUN([RTEMS_ENABLE_CXX],
>  [
>  AC_ARG_ENABLE(cxx,
> -[AS_HELP_STRING(--enable-cxx,enable C++ support and build the rtems++
> library)],
> +[AS_HELP_STRING([--enable-cxx],
> +[enable C++ support])],
>  [case "${enable_cxx}" in
>    yes) RTEMS_HAS_CPLUSPLUS=yes ;;
>    no) RTEMS_HAS_CPLUSPLUS=no   ;;
>    *)  AC_MSG_ERROR(bad value ${enableval} for enable-cxx option) ;;
> -esac], [RTEMS_HAS_CPLUSPLUS=no])
> +esac], [RTEMS_HAS_CPLUSPLUS=yes])
>  ])
> diff --git a/testsuites/aclocal/prog-cxx.m4 b/testsuites/aclocal/prog-cxx.
> m4
> index c71bac9..91f2b7f 100644
> --- a/testsuites/aclocal/prog-cxx.m4
> +++ b/testsuites/aclocal/prog-cxx.m4
> @@ -1,6 +1,6 @@
> -dnl
> +dnl
>  dnl Check for target g++
> -dnl
> +dnl
>
>  AC_DEFUN([RTEMS_PROG_CXX_FOR_TARGET],
>  [
> @@ -9,7 +9,7 @@ AC_REQUIRE([RTEMS_ENABLE_CXX])
>  RTEMS_CHECK_CPUOPTS([RTEMS_SMP])
>
>  # If CXXFLAGS is not set, default to CFLAGS
> -if test x"$rtems_cv_RTEMS_SMP" = x"yes" ; then
> +if test x"$rtems_cv_HAS_SMP" = x"yes" ; then
>    CXXFLAGS=${CXXFLAGS-${CFLAGS} -std=gnu++11}
>  else
>    CXXFLAGS=${CXXFLAGS-${CFLAGS}}
> @@ -18,21 +18,26 @@ fi
>  RTEMS_CHECK_TOOL(CXX,g++)
>  if test "$RTEMS_HAS_CPLUSPLUS" = "yes";
>  then
> -dnl Only accept g++
> -dnl NOTE: This might be too restrictive
> -test -z "$CXX" \
> -  && AC_MSG_ERROR([no acceptable c++ found in \$PATH])
> -AC_PROG_CXX
> -AC_PROG_CXXCPP
> -
> -  if test "$ac_cv_prog_cc_cross" != "$ac_cv_prog_cxx_cross"; then
> -    AC_MSG_ERROR([***]
> -     [Inconsistency in compiler configuration:]
> -     [Target C compiler and target C++ compiler]
> -     [must both either be cross compilers or native compilers])
> +  dnl Only accept g++
> +  dnl NOTE: This might be too restrictive
> +  if test -z "$CXX";
> +  then
> +    RTEMS_HAS_CPLUSPLUS=no
> +    HAS_CPLUSPLUS=no
> +    ## Work-around to a bug in automake
> +    AM_CONDITIONAL([am__fastdepCXX],[false])
> +  else
> +    AC_PROG_CXX
> +    AC_PROG_CXXCPP
> +    if test "$ac_cv_prog_cc_cross" != "$ac_cv_prog_cxx_cross"; then
> +      AC_MSG_ERROR([***]
> +       [Inconsistency in compiler configuration:]
> +       [Target C compiler and target C++ compiler]
> +       [must both either be cross compilers or native compilers])
> +    fi
>    fi
>  else
> -## Work-around to a bug in automake
> -AM_CONDITIONAL([am__fastdepCXX],[false])
> +  ## Work-around to a bug in automake
> +  AM_CONDITIONAL([am__fastdepCXX],[false])
>  fi
>  ])
> diff --git a/testsuites/configure.ac b/testsuites/configure.ac
> index 963e05b..086f636 100644
> --- a/testsuites/configure.ac
> +++ b/testsuites/configure.ac
> @@ -17,8 +17,12 @@ RTEMS_ENV_RTEMSBSP
>
>  RTEMS_PROJECT_ROOT
>
> +RTEMS_PROG_CC_FOR_TARGET
> +RTEMS_PROG_CXX_FOR_TARGET
> +RTEMS_CANONICALIZE_TOOLS
> +AM_PROG_CC_C_O
> +
>  RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
> -RTEMS_PROG_CC
>
>  RTEMS_CHECK_CPUOPTS([RTEMS_POSIX_API])
>  RTEMS_CHECK_CPUOPTS([RTEMS_MULTIPROCESSING])
> --
> 2.4.6
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20160809/3987247a/attachment-0001.html>


More information about the devel mailing list