custom target and toolchain for B3_AP
This commit is contained in:
@@ -0,0 +1,298 @@
|
||||
# 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 "
|
||||
|
||||
Reference in New Issue
Block a user