summaryrefslogtreecommitdiffstats
path: root/make/leaf.cfg
blob: 218dcdc4cc12508336dcd13db843c3e006be1ff3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#
#  $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))

#
# LIBSUFFIX_VA, will "index" into LIBSUFF-*-v macros and
#   convert our ${ARCH} back into .a or _g.a or _p.a based on debug.
#   Useful for installing libraries.
#

LIBSUFFIX_OPTIMIZE_V=
LIBSUFFIX_DEBUG_V=_g

LIB_VARIANT=$(LIBSUFFIX_$(VARIANT_V)_V)
LIBSUFFIX_VA = $(LIB_VARIANT).a

# Pull in the desired "target" compiler
# Programs built on the host use automake generated rules.
# This will not change $(ARCH) -- binaries will still be place as per target
include ${CONFIG.CC}
ifeq (${DEPEND},$(wildcard ${DEPEND}))
include ${DEPEND}		     # pull in dependencies if they exist
endif

ifndef AUTOMAKE
#
# Builtin targets for compilation variants
#
debug:
	$(MAKE) -f $(MAKEFILE) MAKEFILE=$(MAKEFILE) VARIANT=DEBUG
endif

#
# VARIANT_VA will convert our ${ARCH} back into "" or "debug".
#   Handy when one makefile wants to hop over into a peer's tree and
#   build something "the same" way.
#

VARIANT-OPTIMIZE-v =
VARIANT-DEBUG-v = debug

VARIANT_VA = $(VARIANT-$(VARIANT_V)-v)

#
# TARGET_VA will convert $@ (expected to be 'debug' etc.)
#   into "" or "install" as appropriate.
#   Used for variant recursion.
#

TARGET_debug_V = all

TARGET_VA = $(TARGET_$@_V)

#
# Builtin clean and distclean 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-am: clean-generic
	-$(RM) -r $(CLEAN_OS) $(CLEAN_CC) $(CLEAN_DEPEND)
	-$(RM) -r $(VARIANTS)

distclean-am: distclean-generic clean-am
	-$(RM) -r $(CLOBBER_OS) $(CLOBBER_CC) $(CLOBBER_DEPEND)

ifndef AUTOMAKE
preinstall-am:
preinstall: preinstall-am

distclean: distclean-am
	-$(RM) ./config.status

clean: clean-am

.PHONY: distclean distclean-am
.PHONY: clean clean-am
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