1 # Copyright 1994-2012 The MathWorks, Inc.
6 # Template makefile for building a UNIX-based stand-alone embedded
7 # real-time version of Simulink model using generated C code.
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.
13 # Note that this template is automatically customized by the build
14 # procedure to create "<model>.mk"
16 # The following defines can be used to modify the behavior of the
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
23 # USER_INCLUDES - Additional include paths
24 # (i.e. USER_INCLUDES="-Iwhere-ever -Iwhere-ever2")
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)
30 # This template makefile is designed to be used with a system target
31 # file that contains 'rtwgensettings.BuildDirSuffix' see ert.tlc
34 #------------------------ Macros read by make_rtw ------------------------------
36 # The following macros are read by the build procedure:
38 # MAKECMD - This is the command used to invoke the make utility
39 # HOST - What platform this template makefile is targeted for
41 # BUILD - Invoke make from the build procedure (yes/no)?
42 # SYS_TARGET_FILE - Name of system target file.
44 MAKECMD = |>MATLAB_BIN<|/|>ARCH<|/gmake
48 COMPILER_TOOL_CHAIN = unix
50 #---------------------- Tokens expanded by make_rtw ----------------------------
52 # The following tokens, when wrapped with "|>" and "<|" are expanded by the
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
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
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<|
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<|
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<|
129 # To enable debugging:
130 # set DEBUG_BUILD = 1
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<|
142 #-- In the case when directory name contains space ---
143 ifneq ($(MATLAB_ROOT),$(ALT_MATLAB_ROOT))
144 MATLAB_ROOT := $(ALT_MATLAB_ROOT)
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
152 EXT_CC_OPTS = -DEXT_MODE -D$(COMPUTER) #-DVERBOSE
154 EXT_SRC = ext_svr.c updown.c ext_work.c
155 LINT_EXT_COMMON_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
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
166 ifeq ($(TMW_EXTMODE_TESTING),1)
167 EXT_SRC += ext_test.c
168 EXT_CC_OPTS += -DTMW_EXTMODE_TESTING
170 ifeq ($(EXTMODE_STATIC),1)
172 LINT_EXT_COMMON_SRC += mem_mgr.c
173 EXT_CC_OPTS += -DEXTMODE_STATIC -DEXTMODE_STATIC_SIZE=$(EXTMODE_STATIC_SIZE)
175 ifeq ($(COMPUTER),SOL64)
176 EXT_LIB = -lsocket -lnsl
180 #--------------------------- Tool Specifications -------------------------------
182 include $(MATLAB_ROOT)/rtw/c/tools/unixtools.mk
184 # Determine if we are generating an s-function
186 ifeq ($(MODELREF_TARGET_TYPE),SIM)
189 ifeq ($(B_ERTSFCN),1)
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
199 GCC_TEST_OUT = > /dev/null
202 #------------------------------ Include Path -----------------------------------
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
210 # Additional includes
212 |>START_EXPAND_INCLUDES<| -I|>EXPAND_DIR_NAME<| \
213 |>END_EXPAND_INCLUDES<|
216 ifneq ($(SHARED_SRC_DIR),)
217 SHARED_INCLUDES = -I$(SHARED_SRC_DIR)
220 INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(MATLAB_INCLUDES) $(ADD_INCLUDES) $(USER_INCLUDES) \
221 $(INSTRUMENT_INCLUDES) $(MODELREF_INC_PATH) $(SHARED_INCLUDES)
224 #-------------------------------- C Flags --------------------------------------
226 # Optimization Options
228 OPT_OPTS = $(DEFAULT_OPT_OPTS)
231 # General User Options
232 ifeq ($(DEBUG_BUILD),0)
235 # Set OPTS=-g and any additional flags for debugging
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)
249 CPP_REQ_DEFINES = $(CPP_REQ_DEFINES1)
250 ifeq ($(MODELREF_TARGET_TYPE),SIM)
251 CPP_REQ_DEFINES += -DMDL_REF_SIM_TGT=1
253 CPP_REQ_DEFINES += -DMT=$(MULTITASKING)
256 ifeq ($(PORTABLE_WORDSIZES),1)
257 CPP_REQ_DEFINES += -DPORTABLE_WORDSIZES
261 ifneq ($(OPTIMIZATION_FLAGS),)
262 CC_OPTS = $(OPTS) $(EXT_CC_OPTS) $(OPTIMIZATION_FLAGS)
264 CC_OPTS = $(OPT_OPTS) $(OPTS) $(EXT_CC_OPTS)
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)
270 ifneq ($(OPTIMIZATION_FLAGS),)
271 CC_OPTS_SFCN = COPTIMFLAGS="$(ANSI_OPTS) $(OPTIMIZATION_FLAGS)"
273 CC_OPTS_SFCN = COPTIMFLAGS="$(OPT_OPTS) $(ANSI_OPTS)"
275 CFLAGS_SFCN = $(CC_OPTS_SFCN) $(CPP_REQ_DEFINES1) $(INCLUDES)
278 #-------------------------- Additional Libraries ------------------------------
280 SYSLIBS = $(EXT_LIB) -lrt -lpthread
286 |>START_PRECOMP_LIBRARIES<|
287 ifeq ($(OPT_OPTS),$(DEFAULT_OPT_OPTS))
288 ifeq ($(INTEGER_CODE),0)
290 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_rtwsfcn.a
292 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_ert.a
295 LIBS += |>EXPAND_LIBRARY_LOCATION<|/|>EXPAND_LIBRARY_NAME<|_int_ert.a
298 LIBS += |>EXPAND_LIBRARY_NAME<|.a
300 |>END_PRECOMP_LIBRARIES<| |>START_EXPAND_LIBRARIES<|
301 LIBS += |>EXPAND_LIBRARY_NAME<|.a |>END_EXPAND_LIBRARIES<|
302 LIBS += $(S_FUNCTIONS_LIB) $(INSTRUMENT_LIBS)
305 LIBFIXPT = -L$(MATLAB_ROOT)/bin/$(ARCH) -lfixedpoint
310 ifeq ($(MODELREF_TARGET_TYPE),SIM)
311 LIBMWMATHUTIL = -L$(MATLAB_ROOT)/bin/$(ARCH) -lmwmathutil
316 ifeq ($(MODELREF_TARGET_TYPE),SIM)
317 LIBMWIPP = -L$(MATLAB_ROOT)/bin/$(ARCH) -lippmwipt
322 ifeq ($(MODELREF_TARGET_TYPE),SIM)
323 LIBMWSL_FILEIO = -L$(MATLAB_ROOT)/bin/$(ARCH) -lmwsl_fileio
328 #----------------------------- Source Files ------------------------------------
331 ifneq ($(ADDITIONAL_LDFLAGS),)
332 MEX_LDFLAGS = CLIBS='$$CLIBS $(ADDITIONAL_LDFLAGS)'
338 SRCS = $(ADD_SRCS) $(S_FUNCTIONS)
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)
348 ifeq ($(MAKEFILEBUILDER_TGT), 1)
349 # Standalone executable (e.g. for PIL)
350 PREBUILT_SRCS = $(MODULES)
351 PREBUILT_OBJS = $(addsuffix .o, $(basename $(PREBUILT_SRCS)))
353 BIN_SETTING = $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(PRODUCT)
354 BUILD_PRODUCT_TYPE = "executable"
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"
363 PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL)
364 BIN_SETTING = $(LD) $(LDFLAGS) $(ADDITIONAL_LDFLAGS) -o $(PRODUCT)
365 BUILD_PRODUCT_TYPE = "executable"
370 # Model reference coder target
372 PRODUCT = $(MODELLIB)
373 BUILD_PRODUCT_TYPE = "library"
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)
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)
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)
392 SRC_DEP = $(RTW_SFUN_SRC)
397 USER_OBJS = $(addsuffix .o, $(basename $(USER_SRCS)))
398 LOCAL_USER_OBJS = $(notdir $(USER_OBJS))
400 OBJS = $(addsuffix .o, $(basename $(SRCS))) $(USER_OBJS)
401 LINK_OBJS = $(sort $(addsuffix .o, $(basename $(SRCS))) $(LOCAL_USER_OBJS))
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))
407 ifneq ($(findstring .cpp,$(suffix $(SRCS), $(USER_SRCS), $(PREBUILT_SRCS))),)
410 #----------------------------- Lint (sol2 only) --------------------------------
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
416 ifneq ($(LINT_EXT_COMMON_SRC), )
417 LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/$(LINT_EXT_COMMON_SRC)
419 ifneq ($(LINT_EXT_TCPIP_SRC), )
420 LINT_SRCS += $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/$(LINT_EXT_TCPIP_SRC)
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
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: $@"
439 @mv $(PRODUCT) $(RELATIVE_PATH_TO_ANCHOR)/
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): $@"
447 ifeq ($(STANDALONE_SUPPRESS_EXE), 1)
449 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP) $(MODELREF_LINK_LIBS)
450 @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
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): $@"
458 ifeq ($(MODELREF_TARGET_TYPE),SIM)
459 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(LIBS) $(SRC_DEP)
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): $@"
466 $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(SRC_DEP)
468 ar ruvs $(MODELLIB) $(LINK_OBJS)
469 @echo "### Created $(MODELLIB)"
470 @echo "### Created $(BUILD_PRODUCT_TYPE): $@"
475 #--------------- Support for building referenced models -----------------------
478 #-------------------------- Support for building modules ----------------------
480 ifneq ($(SHARED_SRC_DIR),)
481 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.c
482 $(CC) -c -o $@ $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
484 $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.cpp
485 $(CPP) -c -o $@ $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
489 @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
490 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
493 @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
494 $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
496 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c
497 @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
498 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG) "$<"
500 %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.cpp
501 @$(GCC_TEST) $(CPP_REQ_DEFINES) $(INCLUDES) "$<" $(GCC_TEST_OUT)
502 $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG) "$<"
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) "$<"
509 %.o : $(MATLAB_ROOT)/rtw/c/src/common/%.c
510 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
514 %.o : $(MATLAB_ROOT)/rtw/c/src/%.c
515 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
517 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/common/%.c
518 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
520 %.o : $(MATLAB_ROOT)/rtw/c/src/rtiostream/rtiostreamtcpip/%.c
521 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
523 %.o : $(MATLAB_ROOT)/rtw/c/src/ext_mode/custom/%.c
524 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
526 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.c
527 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
531 |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.cpp
532 $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
536 %.o : $(MATLAB_ROOT)/simulink/src/%.cpp
537 $(CPP) -c $(CPPFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
539 %.o : $(MATLAB_ROOT)/simulink/src/%.c
540 $(CC) -c $(CFLAGS) $(GCC_WALL_FLAG_MAX) "$<"
542 #------------------------------- Libraries -------------------------------------
544 |>START_EXPAND_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
545 |>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \
546 |>END_EXPAND_MODULES<|
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 "
553 |>END_EXPAND_LIBRARIES<|
555 |>START_PRECOMP_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \
556 |>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \
557 |>END_EXPAND_MODULES<|
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 "
564 |>END_PRECOMP_LIBRARIES<|
566 #----------------------------- Dependencies ------------------------------------
568 $(OBJS) : $(MAKEFILE) rtw_proj.tmw
570 $(SHARED_LIB) : $(SHARED_OBJS)
571 @echo "### Creating $@ "
572 ar ruvs $@ $(SHARED_OBJS)
573 @echo "### $@ Created "
576 #--------- Miscellaneous rules to purge, clean and lint (sol2 only) ------------
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)
584 @echo "### Deleting the objects, $(PRODUCT)"
585 @\rm -f $(LINK_OBJS) $(PRODUCT)
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)
593 @echo "### Created lint output only, no executable"
596 rtwlib.ln : $(MAKEFILE) rtw_proj.tmw
598 @echo "### Linting ..."
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); \
608 lint -flagsrc=$(LINTOPTSFILE)
614 # mode: makefile-gmake