diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-06-27 17:09:47 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-06-27 17:09:47 +0000 |
commit | 98100d275f62a034917d0b1f3157053e6c130005 (patch) | |
tree | f396a0ea43f9f8d484241d6f28717cce72cb9ef6 /c/src | |
parent | Clean up from Aleksey Romanov (Quality Quorum <qqi@world.std.com>). (diff) | |
download | rtems-98100d275f62a034917d0b1f3157053e6c130005.tar.bz2 |
Monstrous patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de>. I have
made no attempt to divide the comments up and place them with just
the appropriate files. Here is an excerpt from Ralf's email:
Changes including comments on changes I made after cycling through
all the targets:
* Added ranlib support. Now all targets use "ranlib" instead of "ar -s"
to build an index for a library. If ranlib isn't detected during
configuration, check if ar -s is working and try "ar -s" instead of
* Removed $(XXX_FOR_TARGET) from make/target.cfg.in, use $(XXX) instead now.
* gcc-target-default.cfg: LINK_XXXX-defines reworked to solve the -l
problem under posix (cf gcc-target-default.cfg)
* rtems-glom replaced by Makefile-rules inside of the wrapup/Makefile.in
that has been using rtems-glom until now.
* Removed CCC and friends in gcc-target-default.cfg, as they have been
breaking CXX support.
* Removed CONFIG.$(TARGET_ARCH).CC lines from several custom/*.cfg
files, because this is now set in custom/default.cfg.
* Added aclocal/ar-s.m4, check whether "ar -s" is working
* Added aclocal/cygwin.m4 and aclocal/exeext.m4.
* Reworked aclocal/canonicalize-tools.m4: Added ar -s check; fixes for
problems when XXX_FOR_TARGET is given via environment variables (didn't
work for gcc until now), adding cygwin check, improved autoconf-cache
handling.
* Removed -l from make rule dependencies. LINK_LIBS is now allowed to
contain -L and -l. LINK_OBJS and LINK_FILES must not contain -L or -l.
gcc28 make-exe rules now link using $(LINK_OBJS) $(LINK_LIBS) => Almost
all custom/*.cfg are modified. This is very likely to break something
because of typos or having missed to edit a file.
Open problems, known bugs, things I didn't do:
* custom/p4000.cfg seems to be out of date and requires to be reviewed.
(JRS NOTE: It is subordinate p4650 and p4600 -- both of which build ok
after minor changes.)
* custom/psim.cfg needs to be reviewed, I added some changes to it, I am
insecure about.
(JRS NOTE: psim had a minor problem endif/endef swapped but runs fine.)
* rtems-glom.in can now be removed.
* gcc*.cfg files "make depend" rules don't honor language specific flags
(e.g CXXFLAGS is ignored for *.cc) - Nothing to worry about now, but may
cause problems for hosts/targets not using gcc or rtems-add-ons that use
external packages.
* AFAIS, the no_bsp BSP can't be build anymore, i.e. configure refused
to configure for it whatever I tried.
* The toplevel and toplevel+1 README files are quite out-dated
* cygwin.m4 isn't of much use for rtems. In most cases (cf.
aclocal/*.m4) it is worked around by directly using $host_os. I think
I'll remove it soon after the next snapshot
* Before release the cygwin patch needs to be tested under cygwin. I may
have broken/missed something (esp. the sed-pattern to convert \\ into /
may be broken).
* You should try to build/run the posix-BSP under solaris - I don't
expect problems, but I am not 100% sure, esp. with regard to ranlib/ar -s.
* You should consider to convert all make/compilers/*.cfg files into
make/compilers/*.cfg.in files and let autoconf generate the *.cfg. This
may help getting rid of some if/then/else statements and help
hard-coding some defines into those files in future and shouldn't
disturb now.
* Not having installed libc.a/libm.a on a host may still break building
rtems, esp. when using -disable-gcc28 as the gcc27-configuration scheme
directly accesses libc.a and libm.a. The problem should not appear when
using gcc28 because it references libc/libm only through -lc and -lm
which may be static or dynamic (I didn't test this).
* shgen is not yet included (I didn't yet have enough time to integrate it).
* I know about a few more configure-probs (esp. cross-checking
--enable-* flags).
+ warn/refuse to configure when --enable-libcdir and
--enable-gcc28 are given.
+ force --enable-libcdir when --disable-gcc28 is given
* Replaced KSHELL with @KSH@ in some shell scripts generated by configure.in.
* Added a dependency to aclocal/*.m4 in the toplevel Makefile => configure
and aclocal.m4 will now be rebuild when any aclocal/*.m4 file is changed
* Some changes to aclocal/gcc-pipe.m4 and aclocal/gcc-specs.m4
* Replaced i[[3456]]86-unknown-freebsd2.[[12]] with i[[3456]]86-*freebsd2.*
in configure.in, as I suppose there might exist a variety of valid vendors
(2nd field of the name-tripple)
* Disabled override MAKEFLAGS in toplevel Makefile.in - Potential
side-effects are not really clear to me.
* In mvme162.cfg, $(LINK_LIBS) is missing in the CC line in gcc28's make-exe
rule (yet another one I missed to edit). Just append $(LINK_LIBS) to
the "CC" line, like I hopefully did to ALL other custom/*.cfg files.
* the problem with mvme162lx.cfg is a follow-up problem of the
mvme162.cfg-bug.
* mvme162/console and idp/console had variables named Buffer which
conflicted with similarly named variables in some tests.
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/exec/score/tools/generic/size_rtems.in | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/i386/pc386/tools/bin2boot.c | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/idp/console/console.c | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/m68k/mvme162/console/console.c | 10 | ||||
-rw-r--r-- | c/src/lib/wrapup/Makefile.in | 50 | ||||
-rw-r--r-- | c/src/make/README | 5 | ||||
-rw-r--r-- | c/src/make/compilers/gcc-target-default.cfg | 70 | ||||
-rw-r--r-- | c/src/make/host.cfg.in | 5 | ||||
-rw-r--r-- | c/src/wrapup/Makefile.in | 50 |
9 files changed, 142 insertions, 66 deletions
diff --git a/c/src/exec/score/tools/generic/size_rtems.in b/c/src/exec/score/tools/generic/size_rtems.in index e3dde44a81..72c96e842c 100644 --- a/c/src/exec/score/tools/generic/size_rtems.in +++ b/c/src/exec/score/tools/generic/size_rtems.in @@ -1,4 +1,4 @@ -#!KSHELL -p +#!@KSH@ -p # # size_rtems # diff --git a/c/src/lib/libbsp/i386/pc386/tools/bin2boot.c b/c/src/lib/libbsp/i386/pc386/tools/bin2boot.c index 7818f66266..d8d19b4166 100644 --- a/c/src/lib/libbsp/i386/pc386/tools/bin2boot.c +++ b/c/src/lib/libbsp/i386/pc386/tools/bin2boot.c @@ -67,12 +67,12 @@ getNumArg(char *arg) { char *dummy; - if (arg[0] == '0') + if (arg[0] == '0') { if ((arg[1] == 'x') || (arg[1] == 'X')) /* Hexadecimal */ return (DWord)strtol(arg, &dummy, 16); else /* Octal */ return (DWord)strtol(arg, &dummy, 8); - else /* Decimal */ + } else /* Decimal */ return (DWord)strtol(arg, &dummy, 10); } /* getNumArg */ diff --git a/c/src/lib/libbsp/m68k/idp/console/console.c b/c/src/lib/libbsp/m68k/idp/console/console.c index 90d21ece5f..3e67d70e61 100644 --- a/c/src/lib/libbsp/m68k/idp/console/console.c +++ b/c/src/lib/libbsp/m68k/idp/console/console.c @@ -16,7 +16,7 @@ #include <ringbuf.h> -Ring_buffer_t Buffer[ 2 ]; +Ring_buffer_t Console_Buffer[ 2 ]; rtems_isr C_Receive_ISR(rtems_vector_number vector); @@ -39,8 +39,8 @@ rtems_device_driver console_initialize( { rtems_status_code status; - Ring_buffer_Initialize( &Buffer[ 0 ] ); - Ring_buffer_Initialize( &Buffer[ 1 ] ); + Ring_buffer_Initialize( &Console_Buffer[ 0 ] ); + Ring_buffer_Initialize( &Console_Buffer[ 1 ] ); init_pit(); @@ -91,10 +91,10 @@ rtems_boolean is_character_ready( int port ) { - if ( Ring_buffer_Is_empty( &Buffer[ port ] ) ) + if ( Ring_buffer_Is_empty( &Console_Buffer[ port ] ) ) return FALSE; - Ring_buffer_Remove_character( &Buffer[ port ], *ch ); + Ring_buffer_Remove_character( &Console_Buffer[ port ], *ch ); return TRUE; } @@ -114,7 +114,7 @@ rtems_boolean quick_char_check( int port ) { - if ( Ring_buffer_Is_empty( &Buffer[ port ] ) ) + if ( Ring_buffer_Is_empty( &Console_Buffer[ port ] ) ) return FALSE; return TRUE; diff --git a/c/src/lib/libbsp/m68k/mvme162/console/console.c b/c/src/lib/libbsp/m68k/mvme162/console/console.c index a639df941d..ab700fe613 100644 --- a/c/src/lib/libbsp/m68k/mvme162/console/console.c +++ b/c/src/lib/libbsp/m68k/mvme162/console/console.c @@ -25,7 +25,7 @@ #include <rtems/libio.h> #include <ringbuf.h> -Ring_buffer_t Buffer[2]; +Ring_buffer_t Console_Buffer[2]; /* * Interrupt handler for receiver interrupts @@ -43,7 +43,7 @@ rtems_isr C_Receive_ISR(rtems_vector_number vector) else if (ipend == 0x20) port = 1; /* channel A intr pending */ else return; - Ring_buffer_Add_character(&Buffer[port], ZREADD(port)); + Ring_buffer_Add_character(&Console_Buffer[port], ZREADD(port)); if (ZREAD(port, 1) & 0x70) { /* check error stat */ ZWRITE0(port, 0x30); /* reset error */ @@ -64,7 +64,7 @@ rtems_device_driver console_initialize( */ for (i = 0; i <= 1; i++) { - Ring_buffer_Initialize( &Buffer[i] ); + Ring_buffer_Initialize( &Console_Buffer[i] ); ZWRITE(i, 2, SCC_VECTOR); ZWRITE(i, 10, 0); ZWRITE(i, 1, 0x10); /* int on all Rx chars or special condition */ @@ -113,10 +113,10 @@ rtems_device_driver console_initialize( rtems_boolean char_ready(int port, char *ch) { - if ( Ring_buffer_Is_empty( &Buffer[port] ) ) + if ( Ring_buffer_Is_empty( &Console_Buffer[port] ) ) return FALSE; - Ring_buffer_Remove_character( &Buffer[port], *ch ); + Ring_buffer_Remove_character( &Console_Buffer[port], *ch ); return TRUE; } diff --git a/c/src/lib/wrapup/Makefile.in b/c/src/lib/wrapup/Makefile.in index 46f7aac927..bef0aa637b 100644 --- a/c/src/lib/wrapup/Makefile.in +++ b/c/src/lib/wrapup/Makefile.in @@ -13,27 +13,59 @@ PROJECT_ROOT = @PROJECT_ROOT@ include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/lib.cfg -LIB=$(PROJECT_RELEASE)/lib/librtemsall.a +LIB=$(PROJECT_RELEASE)/lib/librtemsall${LIB_VARIANT}.a SRCS=$(wildcard $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a) \ $(PROJECT_RELEASE)/lib/librtems$(LIB_VARIANT).a \ $(wildcard $(PROJECT_RELEASE)/lib/libposix$(LIB_VARIANT).a) \ $(wildcard $(PROJECT_RELEASE)/lib/libka9q$(LIB_VARIANT).a) \ + $(wildcard $(PROJECT_RELEASE)/lib/libcpu$(LIB_VARIANT).a) \ $(PROJECT_RELEASE)/lib/libcsupport$(LIB_VARIANT).a \ $(PROJECT_RELEASE)/lib/libmisc$(LIB_VARIANT).a \ $(wildcard $(PROJECT_RELEASE)/lib/rtems-ctor$(LIB_VARIANT).o) \ $(wildcard $(PROJECT_RELEASE)/lib/libno-ctor$(LIB_VARIANT).a) -CLEAN_ADDITIONS += +CLEAN_ADDITIONS += $(ARCH)/check CLOBBER_ADDITIONS += all: $(ARCH) $(LIB) - -$(LIB): $(SRCS) - PROJECT_RELEASE=$(PROJECT_RELEASE) \ - $(PROJECT_RELEASE)/build-tools/rtems-glom \ - -d $(PROJECT_RELEASE)/lib -v -V "$(LIB_VARIANT)" \ - -a $(AR) - + install: all +$(ARCH)/check:: $(SRCS) + @$(RM) $@; touch $@; + @for f in $(SRCS); do \ + case $$f in \ + *.o) echo " `basename $$f`" >> $@ \ + ;; \ + *.rel) echo " `basename $$f`" >> $@ \ + ;; \ + *.a) \ + ( list=`$(AR) t $$f`;\ + for i in $$list; do \ + if grep " $$i" $@; then \ + echo "ERROR -- $$i in multiple files"; exit 1; \ + fi;\ + echo " $$i" >> $@;\ + done; ) \ + ;; \ + esac; \ + done; + +$(LIB):: $(ARCH)/check + @for f in $(SRCS); do \ + case $$f in \ + *.o) $(AR) ru $@ $$f \ + ;;\ + *.rel) $(AR) ru $@ $$f \ + ;;\ + *.a) \ + (cd $(ARCH); \ + list=`$(AR) t $$f`; \ + $(AR) x $$f $$list; $(AR) ru $@ $$list; \ + $(RM) $$list ;)\ + ;; \ + esac; \ + done; + @$(RANLIB) $@ + @echo "*** Glommed $@" diff --git a/c/src/make/README b/c/src/make/README index 6d4b7501b4..6cdc4b2c6e 100644 --- a/c/src/make/README +++ b/c/src/make/README @@ -210,7 +210,6 @@ personality modules specified by the customization file for: compiler ( make/compilers/??.cfg ) - operating system ( make/os/??.cfg ) private customization files @@ -310,10 +309,6 @@ a number of MAKE variables are automatically set and maintained by the config files. - CONFIG.$(HOST_ARCH).OS - -- full path of OS config file, set by - custom config file. - CONFIG.$(HOST_ARCH).CC -- full path of C compilation config file, set by custom config file. diff --git a/c/src/make/compilers/gcc-target-default.cfg b/c/src/make/compilers/gcc-target-default.cfg index d75c1e4230..82294d0e87 100644 --- a/c/src/make/compilers/gcc-target-default.cfg +++ b/c/src/make/compilers/gcc-target-default.cfg @@ -4,10 +4,6 @@ # $Id$ # -# names for C++ compilers. -CXX=$(CC) -CCC=$(CXX) - CPPFLAGS=$(CFLAGS) $(XCPPFLAGS) CPLUS_CPPFLAGS=$(CFLAGS) $(XCPPFLAGS) @@ -45,7 +41,7 @@ ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g \ else # Used for embedded bsps # Ask gcc where it finds its own include files -GCC_INCLUDE=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=include) +GCC_INCLUDE=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=include $(GCCSED)) CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \ -nostdinc -I$(PROJECT_INCLUDE) \ @@ -76,11 +72,11 @@ ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g -I$(srcdir) \ # default location of Standard C Library ifndef LIBC_LIBC -LIBC_LIBC=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=libc.a) +LIBC_LIBC=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=libc.a $(GCCSED)) endif ifndef LIBC_LIBM -LIBC_LIBM=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=libm.a) +LIBC_LIBM=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=libm.a $(GCCSED)) endif endif @@ -93,7 +89,7 @@ else HAS_CPLUSPLUS=no endif -# debug flag; typically +# debug flag; CFLAGS_DEBUG_V+=-Wno-unused ifeq ($(RTEMS_USE_GCC272),no) @@ -173,10 +169,9 @@ ARFLAGS=ruv # # Command to convert a normal archive to one searchable by $(LD) -# Not needed on SVR4 # - -MKLIB=echo library is complete: +# NOTE: Obsolete, use $(RANLIB) instead, MKLIB may disappear soon +MKLIB=$(RANLIB) # # How to compile stuff into ${ARCH} subdirectory @@ -193,12 +188,6 @@ ${ARCH}/%.o: %.c ${ARCH}/%.o: %.cc ${COMPILE.cc} -o $@ $< -${ARCH}/%.o: %.cpp - ${COMPILE.cc} -o $@ $< - -${ARCH}/%.o: %.cxx - ${COMPILE.cc} -o $@ $< - ${ARCH}/%.o: %.S ${COMPILE.c} -DASM -o $@ $< @@ -272,26 +261,49 @@ CONSTRUCTOR= LIBC_LOW= ifndef LIBGCC -LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) +LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name $(GCCSED)) endif -LINK_OBJS=\ +# +# NOTE: a rule to link an rtems' application should look similar to this +# (cf. "make-exe" in make/custom/*.cfg): +# +# gcc27: +# $(PGM): $(LINK_FILES) +# $(LD) $(LDFLAGS) -o $@ $(LINK_OBJS) \ +# --start-group $(LIB_LIBS) --end-group +# +# gcc28: +# $(PGM): $(LINK_FILES) +# $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LIB_LIBS) +# + +LINK_OBJS =\ $(CONSTRUCTOR) \ $(OBJS) \ $(MANAGERS_NOT_WANTED:%=$(PROJECT_RELEASE)/lib/no-%$(LIB_VARIANT).rel) \ - $(LD_LIBS) \ $(PROJECT_RELEASE)/lib/libtest$(LIBSUFFIX_VA) -LINK_LIBS=\ - $(LD_LIBS) \ - $(LIBC_EXTRA_LIBS) \ - $(PROJECT_RELEASE)/lib/librtemsall$(LIBSUFFIX_VA) \ - $(LIBC_LIBM) $(LIBC_LIBC) $(LIBGCC) - -LINK_FILES=\ +LINK_FILES =\ $(START_FILE) \ - $(LINK_OBJS) \ - $(LINK_LIBS) + $(CONSTRUCTOR) \ + $(OBJS) \ + $(MANAGERS_NOT_WANTED:%=$(PROJECT_RELEASE)/lib/no-%$(LIB_VARIANT).rel) \ + $(PROJECT_RELEASE)/lib/libtest$(LIBSUFFIX_VA) \ + $(PROJECT_RELEASE)/lib/librtemsall$(LIBSUFFIX_VA) + +ifeq ($(RTEMS_USE_GCC272),yes) +LINK_LIBS = $(PROJECT_RELEASE)/lib/librtemsall$(LIBSUFFIX_VA) +ifeq ($(RTEMS_CROSS_TARGET),yes) +# NOTE: add libc and libgcc only for embedded targets +# LIBC_LIBM should not be needed by rtems itself. +# FIXME: If a BSP requires libm, its make/custom/*.cfg file should add +# LIBC_LIBM to LINK_LIBS (untested) +LINK_LIBS += $(LIBC_LIBC) $(LIBGCC) +endif +endif + +LINK_LIBS += $(LD_LIBS) # # Allow user to override link commands (to build a prom image, perhaps) diff --git a/c/src/make/host.cfg.in b/c/src/make/host.cfg.in index ba09e56e45..8b2350e6da 100644 --- a/c/src/make/host.cfg.in +++ b/c/src/make/host.cfg.in @@ -37,6 +37,11 @@ FGREP=@FGREP@ GREP=@GREP@ EGREP=@EGREP@ +# FIXME: HACK for a bug in cygwin-hosted egcs which returns a mixture +# of '\\' and '/' as path separators. +# Should be removed as soon as this bug is fixed in egcs. +GCCSED = @GCCSED@ + # ksh (or bash) is used by some shell scripts; ref build-tools/scripts/Makefile # # Must have shell functions. Some ksh's core dump mysteriously and diff --git a/c/src/wrapup/Makefile.in b/c/src/wrapup/Makefile.in index 46f7aac927..bef0aa637b 100644 --- a/c/src/wrapup/Makefile.in +++ b/c/src/wrapup/Makefile.in @@ -13,27 +13,59 @@ PROJECT_ROOT = @PROJECT_ROOT@ include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg include $(RTEMS_ROOT)/make/lib.cfg -LIB=$(PROJECT_RELEASE)/lib/librtemsall.a +LIB=$(PROJECT_RELEASE)/lib/librtemsall${LIB_VARIANT}.a SRCS=$(wildcard $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a) \ $(PROJECT_RELEASE)/lib/librtems$(LIB_VARIANT).a \ $(wildcard $(PROJECT_RELEASE)/lib/libposix$(LIB_VARIANT).a) \ $(wildcard $(PROJECT_RELEASE)/lib/libka9q$(LIB_VARIANT).a) \ + $(wildcard $(PROJECT_RELEASE)/lib/libcpu$(LIB_VARIANT).a) \ $(PROJECT_RELEASE)/lib/libcsupport$(LIB_VARIANT).a \ $(PROJECT_RELEASE)/lib/libmisc$(LIB_VARIANT).a \ $(wildcard $(PROJECT_RELEASE)/lib/rtems-ctor$(LIB_VARIANT).o) \ $(wildcard $(PROJECT_RELEASE)/lib/libno-ctor$(LIB_VARIANT).a) -CLEAN_ADDITIONS += +CLEAN_ADDITIONS += $(ARCH)/check CLOBBER_ADDITIONS += all: $(ARCH) $(LIB) - -$(LIB): $(SRCS) - PROJECT_RELEASE=$(PROJECT_RELEASE) \ - $(PROJECT_RELEASE)/build-tools/rtems-glom \ - -d $(PROJECT_RELEASE)/lib -v -V "$(LIB_VARIANT)" \ - -a $(AR) - + install: all +$(ARCH)/check:: $(SRCS) + @$(RM) $@; touch $@; + @for f in $(SRCS); do \ + case $$f in \ + *.o) echo " `basename $$f`" >> $@ \ + ;; \ + *.rel) echo " `basename $$f`" >> $@ \ + ;; \ + *.a) \ + ( list=`$(AR) t $$f`;\ + for i in $$list; do \ + if grep " $$i" $@; then \ + echo "ERROR -- $$i in multiple files"; exit 1; \ + fi;\ + echo " $$i" >> $@;\ + done; ) \ + ;; \ + esac; \ + done; + +$(LIB):: $(ARCH)/check + @for f in $(SRCS); do \ + case $$f in \ + *.o) $(AR) ru $@ $$f \ + ;;\ + *.rel) $(AR) ru $@ $$f \ + ;;\ + *.a) \ + (cd $(ARCH); \ + list=`$(AR) t $$f`; \ + $(AR) x $$f $$list; $(AR) ru $@ $$list; \ + $(RM) $$list ;)\ + ;; \ + esac; \ + done; + @$(RANLIB) $@ + @echo "*** Glommed $@" |