]> rtime.felk.cvut.cz Git - ert_linux.git/blob - ert_linux/ert_linux.tmf
Add preliminary readme
[ert_linux.git] / ert_linux / ert_linux.tmf
1 # Copyright 1994-2012 The MathWorks, Inc.
2 #
3 # File    : ert_unix.tmf   
4 #
5 # Abstract:
6 #       Template makefile for building a UNIX-based stand-alone embedded 
7 #       real-time version of Simulink model using generated C code.
8 #
9 #       This makefile attempts to conform to the guidelines specified in the
10 #       IEEE Std 1003.2-1992 (POSIX) standard. It is designed to be used
11 #       with GNU Make which is located in matlabroot/rtw/bin.
12 #
13 #       Note that this template is automatically customized by the build 
14 #       procedure to create "<model>.mk"
15 #
16 #       The following defines can be used to modify the behavior of the
17 #       build:
18 #         OPT_OPTS       - Optimization options. Default is -O.
19 #         CPP_OPTS       - C++ compiler options.        
20 #         OPTS           - User specific compile options.
21 #         USER_SRCS      - Additional user sources, such as files needed by
22 #                          S-functions.
23 #         USER_INCLUDES  - Additional include paths
24 #                          (i.e. USER_INCLUDES="-Iwhere-ever -Iwhere-ever2")
25 #
26 #       To enable debugging:
27 #         set DEBUG_BUILD = 1 below, which will trigger OPTS=-g and
28 #          LDFLAGS += -g (may vary with compiler version, see compiler doc) 
29 #
30 #       This template makefile is designed to be used with a system target
31 #       file that contains 'rtwgensettings.BuildDirSuffix' see ert.tlc
32
33
34 #------------------------ Macros read by make_rtw ------------------------------
35 #
36 # The following macros are read by the build procedure:
37 #
38 #  MAKECMD         - This is the command used to invoke the make utility
39 #  HOST            - What platform this template makefile is targeted for
40 #                    (i.e. PC or UNIX)
41 #  BUILD           - Invoke make from the build procedure (yes/no)?
42 #  SYS_TARGET_FILE - Name of system target file.
43
44 MAKECMD         = |>MATLAB_BIN<|/|>ARCH<|/gmake
45 HOST            = UNIX
46 BUILD           = yes
47 SYS_TARGET_FILE = any
48 COMPILER_TOOL_CHAIN = unix
49
50 #---------------------- Tokens expanded by make_rtw ----------------------------
51 #
52 # The following tokens, when wrapped with "|>" and "<|" are expanded by the
53 # build procedure.
54 #
55 #  MODEL_NAME          - Name of the Simulink block diagram
56 #  MODEL_MODULES       - Any additional generated source modules
57 #  MAKEFILE_NAME       - Name of makefile created from template makefile <model>.mk
58 #  MATLAB_ROOT         - Path to where MATLAB is installed.
59 #  S_FUNCTIONS         - List of additional S-function modules.
60 #  S_FUNCTIONS_LIB     - List of S-functions libraries to link. 
61 #  NUMST               - Number of sample times
62 #  NCSTATES            - Number of continuous states
63 #  COMPUTER            - Computer type. See the MATLAB computer command.
64 #  BUILDARGS           - Options passed in at the command line.
65 #  MULTITASKING        - yes (1) or no (0): Is solver mode multitasking
66 #  INTEGER_CODE        - yes (1) or no (0): Is generated code purely integer
67 #  MAT_FILE            - yes (1) or no (0): Should mat file logging be done,
68 #                        if 0, the generated code runs indefinitely
69 #  EXT_MODE            - yes (1) or no (0): Build for external mode
70 #  TMW_EXTMODE_TESTING - yes (1) or no (0): Build ext_test.c for external mode
71 #                        testing.
72 #  EXTMODE_TRANSPORT   - Index of transport mechanism (e.g. tcpip, serial) for extmode
73 #  MULTI_INSTANCE_CODE - Is the generated code multi instantiable (1/0)?
74 #  GEN_MDLREF_SFCN     - (1/0): are we generating model reference wrapper s-function
75 #  MODELREFS           - List of referenced models
76 #  EXTMODE_STATIC      - yes (1) or no (0): Use static instead of dynamic mem alloc.
77 #  EXTMODE_STATIC_SIZE - Size of static memory allocation buffer.
78 #  TGT_FCN_LIB         - Target Funtion library to use
79 #  PORTABLE_WORDSIZES  - Is this build intented for SIL simulation with portable word sizes (1/0)?
80 #  SHRLIBTARGET        - Is this build intended for generation of a shared library instead 
81 #                        of executable (1/0)?
82 #  MAKEFILEBUILDER_TGT - Is this build performed by the MakefileBuilder class
83 #                        e.g. to create a PIL executable?
84 #  STANDALONE_SUPPRESS_EXE - Build the standalone target but only create object code modules 
85 #                            and do not build an executable
86
87 MODEL                   = |>MODEL_NAME<|
88 MODULES                 = |>MODEL_MODULES<|
89 MAKEFILE                = |>MAKEFILE_NAME<|
90 MATLAB_ROOT             = |>MATLAB_ROOT<|
91 ALT_MATLAB_ROOT         = |>ALT_MATLAB_ROOT<|
92 MASTER_ANCHOR_DIR       = |>MASTER_ANCHOR_DIR<|
93 START_DIR               = |>START_DIR<|
94 S_FUNCTIONS             = |>S_FUNCTIONS<|
95 S_FUNCTIONS_LIB         = |>S_FUNCTIONS_LIB<|
96 NUMST                   = |>NUMST<|
97 NCSTATES                = |>NCSTATES<|
98 COMPUTER                = |>COMPUTER<|
99 BUILDARGS               = |>BUILDARGS<|
100 MULTITASKING            = |>MULTITASKING<|
101 INTEGER_CODE            = |>INTEGER_CODE<|
102 MAT_FILE                = |>MAT_FILE<|
103 ONESTEPFCN              = |>COMBINE_OUTPUT_UPDATE_FCNS<|
104 TERMFCN                 = |>INCLUDE_MDL_TERMINATE_FCN<|
105 B_ERTSFCN               = |>GENERATE_ERT_S_FUNCTION<|
106 MEXEXT                  = |>MEXEXT<|
107 EXT_MODE                = |>EXT_MODE<|
108 TMW_EXTMODE_TESTING     = |>TMW_EXTMODE_TESTING<|
109 EXTMODE_TRANSPORT       = |>EXTMODE_TRANSPORT<|
110 EXTMODE_STATIC          = |>EXTMODE_STATIC_ALLOC<|
111 EXTMODE_STATIC_SIZE     = |>EXTMODE_STATIC_ALLOC_SIZE<|
112 MULTI_INSTANCE_CODE     = |>MULTI_INSTANCE_CODE<|
113 CLASSIC_INTERFACE       = |>CLASSIC_INTERFACE<|
114 TGT_FCN_LIB             = |>TGT_FCN_LIB<|
115 MODELREFS               = |>MODELREFS<|
116 SHARED_SRC              = |>SHARED_SRC<|
117 SHARED_SRC_DIR          = |>SHARED_SRC_DIR<|
118 SHARED_BIN_DIR          = |>SHARED_BIN_DIR<|
119 SHARED_LIB              = |>SHARED_LIB<|
120 GEN_SAMPLE_MAIN         = |>GEN_SAMPLE_MAIN<|
121 TARGET_LANG_EXT         = |>TARGET_LANG_EXT<|
122 PORTABLE_WORDSIZES      = |>PORTABLE_WORDSIZES<|
123 SHRLIBTARGET            = |>SHRLIBTARGET<|
124 MAKEFILEBUILDER_TGT     = |>MAKEFILEBUILDER_TGT<|
125 STANDALONE_SUPPRESS_EXE = |>STANDALONE_SUPPRESS_EXE<|
126 OPTIMIZATION_FLAGS      = |>OPTIMIZATION_FLAGS<|
127 ADDITIONAL_LDFLAGS      = |>ADDITIONAL_LDFLAGS<|
128
129 # To enable debugging:
130 # set DEBUG_BUILD = 1
131 DEBUG_BUILD             = 0
132
133 #--------------------------- Model and reference models -----------------------
134 MODELLIB                  = |>MODELLIB<|
135 MODELREF_LINK_LIBS        = |>MODELREF_LINK_LIBS<|
136 MODELREF_INC_PATH         = |>START_MDLREFINC_EXPAND_INCLUDES<|-I|>MODELREF_INC_PATH<| |>END_MDLREFINC_EXPAND_INCLUDES<|
137 RELATIVE_PATH_TO_ANCHOR   = |>RELATIVE_PATH_TO_ANCHOR<|
138 # NONE: standalone, SIM: modelref sim, RTW: modelref coder target
139 MODELREF_TARGET_TYPE       = |>MODELREF_TARGET_TYPE<|
140 MODELREF_SFCN_SUFFIX       = |>MODELREF_SFCN_SUFFIX<|
141
142 #-- In the case when directory name contains space ---
143 ifneq ($(MATLAB_ROOT),$(ALT_MATLAB_ROOT))
144 MATLAB_ROOT := $(ALT_MATLAB_ROOT)
145 endif
146
147 #----------------------------- External mode -----------------------------------
148 # Uncomment -DVERBOSE to have information printed to stdout
149 # To add a new transport layer, see the comments in
150 #   <matlabroot>/toolbox/simulink/simulink/extmode_transports.m
151 ifeq ($(EXT_MODE),1)
152   EXT_CC_OPTS = -DEXT_MODE -D$(COMPUTER) #-DVERBOSE
153   EXT_LIB     =
154   EXT_SRC     = ext_svr.c updown.c ext_work.c
155   LINT_EXT_COMMON_SRC =
156   LINT_EXT_TCPIP_SRC  =
157   ifeq ($(EXTMODE_TRANSPORT),0) #tcpip
158     EXT_SRC +=  rtiostream_interface.c rtiostream_tcpip.c
159     LINT_EXT_COMMON_SRC = ext_svr.c updown.c ext_work.c
160     LINT_EXT_TCPIP_SRC  = rtiostream_interface.c rtiostream_tcpip.c
161   endif
162   ifeq ($(EXTMODE_TRANSPORT),1) #serial
163     EXT_SRC += ext_svr_serial_transport.c ext_serial_pkt.c
164     EXT_SRC += rtiostream_serial_interface.c rtiostream_serial.c
165   endif
166   ifeq ($(TMW_EXTMODE_TESTING),1)
167     EXT_SRC     += ext_test.c
168     EXT_CC_OPTS += -DTMW_EXTMODE_TESTING
169   endif
170   ifeq ($(EXTMODE_STATIC),1)
171     EXT_SRC             += mem_mgr.c
172     LINT_EXT_COMMON_SRC += mem_mgr.c
173     EXT_CC_OPTS         += -DEXTMODE_STATIC -DEXTMODE_STATIC_SIZE=$(EXTMODE_STATIC_SIZE)
174   endif
175   ifeq ($(COMPUTER),SOL64)
176     EXT_LIB = -lsocket -lnsl
177   endif
178 endif
179
180 #--------------------------- Tool Specifications -------------------------------
181
182 include $(MATLAB_ROOT)/rtw/c/tools/unixtools.mk
183
184 # Determine if we are generating an s-function
185 SFCN = 0
186 ifeq ($(MODELREF_TARGET_TYPE),SIM)
187   SFCN = 1
188 endif
189 ifeq ($(B_ERTSFCN),1)
190   SFCN = 1
191 endif
192
193 # Use GCC_TEST to do a test compile of the local source (add DO_GCC_TEST=1)
194 ifeq ($(DO_GCC_TEST), 1)
195   GCC_TEST     = echo "Doing gcc test compile"; gcc -c -o /dev/null -Wall 
196   GCC_TEST_OUT = 
197 else
198   GCC_TEST     = echo
199   GCC_TEST_OUT = > /dev/null
200 endif
201
202 #------------------------------ Include Path -----------------------------------
203
204 MATLAB_INCLUDES = \
205         -I$(MATLAB_ROOT)/extern/include \
206         -I$(MATLAB_ROOT)/simulink/include \
207         -I$(MATLAB_ROOT)/rtw/c/src \
208         -I$(MATLAB_ROOT)/rtw/c/src/ext_mode/common
209
210 # Additional includes 
211 ADD_INCLUDES = \
212 |>START_EXPAND_INCLUDES<|       -I|>EXPAND_DIR_NAME<| \
213 |>END_EXPAND_INCLUDES<|
214
215 SHARED_INCLUDES =
216 ifneq ($(SHARED_SRC_DIR),)
217 SHARED_INCLUDES = -I$(SHARED_SRC_DIR) 
218 endif
219
220 INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(MATLAB_INCLUDES) $(ADD_INCLUDES) $(USER_INCLUDES) \
221         $(INSTRUMENT_INCLUDES) $(MODELREF_INC_PATH) $(SHARED_INCLUDES)
222
223
224 #-------------------------------- C Flags --------------------------------------
225
226 # Optimization Options
227 ifndef OPT_OPTS
228 OPT_OPTS = $(DEFAULT_OPT_OPTS)
229 endif
230
231 # General User Options
232 ifeq ($(DEBUG_BUILD),0)
233 DBG_FLAG =
234 else
235 #   Set OPTS=-g and any additional flags for debugging
236 DBG_FLAG = -g
237 LDFLAGS += -g
238 endif
239
240
241
242 # Compiler options, etc: 
243 CPP_REQ_DEFINES1 = -DMODEL=$(MODEL) -DNUMST=$(NUMST) -DNCSTATES=$(NCSTATES) \
244                   -DUNIX -DMAT_FILE=$(MAT_FILE) -DINTEGER_CODE=$(INTEGER_CODE) \
245                   -DONESTEPFCN=$(ONESTEPFCN) -DTERMFCN=$(TERMFCN) \
246                   -DHAVESTDIO -DMULTI_INSTANCE_CODE=$(MULTI_INSTANCE_CODE) \
247                   -DCLASSIC_INTERFACE=$(CLASSIC_INTERFACE)
248
249 CPP_REQ_DEFINES = $(CPP_REQ_DEFINES1)
250 ifeq ($(MODELREF_TARGET_TYPE),SIM)
251 CPP_REQ_DEFINES += -DMDL_REF_SIM_TGT=1
252 else
253 CPP_REQ_DEFINES += -DMT=$(MULTITASKING)
254 endif
255
256 ifeq ($(PORTABLE_WORDSIZES),1)
257 CPP_REQ_DEFINES += -DPORTABLE_WORDSIZES
258 endif
259
260
261 ifneq ($(OPTIMIZATION_FLAGS),)
262 CC_OPTS = $(OPTS) $(EXT_CC_OPTS) $(OPTIMIZATION_FLAGS)
263 else
264 CC_OPTS = $(OPT_OPTS) $(OPTS) $(EXT_CC_OPTS)
265 endif
266
267 CFLAGS = $(ANSI_OPTS) $(DBG_FLAG) $(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES)
268 CPPFLAGS = $(CPP_ANSI_OPTS) $(DBG_FLAG) $(CPP_OPTS) $(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES)
269 ifeq ($(SFCN),1)
270 ifneq ($(OPTIMIZATION_FLAGS),)
271 CC_OPTS_SFCN = COPTIMFLAGS="$(ANSI_OPTS) $(OPTIMIZATION_FLAGS)"
272 else
273 CC_OPTS_SFCN = COPTIMFLAGS="$(OPT_OPTS) $(ANSI_OPTS)"
274 endif
275 CFLAGS_SFCN = $(CC_OPTS_SFCN) $(CPP_REQ_DEFINES1) $(INCLUDES)
276 endif
277
278 #-------------------------- Additional Libraries ------------------------------
279
280 SYSLIBS = $(EXT_LIB) -lrt -lpthread
281 ifeq ($(SFCN),0)
282 SYSLIBS += -lm
283 endif
284
285 LIBS =
286 |>START_PRECOMP_LIBRARIES<|
287 ifeq ($(OPT_OPTS),$(DEFAULT_OPT_OPTS))
288 ifeq ($(INTEGER_CODE),0)
289 ifeq ($(SFCN),1)
290 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_rtwsfcn.a
291 else
292 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_ert.a
293 endif
294 else
295 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_int_ert.a
296 endif
297 else
298 LIBS += |>EXPAND_LIBRARY_NAME<|.a
299 endif
300 |>END_PRECOMP_LIBRARIES<| |>START_EXPAND_LIBRARIES<|
301 LIBS += |>EXPAND_LIBRARY_NAME<|.a |>END_EXPAND_LIBRARIES<|
302 LIBS += $(S_FUNCTIONS_LIB) $(INSTRUMENT_LIBS)
303
304 ifeq ($(SFCN),1)        
305 LIBFIXPT = -L$(MATLAB_ROOT)/bin/$(ARCH) -lfixedpoint
306 else
307 LIBFIXPT = 
308 endif
309
310 ifeq ($(MODELREF_TARGET_TYPE),SIM)
311 LIBMWMATHUTIL = -L$(MATLAB_ROOT)/bin/$(ARCH) -lmwmathutil
312 else
313 LIBMWMATHUTIL = 
314 endif
315
316 ifeq ($(MODELREF_TARGET_TYPE),SIM)
317 LIBMWIPP = -L$(MATLAB_ROOT)/bin/$(ARCH) -lippmwipt
318 else
319 LIBMWIPP = 
320 endif
321
322 ifeq ($(MODELREF_TARGET_TYPE),SIM)
323 LIBMWSL_FILEIO = -L$(MATLAB_ROOT)/bin/$(ARCH) -lmwsl_fileio
324 else
325 LIBMWSL_FILEIO = 
326 endif
327
328 #----------------------------- Source Files ------------------------------------
329 ADD_SRCS =
330
331 ifneq ($(ADDITIONAL_LDFLAGS),)
332 MEX_LDFLAGS = CLIBS='$$CLIBS $(ADDITIONAL_LDFLAGS)' 
333 else
334 MEX_LDFLAGS =
335 endif
336
337 ifeq ($(SFCN),0)
338   SRCS  = $(ADD_SRCS) $(S_FUNCTIONS)
339   SRC_DEP =
340   ifeq ($(MODELREF_TARGET_TYPE), NONE)
341     ifeq ($(SHRLIBTARGET), 1)
342       # Shared object/dynamic library
343       PRODUCT            = $(MODEL).so
344       BIN_SETTING        = $(LD) $(SHRLIBLDFLAGS)$(MODEL).def -o $(PRODUCT)
345       BUILD_PRODUCT_TYPE = "shared object"
346       SRCS               += $(MODULES) $(MODEL).$(TARGET_LANG_EXT) $(EXT_SRC)
347     else
348       ifeq ($(MAKEFILEBUILDER_TGT), 1)
349         # Standalone executable (e.g. for PIL)
350         PREBUILT_SRCS      = $(MODULES)
351         PREBUILT_OBJS      = $(addsuffix .o, $(basename $(PREBUILT_SRCS)))
352         PRODUCT            = $(MODEL)
353         BIN_SETTING        = $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(PRODUCT)
354         BUILD_PRODUCT_TYPE = "executable"
355       else
356         SRCS               += $(MODULES) $(MODEL).$(TARGET_LANG_EXT) $(EXT_SRC)
357         ifeq ($(STANDALONE_SUPPRESS_EXE), 1)
358           # Build object code only for top level model
359           PRODUCT            = "ObjectModulesOnly"
360           BUILD_PRODUCT_TYPE = "object modules"
361         else
362           # ERT standalone
363           PRODUCT            = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)
364           BIN_SETTING        = $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(PRODUCT)
365           BUILD_PRODUCT_TYPE = "executable"
366           ifeq ($(GEN_SAMPLE_MAIN),0)
367             SRCS += rt_main.c
368           else
369             SRCS += ert_main.$(TARGET_LANG_EXT)
370           endif
371         endif
372       endif
373     endif
374   else
375     # Model reference coder target
376     SRCS               += $(MODULES)
377     PRODUCT            = $(MODELLIB)
378     BUILD_PRODUCT_TYPE = "library"
379   endif
380 else
381   # Model Reference Simulation target, ERT S-function target
382   MEX                 = $(MATLAB_ROOT)/bin/mex
383   ifeq ($(MODELREF_TARGET_TYPE), SIM)
384   PRODUCT            = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)$(MODELREF_SFCN_SUFFIX).$(MEXEXT)
385   RTW_SFUN_SRC       = $(MODEL)$(MODELREF_SFCN_SUFFIX).$(TARGET_LANG_EXT)
386   SRCS               = $(MODULES) $(ADD_SRCS)
387   else
388   PRODUCT            = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)_sf.$(MEXEXT)
389   RTW_SFUN_SRC       = $(MODEL)_sf.$(TARGET_LANG_EXT)
390   SRCS               = $(MODULES) $(ADD_SRCS) $(S_FUNCTIONS)
391   endif
392   BIN_SETTING        = $(MEX) -MATLAB_ARCH=$(ARCH) $(CFLAGS_SFCN) $(RTW_SFUN_SRC) $(MEX_LDFLAGS) -outdir $(RELATIVE_PATH_TO_ANCHOR) -silent
393   BUILD_PRODUCT_TYPE = "mex file"
394   ifeq ($(B_ERTSFCN),1)
395     SRCS              += $(MODEL).$(TARGET_LANG_EXT)
396   endif
397   SRC_DEP            = $(RTW_SFUN_SRC)
398 endif
399
400 USER_SRCS =
401
402 USER_OBJS       = $(addsuffix .o, $(basename $(USER_SRCS)))
403 LOCAL_USER_OBJS = $(notdir $(USER_OBJS))
404
405 OBJS      = $(addsuffix .o, $(basename $(SRCS))) $(USER_OBJS)
406 LINK_OBJS = $(addsuffix .o, $(basename $(SRCS))) $(LOCAL_USER_OBJS)
407
408 SHARED_SRC := $(wildcard $(SHARED_SRC))
409 SHARED_OBJS_NO_PATH = $(addsuffix .o, $(basename $(notdir $(SHARED_SRC))))
410 SHARED_OBJS = $(addprefix $(join $(SHARED_BIN_DIR), /), $(SHARED_OBJS_NO_PATH))
411
412 ifneq ($(findstring .cpp,$(suffix $(SRCS), $(USER_SRCS), $(PREBUILT_SRCS))),)
413   LD = $(CPP)
414 endif
415 #----------------------------- Lint (sol2 only) --------------------------------
416
417 LINT_SRCS = $(MATLAB_ROOT)/rtw/c/src/common/rt_main.c
418 LINT_SRCS += $(MODEL).$(TARGET_LANG_EXT) $(MODULES) $(USER_SRCS) $(S_FUNCTIONS)
419 LINTOPTSFILE = $(MODEL).lintopts
420
421 ifneq ($(LINT_EXT_COMMON_SRC), )
422   LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/$(LINT_EXT_COMMON_SRC)
423 endif
424 ifneq ($(LINT_EXT_TCPIP_SRC), )
425   LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/$(LINT_EXT_TCPIP_SRC)
426 endif
427
428 LINT_ERROFF1 = E_NAME_DEF_NOT_USED2,E_NAME_DECL_NOT_USED_DEF2
429 LINT_ERROFF2 = $(LINT_ERROFF1),E_FUNC_ARG_UNUSED
430 LINT_ERROFF  = $(LINT_ERROFF2),E_INDISTING_FROM_TRUNC2,E_NAME_USED_NOT_DEF2
431
432 #--------------------------------- Rules ---------------------------------------
433 ifeq ($(MODELREF_TARGET_TYPE),NONE)
434   ifeq ($(SHRLIBTARGET), 1)
435     ifeq ($(GEN_SAMPLE_MAIN), 1)
436 $(MODEL) : $(PRODUCT) ert_main.o
437         $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(MODEL) ert_main.o $(PRODUCT) $(SYSLIBS)
438         @mv $(PRODUCT) $(RELATIVE_PATH_TO_ANCHOR)/
439         @echo "### Created $(BUILD_PRODUCT_TYPE): $(PRODUCT)"
440         @mv $(MODEL) $(RELATIVE_PATH_TO_ANCHOR)/
441         @echo "### Created executable: $@"
442     else
443 mvshrlib: $(PRODUCT)
444         @mv $(PRODUCT) $(RELATIVE_PATH_TO_ANCHOR)/
445     endif
446   endif
447   ifeq ($(MAKEFILEBUILDER_TGT), 1)
448 $(PRODUCT) : $(PREBUILT_OBJS) $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELLIB) $(MODELREF_LINK_LIBS)
449         $(BIN_SETTING) $(LINK_OBJS) $(PREBUILT_OBJS) $(MODELLIB) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS)  $(SYSLIBS)
450         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
451   else
452     ifeq ($(STANDALONE_SUPPRESS_EXE), 1)
453 .PHONY: $(PRODUCT)
454 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELREF_LINK_LIBS)
455         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
456     else
457 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELREF_LINK_LIBS)
458         $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS)  $(SYSLIBS)
459         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
460     endif
461   endif
462 else
463  ifeq ($(MODELREF_TARGET_TYPE),SIM)
464   $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP)
465         @rm -f $(MODELLIB)
466         ar ruvs $(MODELLIB) $(LINK_OBJS)
467         @echo "### Created $(MODELLIB)"
468         $(BIN_SETTING) $(MODELLIB) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS) $(LIBMWMATHUTIL) $(LIBMWIPP) $(LIBMWSL_FILEIO)
469         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"   
470  else
471   $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(SRC_DEP)
472         @rm -f $(MODELLIB)
473         ar ruvs $(MODELLIB) $(LINK_OBJS)
474         @echo "### Created $(MODELLIB)"
475         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"   
476  endif
477 endif
478
479
480 #--------------- Support for building referenced models -----------------------
481
482
483 #-------------------------- Support for building modules ----------------------
484
485 ifneq ($(SHARED_SRC_DIR),)
486 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.c
487         $(CC) -c -o $@ $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
488
489 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.cpp
490         $(CPP) -c -o $@ $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
491 endif
492
493 %.o : %.c
494         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
495         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
496
497 %.o : %.cpp
498         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
499         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
500
501 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c
502         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
503         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
504
505 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.cpp
506         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
507         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
508
509 ifeq ($(GEN_SAMPLE_MAIN),0)
510 ifeq ($(TARGET_LANG_EXT),cpp)
511 %.o : $(MATLAB_ROOT)/rtw/c/src/common/%.c
512         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
513 else
514 %.o : $(MATLAB_ROOT)/rtw/c/src/common/%.c
515         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
516 endif
517 endif
518
519 %.o : $(MATLAB_ROOT)/rtw/c/src/%.c
520         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
521
522 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/%.c
523         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
524
525 %.o : $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/%.c
526         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
527
528 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/custom/%.c
529         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
530
531 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.c
532         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
533
534 |>END_EXPAND_RULES<|
535
536 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.cpp
537         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
538
539 |>END_EXPAND_RULES<|
540
541 %.o : $(MATLAB_ROOT)/simulink/src/%.cpp
542         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
543
544 %.o : $(MATLAB_ROOT)/simulink/src/%.c
545         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
546
547 #------------------------------- Libraries -------------------------------------
548
549 |>START_EXPAND_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
550 |>START_EXPAND_MODULES<|    |>EXPAND_MODULE_NAME<|.o \
551 |>END_EXPAND_MODULES<|
552
553 |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|)
554         @echo "### Creating $@ "
555         ar rs $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|)
556         @echo "### $@ Created "
557
558 |>END_EXPAND_LIBRARIES<|
559
560 |>START_PRECOMP_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
561 |>START_EXPAND_MODULES<|    |>EXPAND_MODULE_NAME<|.o \
562 |>END_EXPAND_MODULES<|
563
564 |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|)
565         @echo "### Creating $@ "
566         ar rs $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|)
567         @echo "### $@ Created "
568
569 |>END_PRECOMP_LIBRARIES<|
570
571 #----------------------------- Dependencies ------------------------------------
572
573 $(OBJS) : $(MAKEFILE) rtw_proj.tmw
574
575 $(SHARED_LIB) : $(SHARED_OBJS)
576         @echo "### Creating $@ "
577         ar ruvs $@ $(SHARED_OBJS)
578         @echo "### $@ Created "
579
580
581 #--------- Miscellaneous rules to purge, clean and lint (sol2 only) ------------
582
583 purge : clean
584         @echo "### Deleting the generated source code for $(MODEL)"
585         @\rm -f $(MODEL).c $(MODEL).h $(MODEL)_types.h $(MODEL)_data.c \
586                 $(MODEL)_private.h $(MODEL).rtw $(MODULES) rtw_proj.tmw $(MAKEFILE)
587
588 clean :
589         @echo "### Deleting the objects, $(PRODUCT)"
590         @\rm -f $(LINK_OBJS) $(PRODUCT) 
591
592 lint  : rtwlib.ln
593         @lint -errchk -errhdr=%user -errtags=yes -F -L. -lrtwlib -x -Xc \
594               -erroff=$(LINT_ERROFF) \
595               -D_POSIX_C_SOURCE $(CFLAGS) $(LINT_SRCS)
596         @\rm -f $(LINTOPTSFILE)
597         @echo
598         @echo "### Created lint output only, no executable"
599         @echo
600
601 rtwlib.ln : $(MAKEFILE) rtw_proj.tmw
602         @echo
603         @echo "### Linting ..."
604         @echo
605         @\rm -f llib-lrtwlib.ln $(LINTOPTSFILE)
606         @echo "-dirout=. -errchk -errhdr=%user " >> $(LINTOPTSFILE)
607         @echo "-errtags -F -ortwlib -x -Xc " >> $(LINTOPTSFILE)
608         @echo "-erroff=$(LINT_ERROFF) " >> $(LINTOPTSFILE)
609         @echo "-D_POSIX_C_SOURCE $(CFLAGS) " >> $(LINTOPTSFILE)
610         @for file in $(MATLAB_ROOT)/rtw/c/libsrc/*.c; do \
611           echo "$$file " >> $(LINTOPTSFILE); \
612         done
613         lint -flagsrc=$(LINTOPTSFILE)
614
615
616 # EOF: ert_unix.tmf
617
618 # Local Variables:
619 # mode: makefile-gmake
620 # End: