custom target and toolchain for B3_AP

This commit is contained in:
Matthew GONG
2021-05-30 00:31:25 +08:00
parent 6fc2ab8127
commit edb0d46ad6
5 changed files with 593 additions and 0 deletions
+90
View File
@@ -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
%/
+298
View File
@@ -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 "
+183
View File
@@ -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.
+22
View File
@@ -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