diff options
Diffstat (limited to 'c/src/make')
-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 |
3 files changed, 46 insertions, 34 deletions
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 |