summaryrefslogtreecommitdiffstats
path: root/make/leaf.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'make/leaf.cfg')
-rw-r--r--make/leaf.cfg169
1 files changed, 169 insertions, 0 deletions
diff --git a/make/leaf.cfg b/make/leaf.cfg
new file mode 100644
index 0000000000..13c720f1a5
--- /dev/null
+++ b/make/leaf.cfg
@@ -0,0 +1,169 @@
+#
+# $Id$
+#
+# make/leaf.cfg
+#
+# Make(1) configuration file include'd by all leaf-node Makefiles
+#
+
+# get most stuff done
+
+# include $(RTEMS_ROOT)/make/main.cfg
+
+#
+# list of all known managers
+# This list is used, along with $(MANAGERS) (set by app makefile)
+# to build the list of *not wanted* drivers.
+#
+# ref: target compiler config file for usage
+#
+
+MANAGER_LIST=dpmem event io msg mp part region sem signal timer rtmon ext
+
+# Convert *real* spellings in $(MANAGERS) (set
+# in application makefile) to their "correct" name.
+# (I hate abbreviations :-)
+
+MANAGERS := $(patsubst message, msg, $(MANAGERS))
+MANAGERS := $(patsubst multi_processor, mp, $(MANAGERS))
+MANAGERS := $(patsubst partition, part, $(MANAGERS))
+MANAGERS := $(patsubst rate_monotonic, rtmon, $(MANAGERS))
+MANAGERS := $(patsubst semaphore, sem, $(MANAGERS))
+MANAGERS := $(patsubst dual_ported_memory, dpmem, $(MANAGERS))
+MANAGERS := $(patsubst extension, ext, $(MANAGERS))
+
+# allow 'all' to mean all managers
+MANAGERS := $(patsubst all, $(MANAGER_LIST), $(MANAGERS))
+
+# and finally rip out duplicates
+MANAGERS := $(sort $(MANAGERS))
+
+# Pull in the desired compiler
+# This is almost always the "target" compiler.
+# But sometimes, you have to build something on the host.
+# Allow for that by allowing individual Makefiles specify $(USE_HOST_COMPILER)
+# This will not change $(ARCH) -- binaries will still be place as per target
+ifeq (,$(USE_HOST_COMPILER))
+ include ${CONFIG.$(TARGET_ARCH).CC}
+else
+ include $(CONFIG.$(HOST_ARCH).CC)
+endif
+ifeq (${DEPEND},$(wildcard ${DEPEND}))
+include ${DEPEND} # pull in dependencies if they exist
+endif
+
+#
+# Builtin targets for compilation variants
+#
+debug debug_install:
+ $(MAKE) -f $(MAKEFILE) MAKEFILE=$(MAKEFILE) "ARCH=${TARGET_ARCH}-debug" \
+ "CFLAGS_DEBUG=$(CFLAGS_DEBUG_V)" \
+ "CFLAGS_OPTIMIZE=$(CFLAGS_DEBUG_OPTIMIZE_V)" \
+ "LDFLAGS_DEBUG=$(LDFLAGS_DEBUG_V)" $(TARGET_VA)
+
+profile profile_install:
+ $(MAKE) -f $(MAKEFILE) \
+ MAKEFILE=$(MAKEFILE) "ARCH=${TARGET_ARCH}-profile" \
+ "CFLAGS_PROFILE=$(CFLAGS_PROFILE_V)" \
+ "LDFLAGS_PROFILE=$(LDFLAGS_PROFILE_V)" $(TARGET_VA)
+
+#
+# VARIANT_VA will convert our ${ARCH} back into "" or "debug" or "profile".
+# Handy when one makefile wants to hop over into a peer's tree and
+# build something "the same" way.
+#
+
+VARIANT-$(TARGET_ARCH)-v =
+VARIANT-$(TARGET_ARCH)-debug-v = debug
+VARIANT-$(TARGET_ARCH)-profile-v = profile
+
+VARIANT_VA = $(VARIANT-$(ARCH)-v)
+
+#
+# TARGET_VA will convert $@ (expected to be 'debug' or
+# 'debug_install' or 'profile' etc.)
+# into "" or "install" as appropriate.
+# Used for variant recursion.
+#
+
+TARGET_debug_V = all
+TARGET_profile_V = all
+
+TARGET_debug_install_V = install
+TARGET_profile_install_V = install
+
+TARGET_VA = $(TARGET_$@_V)
+
+#
+# LIBSUFFIX_VA, will "index" into LIBSUFF-*-v macros and
+# convert our ${ARCH} back into .a or _g.a or _p.a based on debug or profile.
+# Useful for installing libraries.
+#
+
+LIBSUFFIX_$(TARGET_ARCH)_V=
+LIBSUFFIX_$(TARGET_ARCH)-debug_V=_g
+LIBSUFFIX_$(TARGET_ARCH)-profile_V=_p
+
+LIB_VARIANT=$(LIBSUFFIX_$(ARCH)_V)
+LIBSUFFIX_VA = $(LIB_VARIANT).a
+
+get: $(SRCS) $(GET_ADDITIONS)
+
+#
+# Builtin clean and clobber rules
+# Individual makefiles can add stuff via CLEAN_ADDITIONS and CLOBBER_ADDITIONS
+# If desperate to save something, they can override CLEAN_OS, CLEAN_CC, etc.
+#
+
+clean:
+ $(RM) -r a.out core mon.out gmon.out $(CLEAN_OS) $(CLEAN_CC)
+ $(RM) -r $(CLEAN_PROTO) $(CLEAN_DEPEND) a.out
+ $(RM) -r $(VARIANTS) $(CLEAN_ADDITIONS)
+
+clobber: clean
+ -$(RCS_CLEAN)
+ $(RM) .#*
+ $(RM) -r $(CLOBBER_OS) $(CLOBBER_CC) $(CLOBBER_DEPEND)
+ $(RM) -r $(CLOBBER_ADDITIONS) a.out
+
+# make the target dependent options file
+$(ARCH)/targopts.h-tmp: FORCE
+ @echo "/* target board dependent options file */" >$@
+ @echo "/* automatically generated -- DO NOT EDIT!! */" >>$@
+ @echo >>$@
+ @echo "#ifndef __TARGET_OPTIONS_h" >>$@
+ @echo "#define __TARGET_OPTIONS_h" >>$@
+ @echo >>$@
+ @echo "#ifdef $(RTEMS_CPU)" >>$@
+ @echo "#undef $(RTEMS_CPU)" >>$@
+ @echo "#endif" >>$@
+ @echo "#define $(RTEMS_CPU) 1" >>$@
+ @echo >>$@
+ @echo "#ifdef $(RTEMS_CPU_MODEL)" >>$@
+ @echo "#undef $(RTEMS_CPU_MODEL)" >>$@
+ @echo "#endif" >>$@
+ @echo "#define $(RTEMS_CPU_MODEL) 1" >>$@
+ @echo >>$@
+ @echo "#ifdef $(RTEMS_BSP)" >>$@
+ @echo "#undef $(RTEMS_BSP)" >>$@
+ @echo "#endif" >>$@
+ @echo "#define $(RTEMS_BSP) 1" >>$@
+ @echo >>$@
+ @$(make-target-options)
+ifeq (${RTEMS_USE_MACROS},yes)
+ @echo "#define USE_MACROS 1" >>$@
+else
+ @echo "#define USE_INLINES 1" >>$@
+endif
+ifeq ($(RTEMS_HAS_POSIX_API),yes)
+ @echo "#define RTEMS_POSIX_API 1" >>$@
+endif
+ifeq ($(RTEMS_USE_NEWLIB),yes)
+ @echo "#define RTEMS_NEWLIB 1" >>$@
+ @echo "#define MALLOC_PROVIDED 1" >>$@
+endif
+ @echo >>$@
+ @echo "#endif" >>$@
+
+$(ARCH)/bsp_specs.tmp: FORCE
+ cp $(RTEMS_ROOT)/c/src/lib/libbsp/$(RTEMS_CPU)/$(RTEMS_BSP_FAMILY)/bsp_specs $@