path: root/c/src/lib/wrapup
diff options
authorJoel Sherrill <>1998-06-27 17:09:47 +0000
committerJoel Sherrill <>1998-06-27 17:09:47 +0000
commit98100d275f62a034917d0b1f3157053e6c130005 (patch)
treef396a0ea43f9f8d484241d6f28717cce72cb9ef6 /c/src/lib/wrapup
parentd13b247131b9cd3d0e4c066c246fffe573b0ed0a (diff)
Monstrous patch from Ralf Corsepius <>. 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/, 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/ 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.) * 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/* 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 * 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, as I suppose there might exist a variety of valid vendors (2nd field of the name-tripple) * Disabled override MAKEFLAGS in toplevel - 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/lib/wrapup')
1 files changed, 41 insertions, 9 deletions
diff --git a/c/src/lib/wrapup/ b/c/src/lib/wrapup/
index 46f7aac927..bef0aa637b 100644
--- a/c/src/lib/wrapup/
+++ b/c/src/lib/wrapup/
@@ -13,27 +13,59 @@ PROJECT_ROOT = @PROJECT_ROOT@
include $(RTEMS_ROOT)/make/custom/$(RTEMS_BSP).cfg
include $(RTEMS_ROOT)/make/lib.cfg
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)
all: $(ARCH) $(LIB)
-$(LIB): $(SRCS)
- $(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 $@"