| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- # Copyright 1994-2020 The MathWorks, Inc.
- #
- #
- # Abstract:
- # Template makefile for building a Windows-based stand-alone embedded
- # real-time version of Simulink model using generated C code and the
- # Microsoft Visual C/C++ compiler for x64.
- #
- # Note that this template is automatically customized by the build
- # procedure to create "<model>.mk"
- #
- # The following defines can be used to modify the behavior of the
- # build:
- # OPT_OPTS - Optimization option. See DEFAULT_OPT_OPTS in
- # vctools.mak for default.
- # OPTS - User specific options.
- # CPP_OPTS - C++ compiler options.
- # USER_SRCS - Additional user sources, such as files needed by
- # S-functions.
- # USER_INCLUDES - Additional include paths
- # (i.e. USER_INCLUDES="-Iwhere-ever -Iwhere-ever2")
- #
- # To enable debugging:
- # set DEBUG_BUILD = 1, which will trigger OPTS=-Zi (may vary with
- # compiler version, see compiler doc)
- #
- # This template makefile is designed to be used with a system target
- # file that contains 'rtwgensettings.BuildDirSuffix' see ert.tlc
- #------------------------ Macros read by make_rtw -----------------------------
- #
- # The following macros are read by the build procedure:
- #
- # MAKECMD - This is the command used to invoke the make utility
- # HOST - What platform this template makefile is targeted for
- # (i.e. PC or UNIX)
- # BUILD - Invoke make from the build procedure (yes/no)?
- # SYS_TARGET_FILE - Name of system target file.
- MAKECMD = nmake
- HOST = PC
- BUILD = yes
- SYS_TARGET_FILE = any
- BUILD_SUCCESS = ^#^#^# Created
- # Opt in to simplified format by specifying compatible Toolchain
- TOOLCHAIN_NAME = [\
- "Microsoft Visual C++ 2019 v16.0 | nmake (64-bit Windows)", \
- "Microsoft Visual C++ 2017 v15.0 | nmake (64-bit Windows)", \
- "Microsoft Visual C++ 2015 v14.0 | nmake (64-bit Windows)"]
- #---------------------- Tokens expanded by make_rtw ---------------------------
- #
- # The following tokens, when wrapped with "|>" and "<|" are expanded by the
- # build procedure.
- #
- # MODEL_NAME - Name of the Simulink block diagram
- # MODEL_MODULES - Any additional generated source modules
- # MAKEFILE_NAME - Name of makefile created from template makefile <model>.mk
- # MATLAB_ROOT - Path to where MATLAB is installed.
- # MATLAB_BIN - Path to MATLAB executable.
- # S_FUNCTIONS_LIB - List of S-functions libraries to link.
- # NUMST - Number of sample times
- # NCSTATES - Number of continuous states
- # BUILDARGS - Options passed in at the command line.
- # MULTITASKING - yes (1) or no (0): Is solver mode multitasking
- # INTEGER_CODE - yes (1) or no (0): Is generated code purely integer
- # MAT_FILE - yes (1) or no (0): Should mat file logging be done,
- # if 0, the generated code runs indefinitely
- # MULTI_INSTANCE_CODE - Is the generated code multi instantiable (1/0)?
- # MODELREFS - List of referenced models
- # SHRLIBTARGET - Is this build intended for generation of a shared library instead
- # of executable (1/0)?
- # MAKEFILEBUILDER_TGT - Is this build performed by the MakefileBuilder class
- # e.g. to create a PIL executable?
- # STANDALONE_SUPPRESS_EXE - Build the standalone target but only create object code modules
- # and do not build an executable
- MODEL = PWM
- MODULES =
- PRODUCT = PWM_sf.lib
- MAKEFILE = PWM.mk
- MATLAB_ROOT = D:\Program Files\R2020b
- ALT_MATLAB_ROOT = D:\Program Files\R2020b
- MATLAB_BIN = D:\Program Files\R2020b\bin
- ALT_MATLAB_BIN = D:\Program Files\R2020b\bin
- START_DIR = E:\works\mcu\MC100\Simulink
- S_FUNCTIONS_LIB =
- NUMST = 2
- NCSTATES = 0
- BUILDARGS = MATLAB_ROOT=%MATLAB_ROOT% ALT_MATLAB_ROOT=%ALT_MATLAB_ROOT% MATLAB_BIN=%MATLAB_BIN% ALT_MATLAB_BIN=%ALT_MATLAB_BIN% CREATEMODEL=1 USEPARAMVALUES=0 OPTS="-DTID01EQ=0"
- MULTITASKING = 1
- INTEGER_CODE = 0
- MAT_FILE = 0
- ALLOCATIONFCN = 0
- ONESTEPFCN = 0
- TERMFCN = 1
- ENABLE_SLEXEC_SSBRIDGE = 0
- MULTI_INSTANCE_CODE = 0
- CLASSIC_INTERFACE = 1
- MODELREFS =
- TARGET_LANG_EXT = c
- SHRLIBTARGET = 0
- MAKEFILEBUILDER_TGT = 0
- STANDALONE_SUPPRESS_EXE = 0
- OPTIMIZATION_FLAGS = /DNDEBUG /Od /Oy-
- ADDITIONAL_LDFLAGS =
- INTERLEAVED_COMPLEX_FLAGS = -R2018a
- DEFINES_CUSTOM =
- DEFINES_OTHER = -DHAVESTDIO
- COMPILE_FLAGS_OTHER =
- SYSTEM_LIBS = /LIBPATH:"D:\Program Files\R2020b\extern\lib\win64\microsoft" libut.lib libfixedpoint.lib
- MODEL_HAS_DYNAMICALLY_LOADED_SFCNS = 0
- # To enable debugging:
- # set DEBUG_BUILD = 1
- DEBUG_BUILD = 0
- #--------------------------- Model and reference models -----------------------
- MODELLIB =
- MODELREF_LINK_LIBS =
- MODELREF_LINK_RSPFILE = PWM_ref.rsp
- COMPILER_COMMAND_FILE = PWM_comp.rsp
- RELATIVE_PATH_TO_ANCHOR = ..
- MODELREF_TARGET_TYPE = SIM
- !if "$(MATLAB_ROOT)" != "$(ALT_MATLAB_ROOT)"
- MATLAB_ROOT = $(ALT_MATLAB_ROOT)
- !endif
- !if "$(MATLAB_BIN)" != "$(ALT_MATLAB_BIN)"
- MATLAB_BIN = $(ALT_MATLAB_BIN)
- !endif
- MATLAB_ARCH_BIN = $(MATLAB_BIN)\win64
- #--------------------------- Tool Specifications ------------------------------
- !include $(MATLAB_ROOT)\rtw\c\tools\vctools.mak
- CMD_FILE = $(MODEL).rsp
- #------------------------------ Include/Lib Path ------------------------------
- INCLUDE = .;$(RELATIVE_PATH_TO_ANCHOR);$(INCLUDE)
- #----------------- Compiler and Linker Options --------------------------------
- # Optimization Options
- OPT_OPTS = $(DEFAULT_OPT_OPTS)
- # General User Options
- !if "$(DEBUG_BUILD)" == "0"
- DBG_FLAG =
- !else
- # Set OPT_OPTS=-Zi and any additional flags for debugging
- DBG_FLAG = -Zi
- !endif
- !if "$(MODELREF_TARGET_TYPE)" == "SIM"
- MDLREF_FLAG = -DMDL_REF_SIM_TGT=1
- !if "$(ENABLE_SLEXEC_SSBRIDGE)" != "0"
- MDLREF_FLAG = $(MDLREF_FLAG) -DENABLE_SLEXEC_SSBRIDGE=$(ENABLE_SLEXEC_SSBRIDGE)
- !endif
- !else
- MDLREF_FLAG =
- !endif
- !if "$(OPTIMIZATION_FLAGS)" != ""
- CC_OPTS = $(OPTS) $(COMPILE_FLAGS_OTHER) $(OPTIMIZATION_FLAGS)
- !else
- CC_OPTS = $(OPTS) $(COMPILE_FLAGS_OTHER) $(OPT_OPTS)
- !endif
- CPP_REQ_DEFINES = -DMODEL=$(MODEL) -DNUMST=$(NUMST) -DNCSTATES=$(NCSTATES) \
- -DMAT_FILE=$(MAT_FILE) -DINTEGER_CODE=$(INTEGER_CODE) \
- -DONESTEPFCN=$(ONESTEPFCN) -DTERMFCN=$(TERMFCN) \
- -DHAVESTDIO -DMULTI_INSTANCE_CODE=$(MULTI_INSTANCE_CODE) \
- -DCLASSIC_INTERFACE=$(CLASSIC_INTERFACE) \
- -DALLOCATIONFCN=$(ALLOCATIONFCN) \
- $(DEFINES_CUSTOM) $(DEFINES_OTHER)
- !if "$(MODELREF_TARGET_TYPE)" == "SIM"
- CPP_REQ_DEFINES = $(CPP_REQ_DEFINES) $(MDLREF_FLAG)
- !else
- CPP_REQ_DEFINES = $(CPP_REQ_DEFINES) -DMT=$(MULTITASKING)
- !endif
- CPP_REQ_DEFINES = $(CPP_REQ_DEFINES) -DMODEL_HAS_DYNAMICALLY_LOADED_SFCNS=$(MODEL_HAS_DYNAMICALLY_LOADED_SFCNS)
- CVARSFLAG = $(cvarsdll)
- CFLAGS = $(cflags) @$(COMPILER_COMMAND_FILE) $(CVARSFLAG) \
- -D_CRT_SECURE_NO_WARNINGS $(DBG_FLAG) $(CC_OPTS) $(CPP_REQ_DEFINES) \
- $(USER_INCLUDES)
- CPPFLAGS = $(cflags) @$(COMPILER_COMMAND_FILE) $(CVARSFLAG) \
- -EHs -D_CRT_SECURE_NO_WARNINGS $(DBG_FLAG) $(CPP_OPTS) $(CC_OPTS) \
- $(CPP_REQ_DEFINES) $(USER_INCLUDES)
- LDFLAGS = $(ldebug) $(conflags) $(conlibs) $(ADDITIONAL_LDFLAGS)
- #----------------------------- Source Files -----------------------------------
- ADD_SRCS =
- SRCS = $(ADD_SRCS) $(MODULES) $(USER_SRCS)
- USER_SRCS =
- OBJS_CPP_UPPER = $(SRCS:.CPP=.obj)
- OBJS_CPP_LOWER = $(OBJS_CPP_UPPER:.cpp=.obj)
- OBJS_C_UPPER = $(OBJS_CPP_LOWER:.C=.obj)
- OBJS = $(OBJS_C_UPPER:.c=.obj)
- #-------------------------- Additional Libraries -------------------------------
- LIBS =
- LIBS = $(LIBS) $(S_FUNCTIONS_LIB)
- #--------------------------------- Rules --------------------------------------
- all: set_environment_variables $(PRODUCT)
- !if "$(MODELREF_TARGET_TYPE)" == "NONE"
- #--- Shared library target (.dll) ---
- !if $(SHRLIBTARGET)==1
- $(PRODUCT) : $(LIBS) $(OBJS) $(LIBS) $(MODELREF_LINK_LIBS)
- @cmd /C "echo ### Linking ..."
- $(LD) $(LDFLAGS) $(LIBS) \
- @$(CMD_FILE) @$(MODELREF_LINK_RSPFILE) -dll -def:$(MODEL).def -out:$@
- @cmd /C "echo $(BUILD_SUCCESS) dynamically linked library $(PRODUCT)"
- !else
- !if $(MAKEFILEBUILDER_TGT)==1
- PREBUILT_SRCS = $(MODULES)
- PREBUILT_OBJS_CPP_UPPER = $(PREBUILT_SRCS:.CPP=.obj)
- PREBUILT_OBJS_CPP_LOWER = $(PREBUILT_OBJS_CPP_UPPER:.cpp=.obj)
- PREBUILT_OBJS_C_UPPER = $(PREBUILT_OBJS_CPP_LOWER:.C=.obj)
- PREBUILT_OBJS = $(PREBUILT_OBJS_C_UPPER:.c=.obj)
- $(PRODUCT) : $(LIBS) $(PREBUILT_OBJS) $(OBJS) $(MODELLIB) $(LIBS) $(MODELREF_LINK_LIBS)
- @cmd /C "echo ### Linking ..."
- @cmd /C "echo $(BUILD_SUCCESS) executable $(PRODUCT)"
- !else
- !if $(STANDALONE_SUPPRESS_EXE)==1
- # Build object code only for top level model
- .PHONY: $(PRODUCT)
- $(PRODUCT) : $(LIBS) $(OBJS) $(LIBS)
- @cmd /C "echo $(BUILD_SUCCESS) object modules $(PRODUCT)"
- !else
- #--- Stand-alone model (.exe) ---
- $(PRODUCT) : $(LIBS) $(OBJS) $(LIBS) $(MODELREF_LINK_LIBS)
- @cmd /C "echo ### Linking ..."
- $(LD) $(LDFLAGS) $(LIBS) @$(CMD_FILE) @$(MODELREF_LINK_RSPFILE) $(SYSTEM_LIBS) -out:$@
- @cmd /C "echo $(BUILD_SUCCESS) executable $(PRODUCT)"
- !endif
- !endif
- !endif
- !else
- #--- Library target ---
- $(PRODUCT) : $(LIBS) $(OBJS)
- @cmd /C "echo ### Linking ..."
- !endif
- #-------------------------- Support for building modules ----------------------
- {$(MATLAB_ROOT)\rtw\c\src}.c.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CFLAGS) $<
- {$(MATLAB_ROOT)\simulink\src}.c.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CFLAGS) $<
- {$(MATLAB_ROOT)\rtw\c\src}.cpp.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CPPFLAGS) $<
- {$(MATLAB_ROOT)\simulink\src}.cpp.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CPPFLAGS) $<
- # Put these rules last, otherwise nmake will check toolboxes first
- {$(RELATIVE_PATH_TO_ANCHOR)}.c.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CFLAGS) $<
- {$(RELATIVE_PATH_TO_ANCHOR)}.cpp.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CPPFLAGS) $<
- .c.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CFLAGS) $<
- .cpp.obj :
- @cmd /C "echo ### Compiling $<"
- $(CC) $(CPPFLAGS) $<
- set_environment_variables:
- @set INCLUDE=$(INCLUDE)
- @set LIB=$(LIB)
- # Libraries:
- #----------------------------- Dependencies -----------------------------------
|