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

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.
This commit is contained in:
Chris Johns
2016-08-10 13:07:29 +10:00
parent 709594f0fb
commit 9a4eca5843
8 changed files with 62 additions and 42 deletions

View File

@@ -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])
])

View File

@@ -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])
])

View File

@@ -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
])

View File

@@ -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

View File

@@ -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

View File

@@ -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])
])

View File

@@ -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
])

View File

@@ -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])