summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--README.configure4
-rw-r--r--aclocal.m4303
-rw-r--r--c/src/make/compilers/gcc-target-default.cfg23
-rw-r--r--make/compilers/gcc-portsw.cfg12
-rw-r--r--make/compilers/gcc-target-default.cfg23
5 files changed, 281 insertions, 84 deletions
diff --git a/README.configure b/README.configure
index 618a5ec8b6..82dbfbd9d6 100644
--- a/README.configure
+++ b/README.configure
@@ -23,7 +23,7 @@ RTEMS-specific option are supported:
--disable-posix
--disable-tests
--disable-ka9q
- --enable-cpp
+ --enable-cxx
--enable-gcc28 (also use enable-libcdir when disabled)
--enable-gmake-print-directory
--enable-libcdir=<DIRECTORY> (do not use if gcc 2.8 is enabled)
@@ -42,7 +42,7 @@ By default, the RTEMS port of the KA9Q TCP/IP stack is build for targets
that support it. It can be disabled with the --disable-ka9q option.
By default, the RTEMS support of C++ is disabled. It can be enabled
-with the --enable-cpp option. If the rtems++ C++ library is installed
+with the --enable-cxx option. If the rtems++ C++ library is installed
it will also be build.
By default, the RTEMS test suites are configured. The --disable-tests
diff --git a/aclocal.m4 b/aclocal.m4
index ed512b9097..bd2ae60766 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,11 +1,6 @@
-dnl some macros for rtems host configuration checks
-dnl
-dnl Author: Ralf Corsepius (corsepiu@faw.uni-ulm.de), 97/11/29
-dnl
-dnl Last Modified: 98/01/10
-dnl
-dnl $Id$
-dnl
+dnl aclocal.m4 generated automatically by aclocal 1.2
+
+dnl $Id$
dnl macro to detect mkdir
AC_DEFUN(RTEMS_PATH_MKDIR,
@@ -44,10 +39,279 @@ rm -rf conftestdata
AC_MSG_RESULT($rtems_cv_prog_MKDIR_M)
])
+
+dnl $Id$
+
+dnl canonicalize target name
+dnl NOTE: Most rtems targets do not fullfil autoconf's
+dnl target naming conventions "processor-vendor-os"
+dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
+dnl and we have to fix it for rtems ourselves
+
+AC_DEFUN(RTEMS_CANONICAL_TARGET_CPU,
+[AC_MSG_CHECKING(rtems target cpu)
+changequote(<<, >>)dnl
+target_cpu=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'`
+changequote([, ])dnl
+AC_MSG_RESULT($target_cpu)
+])
+
+dnl
+dnl $Id$
+dnl
+dnl Check for target gcc
+dnl
+dnl Adaptation of autoconf-2.12's AC_PROG_CC to rtems
+dnl
+dnl 98/02/10 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
+dnl
+
+AC_DEFUN(RTEMS_PROG_CC,
+[
+AC_BEFORE([$0], [AC_PROG_CPP])dnl
+AC_BEFORE([$0], [AC_PROG_CC])dnl
+AC_CHECK_PROG(CC, gcc, gcc)
+if test -z "$CC"; then
+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
+ test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
+fi
+
+RTEMS_PROG_CC_WORKS
+AC_PROG_CC_GNU
+
+if test $ac_cv_prog_gcc = yes; then
+ GCC=yes
+dnl Check whether -g works, even if CFLAGS is set, in case the package
+dnl plays around with CFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+ ac_test_CFLAGS="${CFLAGS+set}"
+ ac_save_CFLAGS="$CFLAGS"
+ CFLAGS=
+ AC_PROG_CC_G
+ if test "$ac_test_CFLAGS" = set; then
+ CFLAGS="$ac_save_CFLAGS"
+ elif test $ac_cv_prog_cc_g = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-O2"
+ fi
+else
+ GCC=
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
+fi
+
+CC_FOR_TARGET=$CC
+rtems_cv_prog_gcc=$ac_cv_prog_gcc
+rtems_cv_prog_cc_g=$ac_cv_prog_cc_g
+
+dnl restore initial values
+unset CC
+unset ac_cv_prog_gcc
+unset ac_cv_prog_cc_g
+unset ac_cv_prog_CC
+])
+
+
+dnl Almost identical to AC_PROG_CC_WORKS
+dnl added malloc to program fragment, because rtems has its own malloc
+dnl which is not available while bootstrapping rtems
+
+AC_DEFUN(RTEMS_PROG_CC_WORKS,
+[AC_MSG_CHECKING([whether the target C compiler ($CC $CFLAGS $LDFLAGS) works])
+AC_LANG_SAVE
+AC_LANG_C
+AC_TRY_COMPILER(
+[void *malloc() { return 0; }
+ main(){return(0);}],
+rtems_cv_prog_cc_works, rtems_cv_prog_cc_cross)
+AC_LANG_RESTORE
+AC_MSG_RESULT($rtems_cv_prog_cc_works)
+if test $rtems_cv_prog_cc_works = no; then
+ AC_MSG_ERROR([installation or configuration problem: target C compiler cannot create executables.])
+fi
+AC_MSG_CHECKING([whether the target C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])
+AC_MSG_RESULT($rtems_cv_prog_cc_cross)
+])
+
+dnl
+dnl $Id$
+dnl
+dnl Check whether the target compiler accepts -specs
+dnl
+dnl 98/02/11 Ralf Corsepius corsepiu@faw.uni-ulm.de
+dnl
+
+AC_DEFUN(RTEMS_GCC_SPECS,
+[AC_REQUIRE([RTEMS_PROG_CC])
+AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts -specs,rtems_cv_gcc_specs,
+[touch confspec
+echo 'void f(){}' >conftest.c
+if test -z "`${CC_FOR_TARGET} -specs confspec -c conftest.c 2>&1`";then
+ rtems_cv_gcc_specs=yes
+else
+ rtems_cv_gcc_specs=no
+fi
+rm -f confspec conftest*
+])])
+
+dnl
+dnl $Id$
+dnl
+dnl Check whether the target compiler accepts -pipe
+dnl
+dnl 98/02/11 Ralf Corsepius corsepiu@faw.uni-ulm.de
+dnl
+
+AC_DEFUN(RTEMS_GCC_PIPE,
+[AC_REQUIRE([RTEMS_PROG_CC])
+AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts --pipe,rtems_cv_gcc_pipe,
+[
+echo 'void f(){}' >conftest.c
+if test -z "`${CC_FOR_TARGET} --pipe -c conftest.c 2>&1`";then
+ rtems_cv_gcc_pipe=yes
+else
+ rtems_cv_gcc_pipe=no
+fi
+rm -f conftest*
+])])
+
+dnl
+dnl $Id$
+dnl
+dnl Check for target g++
+dnl
+dnl Adaptation of autoconf-2.12's AC_PROG_CXX to rtems
+dnl
+dnl 98/02/10 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
+dnl
+
+AC_DEFUN(RTEMS_PROG_CXX,
+[
+AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl
+AC_BEFORE([$0], [AC_PROG_CXX])dnl
+AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++, gcc)
+
+RTEMS_PROG_CXX_WORKS
+AC_PROG_CXX_GNU
+
+if test $ac_cv_prog_gxx = yes; then
+ GXX=yes
+dnl Check whether -g works, even if CXXFLAGS is set, in case the package
+dnl plays around with CXXFLAGS (such as to build both debugging and
+dnl normal versions of a library), tasteless as that idea is.
+ ac_test_CXXFLAGS="${CXXFLAGS+set}"
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS=
+ AC_PROG_CXX_G
+ if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ elif test $ac_cv_prog_cxx_g = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-O2"
+ fi
+else
+ GXX=
+ test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
+fi
+CXX_FOR_TARGET=$CXX
+
+dnl restore initial values
+unset CXX
+unset ac_cv_prog_gxx
+])
+
+
+dnl Almost identical to AC_PROG_CXX_WORKS
+dnl Additional handling of malloc
+dnl NOTE: using newlib with a native compiler is cross-compiling, indeed.
+AC_DEFUN(RTEMS_PROG_CXX_WORKS,
+[AC_MSG_CHECKING([whether the target C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works])
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+dnl this fails if rtems uses newlib, because rtems has its own malloc which
+dnl is not available at bootstrap
+AC_TRY_COMPILER(
+ [main(){return(0);}],
+ rtems_cv_prog_cxx_works, rtems_cv_prog_cxx_cross)
+if test "$rtems_cv_prog_cxx_works" = "no"; then
+ dnl now retry with our own version of malloc
+ AC_TRY_COMPILER(
+ [extern "C" void *malloc();
+ void *malloc() { return (0); }
+ main(){return(0);}],
+ rtems_cv_prog_cxx_works, rtems_cv_prog_cxx_cross)
+fi
+AC_LANG_RESTORE
+AC_MSG_RESULT($rtems_cv_prog_cxx_works)
+if test $rtems_cv_prog_cxx_works = no; then
+ AC_MSG_ERROR([installation or configuration problem: target C++ compiler cannot create executables.])
+fi
+AC_MSG_CHECKING([whether the target C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler])
+AC_MSG_RESULT($rtems_cv_prog_cxx_cross)
+])
+
+dnl $Id$
+dnl
+dnl Set target tools
+dnl
+dnl 98/02/12 Ralf Corsepius (corsepiu@faw.uni-ulm.de)
+dnl
+
+AC_DEFUN(RTEMS_CANONICALIZE_TOOLS,
+[AC_REQUIRE([RTEMS_PROG_CC])dnl
+if test "$rtems_cv_prog_gcc" = "yes" ; then
+ dnl We are using gcc, now ask it about its tools
+ dnl Necessary if gcc was configured to use the target's native tools
+ dnl or uses prefixes for gnutools (e.g. gas instead of as)
+ AR_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ar`
+ AS_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=as`
+ LD_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ld`
+ NM_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=nm`
+ RANLIB_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ranlib`
+fi
+
+dnl check whether the tools exist
+dnl FIXME: What shall be done if they don't exist?
+
+dnl NOTE: CC_FOR_TARGET should always be valid at this point,
+dnl cf. RTEMS_PROG_CC
+AC_PATH_PROG(CC_FOR_TARGET,"$program_prefix"gcc,no)
+
+dnl FIXME: This may fail if the compiler has not been recognized as gcc
+dnl and uses tools with different names
+AC_PATH_PROG(AR_FOR_TARGET,"$program_prefix"ar,no)
+AC_PATH_PROG(AS_FOR_TARGET,"$program_prefix"as,no)
+AC_PATH_PROG(NM_FOR_TARGET,"$program_prefix"nm,no)
+AC_PATH_PROG(LD_FOR_TARGET,"$program_prefix"ld,no)
+
+dnl NOTE: This is doubtful, but should not disturb all current rtems'
+dnl targets (remark: solaris fakes ranlib!!)
+AC_PATH_PROG(RANLIB_FOR_TARGET,"$program_prefix"ranlib,no)
+
+dnl NOTE: These may not be available, if not using gnutools
+AC_PATH_PROG(OBJCOPY_FOR_TARGET,"$program_prefix"objcopy,no)
+AC_PATH_PROG(SIZE_FOR_TARGET,"$program_prefix"size,no)
+])
+
+dnl $Id$
+
+dnl RTEMS_CHECK_MAKEFILE(path)
+dnl Search for Makefile.in's within the directory starting
+dnl at path and append an entry for Makefile to global variable
+dnl "makefiles" (from configure.in) for each Makefile.in found
+dnl
+AC_DEFUN(RTEMS_CHECK_MAKEFILE,
+[RTEMS_CHECK_FILES_IN($1,Makefile,makefiles)
+])
+
+dnl $Id$
+
dnl RTEMS_CHECK_FILES_IN(path,file,var)
dnl path .. path relative to srcdir, where to start searching for files
dnl file .. name of the files to search for
-dnl var .. shell variable to append found files
+dnl var .. shell variable to append files found
AC_DEFUN(RTEMS_CHECK_FILES_IN,
[
AC_MSG_CHECKING(for $2.in in $1)
@@ -63,25 +327,4 @@ else
fi
])
-dnl RTEMS_CHECK_MAKEFILE(path)
-dnl Search for Makefile.in's within the directory starting
-dnl at path and append an entry for Makefile to global variable
-dnl "makefiles" (from configure.in) for each Makefile.in found
-dnl
-AC_DEFUN(RTEMS_CHECK_MAKEFILE,
-[RTEMS_CHECK_FILES_IN($1,Makefile,makefiles)
-])
-
-dnl canonicalize target name
-dnl NOTE: Most rtems targets do not fullfil autoconf's
-dnl target naming conventions "processor-vendor-os"
-dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
-dnl and we have to fix it for rtems ourselves
-AC_DEFUN(RTEMS_CANONICAL_TARGET_CPU,
-[AC_MSG_CHECKING(rtems target cpu)
-changequote(<<, >>)dnl
-target_cpu=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'`
-changequote([, ])dnl
-AC_MSG_RESULT($target_cpu)
-])
diff --git a/c/src/make/compilers/gcc-target-default.cfg b/c/src/make/compilers/gcc-target-default.cfg
index c832a08143..15758388a1 100644
--- a/c/src/make/compilers/gcc-target-default.cfg
+++ b/c/src/make/compilers/gcc-target-default.cfg
@@ -158,20 +158,17 @@ MKLIB=echo library is complete:
#
# NOTE: we override COMPILE.c
#
-# NOTE: Remove -pipe if it causes you problems. Using it can decrease
-# compile time.
-#
COMPILE.c=$(CC) $(CFLAGS) $(XCFLAGS) -c
${ARCH}/%.o: %.c
- ${COMPILE.c} -pipe -o $@ $<
+ ${COMPILE.c} -o $@ $<
${ARCH}/%.o: %.cc
- ${COMPILE.c} -pipe -o $@ $<
+ ${COMPILE.c} -o $@ $<
${ARCH}/%.o: %.S
- ${COMPILE.c} -pipe -DASM -o $@ $<
+ ${COMPILE.c} -DASM -o $@ $<
# strip out C++ style comments.
${ARCH}/%.o: %.s
@@ -224,20 +221,6 @@ ifneq ($(words $(C_FILES) $(CC_FILES) $(S_FILES)), 0)
$(MV) $(DEPEND).tmp $(DEPEND)
endif
-
-# List (possibly empty) of required managers
-# We require:
-# region -- used by lib/libcsupport for malloc()
-# ext -- used by libc for libc reentrancy hooks
-
-MANAGERS_REQUIRED=region ext sem
-
-# Create a RTEMS executable based on MANAGERS which was set in
-# app's Makefile
-
-MANAGERS_NOT_WANTED=$(filter-out $(MANAGERS), $(MANAGER_LIST))
-MANAGERS_NOT_WANTED:=$(filter-out $(MANAGERS_REQUIRED), $(MANAGERS_NOT_WANTED))
-
# spell out all the LINK_FILE's, rather than using -lbsp, so
# that $(LINK_FILES) can be a dependency
diff --git a/make/compilers/gcc-portsw.cfg b/make/compilers/gcc-portsw.cfg
index 89be269701..8d408a8722 100644
--- a/make/compilers/gcc-portsw.cfg
+++ b/make/compilers/gcc-portsw.cfg
@@ -228,18 +228,6 @@ ifneq ($(words $(C_FILES) $(CC_FILES) $(S_FILES)), 0)
$(CHMOD) -f g+w $(DEPEND)
endif
-# List (possibly empty) of required managers
-# We require:
-# region -- used by lib/libcsupport for malloc()
-# ext -- used by libc for libc reentrancy hooks
-
-MANAGERS_REQUIRED=region ext sem
-
-# Create a RTEMS executable based on MANAGERS which was set in
-# app's Makefile
-
-MANAGERS_NOT_WANTED=$(filter-out $(MANAGERS), $(MANAGER_LIST))
-MANAGERS_NOT_WANTED:=$(filter-out $(MANAGERS_REQUIRED), $(MANAGERS_NOT_WANTED))
# spell out all the LINK_FILE's, rather than using -lbsp, so
# that $(LINK_FILES) can be a dependency
diff --git a/make/compilers/gcc-target-default.cfg b/make/compilers/gcc-target-default.cfg
index c832a08143..15758388a1 100644
--- a/make/compilers/gcc-target-default.cfg
+++ b/make/compilers/gcc-target-default.cfg
@@ -158,20 +158,17 @@ MKLIB=echo library is complete:
#
# NOTE: we override COMPILE.c
#
-# NOTE: Remove -pipe if it causes you problems. Using it can decrease
-# compile time.
-#
COMPILE.c=$(CC) $(CFLAGS) $(XCFLAGS) -c
${ARCH}/%.o: %.c
- ${COMPILE.c} -pipe -o $@ $<
+ ${COMPILE.c} -o $@ $<
${ARCH}/%.o: %.cc
- ${COMPILE.c} -pipe -o $@ $<
+ ${COMPILE.c} -o $@ $<
${ARCH}/%.o: %.S
- ${COMPILE.c} -pipe -DASM -o $@ $<
+ ${COMPILE.c} -DASM -o $@ $<
# strip out C++ style comments.
${ARCH}/%.o: %.s
@@ -224,20 +221,6 @@ ifneq ($(words $(C_FILES) $(CC_FILES) $(S_FILES)), 0)
$(MV) $(DEPEND).tmp $(DEPEND)
endif
-
-# List (possibly empty) of required managers
-# We require:
-# region -- used by lib/libcsupport for malloc()
-# ext -- used by libc for libc reentrancy hooks
-
-MANAGERS_REQUIRED=region ext sem
-
-# Create a RTEMS executable based on MANAGERS which was set in
-# app's Makefile
-
-MANAGERS_NOT_WANTED=$(filter-out $(MANAGERS), $(MANAGER_LIST))
-MANAGERS_NOT_WANTED:=$(filter-out $(MANAGERS_REQUIRED), $(MANAGERS_NOT_WANTED))
-
# spell out all the LINK_FILE's, rather than using -lbsp, so
# that $(LINK_FILES) can be a dependency