summaryrefslogblamecommitdiffstats
path: root/c/src/make/leaf.cfg
blob: 1e5f0cbbd5d4d6f09cfc813edd831b50d0eff801 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                   

                                                


















                                                              
                                            
                  






                                                              












                                                                       
     





















                                                             

                      

                                                      

       









                       
#
#  $Id$
#
# make/leaf.cfg
#
#   Make(1) configuration file include'd by all leaf-node Makefiles
#

#
# 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=barrier dpmem event io msg mp part 
MANAGER_LIST+=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))

# List (possibly empty) of required managers
MANAGERS_REQUIRED=

# Create a RTEMS executable based on MANAGERS which was set in
#  app's Makefile

MANAGERS_NOT_WANTED=$(filter-out $(MANAGERS) \
	$(MANAGERS_REQUIRED), $(MANAGER_LIST))

# Start file must be one of
#    $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).o
#    $(PROJECT_RELEASE)/lib/asmiface$(LIB_VARIANT).o
# It defaults to start.o, but an app can override it.
ifeq ($(START_BASE),)
  START_FILE=
else
  START_FILE=$(PROJECT_RELEASE)/lib/$(START_BASE)$(LIB_VARIANT).o
endif

# Allow user to override link commands (to build a prom image, perhaps)
ifndef LINKCMDS
LINKCMDS=$(PROJECT_RELEASE)/lib/linkcmds
endif

## what to do about $(EXEEXT) --> $(EXEEXT)
##    -o $(basename $@)$(EXEEXT)             OR
##    -o $(basename $@)$(EXEEXT)                  OR

DOWNEXT=.ralf

define bsp-link-c
	$(LINK.c) $(CPU_CFLAGS) $(AM_CFLAGS) $(AM_LDFLAGS) \
	    -o $(basename $@).exe $(LINK_OBJS) $(LINK_LIBS)
endef

define bsp-link-cxx
	$(LINK.cc) $(CPU_CFLAGS) $(AM_CFLAGS) $(AM_LDFLAGS) \
	    -o $(basename $@).exe $(LINK_OBJS) $(LINK_LIBS)
endef

define default-bsp-post-link
	$(NM) -g -n $@ > $(basename $@).num
	$(SIZE) $@
endef

ifndef bsp-post-link
  define bsp-post-link
	$(default-bsp-post-link)
	cp $(basename $@).exe $(basename $@)$(DOWNEXT)
  endef
endif

define make-exe
       $(bsp-link-c)
       $(bsp-post-link)
endef

define make-cxx-exe
       $(bsp-link-cxx)
       $(bsp-post-link)
endef