# Copyright 1994-2017 The MathWorks, Inc. # # File: B3_AP_ert_target.tmf # # Abstract: # Simplified version of matlabroot/rtw/c/tornado/tornado.tmf to support # the Embedded Real-Time (ERT) code format on the VxWorks operating # system. Supports referenced models and user C++ files. # # This file can be used as a starting point for supporting ERT on the # Tornado environment. # MAKECMD = "%ARM_GCC_PATH%\bin\make" SHELL = cmd HOST = PC BUILD = no BUILD_SUCCESS = *** Created SYS_TARGET_FILE = B3_AP_ert_target.tlc MAKEFILE_FILESEP = / TOOLCHAIN_NAME = "armcc | gmake makefile (64-bit Windows)" #---------------------- Tokens expanded by make_rtw ---------------------------- # # The following tokens, when wrapped with "|>" and "<|" are expanded by the # build procedure. # MODEL = |>MODEL_NAME<| MODULES = |>MODEL_MODULES<| MAKEFILE = |>MAKEFILE_NAME<| MATLAB_ROOT = |>MATLAB_ROOT<| ALT_MATLAB_ROOT = |>ALT_MATLAB_ROOT<| MASTER_ANCHOR_DIR = |>MASTER_ANCHOR_DIR<| START_DIR = |>START_DIR<| S_FUNCTIONS = |>S_FUNCTIONS<| S_FUNCTIONS_LIB = |>S_FUNCTIONS_LIB<| NUMST = |>NUMST<| NCSTATES = |>NCSTATES<| COMPUTER = |>COMPUTER<| BUILDARGS = |>BUILDARGS<| MULTITASKING = |>MULTITASKING<| MODELREFS = |>MODELREFS<| SHARED_SRC = |>SHARED_SRC<| SHARED_SRC_DIR = |>SHARED_SRC_DIR<| SHARED_BIN_DIR = |>SHARED_BIN_DIR<| SHARED_LIB = |>SHARED_LIB<| GEN_SAMPLE_MAIN = |>GEN_SAMPLE_MAIN<| TARGET_LANG_EXT = |>TARGET_LANG_EXT<| CLASSIC_INTERFACE = |>CLASSIC_INTERFACE<| NUMST = |>NUMST<| #--------------------------- Model and reference models ----------------------- MODELLIB = |>MODELLIB<| MODELREF_LINK_LIBS = |>MODELREF_LINK_LIBS<| MODELREF_INC_PATH = |>START_MDLREFINC_EXPAND_INCLUDES<|-I|>MODELREF_INC_PATH<| |>END_MDLREFINC_EXPAND_INCLUDES<| RELATIVE_PATH_TO_ANCHOR = |>RELATIVE_PATH_TO_ANCHOR<| # NONE: standalone, SIM: modelref sim, RTW: modelref coder target MODELREF_TARGET_TYPE = |>MODELREF_TARGET_TYPE<| #-- In the case when directory name contains space --- ifneq ($(MATLAB_ROOT),$(ALT_MATLAB_ROOT)) MATLAB_ROOT := $(ALT_MATLAB_ROOT) endif # Code generation option makevariables that are not expanded in the template makefile # are automatically passed into make. To avoid this, create NOOP replacements. # For this custom target, these ERT makevariables are not used. # NOOP = |>MAT_FILE<| NOOP = |>INTEGER_CODE<| NOOP = |>INCLUDE_MDL_TERMINATE_FCN<| NOOP = |>COMBINE_OUTPUT_UPDATE_FCNS<| NOOP = |>GENERATE_ERT_S_FUNCTION<| #-------------------------------- GNU Tools ------------------------------------ # # You may need to modify the following variables if you have installed the GNU # Tools in a different location. # PREFIX = arm-none-eabi- GCC_PATH = $(ARM_GCC_PATH)/bin CC = $(GCC_PATH)/$(PREFIX)gcc CPP = $(GCC_PATH)/$(PREFIX)g++ AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp CP = $(GCC_PATH)/$(PREFIX)objcopy SZ = $(GCC_PATH)/$(PREFIX)size LD = $(GCC_PATH)/$(PREFIX)ld AR = $(GCC_PATH)/$(PREFIX)ar HEX = $(CP) -O ihex BIN = $(CP) -O binary -S #------------------------------ Include Path ----------------------------------- # # Additional includes # ADD_INCLUDES = \ |>START_EXPAND_INCLUDES<| -I|>EXPAND_DIR_NAME<| \ |>END_EXPAND_INCLUDES<| USER_INCLUDES = SHARED_INCLUDES = ifneq ($(SHARED_SRC_DIR),) SHARED_INCLUDES = -I$(SHARED_SRC_DIR) endif INCLUDES = -I. -I$(RELATIVE_PATH_TO_ANCHOR) $(MODELREF_INC_PATH) $(ADD_INCLUDES) \ $(USER_INCLUDES) \ $(SHARED_INCLUDES) #-------------------------------- C Flags -------------------------------------- # debug build? DEBUG ?= 1 # cpu CPU = -mcpu=cortex-m7 # fpu FPU = -mfpu=fpv5-d16 # float-abi FLOAT-ABI = -mfloat-abi=hard # mcu MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) # macros for gcc # AS defines AS_DEFS = # C defines C_DEFS = \ -DWITH_CAPI \ -DCAPI_MDL=$(MODEL) \ -DHDR_MDL=$(MODEL).h \ -DMAVLINK_USE_MESSAGE_INFO \ -DHAL_IMPL \ -DUSE_HAL_DRIVER \ -DSTM32F769xx # General User Options OPTS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections ifeq ($(DEBUG), 1) OPT_OPTS = -Og else OPT_OPTS = -O3 endif # Required Options GCC_FLAGS = -W -g -gdwarf-2 -DDEBUG REQ_OPTS = $(GCC_FLAGS) CC_OPTS = $(REQ_OPTS) $(OPTS) CPP_REQ_DEFINES = -DMT=$(MULTITASKING) -DNCSTATES=$(NCSTATES) -DNUMST=$(NUMST) CFLAGS =$(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES) $(OPT_OPTS) CPPFLAGS = $(CPP_OPTS) $(CC_OPTS) $(CPP_REQ_DEFINES) $(INCLUDES) ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 -DDEBUG else CFLAGS += -DNDEBUG endif # Generate dependency information CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" ####################################### # LDFLAGS ####################################### # link script LDSCRIPT = STM32F769NIHX_FLASH.ld # libraries SYSLIBS = -lc -lm -lnosys LIBDIR = LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(SYSLIBS) -Wl,-Map=$(MODEL).map,--cref -Wl,--gc-sections LIBS = |>START_PRECOMP_LIBRARIES<| LIBS += |>EXPAND_LIBRARY_NAME<|.a |>END_PRECOMP_LIBRARIES<| |>START_EXPAND_LIBRARIES<| LIBS += |>EXPAND_LIBRARY_NAME<|.a |>END_EXPAND_LIBRARIES<| LIBS += $(S_FUNCTIONS_LIB) #----------------------------- Source Files ------------------------------------ SHARED_OUTPUT_OPTS = -o $@ SRCS = $(MODULES) $(S_FUNCTIONS) ifeq ($(MODELREF_TARGET_TYPE), NONE) # Top-level model for code generation PRODUCT = $(RELATIVE_PATH_TO_ANCHOR)/$(MODEL).elf BIN_SETTING = $(CC) $(LDFLAGS) -o $(PRODUCT) BUILD_PRODUCT_TYPE = "executable" else # sub-model for code generation PRODUCT = $(MODELLIB) BUILD_PRODUCT_TYPE = "library" endif USER_SRCS = USER_OBJS = $(addsuffix .o, $(basename $(USER_SRCS))) LOCAL_USER_OBJS = $(notdir $(USER_OBJS)) OBJS = $(addsuffix .o, $(basename $(SRCS))) $(USER_OBJS) LINK_OBJS = $(addsuffix .o, $(basename $(SRCS))) $(LOCAL_USER_OBJS) SHARED_SRC := $(wildcard $(SHARED_SRC)) SHARED_OBJS = $(addsuffix .o, $(basename $(SHARED_SRC))) #--------------------------------- Rules --------------------------------------- ifeq ($(MODELREF_TARGET_TYPE),NONE) # Top-level model for code generation $(PRODUCT) : $(OBJS) $(SHARED_LIB) $(MODELREF_LINK_LIBS) $(LIBS) $(BIN_SETTING) $(LINK_OBJS) $(MODELREF_LINK_LIBS) $(SHARED_LIB) $(LIBS) @echo "$(BUILD_SUCCESS) $(BUILD_PRODUCT_TYPE): $@" else # sub-model for code generation $(PRODUCT) : $(OBJS) $(SHARED_OBJS) @rm -f $(MODELLIB) $(AR) ruv $(MODELLIB) $(LINK_OBJS) @echo "### $(MODELLIB) Created" @echo "$(BUILD_SUCCESS) $(BUILD_PRODUCT_TYPE): $@" endif %.o : %.c $(CC) -c $(CFLAGS) $< %.o : %.cpp $(CC) -c $(CPPFLAGS) $< %.o : ../%.c $(CC) -c $(CFLAGS) $< %.o : ../%.cpp $(CC) -c $(CPPFLAGS) $< %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.c $(CC) -c $(CFLAGS) $< %.o : $(RELATIVE_PATH_TO_ANCHOR)/%.cpp $(CC) -c $(CPPFLAGS) $< %.o : $(MATLAB_ROOT)/rtw/c/src/%.c $(CC) -c $(CFLAGS) $< |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.c $(CC) -c $(CFLAGS) $< |>END_EXPAND_RULES<| |>START_EXPAND_RULES<|%.o : |>EXPAND_DIR_NAME<|/%.cpp $(CC) -c $(CPPFLAGS) $< |>END_EXPAND_RULES<| #------------------------------- Libraries ------------------------------------- |>START_EXPAND_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \ |>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \ |>END_EXPAND_MODULES<| |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|) @echo "### Creating $@ " $(AR) r $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|) @echo "### $@ Created" |>END_EXPAND_LIBRARIES<| |>START_PRECOMP_LIBRARIES<|MODULES_|>EXPAND_LIBRARY_NAME<| = \ |>START_EXPAND_MODULES<| |>EXPAND_MODULE_NAME<|.o \ |>END_EXPAND_MODULES<| |>EXPAND_LIBRARY_NAME<|.a : $(MAKEFILE) rtw_proj.tmw $(MODULES_|>EXPAND_LIBRARY_NAME<|) @echo "### Creating $@ " $(AR) r $@ $(MODULES_|>EXPAND_LIBRARY_NAME<|) @echo "### $@ Created" |>END_PRECOMP_LIBRARIES<| #----------------------------- Dependencies ------------------------------------ $(OBJS) : $(MAKEFILE) rtw_proj.tmw $(SHARED_OBJS) : $(SHARED_BIN_DIR)/%.o : $(SHARED_SRC_DIR)/%.c $(CC) -c $(CFLAGS) $(SHARED_OUTPUT_OPTS) $< $(SHARED_LIB) : $(SHARED_OBJS) @echo "### Creating $@ " $(AR) r $@ $(SHARED_OBJS) @echo "### $@ Created "