]> rtime.felk.cvut.cz Git - jenkicar/rpp-simulink.git/blob - rpp/rpp/rpp.tmf
7565da9af4c3a0984876a216f6644c03f21edc70
[jenkicar/rpp-simulink.git] / rpp / rpp / rpp.tmf
1 # Embedded Coder Template Makefile
2 #
3 # - You can use this template makefile as the basis for your own
4 #   custom target including support for Processor-in-the-Loop (PIL).
5 # - The intent is that you should not have to modify this example
6 #   template makefile to create your own PIL implementation.
7 # - The embedded tooling information is abstracted into a separate
8 #   file, target_tools.mk.
9 # - To create a custom target for your own processor, you will
10 #   need to modify the target_tools.mk to specify the appropriate
11 #   embedded tools and options.
12 #
13 # Copyright 2009-2011 The MathWorks, Inc.
14
15 #------------------------ Macros read by make_rtw ------------------------------
16 MAKECMD         = "|>MATLAB_BIN<|/|>ARCH<|/gmake"
17 HOST                = ANY
18 BUILD               = yes
19 SYS_TARGET_FILE     = any
20 COMPILER_TOOL_CHAIN = default
21 MAKEFILE_FILESEP = /
22 #---------------------- Tokens expanded by make_rtw ----------------------------
23 MODEL                   = |>MODEL_NAME<|
24 MODULES                 = |>MODEL_MODULES<|
25 MAKEFILE                = |>MAKEFILE_NAME<|
26 MATLAB_ROOT             = |>MATLAB_ROOT<|
27 ALT_MATLAB_ROOT         = |>ALT_MATLAB_ROOT<|
28 MASTER_ANCHOR_DIR       = |>MASTER_ANCHOR_DIR<|
29 START_DIR               = |>START_DIR<|
30 S_FUNCTIONS             = |>S_FUNCTIONS<|
31 S_FUNCTIONS_LIB         = |>S_FUNCTIONS_LIB<|
32 NUMST                   = |>NUMST<|
33 NCSTATES                = |>NCSTATES<|
34 COMPUTER                = |>COMPUTER<|
35 BUILDARGS               = |>BUILDARGS<|
36 MULTITASKING            = |>MULTITASKING<|
37 INTEGER_CODE            = |>INTEGER_CODE<|
38 MAT_FILE                = |>MAT_FILE<|
39 ONESTEPFCN              = |>COMBINE_OUTPUT_UPDATE_FCNS<|
40 TERMFCN                 = |>INCLUDE_MDL_TERMINATE_FCN<|
41 B_ERTSFCN               = |>GENERATE_ERT_S_FUNCTION<|
42 MEXEXT                  = |>MEXEXT<|
43 EXT_MODE                = |>EXT_MODE<|
44 TMW_EXTMODE_TESTING     = |>TMW_EXTMODE_TESTING<|
45 EXTMODE_TRANSPORT       = |>EXTMODE_TRANSPORT<|
46 EXTMODE_STATIC          = |>EXTMODE_STATIC_ALLOC<|
47 EXTMODE_STATIC_SIZE     = |>EXTMODE_STATIC_ALLOC_SIZE<|
48 MULTI_INSTANCE_CODE     = |>MULTI_INSTANCE_CODE<|
49 TGT_FCN_LIB             = |>TGT_FCN_LIB<|
50 MODELREFS               = |>MODELREFS<|
51 SHARED_SRC              = |>SHARED_SRC<|
52 SHARED_SRC_DIR          = |>SHARED_SRC_DIR<|
53 SHARED_BIN_DIR          = |>SHARED_BIN_DIR<|
54 SHARED_LIB              = |>SHARED_LIB<|
55 GEN_SAMPLE_MAIN         = |>GEN_SAMPLE_MAIN<|
56 TARGET_LANG_EXT         = |>TARGET_LANG_EXT<|
57 PORTABLE_WORDSIZES      = |>PORTABLE_WORDSIZES<|
58 SHRLIBTARGET            = |>SHRLIBTARGET<|
59 OPTIMIZATION_FLAGS      = |>OPTIMIZATION_FLAGS<|
60 ADDITIONAL_LDFLAGS      = |>ADDITIONAL_LDFLAGS<|
61 MAKEFILEBUILDER_TGT     = |>MAKEFILEBUILDER_TGT<|
62 STANDALONE_SUPPRESS_EXE = |>STANDALONE_SUPPRESS_EXE<|
63
64 #--------------------------- Model and reference models ------------------------
65 MODELLIB                  = |>MODELLIB<|
66 MODELREF_LINK_LIBS        = |>MODELREF_LINK_LIBS<|
67 MODELREF_INC_PATH         = |>START_MDLREFINC_EXPAND_INCLUDES<|-I|>MODELREF_INC_PATH<| |>END_MDLREFINC_EXPAND_INCLUDES<|
68 RELATIVE_PATH_TO_ANCHOR   = |>RELATIVE_PATH_TO_ANCHOR<|
69 MODELREF_TARGET_TYPE      = |>MODELREF_TARGET_TYPE<|
70
71 #-- In the case when directory name contains space ---
72 ifneq ($(MATLAB_ROOT),$(ALT_MATLAB_ROOT))
73 MATLAB_ROOT := $(ALT_MATLAB_ROOT)
74 endif
75
76 #------------------ Include a tool specification settings ----------------------
77 # TARGET_INCS - include options for the target source files (e.g. -I$(TARGET_INC_DIR))
78 # TARGET_SRCS - a list of the target source files
79 # CC - C compiler command
80 # CFLAGS - C compiler options
81 # CDEBUG - C compiler debug option
82 # CCOUTPUTFLAG - C compiler output option (e.g. -o)
83 # OBJ_EXT - object file extension
84 # CXX - C++ compiler command
85 # CXXFLAGS - C++ compiler options
86 # CXXDEBUG - C++ compiler debug option
87 # LD - linker command
88 # LDFLAGS - linker options
89 # LDDEBUG - linker debug option
90 # LDOUTPUTFLAG - linker output option (e.g. -o)
91 # PROGRAM_FILE_EXT - linker output file extension (e.g .elf)
92 # AR - Archiver command
93 # ARFLAGS - Archiver options
94 # OBJCOPY - Binary file format converter command
95 # OBJCOPYFLAGS - Binary file format converter options
96 # BINARY_FILE_EXT - Binary file extension (e.g. .hex or .mot)
97 # EXE_FILE_EXT = $(BINARY_FILE_EXT) or $(PROGRAM_FILE_EXT) - build product ext.
98
99 include $(START_DIR)/slprj/target_tools.mk
100
101 #------------------------------ Includes ---------------------------------------
102 # Place -I options here
103 MATLAB_INCLUDES = \
104         -I$(MATLAB_ROOT)/rtw/c/ert \
105         -I$(MATLAB_ROOT)/extern/include \
106         -I$(MATLAB_ROOT)/simulink/include \
107         -I$(MATLAB_ROOT)/rtw/c/src \
108         -I$(MATLAB_ROOT)/rtw/c/src/ext_mode/common
109
110 # Additional includes
111 ADD_INCLUDES = \
112 |>START_EXPAND_INCLUDES<|       -I|>EXPAND_DIR_NAME<| \
113 |>END_EXPAND_INCLUDES<|
114
115 SHARED_INCLUDES =
116 ifneq ($(SHARED_SRC_DIR),)
117 SHARED_INCLUDES = -I$(SHARED_SRC_DIR)
118 endif
119
120 INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(MATLAB_INCLUDES) \
121            $(ADD_INCLUDES) $(MODELREF_INC_PATH) $(SHARED_INCLUDES) \
122            $(TARGET_INCS)
123
124 OPTS=
125 CFLAGS += $(OPTS)
126 CXXFLAGS += $(OPTS)
127
128 CFLAGS += $(INCLUDES)
129 CXXFLAGS += $(INCLUDES)
130
131 ifeq ($(DEBUG_BUILD),1)
132 # Set flags for debugging
133 CFLAGS += $(CDEBUG)
134 CXXFLAGS += $(CXXDEBUG)
135 LDFLAGS += $(LDDEBUG)
136 endif
137 #-------------------------- Target application ---------------------------------
138 # Define the type of build
139
140
141 ifeq ($(MODELREF_TARGET_TYPE), NONE)
142 ifeq ($(MAKEFILEBUILDER_TGT), 0)
143 ifeq ($(STANDALONE_SUPPRESS_EXE), 1)
144 # Build object code only for top level model (preliminary step for building
145 # PIL application)
146 BUILD_MODE=pil_prebuild
147 PRODUCT=ObjectModules
148 BUILD_PRODUCT_TYPE = object modules
149 else
150 # Building executable for real-time deployment
151 BUILD_MODE=real_time
152 PRODUCT = $(MODEL)$(EXE_FILE_EXT)
153 BUILD_PRODUCT_TYPE = executable
154 endif
155 else
156 # Building executable for deployment as PIL application (non-real-time
157 # simulation)
158 BUILD_MODE=pil_application
159 PRODUCT = $(MODEL)$(EXE_FILE_EXT)
160 BUILD_PRODUCT_TYPE = executable
161 endif
162 else
163 # Building a library for a referenced model
164 BUILD_MODE = model_reference
165 PRODUCT = $(MODELLIB)
166 BUILD_PRODUCT_TYPE = library
167 endif
168
169 #-------------- Source Files, Object Files and Dependency Files ----------------
170
171 SRCS = $(ADD_SRCS) $(S_FUNCTIONS)
172
173 ifeq ($(BUILD_MODE), pil_prebuild)
174   SRCS += $(MODULES) $(MODEL).$(TARGET_LANG_EXT) $(EXT_SRC)
175 endif
176
177 ifeq ($(BUILD_MODE), pil_application)
178   SRCS += $(TARGET_SRCS)
179   PREBUILT_SRCS      = $(MODULES)
180   PREBUILT_OBJS      = $(addsuffix $(OBJ_EXT), $(basename $(PREBUILT_SRCS)))
181 endif
182
183 ifeq ($(BUILD_MODE), real_time)
184   SRCS += $(MODULES) $(MODEL).$(TARGET_LANG_EXT) $(EXT_SRC) ert_main.c
185   SRCS += $(TARGET_SRCS)
186 endif
187
188 ifeq ($(BUILD_MODE), model_reference)
189   SRCS += $(MODULES)
190 endif
191
192 USER_SRCS =
193
194 USER_OBJS       = $(addsuffix $(OBJ_EXT), $(basename $(USER_SRCS)))
195 LOCAL_USER_OBJS = $(notdir $(USER_OBJS))
196
197 OBJS      = $(addsuffix $(OBJ_EXT), $(basename $(SRCS))) $(USER_OBJS)
198 LINK_OBJS = $(addsuffix $(OBJ_EXT), $(basename $(SRCS))) $(LOCAL_USER_OBJS) $(PREBUILT_OBJS)
199
200 LIBS = $(S_FUNCTIONS_LIB)
201
202 SHARED_SRC := $(wildcard $(SHARED_SRC))
203 SHARED_OBJS = $(addsuffix $(OBJ_EXT), $(basename $(SHARED_SRC)))
204
205 #---------------------------- Default target -----------------------------------
206 TARGETS = $(PRODUCT)
207
208 all: $(TARGETS)
209
210 # Need a rule to generate the build success string if product was already up to date
211 .PHONY : all
212 all : $(PRODUCT)
213         @echo "### Created $(PRODUCT) successfully (or it was already up to date)"
214
215 #----------------------------- Dependencies ------------------------------------
216
217 $(OBJS) : $(MAKEFILE) rtw_proj.tmw
218
219 $(SHARED_LIB) : $(SHARED_OBJS)
220         @echo "### Creating $@ "
221         $(AR) $(ARFLAGS) $@ $(SHARED_OBJS)
222         @echo "### $@ Created "
223
224 ##-------------------------- Support for building modules ----------------------
225 ifeq ($(BUILD_MODE), pil_prebuild)
226 $(PRODUCT) : $(OBJS) $(SHARED_LIB)
227         @echo "### BUILD_MODE $(BUILD_MODE)"
228         @echo "### Created $(PRODUCT)"
229 endif
230
231 # Commented to remove warning when PROGRAM_FILE_EXT = EXE_FILE_EXT
232 # But actually useful. Consider convert to final binary form here if needed.
233 #ifeq ($(BUILD_MODE), real_time)
234 #$(PRODUCT) : $(MODEL)$(PROGRAM_FILE_EXT)
235 #       @echo "### BUILD_MODE $(BUILD_MODE)"
236 #       $(OBJCOPY) $(OBJCOPYFLAGS) $< $@
237 #       @echo "### Generated $(PRODUCT)"
238 #endif
239
240 ifeq ($(BUILD_MODE), pil_application)
241 $(PRODUCT) : $(MODEL)$(PROGRAM_FILE_EXT)
242         @echo "### BUILD_MODE $(BUILD_MODE)"
243         $(OBJCOPY) $(OBJCOPYFLAGS) $< $@
244         @echo "### Generated $(PRODUCT)"
245 endif
246
247 ifeq ($(BUILD_MODE), model_reference)
248 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS)
249         @echo "### BUILD_MODE $(BUILD_MODE)"
250         @echo "### Linking ..."
251         $(AR) $(ARFLAGS) $@ $(OBJS)
252         @echo "### Generated $@"
253 endif
254
255 ifeq ($(BUILD_MODE), pil_application)
256 $(MODEL)$(PROGRAM_FILE_EXT): $(PREBUILT_OBJS) $(OBJS) $(MODELLIB) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBS)
257         @echo "### BUILD_MODE $(BUILD_MODE)"
258         $(LD) $^ $(LDFLAGS) $(LDOUTPUTFLAG) $@
259         @echo "### Generated $@"
260 endif
261
262 ifeq ($(BUILD_MODE), real_time)
263 $(MODEL)$(PROGRAM_FILE_EXT): $(OBJS) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBS)
264         @echo "### BUILD_MODE $(BUILD_MODE)"
265         $(LD) $^ $(LDFLAGS) $(LDOUTPUTFLAG) $@
266         @echo "### Generated $@"
267 endif
268
269 %$(OBJ_EXT) : $(RELATIVE_PATH_TO_ANCHOR)/%.c
270         $(CC) -c $(CFLAGS) $< $(CCOUTPUTFLAG) $@
271
272 %$(OBJ_EXT): $(RELATIVE_PATH_TO_ANCHOR)/%.cpp
273         $(CXX) -c $(CXXFLAGS) $< $(CCOUTPUTFLAG) $@
274
275 %$(OBJ_EXT): %.cpp
276         $(CXX) -c $(CXXFLAGS) $< $(CCOUTPUTFLAG) $@
277
278 %$(OBJ_EXT): %.c
279         $(CC) -c $(CFLAGS) $< $(CCOUTPUTFLAG) $@
280
281 %$(OBJ_EXT): $(TARGET_SRC_DIR)/%.cpp
282         $(CXX) -c $(CXXFLAGS) $< $(CCOUTPUTFLAG) $@
283
284 %$(OBJ_EXT): $(TARGET_SRC_DIR)/%.c
285         $(CC) -c $(CFLAGS) $< $(CCOUTPUTFLAG) $@
286
287 |>START_EXPAND_RULES<|%$(OBJ_EXT) : |>EXPAND_DIR_NAME<|/%.cpp
288         $(CXX) -c $(CXXFLAGS) $<
289
290 |>END_EXPAND_RULES<|
291
292 |>START_EXPAND_RULES<|%$(OBJ_EXT) : |>EXPAND_DIR_NAME<|/%.c
293         $(CC) -c $(CFLAGS) $<
294
295 |>END_EXPAND_RULES<|