From 98100d275f62a034917d0b1f3157053e6c130005 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Sat, 27 Jun 1998 17:09:47 +0000 Subject: 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/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. --- make/README | 5 --- make/compilers/gcc-no_bsp.cfg | 2 +- make/compilers/gcc-portsw.cfg | 2 +- make/compilers/gcc-target-default.cfg | 70 ++++++++++++++++++++--------------- make/custom/FreeBSD-posix.cfg | 15 +------- make/custom/HPUX9-posix.cfg | 11 +----- make/custom/Linux-posix.cfg | 16 +------- make/custom/Solaris-posix.cfg | 13 +------ make/custom/bare.cfg | 3 -- make/custom/cvme961.cfg | 3 +- make/custom/dmv152.cfg | 3 +- make/custom/efi332.cfg | 3 +- make/custom/efi68k.cfg | 3 +- make/custom/erc32.cfg | 3 +- make/custom/force386.cfg | 3 +- make/custom/gen68302.cfg | 3 +- make/custom/gen68360.cfg | 3 +- make/custom/gensh1.cfg | 14 +++---- make/custom/go32.cfg | 7 ++-- make/custom/i386ex.cfg | 3 +- make/custom/idp.cfg | 3 +- make/custom/mvme136.cfg | 3 +- make/custom/mvme147.cfg | 3 +- make/custom/mvme162.cfg | 12 ++---- make/custom/no_bsp.cfg | 25 +------------ make/custom/ods68302.cfg | 8 +--- make/custom/p4000.cfg | 5 ++- make/custom/p4600.cfg | 9 ++--- make/custom/p4650.cfg | 14 ++----- make/custom/papyrus.cfg | 3 +- make/custom/pc386.cfg | 3 +- make/custom/psim.cfg | 11 +++++- make/custom/simhppa.cfg | 3 +- make/host.cfg.in | 5 +++ make/target.cfg.in | 28 ++++++-------- 35 files changed, 132 insertions(+), 188 deletions(-) (limited to 'make') diff --git a/make/README b/make/README index 6d4b7501b4..6cdc4b2c6e 100644 --- a/make/README +++ b/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/make/compilers/gcc-no_bsp.cfg b/make/compilers/gcc-no_bsp.cfg index 35dbe5e599..6260eafe65 100644 --- a/make/compilers/gcc-no_bsp.cfg +++ b/make/compilers/gcc-no_bsp.cfg @@ -264,7 +264,7 @@ START_FILE= CONSTRUCTOR= -LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) +LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name $(GCCSED)) LINK_FILES= $(START_FILE) \ $(CONSTRUCTOR) \ diff --git a/make/compilers/gcc-portsw.cfg b/make/compilers/gcc-portsw.cfg index d9b47b72b9..6b6f3c459f 100644 --- a/make/compilers/gcc-portsw.cfg +++ b/make/compilers/gcc-portsw.cfg @@ -241,7 +241,7 @@ START_FILE= $(PROJECT_RELEASE)/lib/crt0$(LIB_VARIANT).o $(PROJECT_RELEASE)/lib/r LIBC_LOW= $(PROJECT_RELEASE)/lib/libcsupport$(LIBSUFFIX_VA) -LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) +LIBGCC = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name $(GCCSED)) LIBOSBOOT=/home/src/amd29k/sps2000/netrom.o diff --git a/make/compilers/gcc-target-default.cfg b/make/compilers/gcc-target-default.cfg index d75c1e4230..82294d0e87 100644 --- a/make/compilers/gcc-target-default.cfg +++ b/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/make/custom/FreeBSD-posix.cfg b/make/custom/FreeBSD-posix.cfg index f48b2ecc49..326c0078f2 100644 --- a/make/custom/FreeBSD-posix.cfg +++ b/make/custom/FreeBSD-posix.cfg @@ -34,11 +34,7 @@ LIBC_DEFINES += -DHEAPSPACE_MB=1 # This requires that at least the GNU C++ compiler and libg++ be installed. ifeq ($(RTEMS_HAS_CPLUSPLUS),yes) HAS_CPLUSPLUS=yes -# No need to set it, gcc knows about them -# LIBCC_INCLUDE=/usr/include/g++ CPLUS_LD_LIBS += $(PROJECT_RELEASE)/lib/librtems++$(LIBSUFFIX_VA) -else -HAS_CPLUSPLUS=no endif # Define this to yes if this target supports multiprocessor environments. @@ -80,21 +76,12 @@ define make-target-options echo "#define RTEMS_UNIX 1 " >>$@ endef -ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) -o $@ $(LINK_FILES) $(LD_LIBS) $(LIBC_LIBM) $(LIBC_LIBC) + $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LINK_LIBS) $(NM) -ng $@ > $(basename $@).num $(SIZE) $@ endef -else -# -# gcc28 not yet supported -# -endif # ***************************************************************** # Miscellaneous additions go here - -# Workaround for missing ranlib support in RTEMS -MKLIB=$(AR) s $(@) ; echo library is complete: diff --git a/make/custom/HPUX9-posix.cfg b/make/custom/HPUX9-posix.cfg index 7adcb73267..c0383ea164 100644 --- a/make/custom/HPUX9-posix.cfg +++ b/make/custom/HPUX9-posix.cfg @@ -75,20 +75,11 @@ define make-target-options echo "#define RTEMS_UNIX 1 " >>$@ endef -ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) -o $@ $(LINK_FILES) $(LD_LIBS) $(LIBC_LIBM) $(LIBC_LIBC) + $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LINK_LIBS) $(NM) -ng $@ > $(basename $@).num $(SIZE) $@ endef -else -# -# gcc28 not yet supported -# -endif # Miscellaneous additions go here -# Workaround for missing ranlib support in RTEMS -MKLIB=$(AR) s $(@) ; echo library is complete: - diff --git a/make/custom/Linux-posix.cfg b/make/custom/Linux-posix.cfg index 5c0b5de5d6..2972d6388a 100644 --- a/make/custom/Linux-posix.cfg +++ b/make/custom/Linux-posix.cfg @@ -77,26 +77,12 @@ define make-target-options echo "#define RTEMS_UNIX 1 " >>$@ endef -ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) -o $@ $(LINK_FILES) $(LD_LIBS) $(LIBC_LIBM) $(LIBC_LIBC) + $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LINK_LIBS) $(NM) -ng $@ > $(basename $@).num $(SIZE) $@ endef -else -# -# just use the same make-exe as gcc 272 -# -define make-exe - $(CC) -o $@ $(LINK_FILES) $(LD_LIBS) $(LIBC_LIBM) $(LIBC_LIBC) - $(NM) -ng $@ > $(basename $@).num - $(SIZE) $@ -endef -endif # ***************************************************************** # Miscellaneous additions go here - -# Workaround for missing ranlib support in RTEMS -MKLIB=$(AR) s $(@) ; echo library is complete: diff --git a/make/custom/Solaris-posix.cfg b/make/custom/Solaris-posix.cfg index bab2c21427..f2bf14997c 100644 --- a/make/custom/Solaris-posix.cfg +++ b/make/custom/Solaris-posix.cfg @@ -27,7 +27,6 @@ RTEMS_USE_NEWLIB=no LIBC_DEFINES += -DWORKSPACE_MB=2 LIBC_DEFINES += -DHEAPSPACE_MB=1 LIBC_DEFINES +=-DRTEMS_UNIXLIB -DRTEMS_UNIX -DMALLOC_PROVIDED -DRTEMS_DEBUG -LIBC_LIBM=-lm DEFINES += -D__EXTENSIONS__ -Dsolaris2 @@ -77,21 +76,11 @@ define make-target-options echo "#define RTEMS_UNIX 1 " >>$@ endef -ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) -o $@ $(LINK_FILES) $(LD_LIBS) $(LIBC_LIBM) $(LIBC_LIBC) + $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LINK_LIBS) $(NM) -ng $@ > $(basename $@).num $(SIZE) $@ endef -else -# NOTE: Untested -define make-exe - $(CC) -v $(CFLAGS) -o $@ $(LINK_OBJS) - $(NM) -ng $@ > $(basename $@).num - $(SIZE) $@ -endef -endif - # ***************************************************************** diff --git a/make/custom/bare.cfg b/make/custom/bare.cfg index ce826ce7ba..8ad849e4be 100644 --- a/make/custom/bare.cfg +++ b/make/custom/bare.cfg @@ -17,9 +17,6 @@ CPU_CFLAGS=$(BARE_CPU_CFLAGS) include $(RTEMS_ROOT)/make/custom/default.cfg -## Target compiler config file, if any -CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-target-default.cfg - # optimize flag: typically -0, could use -O4 or -fast # -O4 is ok for RTEMS CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer diff --git a/make/custom/cvme961.cfg b/make/custom/cvme961.cfg index 443fe07c56..fbc8eb660a 100644 --- a/make/custom/cvme961.cfg +++ b/make/custom/cvme961.cfg @@ -68,7 +68,8 @@ endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/dmv152.cfg b/make/custom/dmv152.cfg index aa87312e4f..078f23c636 100644 --- a/make/custom/dmv152.cfg +++ b/make/custom/dmv152.cfg @@ -71,7 +71,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/efi332.cfg b/make/custom/efi332.cfg index 3cecefe485..ec3a4d8cde 100644 --- a/make/custom/efi332.cfg +++ b/make/custom/efi332.cfg @@ -62,7 +62,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/efi68k.cfg b/make/custom/efi68k.cfg index d3005af7d4..34f91c2357 100644 --- a/make/custom/efi68k.cfg +++ b/make/custom/efi68k.cfg @@ -62,7 +62,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/erc32.cfg b/make/custom/erc32.cfg index 569d7139cc..3267d52474 100644 --- a/make/custom/erc32.cfg +++ b/make/custom/erc32.cfg @@ -90,7 +90,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/force386.cfg b/make/custom/force386.cfg index 1738acb508..7828e3576d 100644 --- a/make/custom/force386.cfg +++ b/make/custom/force386.cfg @@ -66,7 +66,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/gen68302.cfg b/make/custom/gen68302.cfg index 886d519f7c..7fce2148d2 100644 --- a/make/custom/gen68302.cfg +++ b/make/custom/gen68302.cfg @@ -62,7 +62,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/gen68360.cfg b/make/custom/gen68360.cfg index b476763b0b..fb1493d788 100644 --- a/make/custom/gen68360.cfg +++ b/make/custom/gen68360.cfg @@ -83,7 +83,8 @@ endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/gensh1.cfg b/make/custom/gensh1.cfg index fac62e69b5..6490fe7e09 100644 --- a/make/custom/gensh1.cfg +++ b/make/custom/gensh1.cfg @@ -63,19 +63,21 @@ endef # The following are definitions of make-exe which will work using ld as # is currently required. It is expected that as of gcc 2.8, the end user # will be able to override parts of the compilers specs and link using gcc. -# -T$(PROJECT_RELEASE)/lib/linkcmds $(LINK_FILES) -lrtemsall -lc $(LD_PATHS:%=-L %) ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) $(LDFLAGS) -nostdlib -o $(basename $@).exe \ - -T$(PROJECT_RELEASE)/lib/linkcmds $(LINK_FILES) $(LD_PATHS:%=-L %) + $(LD) $(LDFLAGS) -N -e _start \ + -T$(PROJECT_RELEASE)/lib/linkcmds\ + -o $(basename $@).exe \ + $(START_FILE) $(LINK_OBJS) --start-group $(LINK_LIBS) --end-group $(NM) -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef else define make-exe - $(CC) -Wl,-Map,$(basename $@).map $(CFLAGS) \ - -o $(basename $@).exe $(LINK_OBJS) + $(CC) -v -Wl,-Map,$(basename $@).map \ + $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef @@ -83,5 +85,3 @@ endif # Miscellaneous additions go here -# Workaround for missing ranlib support in rtems -MKLIB=$(RANLIB) diff --git a/make/custom/go32.cfg b/make/custom/go32.cfg index 847fc529da..ff67d0b0fd 100644 --- a/make/custom/go32.cfg +++ b/make/custom/go32.cfg @@ -93,15 +93,16 @@ define make-exe $(LD) $(LDFLAGS) -N -o $(basename $@).exe \ $(shell $(CC) $(CPU_CFLAGS) -print-file-name=crt0.o) \ $(LINK_OBJS) --start-group $(LINK_LIBS) --end-group \ - $(shell $(CC) $(CPU_CFLAGS) -print-file-name=libcgo32.a) \ - $(shell $(CC) $(CPU_CFLAGS) -print-file-name=libpc.a) + $(shell $(CC) $(CPU_CFLAGS) -print-file-name=libcgo32.a $(GCCSED)) \ + $(shell $(CC) $(CPU_CFLAGS) -print-file-name=libpc.a $(GCCSED)) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/i386ex.cfg b/make/custom/i386ex.cfg index 7939307e05..12fcec58fb 100644 --- a/make/custom/i386ex.cfg +++ b/make/custom/i386ex.cfg @@ -67,7 +67,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/idp.cfg b/make/custom/idp.cfg index 302144c4a5..89541a7522 100644 --- a/make/custom/idp.cfg +++ b/make/custom/idp.cfg @@ -64,7 +64,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/mvme136.cfg b/make/custom/mvme136.cfg index aceb7b473c..ada4a834f4 100644 --- a/make/custom/mvme136.cfg +++ b/make/custom/mvme136.cfg @@ -63,7 +63,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/mvme147.cfg b/make/custom/mvme147.cfg index 74defad98a..89aab49929 100644 --- a/make/custom/mvme147.cfg +++ b/make/custom/mvme147.cfg @@ -57,7 +57,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe diff --git a/make/custom/mvme162.cfg b/make/custom/mvme162.cfg index ed5d974169..21a2fe7782 100644 --- a/make/custom/mvme162.cfg +++ b/make/custom/mvme162.cfg @@ -26,9 +26,6 @@ endif # mvme162lx - mc68lc040 # This is the actual bsp directory used during the build process. RTEMS_BSP_FAMILY=mvme162 -## Target compiler config file, if any -CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-target-default.cfg - # We may install in a CPU model based directory but this is still # a mvme162 based bsp. RTEMS_BSP=mvme162 @@ -90,7 +87,8 @@ endif # mc68lc040 define make-exe $(LD) $(LDFLAGS) -N -T $(LINKCMDS) -o $(basename $@).nxe \ - $(START_FILE) $(LINK_OBJS) --start-group $(LINK_LIBS) --end-group + $(START_FILE) $(LINK_OBJS) \ + --start-group $(LINK_LIBS) --end-group $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe @@ -99,7 +97,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).nxe $(LINK_OBJS) \ + $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).nxe $(basename $@).i $(SED) -e 's/.$$//' -e '/^S0/d' $(basename $@).i | \ $(PROJECT_TOOLS)/packhex > $(basename $@).exe @@ -108,6 +107,3 @@ define make-exe endef endif # Miscellaneous additions go here - - - diff --git a/make/custom/no_bsp.cfg b/make/custom/no_bsp.cfg index dd27e58a20..a0f29170de 100644 --- a/make/custom/no_bsp.cfg +++ b/make/custom/no_bsp.cfg @@ -4,9 +4,7 @@ # $Id$ # -# Specify here the host and target "architectures" -HOST_ARCH=o-$(RTEMS_HOST) -TARGET_ARCH=o-$(RTEMS_BSP) +include $(RTEMS_ROOT)/make/custom/default.cfg RTEMS_CPU=no_cpu RTEMS_CPU_MODEL=no_cpu_model @@ -14,27 +12,6 @@ RTEMS_CPU_MODEL=no_cpu_model # This is the actual bsp directory used during the build process. RTEMS_BSP_FAMILY=no_bsp -# use the inline functions instead of the macros -# ref: src/exec/generic/Makefile -# Need INLINE_UPCASE set to uppercase value of INLINE variable -# ref: make/compilers/gcc-force386.cfg -ifeq ($(RTEMS_USE_MACROS),yes) -INLINE=macros -INLINE_UPCASE= -else -INLINE=inline -INLINE_UPCASE=INLINE -endif - -# HOST Compiler config file -# You may also want to specify where the compiler resides here. -CC_$(HOST_ARCH)_DIR=$(RTEMS_GNUTOOLS_HOST) -CONFIG.$(HOST_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc.cfg - -## Target compiler config file, if any -CC_$(TARGET_ARCH)_DIR=$(RTEMS_GNUTOOLS) -CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-$(RTEMS_BSP).cfg - # Use the LIBC support for CYGNUS newlib # RTEMS_LIBC_DIR must already be set (by module file) RTEMS_USE_NEWLIB=no diff --git a/make/custom/ods68302.cfg b/make/custom/ods68302.cfg index cad5bd0f9d..ac4ffa9d0d 100644 --- a/make/custom/ods68302.cfg +++ b/make/custom/ods68302.cfg @@ -40,12 +40,7 @@ HAS_KA9Q=no # This requires that at least the GNU C++ compiler and libg++ be installed. ifeq ($(RTEMS_HAS_CPLUSPLUS),yes) HAS_CPLUSPLUS=yes -# no standard C++ libs provided by default -#LIBCC_INCLUDE=/usr/include/g++ -#CPLUS_LD_LIBS=-lstdc++ -lrtems++ CPLUS_LD_LIBS=$(PROJECT_RELEASE)/lib/librtems++$(LIBSUFFIX_VA) -else -HAS_CPLUSPLUS=no endif START_BASE=start302 @@ -90,7 +85,8 @@ else define make-exe $(CC) $(CFLAGS) $(CFLAGS_LD) \ -Wl,-defsym -Wl,MC68302_BASE=$(MC68302_BASE) \ - -o $(basename $@).exe $(LINK_OBJS) + -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $(basename $@).exe > $(basename $@).num $(SIZE) $(basename $@).exe endef diff --git a/make/custom/p4000.cfg b/make/custom/p4000.cfg index 18f46f007c..9f468adfc0 100644 --- a/make/custom/p4000.cfg +++ b/make/custom/p4000.cfg @@ -54,7 +54,7 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer ifeq ($(RTEMS_USE_GCC272),yes) define make-exe $(CC) $(LDFLAGS) -nostdlib -o $(basename $@).exe \ - -T$(PROJECT_RELEASE)/lib/linkcmds $(LINK_FILES) $(LD_PATHS:%=-L %) + -T$(PROJECT_RELEASE)/lib/linkcmds $(LINK_OBJS) $(LINK_LIBS) $(LD_PATHS:%=-L %) $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 @@ -63,7 +63,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 diff --git a/make/custom/p4600.cfg b/make/custom/p4600.cfg index 3c5d198040..2d8e5b3f9b 100644 --- a/make/custom/p4600.cfg +++ b/make/custom/p4600.cfg @@ -25,9 +25,6 @@ CPU_DEFINES+=-DP4000 -DCPU_R4000 -DP3_DIAG -D_R4000 -D__mips=3 TARGET_ARCH=o-p4600 RTEMS_BSP=p4000 -## Target compiler config file, if any -CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-target-default.cfg - # This target does NOT support the KA9Q TCP/IP stack so ignore requests # to enable it. HAS_KA9Q=no @@ -74,7 +71,8 @@ ifeq ($(RTEMS_USE_GCC272),yes) define make-exe $(LD) $(LDFLAGS) -N -T $(LINKCMDS) -o $(basename $@).exe \ - $(START_FILE) $(LINK_OBJS) --start-group $(LINK_LIBS) --end-group + $(START_FILE) $(LINK_OBJS) \ + --start-group $(LINK_LIBS) --end-group $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 @@ -83,7 +81,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) \ + $(LINK_LIBS) $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 diff --git a/make/custom/p4650.cfg b/make/custom/p4650.cfg index 22ca4c693a..3b01b116fd 100644 --- a/make/custom/p4650.cfg +++ b/make/custom/p4650.cfg @@ -24,9 +24,6 @@ CPU_DEFINES+=-DP4000 -DCPU_R4000 -DP3_DIAG -D_R4000 -D__mips=3 TARGET_ARCH=o-p4650 RTEMS_BSP=p4000 -## Target compiler config file, if any -CONFIG.$(TARGET_ARCH).CC = $(RTEMS_ROOT)/make/compilers/gcc-target-default.cfg - # This target does NOT support the KA9Q TCP/IP stack so ignore requests # to enable it. HAS_KA9Q=no @@ -73,7 +70,8 @@ ifeq ($(RTEMS_USE_GCC272),yes) define make-exe $(LD) $(LDFLAGS) -N -T $(LINKCMDS) -o $(basename $@).exe \ - $(START_FILE) $(LINK_OBJS) --start-group $(LINK_LIBS) --end-group + $(START_FILE) $(LINK_OBJS) \ + --start-group $(LINK_LIBS) --end-group $(LD_LIBS) $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 @@ -82,7 +80,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) $(CFLAGS_LD) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(LD_LIBS) $(OBJCOPY) -O srec $(basename $@).exe $(basename $@).srec1 $(PACKHEX) < $(basename $@).srec1 > $(basename $@).srec $(RM) $(basename $@).srec1 @@ -92,8 +91,3 @@ endef endif # Miscellaneous additions go here - - - - - diff --git a/make/custom/papyrus.cfg b/make/custom/papyrus.cfg index a589323bd6..830238bb1b 100644 --- a/make/custom/papyrus.cfg +++ b/make/custom/papyrus.cfg @@ -92,7 +92,8 @@ define make-exe endef else define make-exe - $(CC) $(CFLAGS) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $@ > $(basename $@).num $(SIZE) $@ endef diff --git a/make/custom/pc386.cfg b/make/custom/pc386.cfg index 3265ada60f..35ca1a1280 100644 --- a/make/custom/pc386.cfg +++ b/make/custom/pc386.cfg @@ -89,7 +89,8 @@ endef else define make-exe $(CC) $(CFLAGS) $(CFLAGS_LD) -Wl,-Ttext,$(RELOCADDR) \ - -o $(basename $@).obj $(LINK_OBJS) + -o $(basename $@).obj \ + $(LINK_OBJS) $(LINK_LIBS) $(OBJCOPY) -O a.out-i386 \ --remove-section=.rodata \ --remove-section=.comment \ diff --git a/make/custom/psim.cfg b/make/custom/psim.cfg index 5fe381b49e..a67ad5f6dc 100644 --- a/make/custom/psim.cfg +++ b/make/custom/psim.cfg @@ -101,11 +101,20 @@ HAS_KA9Q=no # $(START_FILE) $(LINK_OBJS) \ # $(LD_LIBS) \ # -Wl,-\( -Wl,-lc -Wl,-lrtemsall -Wl,-lgcc -Wl,-\) +ifeq ($(RTEMS_USE_GCC272),yes) define make-exe - $(CC) $(CFLAGS) -o $(basename $@).exe $(LINK_OBJS) + $(CC) $(CFLAGS) -o $(basename $@).exe $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $@ > $(basename $@).num $(SIZE) $@ endef +else +define make-exe + $(CC) $(CFLAGS) -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) + $(NM) -g -n $@ > $(basename $@).num + $(SIZE) $@ +endef +endif # Miscellaneous additions go here diff --git a/make/custom/simhppa.cfg b/make/custom/simhppa.cfg index 8e6040a938..e1d87622f3 100644 --- a/make/custom/simhppa.cfg +++ b/make/custom/simhppa.cfg @@ -125,7 +125,8 @@ endef else define make-exe $(CC) $(CFLAGS) $(CFLAGS_LD) $(GCC_LD_LOC_OPTIONS) \ - -o $(basename $@).exe $(LINK_OBJS) + -o $(basename $@).exe \ + $(LINK_OBJS) $(LINK_LIBS) $(NM) -g -n $@ > $(basename $@).num $(SIZE) $@ endef diff --git a/make/host.cfg.in b/make/host.cfg.in index ba09e56e45..8b2350e6da 100644 --- a/make/host.cfg.in +++ b/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/make/target.cfg.in b/make/target.cfg.in index c11322ee20..50033d933f 100644 --- a/make/target.cfg.in +++ b/make/target.cfg.in @@ -13,24 +13,16 @@ LDFLAGS = LIBS = @LIBS@ CC_FOR_BUILD = @CC@ -CC_FOR_TARGET = @CC_FOR_TARGET@ -AS_FOR_TARGET = @AS_FOR_TARGET@ -AR_FOR_TARGET = @AR_FOR_TARGET@ -NM_FOR_TARGET = @NM_FOR_TARGET@ -LD_FOR_TARGET = @LD_FOR_TARGET@ -SIZE_FOR_TARGET = @SIZE_FOR_TARGET@ -OBJCOPY_FOR_TARGET = @OBJCOPY_FOR_TARGET@ +CC = @CC_FOR_TARGET@ +AS = @AS_FOR_TARGET@ +AR = @AR_FOR_TARGET@ +NM = @NM_FOR_TARGET@ +LD = @LD_FOR_TARGET@ +SIZE = @SIZE_FOR_TARGET@ +OBJCOPY = @OBJCOPY_FOR_TARGET@ +RANLIB = @RANLIB_FOR_TARGET@ -CC= $(CC_FOR_TARGET) -AS= $(AS_FOR_TARGET) -LD= $(LD_FOR_TARGET) -NM= $(NM_FOR_TARGET) -AR= $(AR_FOR_TARGET) -SIZE= $(SIZE_FOR_TARGET) -OBJCOPY= $(OBJCOPY_FOR_TARGET) - -CXX_FOR_TARGET = @CXX_FOR_TARGET@ -CXX=$(CXX_FOR_TARGET) +CXX = @CXX_FOR_TARGET@ export CC export AS @@ -40,6 +32,8 @@ export AR export SIZE export OBJCOPY +export CXX + RTEMS_CROSS_TARGET=@rtems_cv_prog_cc_cross@ RTEMS_HOST = @RTEMS_HOST@ -- cgit v1.2.3