diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-02-17 14:12:01 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-02-17 14:12:01 +0000 |
commit | e81ef51bf1826fe65cb75449ba2f6f1bc7899233 (patch) | |
tree | af203d61efc5df2ec52cdb210a909d454a23423c /make/compilers | |
parent | Patch from Ralf Corsepius <corsepiu@@faw.uni-ulm.de>: (diff) | |
download | rtems-e81ef51bf1826fe65cb75449ba2f6f1bc7899233.tar.bz2 |
Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>:
Yep, I have a bunch of bug-fixes and additions pending (Yet another monster
patch, ... I can hear you scream :-).
1) configure.in : one AC_CONFIG_HEADER(...) line too much.
2) configure.in: gcc28 support is enabled by default, i.e. if no
--enable-gcc28 option is passed on the command line. I am not sure if this
is intentional.
IMO, AC_ARG_ENABLE for --enable-gcc28 should look like:
AC_ARG_ENABLE(gcc28, \
[ --enable-gcc28 enable use of gcc 2.8.x features], \
[case "${enableval}" in
yes) RTEMS_USE_GCC272=no ;;
no) RTEMS_USE_GCC272=yes ;;
*) AC_MSG_ERROR(bad value ${enableval} for gcc-28 option) ;;
esac],[RTEMS_USE_GCC272=yes])
3) At the end of c/src/exec/score/cpu/m68k/m68k.h
> #ifdef __cplusplus
> }
> #endif
>
> #endif /* !ASM */
in my opinion these two statements should be swapped:
> #endif /* !ASM */
>
> #ifdef __cplusplus
> }
> #endif
I didn't try to compile for m68k, but does't this give an error? Is it
compensated somewhere else - or didn't I look carefully enough?
5) configure.in: --enable-cpp should probably be renamed to --enable-cxx, as
gnu-programs use "cxx" to specify C++ specific configure options, while cpp
is used for the preprocessor (e.g egcs uses --with-cxx-includedir, autoconf
internally uses $CXX),
6) The macro files from aclocal/*.m4 contain the buggy sed-rules formerly
contained in aclocal..m4, i.e. the sed/sort-bug fix to aclocal.m4 didn't
make it to aclocal/*.m4. I think I should feel guilty for that - Obviously I
submitted the contents of an old aclocal-directory last time. - Sorry.
7) For sh-rtems, we currently need to add additional managers to
MANAGERS_REQUIRED (from inside of custom/*.cfg). Currently MANAGERS_REQUIRED
is defined in make/compilers/*.cfg. This seems to prevent overriding
MANAGERS_REQUIRED from custom/*.cfg files - Obviously the files are included
in such a way that the settings from compilers/*cfg always override settings
from custom/*.cfg files.
Furthermore, I think, defining MANAGERS_* inside gcc-<target>.cfg files is
not correct - MANAGERS are not gcc-variant-dependent, but depend
on targets/bsps and therefore should be defined in a bsp/target dependent
file, e.g. in custom/*.cfg or target.cfg.in.
I think defining default settings for MANAGERS* in custom/default.cfg could
be an appropriate location. But this requires all custom/*.cfg files to
include default.cfg, which *-posix.cfg files don't seem to do.
Therefore I would like propose to move MANAGERS* to target.cfg.in - they are
included by all custom/*.cfg files. Perhaps we/you should use this
opportunity to merge parts from custom/default.cfg into target.cfg.in. This
ensures to have the setting included once per target makefile and will open
the opportunity to have autoconf doing additional work on
bsp-configurations.
Peanuts sofar, ... but here it comes ... (:-)
8) I am preparing a major enhancement to autoconf support for
gnutools/compilers. It is not yet finished, but usable and I'll therefore
attach a preliminary version to this mail.
Motivation:
* Fix problems with --enable-gcc28, if target-cc is not gcc28 compatible
* Fix -pipe problems
* Fix problems with hard-coded paths in configuration files (esp. posix)
* Fix consistency problems with explictly given gnutools and gcc's gnutools
Currently included:
* detection and checking of host and target compiler (gcc/g++)
* checking if target gnutools are in path
* checking if <target>-gcc -specs works (autodisabling gcc28 if not)
* checking if <target>-gcc -pipe works
Todo :
* *posix.cfg files are not yet adapted => The hard-coded paths for these
systems are still in use.
* Check if the host compiler $CC is properly propagated to the Makefiles (I
doubt it, but this should not matter)
* Check if rtems' generic tools still work properly (It looks like, but who
knows)
* Integrate CXX support into default.cfg or gcc-target-default.cfg (It looks
like C++ support is only used by posix BSPs)
* Automatically handle RANLIB/MKLIB for targets
* Plenty ... (:-)
Open problems:
* Untested for non-gcc compatible host and target compilers. This should be
no problem if the tools are named follow gnutool's naming convention and are
included in $PATH while running configure.
* Intentionally using different tools than that gcc has been configured for,
e.g. use a different assembler ? This should be still possible if
XX_FOR_TARGET is hard-coded into custom/*.cfg. I don't see why anybody
should want to do this, but who knows?
I have tested this version on linux and solaris hosts, with gcc's
directories mounted at weird non-standard mount points, using egcs
(linux/sh-rtemscoff), gcc-2.7.2.2 using native tools (solaris), gcc-2.7.2.3
w/ gnutools (solaris/linux). I don't expect it to break anything, but of
cause I can't promise it. It will break most/all *-posix.cfg configuration
almost for certain, but not more as rtems' current *posix.cfg configurations
already do (hard-coded configurations).
I am not sure if this is ready to be included into the next snapshot or not.
Perhaps you might try this on your systems and if it you don't notice
serious bugs you might put it into the snapshot for public testing (I don't
like this, but I don't see another possiblity to test generality).
I enclose a patch for configure.in and some configuration files which
comprizes fixes for all items mentioned except of #3 . Don't forget to run
"aclocal -I aclocal; autoconf;" after applying the patch (:-).
Diffstat (limited to 'make/compilers')
-rw-r--r-- | make/compilers/gcc-portsw.cfg | 12 | ||||
-rw-r--r-- | make/compilers/gcc-target-default.cfg | 23 |
2 files changed, 3 insertions, 32 deletions
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 |