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

Chris Johns chrisj at rtems.org
Wed Aug 10 03:10:53 UTC 2016


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



More information about the devel mailing list