]> rtime.felk.cvut.cz Git - ert_linux.git/blob - ert_linux/ert_linux.tmf
Fix duplicate object files during linking
[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         endif
367       endif
368     endif
369   else
370     # Model reference coder target
371     SRCS               += $(MODULES)
372     PRODUCT            = $(MODELLIB)
373     BUILD_PRODUCT_TYPE = "library"
374   endif
375 else
376   # Model Reference Simulation target, ERT S-function target
377   MEX                 = $(MATLAB_ROOT)/bin/mex
378   ifeq ($(MODELREF_TARGET_TYPE), SIM)
379   PRODUCT            = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)$(MODELREF_SFCN_SUFFIX).$(MEXEXT)
380   RTW_SFUN_SRC       = $(MODEL)$(MODELREF_SFCN_SUFFIX).$(TARGET_LANG_EXT)
381   SRCS               = $(MODULES) $(ADD_SRCS)
382   else
383   PRODUCT            = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)_sf.$(MEXEXT)
384   RTW_SFUN_SRC       = $(MODEL)_sf.$(TARGET_LANG_EXT)
385   SRCS               = $(MODULES) $(ADD_SRCS) $(S_FUNCTIONS)
386   endif
387   BIN_SETTING        = $(MEX) -MATLAB_ARCH=$(ARCH) $(CFLAGS_SFCN) $(RTW_SFUN_SRC) $(MEX_LDFLAGS) -outdir $(RELATIVE_PATH_TO_ANCHOR) -silent
388   BUILD_PRODUCT_TYPE = "mex file"
389   ifeq ($(B_ERTSFCN),1)
390     SRCS              += $(MODEL).$(TARGET_LANG_EXT)
391   endif
392   SRC_DEP            = $(RTW_SFUN_SRC)
393 endif
394
395 USER_SRCS =
396
397 USER_OBJS       = $(addsuffix .o, $(basename $(USER_SRCS)))
398 LOCAL_USER_OBJS = $(notdir $(USER_OBJS))
399
400 OBJS      = $(addsuffix .o, $(basename $(SRCS))) $(USER_OBJS)
401 LINK_OBJS = $(sort $(addsuffix .o, $(basename $(SRCS))) $(LOCAL_USER_OBJS))
402
403 SHARED_SRC := $(wildcard $(SHARED_SRC))
404 SHARED_OBJS_NO_PATH = $(addsuffix .o, $(basename $(notdir $(SHARED_SRC))))
405 SHARED_OBJS = $(addprefix $(join $(SHARED_BIN_DIR), /), $(SHARED_OBJS_NO_PATH))
406
407 ifneq ($(findstring .cpp,$(suffix $(SRCS), $(USER_SRCS), $(PREBUILT_SRCS))),)
408   LD = $(CPP)
409 endif
410 #----------------------------- Lint (sol2 only) --------------------------------
411
412 LINT_SRCS = $(MATLAB_ROOT)/rtw/c/src/common/rt_main.c
413 LINT_SRCS += $(MODEL).$(TARGET_LANG_EXT) $(MODULES) $(USER_SRCS) $(S_FUNCTIONS)
414 LINTOPTSFILE = $(MODEL).lintopts
415
416 ifneq ($(LINT_EXT_COMMON_SRC), )
417   LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/$(LINT_EXT_COMMON_SRC)
418 endif
419 ifneq ($(LINT_EXT_TCPIP_SRC), )
420   LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/$(LINT_EXT_TCPIP_SRC)
421 endif
422
423 LINT_ERROFF1 = E_NAME_DEF_NOT_USED2,E_NAME_DECL_NOT_USED_DEF2
424 LINT_ERROFF2 = $(LINT_ERROFF1),E_FUNC_ARG_UNUSED
425 LINT_ERROFF  = $(LINT_ERROFF2),E_INDISTING_FROM_TRUNC2,E_NAME_USED_NOT_DEF2
426
427 #--------------------------------- Rules ---------------------------------------
428 ifeq ($(MODELREF_TARGET_TYPE),NONE)
429   ifeq ($(SHRLIBTARGET), 1)
430     ifeq ($(GEN_SAMPLE_MAIN), 1)
431 $(MODEL) : $(PRODUCT) ert_main.o
432         $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(MODEL) ert_main.o $(PRODUCT) $(SYSLIBS)
433         @mv $(PRODUCT) $(RELATIVE_PATH_TO_ANCHOR)/
434         @echo "### Created $(BUILD_PRODUCT_TYPE): $(PRODUCT)"
435         @mv $(MODEL) $(RELATIVE_PATH_TO_ANCHOR)/
436         @echo "### Created executable: $@"
437     else
438 mvshrlib: $(PRODUCT)
439         @mv $(PRODUCT) $(RELATIVE_PATH_TO_ANCHOR)/
440     endif
441   endif
442   ifeq ($(MAKEFILEBUILDER_TGT), 1)
443 $(PRODUCT) : $(PREBUILT_OBJS) $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELLIB) $(MODELREF_LINK_LIBS)
444         $(BIN_SETTING) $(LINK_OBJS) $(PREBUILT_OBJS) $(MODELLIB) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS)  $(SYSLIBS)
445         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
446   else
447     ifeq ($(STANDALONE_SUPPRESS_EXE), 1)
448 .PHONY: $(PRODUCT)
449 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELREF_LINK_LIBS)
450         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
451     else
452 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELREF_LINK_LIBS)
453         $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS)  $(SYSLIBS)
454         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
455     endif
456   endif
457 else
458  ifeq ($(MODELREF_TARGET_TYPE),SIM)
459   $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP)
460         @rm -f $(MODELLIB)
461         ar ruvs $(MODELLIB) $(LINK_OBJS)
462         @echo "### Created $(MODELLIB)"
463         $(BIN_SETTING) $(MODELLIB) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBFIXPT) $(LIBS) $(LIBMWMATHUTIL) $(LIBMWIPP) $(LIBMWSL_FILEIO)
464         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"   
465  else
466   $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(SRC_DEP)
467         @rm -f $(MODELLIB)
468         ar ruvs $(MODELLIB) $(LINK_OBJS)
469         @echo "### Created $(MODELLIB)"
470         @echo "### Created $(BUILD_PRODUCT_TYPE): $@"   
471  endif
472 endif
473
474
475 #--------------- Support for building referenced models -----------------------
476
477
478 #-------------------------- Support for building modules ----------------------
479
480 ifneq ($(SHARED_SRC_DIR),)
481 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.c
482         $(CC) -c -o $@ $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
483
484 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.cpp
485         $(CPP) -c -o $@ $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
486 endif
487
488 %.o : %.c
489         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
490         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
491
492 %.o : %.cpp
493         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
494         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
495
496 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c
497         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
498         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
499
500 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.cpp
501         @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
502         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
503
504 ifeq ($(GEN_SAMPLE_MAIN),0)
505 ifeq ($(TARGET_LANG_EXT),cpp)
506 %.o : $(MATLAB_ROOT)/rtw/c/src/common/%.c
507         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
508 else
509 %.o : $(MATLAB_ROOT)/rtw/c/src/common/%.c
510         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
511 endif
512 endif
513
514 %.o : $(MATLAB_ROOT)/rtw/c/src/%.c
515         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
516
517 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/%.c
518         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
519
520 %.o : $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/%.c
521         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
522
523 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/custom/%.c
524         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
525
526 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.c
527         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
528
529 |>END_EXPAND_RULES<|
530
531 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.cpp
532         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
533
534 |>END_EXPAND_RULES<|
535
536 %.o : $(MATLAB_ROOT)/simulink/src/%.cpp
537         $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
538
539 %.o : $(MATLAB_ROOT)/simulink/src/%.c
540         $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
541
542 #------------------------------- Libraries -------------------------------------
543
544 |>START_EXPAND_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
545 |>START_EXPAND_MODULES<|    |>EXPAND_MODULE_NAME<|.o \
546 |>END_EXPAND_MODULES<|
547
548 |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|)
549         @echo "### Creating $@ "
550         ar rs $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|)
551         @echo "### $@ Created "
552
553 |>END_EXPAND_LIBRARIES<|
554
555 |>START_PRECOMP_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
556 |>START_EXPAND_MODULES<|    |>EXPAND_MODULE_NAME<|.o \
557 |>END_EXPAND_MODULES<|
558
559 |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|)
560         @echo "### Creating $@ "
561         ar rs $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|)
562         @echo "### $@ Created "
563
564 |>END_PRECOMP_LIBRARIES<|
565
566 #----------------------------- Dependencies ------------------------------------
567
568 $(OBJS) : $(MAKEFILE) rtw_proj.tmw
569
570 $(SHARED_LIB) : $(SHARED_OBJS)
571         @echo "### Creating $@ "
572         ar ruvs $@ $(SHARED_OBJS)
573         @echo "### $@ Created "
574
575
576 #--------- Miscellaneous rules to purge, clean and lint (sol2 only) ------------
577
578 purge : clean
579         @echo "### Deleting the generated source code for $(MODEL)"
580         @\rm -f $(MODEL).c $(MODEL).h $(MODEL)_types.h $(MODEL)_data.c \
581                 $(MODEL)_private.h $(MODEL).rtw $(MODULES) rtw_proj.tmw $(MAKEFILE)
582
583 clean :
584         @echo "### Deleting the objects, $(PRODUCT)"
585         @\rm -f $(LINK_OBJS) $(PRODUCT) 
586
587 lint  : rtwlib.ln
588         @lint -errchk -errhdr=%user -errtags=yes -F -L. -lrtwlib -x -Xc \
589               -erroff=$(LINT_ERROFF) \
590               -D_POSIX_C_SOURCE $(CFLAGS) $(LINT_SRCS)
591         @\rm -f $(LINTOPTSFILE)
592         @echo
593         @echo "### Created lint output only, no executable"
594         @echo
595
596 rtwlib.ln : $(MAKEFILE) rtw_proj.tmw
597         @echo
598         @echo "### Linting ..."
599         @echo
600         @\rm -f llib-lrtwlib.ln $(LINTOPTSFILE)
601         @echo "-dirout=. -errchk -errhdr=%user " >> $(LINTOPTSFILE)
602         @echo "-errtags -F -ortwlib -x -Xc " >> $(LINTOPTSFILE)
603         @echo "-erroff=$(LINT_ERROFF) " >> $(LINTOPTSFILE)
604         @echo "-D_POSIX_C_SOURCE $(CFLAGS) " >> $(LINTOPTSFILE)
605         @for file in $(MATLAB_ROOT)/rtw/c/libsrc/*.c; do \
606           echo "$$file " >> $(LINTOPTSFILE); \
607         done
608         lint -flagsrc=$(LINTOPTSFILE)
609
610
611 # EOF: ert_unix.tmf
612
613 # Local Variables:
614 # mode: makefile-gmake
615 # End: