custom target and toolchain for B3_AP
This commit is contained in:
@@ -0,0 +1,90 @@
|
|||||||
|
%% SYSTLC: B3-AP ERT-based Target TMF: B3_AP_ert_target.tmf MAKE: make_rtw \
|
||||||
|
%% EXTMODE: no_ext_comm
|
||||||
|
%%
|
||||||
|
%selectfile NULL_FILE
|
||||||
|
|
||||||
|
%assign CodeFormat = "Embedded-C"
|
||||||
|
|
||||||
|
%assign TargetType = "RT"
|
||||||
|
%assign Language = "C"
|
||||||
|
%if !EXISTS("AutoBuildProcedure")
|
||||||
|
%if EXISTS("GenerateSampleERTMain")
|
||||||
|
%assign AutoBuildProcedure = !GenerateSampleERTMain
|
||||||
|
%else
|
||||||
|
%% This is for the targets that use ert.tlc and are required to work
|
||||||
|
%% without Embedded Coder. This is to enable auto build procedure since
|
||||||
|
%% the GenerateSampleERTMain is always set to true for these targets.
|
||||||
|
%assign AutoBuildProcedure = TLC_TRUE
|
||||||
|
%endif
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%% The model_SetEventsForThisBaseRate function is not required for the
|
||||||
|
%% VxWorks environment, i.e., when using an operating system.
|
||||||
|
%assign SuppressSetEventsForThisBaseRateFcn = (TargetOS == "VxWorksExample")
|
||||||
|
%if !EXISTS("InlineSetEventsForThisBaseRateFcn")
|
||||||
|
%assign InlineSetEventsForThisBaseRateFcn = TLC_TRUE
|
||||||
|
%endif
|
||||||
|
%if !EXISTS("SuppressMultiTaskScheduler")
|
||||||
|
%assign SuppressMultiTaskScheduler = TLC_TRUE
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%assign TargetRegistMutexOp = 1
|
||||||
|
%assign TargetRegistSynchroOp = 1
|
||||||
|
|
||||||
|
%include "codegenentry.tlc"
|
||||||
|
|
||||||
|
%% The contents between 'BEGIN_RTW_OPTIONS' and 'END_RTW_OPTIONS' in this file
|
||||||
|
%% are used to maintain backward compatibility to R13 and preR13 custom target
|
||||||
|
%% file only. If you want to use this file as a template to develop your
|
||||||
|
%% own system target file, you need to remove the 'CONFIGSET_TARGET_COMPONENT'
|
||||||
|
%% section at the end of this file.
|
||||||
|
%%
|
||||||
|
/%
|
||||||
|
BEGIN_RTW_OPTIONS
|
||||||
|
|
||||||
|
rtwoptions(1).prompt = 'My Target Options';
|
||||||
|
rtwoptions(1).type = 'Category';
|
||||||
|
rtwoptions(1).enable = 'on';
|
||||||
|
rtwoptions(1).default = 3; % number of items under this category
|
||||||
|
% excluding this one.
|
||||||
|
rtwoptions(1).popupstrings = '';
|
||||||
|
rtwoptions(1).tlcvariable = '';
|
||||||
|
rtwoptions(1).tooltip = '';
|
||||||
|
rtwoptions(1).callback = '';
|
||||||
|
rtwoptions(1).makevariable = '';
|
||||||
|
|
||||||
|
rtwoptions(2).prompt = 'Demo option 1';
|
||||||
|
rtwoptions(2).type = 'Checkbox';
|
||||||
|
rtwoptions(2).default = 'off';
|
||||||
|
rtwoptions(2).tlcvariable = 'DummyOpt1';
|
||||||
|
rtwoptions(2).makevariable = '';
|
||||||
|
rtwoptions(2).tooltip = ['Demo option1 (non-functional)'];
|
||||||
|
rtwoptions(2).callback = '';
|
||||||
|
|
||||||
|
rtwoptions(3).prompt = 'Demo option 2';
|
||||||
|
rtwoptions(3).type = 'Checkbox';
|
||||||
|
rtwoptions(3).default = 'off';
|
||||||
|
rtwoptions(3).tlcvariable = 'DummyOpt2';
|
||||||
|
rtwoptions(3).makevariable = '';
|
||||||
|
rtwoptions(3).tooltip = ['Demo option2 (non-functional)'];
|
||||||
|
rtwoptions(3).callback = '';
|
||||||
|
|
||||||
|
rtwoptions(4).prompt = 'Demo option 3';
|
||||||
|
rtwoptions(4).type = 'Checkbox';
|
||||||
|
rtwoptions(4).default = 'off';
|
||||||
|
rtwoptions(4).tlcvariable = 'DummyOpt3';
|
||||||
|
rtwoptions(4).makevariable = '';
|
||||||
|
rtwoptions(4).tooltip = ['Demo option3 (non-functional)'];
|
||||||
|
rtwoptions(4).callback = '';
|
||||||
|
|
||||||
|
%----------------------------------------%
|
||||||
|
% Configure code generation settings %
|
||||||
|
%----------------------------------------%
|
||||||
|
|
||||||
|
rtwgensettings.BuildDirSuffix = '_B3AP_ert_rtw';
|
||||||
|
rtwgensettings.DerivedFrom = 'ert.tlc';
|
||||||
|
rtwgensettings.Version = '1';
|
||||||
|
|
||||||
|
END_RTW_OPTIONS
|
||||||
|
%/
|
||||||
|
|
||||||
@@ -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 "
|
||||||
|
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
function tc = armcc_tc
|
||||||
|
% Creates MinGW ToolchainInfo object.
|
||||||
|
% Copyright 2003-2019 (C) National Instruments Corp.
|
||||||
|
|
||||||
|
tc = coder.make.ToolchainInfo('BuildArtifact', 'gmake makefile');
|
||||||
|
tc.Name = 'armcc | gmake makefile (64-bit Windows)';
|
||||||
|
tc.Platform = 'win64';
|
||||||
|
tc.SupportedVersion = '7.3';
|
||||||
|
|
||||||
|
tool_path = [getenv('ARM_GCC_PATH') '\bin'];
|
||||||
|
|
||||||
|
tc.addAttribute('TransformPathsWithSpaces');
|
||||||
|
tc.addAttribute('RequiresCommandFile');
|
||||||
|
tc.addAttribute('RequiresBatchFile');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% Macros
|
||||||
|
% ------------------------------
|
||||||
|
tc.addMacro('MW_EXTERNLIB_DIR', ['$(MATLAB_ROOT)\extern\lib\' tc.Platform '\microsoft']);
|
||||||
|
tc.addMacro('MW_LIB_DIR', ['$(MATLAB_ROOT)\lib\' tc.Platform]);
|
||||||
|
tc.addMacro('CFLAGS_ADDITIONAL', '-c -m32');
|
||||||
|
tc.addMacro('CPPFLAGS_ADDITIONAL', '-c -m32');
|
||||||
|
tc.addMacro('LIBS_TOOLCHAIN', '$(conlibs)');
|
||||||
|
tc.addMacro('LINKFLAGS_ADDITIONAL', '-m32 -shared');
|
||||||
|
tc.addMacro('CVARSFLAG', '');
|
||||||
|
tc.addMacro('CFLAG', '-std=c90 -pedantic -fwrapv -m32');
|
||||||
|
|
||||||
|
tc.addIntrinsicMacros({'ldebug', 'conflags', 'cflags'});
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% C Compiler
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tool = tc.getBuildTool('C Compiler');
|
||||||
|
|
||||||
|
tool.setName( 'arm-none-eabi-gcc');
|
||||||
|
tool.setCommand( 'arm-none-eabi-gcc');
|
||||||
|
tool.setPath( tool_path);
|
||||||
|
|
||||||
|
tool.setDirective( 'IncludeSearchPath', '-I');
|
||||||
|
tool.setDirective( 'PreprocessorDefine', '-D');
|
||||||
|
tool.setDirective( 'OutputFlag', '-o');
|
||||||
|
tool.setDirective( 'Debug', '-g');
|
||||||
|
|
||||||
|
tool.setFileExtension( 'Source', '.c');
|
||||||
|
tool.setFileExtension( 'Header', '.h');
|
||||||
|
tool.setFileExtension( 'Object', '.obj');
|
||||||
|
|
||||||
|
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% C++ Compiler
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tool = tc.getBuildTool('C++ Compiler');
|
||||||
|
|
||||||
|
tool.setName( 'arm-none-eabi-g++');
|
||||||
|
tool.setCommand( 'arm-none-eabi-g++');
|
||||||
|
tool.setPath( tool_path);
|
||||||
|
|
||||||
|
tool.setDirective( 'IncludeSearchPath', '-I');
|
||||||
|
tool.setDirective( 'PreprocessorDefine', '-D');
|
||||||
|
|
||||||
|
tool.setDirective( 'OutputFlag', '-o');
|
||||||
|
tool.setDirective( 'Debug', '-g');
|
||||||
|
|
||||||
|
tool.setFileExtension( 'Source', '.cpp');
|
||||||
|
tool.setFileExtension( 'Header', '.hpp');
|
||||||
|
tool.setFileExtension( 'Object', '.obj');
|
||||||
|
|
||||||
|
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% Linker
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tool = tc.getBuildTool('Linker');
|
||||||
|
|
||||||
|
tool.setName( 'GCC Linker');
|
||||||
|
tool.setCommand( 'arm-none-eabi-g++');
|
||||||
|
tool.setPath( tool_path);
|
||||||
|
|
||||||
|
tool.setDirective( 'Library', '-L');
|
||||||
|
tool.setDirective( 'LibrarySearchPath', '-I');
|
||||||
|
tool.setDirective( 'OutputFlag', '-o');
|
||||||
|
tool.setDirective( 'Debug', '');
|
||||||
|
|
||||||
|
tool.setFileExtension( 'Executable', '.dll');
|
||||||
|
tool.setFileExtension( 'Shared Library', '.dll');
|
||||||
|
|
||||||
|
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% C++ Linker
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tool = tc.getBuildTool('C++ Linker');
|
||||||
|
|
||||||
|
tool.setName( 'GCC Linker');
|
||||||
|
tool.setCommand( 'arm-none-eabi-g++');
|
||||||
|
tool.setPath( tool_path);
|
||||||
|
|
||||||
|
tool.setDirective( 'Library', '-L');
|
||||||
|
tool.setDirective( 'LibrarySearchPath', '-I');
|
||||||
|
tool.setDirective( 'OutputFlag', '-o');
|
||||||
|
tool.setDirective( 'Debug', '');
|
||||||
|
|
||||||
|
tool.setFileExtension( 'Executable', '.dll');
|
||||||
|
tool.setFileExtension( 'Shared Library', '.dll');
|
||||||
|
|
||||||
|
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% Archiver
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tool = tc.getBuildTool('Archiver');
|
||||||
|
|
||||||
|
tool.setName( 'GNU Archiver');
|
||||||
|
tool.setCommand( 'arm-none-eabi-ar');
|
||||||
|
tool.setPath( tool_path);
|
||||||
|
tool.setDirective( 'OutputFlag', '');
|
||||||
|
tool.setFileExtension( 'Static Library', '.a');
|
||||||
|
tool.setCommandPattern('|>TOOL<| |>TOOL_OPTIONS<| |>OUTPUT_FLAG<||>OUTPUT<|');
|
||||||
|
|
||||||
|
% ------------------------------
|
||||||
|
% Builder
|
||||||
|
% ------------------------------
|
||||||
|
|
||||||
|
tc.setBuilderApplication(tc.Platform);
|
||||||
|
|
||||||
|
% --------------------------------------------
|
||||||
|
% BUILD CONFIGURATIONS
|
||||||
|
% --------------------------------------------
|
||||||
|
|
||||||
|
optimsOffOpts = {'-O0'};
|
||||||
|
optimsOnOpts = {'-O2'};
|
||||||
|
cCompilerOpts = '$(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL)';
|
||||||
|
cppCompilerOpts = '$(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL)';
|
||||||
|
linkerOpts = {'$(ldebug) $(conflags) $(LINKFLAGS_ADDITIONAL) $(LIBS_TOOLCHAIN)'};
|
||||||
|
sharedLinkerOpts = horzcat(linkerOpts, '-shared -def:$(DEF_FILE)');
|
||||||
|
archiverOpts = {'rcs'};
|
||||||
|
|
||||||
|
% Get the debug flag per build tool
|
||||||
|
debugFlag.CCompiler = '$(CDEBUG)';
|
||||||
|
debugFlag.CppCompiler = '$(CPPDEBUG)';
|
||||||
|
debugFlag.Linker = '$(LDDEBUG)';
|
||||||
|
debugFlag.CppLinker = '$(CPPLDDEBUG)';
|
||||||
|
debugFlag.Archiver = '$(ARDEBUG)';
|
||||||
|
|
||||||
|
% Set the toolchain flags for 'Faster Builds' build configuration
|
||||||
|
|
||||||
|
cfg = tc.getBuildConfiguration('Faster Builds');
|
||||||
|
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts));
|
||||||
|
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts));
|
||||||
|
cfg.setOption( 'Linker', linkerOpts);
|
||||||
|
cfg.setOption( 'C++ Linker', linkerOpts);
|
||||||
|
cfg.setOption( 'Shared Library Linker', sharedLinkerOpts);
|
||||||
|
cfg.setOption( 'Archiver', archiverOpts);
|
||||||
|
|
||||||
|
% Set the toolchain flags for 'Faster Runs' build configuration
|
||||||
|
|
||||||
|
cfg = tc.getBuildConfiguration('Faster Runs');
|
||||||
|
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOnOpts));
|
||||||
|
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOnOpts));
|
||||||
|
cfg.setOption( 'Linker', linkerOpts);
|
||||||
|
cfg.setOption( 'C++ Linker', linkerOpts);
|
||||||
|
cfg.setOption( 'Shared Library Linker', sharedLinkerOpts);
|
||||||
|
cfg.setOption( 'Archiver', archiverOpts);
|
||||||
|
|
||||||
|
% Set the toolchain flags for 'Debug' build configuration
|
||||||
|
|
||||||
|
cfg = tc.getBuildConfiguration('Debug');
|
||||||
|
cfg.setOption( 'C Compiler', horzcat(cCompilerOpts, optimsOffOpts, debugFlag.CCompiler));
|
||||||
|
cfg.setOption( 'C++ Compiler', horzcat(cppCompilerOpts, optimsOffOpts, debugFlag.CppCompiler));
|
||||||
|
cfg.setOption( 'Linker', horzcat(linkerOpts, debugFlag.Linker));
|
||||||
|
cfg.setOption( 'C++ Linker', horzcat(linkerOpts, debugFlag.CppLinker));
|
||||||
|
cfg.setOption( 'Shared Library Linker', horzcat(sharedLinkerOpts, debugFlag.Linker));
|
||||||
|
cfg.setOption( 'Archiver', horzcat(archiverOpts, debugFlag.Archiver));
|
||||||
|
|
||||||
|
tc.setBuildConfigurationOption('all', 'Download', '');
|
||||||
|
tc.setBuildConfigurationOption('all', 'Execute', '');
|
||||||
|
tc.setBuildConfigurationOption('all', 'Make Tool', '-f $(MAKEFILE)');
|
||||||
Binary file not shown.
@@ -0,0 +1,22 @@
|
|||||||
|
function rtwTargetInfo(tr)
|
||||||
|
%RTWTARGETINFO Registration file for custom toolchains.
|
||||||
|
tr.registerTargetInfo(@loc_createToolchain);
|
||||||
|
end
|
||||||
|
|
||||||
|
% -------------------------------------------------------------------------
|
||||||
|
% Create the ToolchainInfoRegistry entries
|
||||||
|
% -------------------------------------------------------------------------
|
||||||
|
function config = loc_createToolchain
|
||||||
|
|
||||||
|
i = 1;
|
||||||
|
%% Windows
|
||||||
|
if exist(fullfile(fileparts(mfilename('fullpath')), 'armcc_win_tc.mat'), 'file') == 2
|
||||||
|
config(i) = coder.make.ToolchainInfoRegistry;
|
||||||
|
config(i).Name = 'armcc | gmake makefile (64-bit Windows)';
|
||||||
|
config(i).FileName = fullfile(fileparts(mfilename('fullpath')), 'armcc_win_tc.mat');
|
||||||
|
config(i).TargetHWDeviceType = {'*'};
|
||||||
|
config(i).Platform = {computer('arch')};
|
||||||
|
i = i + 1;
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user