summaryrefslogtreecommitdiffstats
path: root/make/compilers/gcc-target-default.cfg
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-07-19 13:09:43 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-14 07:11:32 +0200
commitf3f0370f1054f4e49aa8f5ea70485d673e8e94b6 (patch)
tree11d44920353aea9bf4301eb267f8c831e622520e /make/compilers/gcc-target-default.cfg
parenti386/score: fix assembly mnemonic (diff)
downloadrtems-f3f0370f1054f4e49aa8f5ea70485d673e8e94b6.tar.bz2
build: Alternative build system based on waf
Update #3818.
Diffstat (limited to '')
-rw-r--r--make/compilers/gcc-target-default.cfg189
1 files changed, 189 insertions, 0 deletions
diff --git a/make/compilers/gcc-target-default.cfg b/make/compilers/gcc-target-default.cfg
new file mode 100644
index 0000000000..813bd5c2c4
--- /dev/null
+++ b/make/compilers/gcc-target-default.cfg
@@ -0,0 +1,189 @@
+#
+# Shared compiler for all GNU tools configurations
+#
+
+##
+# CFLAGS_OPTIMIZE_V, CFLAGS_DEBUG_V are the values we
+# would want the corresponding macros to be set to.
+#
+# CFLAGS_OPTIMIZE, CFLAGS_DEBUG are set in the leaf
+# Makefiles by the 'debug:' targets to their _V values.
+#
+
+# default flags
+# XCPPFLAGS, XCFLAGS, XCXXFLAGS, XASFLAGS
+# are used to add flags from the shell
+# cf. make.info ("Implicit rules/variables" for details)
+
+# NOTE: Should these go to CPPFLAGS ?
+CFLAGS_DEFAULT=-Wall
+
+# NOTE: CPU_CFLAGS should probably be renamed to CPU_CPPFLAGS
+# NOTE: CPU_DEFINES should probably be merged with CPU_CFLAGS
+CPPFLAGS += $(CPU_DEFINES) $(CPU_CFLAGS) $(DEFINES) $(XCPPFLAGS)
+CFLAGS = $(CFLAGS_DEFAULT) $(XCFLAGS)
+CXXFLAGS = $(CFLAGS_DEFAULT) $(XCXXFLAGS)
+ASFLAGS = $(CPU_ASFLAGS) $(XASFLAGS)
+
+# NOTE: GCCSPECS probably belongs to CPPFLAGS
+GCCSPECS_OPTIMIZE_V =
+GCCSPECS_DEBUG_V =
+
+GCCSPECS = -B$(PROJECT_RELEASE)/lib/ -specs bsp_specs -qrtems
+GCCSPECS += $(GCCSPECS_$(VARIANT_V)_V)
+
+CC += $(GCCSPECS)
+CXX += $(GCCSPECS)
+
+CPPFLAGS +=
+
+# Define this to yes if C++ is included in the development environment.
+# This requires that at least the GNU C++ compiler and libg++ be installed.
+ifeq ($(HAS_CPLUSPLUS),yes)
+CPLUS_LD_LIBS += $(PROJECT_RELEASE)/lib/librtems++$(LIBSUFFIX_VA)
+endif
+
+# debug flag;
+CFLAGS_DEBUG_V ?= -O0 -g
+CXXFLAGS_DEBUG_V ?= $(CFLAGS_DEBUG_V)
+
+# when debugging, optimize flag: typically empty
+# some compilers do allow optimization with their "-g"
+CFLAGS_OPTIMIZE_V ?= -O2 -g
+CXXFLAGS_OPTIMIZE_V ?= $(CFLAGS_OPTIMIZE_V)
+
+ifndef AUTOMAKE
+CPPFLAGS_$(VARIANT)=$(CPPFLAGS_$(VARIANT)_V)
+CFLAGS_$(VARIANT) =$(CFLAGS_$(VARIANT)_V)
+CXXFLAGS_$(VARIANT)=$(CXXFLAGS_$(VARIANT)_V)
+endif
+
+ifndef AUTOMAKE
+CPPFLAGS += $(CPPFLAGS_OPTIMIZE) $(CPPFLAGS_DEBUG)
+CFLAGS += $(CFLAGS_OPTIMIZE) $(CFLAGS_DEBUG)
+CXXFLAGS += $(CXXFLAGS_OPTIMIZE) $(CXXFLAGS_DEBUG)
+endif
+
+# List of library paths without -L
+LD_PATHS= $(PROJECT_RELEASE)/lib
+
+# ld flag for incomplete link
+LDFLAGS_INCOMPLETE = -r
+
+# LDFLAGS=$(LDFLAGS_DEBUG) $(LD_PATHS:%=-L%)
+LDFLAGS += $(LDFLAGS_DEBUG)
+
+#
+# Stuff to clean and clobber for the compiler and its tools
+#
+
+CLEAN_CC = a.out *.o *.BAK
+CLOBBER_CC =
+
+#
+# Client compiler and support tools
+#
+
+# CPP command to write file to standard output with warnings suppressed
+CPP=$(CC) -E -w
+
+# egrep regexp to ignore symbol table entries in ar archives.
+# Only used to make sure we skip them when coalescing libraries.
+# skip __.SYMDEF and empty names (maybe bug in ranlib??).
+AR_SYMBOL_TABLE="HIGHLY-UNLIKELY-TO-CONFLICT"
+ARFLAGS=ruv
+
+#
+# How to compile stuff into ${ARCH} subdirectory
+#
+
+${ARCH}/%.o: %.c
+ ${COMPILE.c} $(AM_CPPFLAGS) $(AM_CFLAGS) -o $@ $<
+
+${ARCH}/%.o: %.cc
+ ${COMPILE.cc} $(AM_CPPFLAGS) $(AM_CXXFLAGS) -o $@ $<
+
+${ARCH}/%.o: %.cpp
+ ${COMPILE.cc} $(AM_CPPFLAGS) $(AM_CXXFLAGS) -o $@ $<
+
+${ARCH}/%.o: %.cxx
+ ${COMPILE.cc} $(AM_CPPFLAGS) $(AM_CXXFLAGS) -o $@ $<
+
+${ARCH}/%.o: %.C
+ ${COMPILE.cc} $(AM_CPPFLAGS) $(AM_CXXFLAGS) -o $@ $<
+
+${ARCH}/%.o: %.S
+ ${COMPILE.S} $(AM_CPPFLAGS) -DASM -o $@ $<
+
+# Make foo.rel from foo.o
+${ARCH}/%.rel: ${ARCH}/%.o
+ ${make-rel}
+
+# create $(ARCH)/pgm from pgm.sh
+${ARCH}/%: %.sh
+ $(RM) $@
+ $(CP) $< $@
+ $(CHMOD) +x $@
+
+# Dependency files for use by gmake
+# NOTE: we don't put them into $(ARCH)
+# so that 'make clean' doesn't blow it away
+
+DEPEND=Depends-${ARCH}
+
+CLEAN_DEPEND=$(DEPEND).tmp
+CLOBBER_DEPEND=$(DEPEND)
+
+# We deliberately don't have anything depend on the
+# $(DEPEND) file; otherwise it will get rebuilt even
+# on 'make clean'
+#
+
+depend-am: $(C_FILES) $(CC_FILES) $(S_FILES)
+ifneq ($(words $(C_FILES) $(CC_FILES) $(S_FILES)), 0)
+# Use gcc -M to generate dependencies
+# Replace foo.o with $(ARCH)/foo.o
+# Replace $(ARCH) value with string $(ARCH)
+# so that it will for debug cases
+ $(COMPILE.c) $(AM_CPPFLAGS) $(AM_CFLAGS) -M $^ | \
+ $(SED) -e 's?^\(.*\)\.o[ ]*:?$$(ARCH)/\1.o:?' \
+ -e 's?$(ARCH)/?$$(ARCH)/?' >$(DEPEND).tmp
+ $(MV) $(DEPEND).tmp $(DEPEND)
+endif
+depend: depend-am
+
+# spell out all the LINK_FILE's, rather than using -lbsp, so
+# that $(LINK_FILES) can be a dependency
+
+#
+# NOTE: a rule to link an rtems' application should look similar to this
+# (cf. "make-exe" in make/custom/*.cfg):
+#
+# gcc28:
+# $(PGM): $(LINK_FILES)
+# $(CC) $(CFLAGS) -o $@ $(LINK_OBJS) $(LINK_LIBS)
+#
+
+LINK_OBJS =\
+ $(CONSTRUCTOR) \
+ $(OBJS)
+
+LINK_FILES =\
+ $(CONSTRUCTOR) \
+ $(OBJS) \
+ $(PROJECT_RELEASE)/lib/librtemsbsp$(LIBSUFFIX_VA) \
+ $(PROJECT_RELEASE)/lib/librtemscpu$(LIBSUFFIX_VA)
+
+LINK_LIBS += $(LD_LIBS)
+
+#
+# Allow user to override link commands (to build a prom image, perhaps)
+#
+ifndef LINKCMDS
+LINKCMDS=$(PROJECT_RELEASE)/lib/linkcmds
+endif
+
+define make-rel
+ $(LINK.c) $(CFLAGS) $(AM_CFLAGS) $(AM_LDFLAGS) \
+ -qnolinkcmds -nostdlib -Wl,-r $(XLDFLAGS) -o $@ $^
+endef