# # $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 $@